` tag (arrays are cycled) |
+| td\_attr | No | Attributes for `` tag (arrays are cycled) |
+| trailpad | No | Value to pad the trailing cells on last row with (if any) (defaults to ' ') |
+| hdir | No | Direction of each row to be rendered. possible values: *right* (left-to-right), and *left* (right-to-left) (defaults to 'right') |
+| vdir | No | Direction of each column to be rendered. possible values: *down* (top-to-bottom), *up* (bottom-to-top) (defaults to 'down') |
+
+- The `cols` attribute determines how many columns will be in the
+ table.
+
+- The `table_attr`, `tr_attr` and `td_attr` values determine the
+ attributes given to the ``, `` and `` tags.
+
+- If `tr_attr` or `td_attr` are arrays, they will be cycled through.
+
+- `trailpad` is the value put into the trailing cells on the last
+ table row if there are any present.
+
+## Examples
+
+```php
+assign( 'data', array(1,2,3,4,5,6,7,8,9) );
+$smarty->assign( 'tr', array('bgcolor="#eeeeee"','bgcolor="#dddddd"') );
+$smarty->display('index.tpl');
+```
+
+The variables assigned from php could be displayed as these three
+examples demonstrate. Each example shows the template followed by
+output.
+
+** Example 1 **
+```smarty
+{html_table loop=$data}
+```
+```html
+
+```
+
+** Example 2 **
+```smarty
+{html_table loop=$data cols=4 table_attr='border="0"'}
+```
+```html
+
+```
+
+** Example 3 **
+```smarty
+{html_table loop=$data cols="first,second,third,fourth" tr_attr=$tr}
+```
+```html
+
+
+
+ first second third fourth
+
+
+
+ 1 2 3 4
+ 5 6 7 8
+ 9
+
+
+```
+
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/designers/language-custom-functions/language-function-mailto.md b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/designers/language-custom-functions/language-function-mailto.md
new file mode 100644
index 000000000..bcb8b7d4d
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/designers/language-custom-functions/language-function-mailto.md
@@ -0,0 +1,61 @@
+# {mailto}
+
+`{mailto}` automates the creation of a `mailto:` anchor links and
+optionally encodes them. Encoding emails makes it more difficult for web
+spiders to lift email addresses off of a site.
+
+## Attributes
+
+| Attribute Name | Required | Description |
+|----------------|----------|-----------------------------------------------------------------------------------------------|
+| address | Yes | The e-mail address |
+| text | No | The text to display, default is the e-mail address |
+| encode | No | How to encode the e-mail. Can be one of `none`, `hex`, `javascript` or `javascript_charcode`. |
+| cc | No | Email addresses to carbon copy, separate entries by a comma. |
+| bcc | No | Email addresses to blind carbon copy, separate entries by a comma |
+| subject | No | Email subject |
+| newsgroups | No | Newsgroups to post to, separate entries by a comma. |
+| followupto | No | Addresses to follow up to, separate entries by a comma. |
+| extra | No | Any extra information you want passed to the link, such as style sheet classes |
+
+> **Note**
+>
+> Javascript is probably the most thorough form of encoding, although
+> you can use hex encoding too.
+
+
+## Examples
+
+```smarty
+{mailto address="me@example.com"}
+me@example.com
+
+{mailto address="me@example.com" text="send me some mail"}
+send me some mail
+
+{mailto address="me@example.com" encode="javascript"}
+
+
+{mailto address="me@example.com" encode="hex"}
+m&..snipped...#x6f;m
+
+{mailto address="me@example.com" subject="Hello to you!"}
+me@example.com
+
+{mailto address="me@example.com" cc="you@example.com,they@example.com"}
+me@example.com
+
+{mailto address="me@example.com" extra='class="email"'}
+me@example.com
+
+{mailto address="me@example.com" encode="javascript_charcode"}
+
+```
+
+See also [`escape`](../language-modifiers/language-modifier-escape.md),
+[`{textformat}`](../language-custom-functions/language-function-textformat.md) and [obfuscating email
+addresses](../../appendixes/tips.md#obfuscating-e-mail-addresses).
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/designers/language-custom-functions/language-function-math.md b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/designers/language-custom-functions/language-function-math.md
new file mode 100644
index 000000000..7b34fccff
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/designers/language-custom-functions/language-function-math.md
@@ -0,0 +1,99 @@
+# {math}
+
+`{math}` allows the template designer to do math equations in the
+template.
+
+## Attributes
+
+| Attribute Name | Required | Description |
+|----------------|----------|--------------------------------------------------|
+| equation | Yes | The equation to execute |
+| format | No | The format of the result (sprintf) |
+| var | Yes | Equation variable value |
+| assign | No | Template variable the output will be assigned to |
+| \[var \...\] | Yes | Equation variable value |
+
+- Any numeric template variables may be used in the equations, and the
+ result is printed in place of the tag.
+
+- The variables used in the equation are passed as parameters, which
+ can be template variables or static values.
+
+- +, -, /, \*, abs, ceil, cos, exp, floor, log, log10, max, min, pi,
+ pow, rand, round, sin, sqrt, srans and tan are all valid operators.
+ Check the PHP documentation for further information on these
+ [math](https://www.php.net/eval) functions.
+
+- If you supply the `assign` attribute, the output of the `{math}`
+ function will be assigned to this template variable instead of being
+ output to the template.
+
+> **Note**
+>
+> `{math}` is an expensive function in performance due to its use of the
+> php [`eval()`](https://www.php.net/eval) function. Doing the math in PHP
+> is much more efficient, so whenever possible do the math calculations
+> in the script and [`assign()`](../../programmers/api-functions/api-assign.md) the results to the
+> template. Definitely avoid repetitive `{math}` function calls, eg
+> within [`{section}`](../language-builtin-functions/language-function-section.md) loops.
+
+## Examples
+
+**Example 1**
+```smarty
+
+{* $height=4, $width=5 *}
+
+{math equation="x + y" x=$height y=$width}
+```
+
+The above example will output:
+
+```
+9
+```
+
+
+**Example 2**
+
+```smarty
+{* $row_height = 10, $row_width = 20, #col_div# = 2, assigned in template *}
+
+{math equation="height * width / division"
+ height=$row_height
+ width=$row_width
+ division=#col_div#}
+```
+
+The above example will output:
+
+```
+100
+```
+
+**Example 3**
+
+```smarty
+{* you can use parenthesis *}
+
+{math equation="(( x + y ) / z )" x=2 y=10 z=2}
+```
+
+The above example will output:
+
+```
+6
+```
+
+**Example 4**
+
+```smarty
+{* you can supply a format parameter in sprintf format *}
+
+{math equation="x + y" x=4.4444 y=5.0000 format="%.2f"}
+```
+
+The above example will output:
+```
+9.44
+```
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/designers/language-custom-functions/language-function-textformat.md b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/designers/language-custom-functions/language-function-textformat.md
new file mode 100644
index 000000000..4089fdb33
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/designers/language-custom-functions/language-function-textformat.md
@@ -0,0 +1,182 @@
+# {textformat}
+
+`{textformat}` is a [block function](../../programmers/plugins/plugins-block-functions.md) used to
+format text. It basically cleans up spaces and special characters, and
+formats paragraphs by wrapping at a boundary and indenting lines.
+
+You can set the parameters explicitly, or use a preset style. Currently,
+"email" is the only available style.
+
+## Attributes
+
+| Attribute Name | Default | Description |
+|----------------|------------------|----------------------------------------------------------------------------------------|
+| style | *n/a* | Preset style |
+| indent | *0* | The number of chars to indent every line |
+| indent\_first | *0* | The number of chars to indent the first line |
+| indent\_char | *(single space)* | The character (or string of chars) to indent with |
+| wrap | *80* | How many characters to wrap each line to |
+| wrap\_char | *\\n* | The character (or string of chars) to break each line with |
+| wrap\_cut | *FALSE* | If TRUE, wrap will break the line at the exact character instead of at a word boundary |
+| assign | *n/a* | The template variable the output will be assigned to |
+
+## Examples
+
+```smarty
+{textformat wrap=40}
+
+This is foo.
+This is foo.
+This is foo.
+This is foo.
+This is foo.
+This is foo.
+
+This is bar.
+
+bar foo bar foo foo.
+bar foo bar foo foo.
+bar foo bar foo foo.
+bar foo bar foo foo.
+bar foo bar foo foo.
+bar foo bar foo foo.
+bar foo bar foo foo.
+
+{/textformat}
+```
+
+The above example will output:
+
+```
+This is foo. This is foo. This is foo.
+This is foo. This is foo. This is foo.
+
+This is bar.
+
+bar foo bar foo foo. bar foo bar foo
+foo. bar foo bar foo foo. bar foo bar
+foo foo. bar foo bar foo foo. bar foo
+bar foo foo. bar foo bar foo foo.
+```
+
+```smarty
+{textformat wrap=40 indent=4}
+
+This is foo.
+This is foo.
+This is foo.
+This is foo.
+This is foo.
+This is foo.
+
+This is bar.
+
+bar foo bar foo foo.
+bar foo bar foo foo.
+bar foo bar foo foo.
+bar foo bar foo foo.
+bar foo bar foo foo.
+bar foo bar foo foo.
+bar foo bar foo foo.
+
+{/textformat}
+```
+
+The above example will output:
+
+```
+ This is foo. This is foo. This is
+ foo. This is foo. This is foo. This
+ is foo.
+
+ This is bar.
+
+ bar foo bar foo foo. bar foo bar foo
+ foo. bar foo bar foo foo. bar foo
+ bar foo foo. bar foo bar foo foo.
+ bar foo bar foo foo. bar foo bar
+ foo foo.
+```
+
+
+```smarty
+{textformat wrap=40 indent=4 indent_first=4}
+
+This is foo.
+This is foo.
+This is foo.
+This is foo.
+This is foo.
+This is foo.
+
+This is bar.
+
+bar foo bar foo foo.
+bar foo bar foo foo.
+bar foo bar foo foo.
+bar foo bar foo foo.
+bar foo bar foo foo.
+bar foo bar foo foo.
+bar foo bar foo foo.
+
+{/textformat}
+```
+
+The above example will output:
+
+
+```
+ This is foo. This is foo. This
+ is foo. This is foo. This is foo.
+ This is foo.
+
+ This is bar.
+
+ bar foo bar foo foo. bar foo bar
+ foo foo. bar foo bar foo foo. bar
+ foo bar foo foo. bar foo bar foo
+ foo. bar foo bar foo foo. bar foo
+ bar foo foo.
+```
+
+
+```smarty
+{textformat style="email"}
+
+This is foo.
+This is foo.
+This is foo.
+This is foo.
+This is foo.
+This is foo.
+
+This is bar.
+
+bar foo bar foo foo.
+bar foo bar foo foo.
+bar foo bar foo foo.
+bar foo bar foo foo.
+bar foo bar foo foo.
+bar foo bar foo foo.
+bar foo bar foo foo.
+
+{/textformat}
+```
+
+The above example will output:
+
+
+```
+This is foo. This is foo. This is foo. This is foo. This is foo. This is
+foo.
+
+This is bar.
+
+bar foo bar foo foo. bar foo bar foo foo. bar foo bar foo foo. bar foo
+bar foo foo. bar foo bar foo foo. bar foo bar foo foo. bar foo bar foo
+foo.
+```
+
+
+See also [`{strip}`](../language-builtin-functions/language-function-strip.md) and
+[`wordwrap`](../language-modifiers/language-modifier-wordwrap.md).
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/designers/language-modifiers/index.md b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/designers/language-modifiers/index.md
new file mode 100644
index 000000000..c9aeef887
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/designers/language-modifiers/index.md
@@ -0,0 +1,122 @@
+# Variable Modifiers
+
+Variable modifiers can be applied to
+[variables](../language-variables/index.md), [custom functions](../language-custom-functions/index.md)
+or strings. To apply a modifier,
+specify the value followed by a `|` (pipe) and the modifier name. A
+modifier may accept additional parameters that affect its behavior.
+These parameters follow the modifier name and are separated by a `:`
+(colon). Also, *all php-functions can be used as modifiers implicitly*
+(more below) and modifiers can be
+[combined](../language-combining-modifiers.md).
+
+- [capitalize](language-modifier-capitalize.md)
+- [cat](language-modifier-cat.md)
+- [count_characters](language-modifier-count-characters.md)
+- [count_paragraphs](language-modifier-count-paragraphs.md)
+- [count_sentences](language-modifier-count-sentences.md)
+- [count_words](language-modifier-count-words.md)
+- [date_format](language-modifier-date-format.md)
+- [default](language-modifier-default.md)
+- [escape](language-modifier-escape.md)
+- [from_charset](language-modifier-from-charset.md)
+- [indent](language-modifier-indent.md)
+- [lower](language-modifier-lower.md)
+- [nl2br](language-modifier-nl2br.md)
+- [regex_replace](language-modifier-regex-replace.md)
+- [replace](language-modifier-replace.md)
+- [spacify](language-modifier-spacify.md)
+- [string_format](language-modifier-string-format.md)
+- [strip](language-modifier-strip.md)
+- [strip_tags](language-modifier-strip-tags.md)
+- [to_charset](language-modifier-to-charset.md)
+- [truncate](language-modifier-truncate.md)
+- [unescape](language-modifier-unescape.md)
+- [upper](language-modifier-upper.md)
+- [wordwrap](language-modifier-wordwrap.md)
+
+## Examples
+
+```smarty
+{* apply modifier to a variable *}
+{$title|upper}
+
+{* modifier with parameters *}
+{$title|truncate:40:"..."}
+
+{* apply modifier to a function parameter *}
+{html_table loop=$myvar|upper}
+
+{* with parameters *}
+{html_table loop=$myvar|truncate:40:"..."}
+
+{* apply modifier to literal string *}
+{"foobar"|upper}
+
+{* using date_format to format the current date *}
+{$smarty.now|date_format:"%Y/%m/%d"}
+
+{* apply modifier to a custom function *}
+{mailto|upper address="smarty@example.com"}
+
+{* using php's str_repeat *}
+{"="|str_repeat:80}
+
+{* php's count *}
+{$myArray|@count}
+
+{* this will uppercase and truncate the whole array *}
+
+{html_options output=$my_array|upper|truncate:20}
+
+```
+
+- Modifiers can be applied to any type of variables, including arrays
+ and objects.
+
+ > **Note**
+ >
+ > The default behavior was changed with Smarty 3. In Smarty 2.x, you
+ > had to use an "`@`" symbol to apply a modifier to an array, such
+ > as `{$articleTitle|@count}`. With Smarty 3, the "`@`" is no
+ > longer necessary, and is ignored.
+ >
+ > If you want a modifier to apply to each individual item of an
+ > array, you will either need to loop the array in the template, or
+ > provide for this functionality inside your modifier function.
+
+ > **Note**
+ >
+ > Second, in Smarty 2.x, modifiers were applied to the result of
+ > math expressions like `{8+2}`, meaning that
+ > `{8+2|count_characters}` would give `2`, as 8+2=10 and 10 is two
+ > characters long. With Smarty 3, modifiers are applied to the
+ > variables or atomic expressions before executing the calculations,
+ > so since 2 is one character long, `{8+2|count_characters}`
+ > gives 9. To get the old result use parentheses like
+ > `{(8+2)|count_characters}`.
+
+- Modifiers are autoloaded from the
+ [`$plugins_dir`](../../programmers/api-variables/variable-plugins-dir.md) or can be registered
+ explicitly with the [`registerPlugin()`](../../programmers/api-functions/api-register-plugin.md)
+ function. The later is useful for sharing a function between php
+ scripts and smarty templates.
+
+- All php-functions can be used as modifiers implicitly, as
+ demonstrated in the example above. However, using php-functions as
+ modifiers has two little pitfalls:
+
+ - First - sometimes the order of the function-parameters is not
+ the desirable one. Formatting `$foo` with
+ `{"%2.f"|sprintf:$foo}` actually works, but asks for the more
+ intuitive, like `{$foo|string_format:"%2.f"}` that is provided
+ by the Smarty distribution.
+
+ - Secondly - if security is enabled, all php-functions that are to
+ be used as modifiers have to be declared trusted in the
+ `$modifiers` property of the security policy. See the
+ [Security](../../programmers/advanced-features/advanced-features-security.md) section for details.
+
+See also [`registerPlugin()`](../../programmers/api-functions/api-register-plugin.md), [combining
+modifiers](../language-combining-modifiers.md). and [extending smarty with
+plugins](../../programmers/plugins.md)
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-capitalize.md b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-capitalize.md
new file mode 100644
index 000000000..0368c7b3b
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-capitalize.md
@@ -0,0 +1,49 @@
+# capitalize
+
+This is used to capitalize the first letter of all words in a variable.
+This is similar to the PHP [`ucwords()`](https://www.php.net/ucwords)
+function.
+
+## Basic usage
+```smarty
+{$myVar|capitalize}
+```
+
+## Parameters
+
+| Parameter | Type | Required | Description |
+|-----------|---------|----------|-------------------------------------------------------------------------------------------------------|
+| 1 | boolean | No | This determines whether or not words with digits will be uppercased |
+| 2 | boolean | No | This determines whether or not Capital letters within words should be lowercased, e.g. "aAa" to "Aaa" |
+
+
+## Examples
+
+```php
+assign('articleTitle', 'next x-men film, x3, delayed.');
+
+```
+
+
+Where the template is:
+
+```smarty
+ {$articleTitle}
+ {$articleTitle|capitalize}
+ {$articleTitle|capitalize:true}
+```
+
+
+Will output:
+
+```
+ next x-men film, x3, delayed.
+ Next X-Men Film, x3, Delayed.
+ Next X-Men Film, X3, Delayed.
+```
+
+
+See also [`lower`](language-modifier-lower.md) and
+[`upper`](language-modifier-upper.md)
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-cat.md b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-cat.md
new file mode 100644
index 000000000..97dda4b37
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-cat.md
@@ -0,0 +1,36 @@
+# cat
+
+This value is concatenated to the given variable.
+
+## Basic usage
+```smarty
+{$myVar|cat:' units'}
+```
+
+## Parameters
+
+| Parameter | Type | Required | Description |
+|-----------|--------|----------|--------------------------------------------------|
+| 1 | string | No | This value to concatenate to the given variable. |
+
+## Examples
+
+```php
+assign('articleTitle', "Psychics predict world didn't end");
+
+```
+
+Where template is:
+
+```smarty
+ {$articleTitle|cat:' yesterday.'}
+```
+
+Will output:
+
+```
+ Psychics predict world didn't end yesterday.
+```
+
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-count-characters.md b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-count-characters.md
new file mode 100644
index 000000000..8fc37d7a9
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-count-characters.md
@@ -0,0 +1,43 @@
+# count_characters
+
+This is used to count the number of characters in a variable.
+
+## Basic usage
+```smarty
+{$myVar|count_characters}
+```
+
+## Parameters
+
+| Parameter | Type | Required | Description |
+|-----------|---------|----------|------------------------------------------------------------------------|
+| 1 | boolean | No | This determines whether to include whitespace characters in the count. |
+
+## Examples
+
+```php
+assign('articleTitle', 'Cold Wave Linked to Temperatures.');
+
+```
+
+Where template is:
+
+```smarty
+ {$articleTitle}
+ {$articleTitle|count_characters}
+ {$articleTitle|count_characters:true}
+```
+
+Will output:
+
+```
+ Cold Wave Linked to Temperatures.
+ 29
+ 33
+```
+
+See also [`count_words`](language-modifier-count-words.md),
+[`count_sentences`](language-modifier-count-sentences.md) and
+[`count_paragraphs`](language-modifier-count-paragraphs.md).
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-count-paragraphs.md b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-count-paragraphs.md
new file mode 100644
index 000000000..060cb98a5
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-count-paragraphs.md
@@ -0,0 +1,41 @@
+# count_paragraphs
+
+This is used to count the number of paragraphs in a variable.
+
+## Basic usage
+```smarty
+{$myVar|count_paragraphs}
+```
+
+## Examples
+
+```php
+assign('articleTitle',
+ "War Dims Hope for Peace. Child's Death Ruins Couple's Holiday.\n\n
+ Man is Fatally Slain. Death Causes Loneliness, Feeling of Isolation."
+ );
+
+```
+
+Where template is:
+
+```smarty
+ {$articleTitle}
+ {$articleTitle|count_paragraphs}
+```
+
+
+Will output:
+
+```
+ War Dims Hope for Peace. Child's Death Ruins Couple's Holiday.
+
+ Man is Fatally Slain. Death Causes Loneliness, Feeling of Isolation.
+ 2
+```
+
+See also [`count_characters`](language-modifier-count-characters.md),
+[`count_sentences`](language-modifier-count-sentences.md) and
+[`count_words`](language-modifier-count-words.md).
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-count-sentences.md b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-count-sentences.md
new file mode 100644
index 000000000..dd2f69c61
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-count-sentences.md
@@ -0,0 +1,39 @@
+# count_sentences
+
+This is used to count the number of sentences in a variable. A sentence
+being delimited by a dot, question- or exclamation-mark (.?!).
+
+## Basic usage
+```smarty
+{$myVar|count_sentences}
+```
+
+## Examples
+
+```php
+assign('articleTitle',
+ 'Two Soviet Ships Collide - One Dies.
+ Enraged Cow Injures Farmer with Axe.'
+ );
+
+```
+
+Where template is:
+
+```smarty
+ {$articleTitle}
+ {$articleTitle|count_sentences}
+```
+
+Will output:
+
+```
+ Two Soviet Ships Collide - One Dies. Enraged Cow Injures Farmer with Axe.
+ 2
+```
+
+See also [`count_characters`](language-modifier-count-characters.md),
+[`count_paragraphs`](language-modifier-count-paragraphs.md) and
+[`count_words`](language-modifier-count-words.md).
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-count-words.md b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-count-words.md
new file mode 100644
index 000000000..1ab0d1d47
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-count-words.md
@@ -0,0 +1,35 @@
+# count_words
+
+This is used to count the number of words in a variable.
+
+## Basic usage
+```smarty
+{$myVar|count_words}
+```
+
+## Examples
+
+```php
+assign('articleTitle', 'Dealers Will Hear Car Talk at Noon.');
+
+```
+
+Where template is:
+
+```smarty
+ {$articleTitle}
+ {$articleTitle|count_words}
+```
+
+This will output:
+
+```
+ Dealers Will Hear Car Talk at Noon.
+ 7
+```
+
+See also [`count_characters`](language-modifier-count-characters.md),
+[`count_paragraphs`](language-modifier-count-paragraphs.md) and
+[`count_sentences`](language-modifier-count-sentences.md).
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-date-format.md b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-date-format.md
new file mode 100644
index 000000000..620d085b8
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-date-format.md
@@ -0,0 +1,145 @@
+# date_format
+
+This formats a date and time into the given
+[`strftime()`](https://www.php.net/strftime) format. Dates can be passed to
+Smarty as unix [timestamps](https://www.php.net/function.time), [DateTime
+objects](https://www.php.net/class.DateTime), mysql timestamps or any string
+made up of month day year, parsable by php\'s
+[`strtotime()`](https://www.php.net/strtotime). Designers can then use
+`date_format` to have complete control of the formatting of the date. If
+the date passed to `date_format` is empty and a second parameter is
+passed, that will be used as the date to format.
+
+## Basic usage
+```smarty
+{$myVar|date_format:"%Y-%m-%d"}
+```
+
+## Parameters
+
+| Parameter Position | Type | Required | Default | Description |
+|--------------------|--------|----------|-----------|-------------------------------------------------|
+| 1 | string | No | %b %e, %Y | This is the format for the outputted date. |
+| 2 | string | No | n/a | This is the default date if the input is empty. |
+
+> **Note**
+>
+> Since Smarty-2.6.10 numeric values passed to `date_format` are
+> *always* (except for mysql timestamps, see below) interpreted as a
+> unix timestamp.
+>
+> Before Smarty-2.6.10 numeric strings that where also parsable by
+> `strtotime()` in php (like `YYYYMMDD`) where sometimes (depending on
+> the underlying implementation of `strtotime()`) interpreted as date
+> strings and NOT as timestamps.
+>
+> The only exception are mysql timestamps: They are also numeric only
+> and 14 characters long (`YYYYMMDDHHMMSS`), mysql timestamps have
+> precedence over unix timestamps.
+
+> **Note**
+>
+> `date_format` is essentially a wrapper to PHP's
+> [`strftime()`](https://www.php.net/strftime) function. You may have more
+> or less conversion specifiers available depending on your system's
+> [`strftime()`](https://www.php.net/strftime) function where PHP was
+> compiled. Check your system\'s manpage for a full list of valid
+> specifiers. However, a few of the specifiers are emulated on Windows.
+> These are: %D, %e, %h, %l, %n, %r, %R, %t, %T.
+
+## Examples
+
+```php
+assign('config', $config);
+$smarty->assign('yesterday', strtotime('-1 day'));
+
+```
+
+This template uses [`$smarty.now`](../language-variables/language-variables-smarty.md#smartynow-languagevariablessmartynow) to
+get the current time:
+
+```smarty
+{$smarty.now|date_format}
+{$smarty.now|date_format:"%D"}
+{$smarty.now|date_format:$config.date}
+{$yesterday|date_format}
+{$yesterday|date_format:"%A, %B %e, %Y"}
+{$yesterday|date_format:$config.time}
+```
+
+This above will output:
+
+```
+Jan 1, 2022
+01/01/22
+02:33 pm
+Dec 31, 2021
+Monday, December 1, 2021
+14:33:00
+```
+
+## Conversion specifiers
+
+`date_format` conversion specifiers:
+
+- %a - abbreviated weekday name according to the current locale
+- %A - full weekday name according to the current locale
+- %b - abbreviated month name according to the current locale
+- %B - full month name according to the current locale
+- %c - preferred date and time representation for the current locale
+- %C - century number (the year divided by 100 and truncated to an
+ integer, range 00 to 99)
+- %d - day of the month as a decimal number (range 01 to 31)
+- %D - same as %m/%d/%y
+- %e - day of the month as a decimal number, a single digit is
+ preceded by a space (range 1 to 31)
+- %g - Week-based year within century \[00,99\]
+- %G - Week-based year, including the century \[0000,9999\]
+- %h - same as %b
+- %H - hour as a decimal number using a 24-hour clock (range 00
+ to 23)
+- %I - hour as a decimal number using a 12-hour clock (range 01
+ to 12)
+- %j - day of the year as a decimal number (range 001 to 366)
+- %k - Hour (24-hour clock) single digits are preceded by a blank.
+ (range 0 to 23)
+- %l - hour as a decimal number using a 12-hour clock, single digits
+ preceded by a space (range 1 to 12)
+- %m - month as a decimal number (range 01 to 12)
+- %M - minute as a decimal number
+- %n - newline character
+- %p - either 'am' or 'pm' according to the given time value, or
+ the corresponding strings for the current locale
+- %r - time in a.m. and p.m. notation
+- %R - time in 24 hour notation
+- %S - second as a decimal number
+- %t - tab character
+- %T - current time, equal to %H:%M:%S
+- %u - weekday as a decimal number \[1,7\], with 1 representing
+ Monday
+- %U - week number of the current year as a decimal number, starting
+ with the first Sunday as the first day of the first week
+- %V - The ISO 8601:1988 week number of the current year as a decimal
+ number, range 01 to 53, where week 1 is the first week that has at
+ least 4 days in the current year, and with Monday as the first day
+ of the week.
+- %w - day of the week as a decimal, Sunday being 0
+- %W - week number of the current year as a decimal number, starting
+ with the first Monday as the first day of the first week
+- %x - preferred date representation for the current locale without
+ the time
+- %X - preferred time representation for the current locale without
+ the date
+- %y - year as a decimal number without a century (range 00 to 99)
+- %Y - year as a decimal number including the century
+- %Z - time zone or name or abbreviation
+- %% - a literal '%' character
+
+See also [`$smarty.now`](../language-variables/language-variables-smarty.md#smartynow-languagevariablessmartynow),
+[`strftime()`](https://www.php.net/strftime),
+[`{html_select_date}`](../language-custom-functions/language-function-html-select-date.md) and the
+[date tips](../../appendixes/tips.md#dates) page.
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-default.md b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-default.md
new file mode 100644
index 000000000..b8697a0d9
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-default.md
@@ -0,0 +1,45 @@
+# default
+
+This is used to set a default value for a variable. If the variable is
+unset or an empty string, the given default value is printed instead.
+Default takes the one argument.
+
+## Basic usage
+```smarty
+{$myVar|default:"(none)"}
+```
+
+## Parameters
+
+| Parameter | Type | Required | Default | Description |
+|-----------|--------|----------|---------|---------------------------------------------------------------|
+| 1 | string | No | *empty* | This is the default value to output if the variable is empty. |
+
+## Examples
+
+```php
+assign('articleTitle', 'Dealers Will Hear Car Talk at Noon.');
+ $smarty->assign('email', '');
+
+```
+
+Where template is:
+
+```smarty
+{$articleTitle|default:'no title'}
+{$myTitle|default:'no title'}
+{$email|default:'No email address available'}
+```
+
+Will output:
+
+```
+Dealers Will Hear Car Talk at Noon.
+no title
+No email address available
+```
+
+See also the [default variable handling](../../appendixes/tips.md#default-variable-handling) and
+the [blank variable handling](../../appendixes/tips.md#blank-variable-handling) pages.
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-escape.md b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-escape.md
new file mode 100644
index 000000000..6fd5dd2b4
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-escape.md
@@ -0,0 +1,78 @@
+# escape
+
+`escape` is used to encode or escape a variable to `html`, `url`,
+`single quotes`, `hex`, `hexentity`, `javascript` and `mail`. By default
+its `html`.
+
+## Basic usage
+```smarty
+{$myVar|escape}
+```
+
+## Parameters
+
+| Parameter Position | Type | Required | Possible Values | Default | Description |
+|--------------------|---------|----------|----------------------------------------------------------------------------------------------------------------|---------|--------------------------------------------------------------------------------------|
+| 1 | string | No | `html`, `htmlall`, `url`, `urlpathinfo`, `quotes`, `hex`, `hexentity`, `javascript`, `mail` | `html` | This is the escape format to use. |
+| 2 | string | No | `ISO-8859-1`, `UTF-8`, and any character set supported by [`htmlentities()`](https://www.php.net/htmlentities) | `UTF-8` | The character set encoding passed to htmlentities() et. al. |
+| 3 | boolean | No | FALSE | TRUE | Double encode entities from & to & (applies to `html` and `htmlall` only) |
+
+
+## Examples
+
+```php
+assign('articleTitle',
+ "'Stiff Opposition Expected to Casketless Funeral Plan'"
+ );
+$smarty->assign('EmailAddress','smarty@example.com');
+
+```
+
+
+These are example `escape` template lines followed by the output
+
+```smarty
+{$articleTitle}
+'Stiff Opposition Expected to Casketless Funeral Plan'
+
+{$articleTitle|escape}
+'Stiff Opposition Expected to Casketless Funeral Plan'
+
+{$articleTitle|escape:'html'} {* escapes & " ' < > *}
+'Stiff Opposition Expected to Casketless Funeral Plan'
+
+{$articleTitle|escape:'htmlall'} {* escapes ALL html entities *}
+'Stiff Opposition Expected to Casketless Funeral Plan'
+
+click here
+click here
+
+{$articleTitle|escape:'quotes'}
+\'Stiff Opposition Expected to Casketless Funeral Plan\'
+
+{$EmailAddress|escape:"hexentity"}
+{$EmailAddress|escape:'mail'} {* this converts to email to text *}
+bob..snip..et
+
+{'mail@example.com'|escape:'mail'}
+smarty [AT] example [DOT] com
+
+{* the "rewind" parameter registers the current location *}
+click here
+
+```
+
+This snippet is useful for emails, but see also
+[`{mailto}`](../language-custom-functions/language-function-mailto.md)
+
+```smarty
+{* email address mangled *}
+{$EmailAddress|escape:'mail'}
+```
+
+See also [escaping smarty parsing](../language-basic-syntax/language-escaping.md),
+[`{mailto}`](../language-custom-functions/language-function-mailto.md) and the [obfuscating email
+addresses](../../appendixes/tips.md#obfuscating-e-mail-addresses) page.
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-from-charset.md b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-from-charset.md
new file mode 100644
index 000000000..bf4b4769e
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-from-charset.md
@@ -0,0 +1,20 @@
+# from_charset
+
+`from_charset` is used to transcode a string from a given charset to the
+internal charset. This is the exact opposite of the [to_charset
+modifier](language-modifier-to-charset.md).
+
+## Parameters
+
+| Parameter Position | Type | Required | Possible Values | Default | Description |
+|--------------------|--------|----------|------------------------------------------------------------------------------------------------------------------------------|--------------|---------------------------------------------------------------|
+| 1 | string | No | `ISO-8859-1`, `UTF-8`, and any character set supported by [`mb_convert_encoding()`](https://www.php.net/mb_convert_encoding) | `ISO-8859-1` | The charset encoding the value is supposed to be decoded from |
+
+> **Note**
+>
+> Charset encoding should be handled by the application itself. This
+> modifier should only be used in cases where the application cannot
+> anticipate that a certain string is required in another encoding.
+
+See also [Charset Encoding](../../programmers/charset.md), [to_charset
+modifier](language-modifier-to-charset.md).
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-indent.md b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-indent.md
new file mode 100644
index 000000000..9fa3540a3
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-indent.md
@@ -0,0 +1,67 @@
+# indent
+
+This indents a string on each line, default is 4. As an optional
+parameter, you can specify the number of characters to indent. As an
+optional second parameter, you can specify the character to use to
+indent with. For example: use `"\t"` for a tab.
+
+## Basic usage
+```smarty
+{$myVar|indent:4}
+```
+
+## Parameters
+
+| Parameter Position | Type | Required | Default | Description |
+|--------------------|---------|----------|-------------|---------------------------------------------------|
+| 1 | integer | No | 4 | This determines how many characters to indent to. |
+| 2 | string | No | (one space) | This is the character used to indent with. |
+
+## Examples
+
+```php
+assign('articleTitle',
+ 'NJ judge to rule on nude beach.
+Sun or rain expected today, dark tonight.
+Statistics show that teen pregnancy drops off significantly after 25.'
+ );
+```
+
+Where template is:
+
+```smarty
+{$articleTitle}
+
+{$articleTitle|indent}
+
+{$articleTitle|indent:10}
+
+{$articleTitle|indent:1:"\t"}
+```
+
+Will output:
+
+```
+NJ judge to rule on nude beach.
+Sun or rain expected today, dark tonight.
+Statistics show that teen pregnancy drops off significantly after 25.
+
+ NJ judge to rule on nude beach.
+ Sun or rain expected today, dark tonight.
+ Statistics show that teen pregnancy drops off significantly after 25.
+
+ NJ judge to rule on nude beach.
+ Sun or rain expected today, dark tonight.
+ Statistics show that teen pregnancy drops off significantly after 25.
+
+ NJ judge to rule on nude beach.
+ Sun or rain expected today, dark tonight.
+ Statistics show that teen pregnancy drops off significantly after 25.
+```
+
+
+See also [`strip`](language-modifier-strip.md),
+[`wordwrap`](language-modifier-wordwrap.md) and
+[`spacify`](language-modifier-spacify.md).
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-lower.md b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-lower.md
new file mode 100644
index 000000000..e5e6886f1
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-lower.md
@@ -0,0 +1,34 @@
+# lower
+
+This is used to lowercase a variable. This is equivalent to the PHP
+[`strtolower()`](https://www.php.net/strtolower) function.
+
+## Basic usage
+```smarty
+{$myVar|lower}
+```
+
+## Examples
+
+```php
+assign('articleTitle', 'Two Convicts Evade Noose, Jury Hung.');
+```
+
+Where template is:
+
+```smarty
+{$articleTitle}
+{$articleTitle|lower}
+```
+
+This will output:
+
+```
+Two Convicts Evade Noose, Jury Hung.
+two convicts evade noose, jury hung.
+```
+
+See also [`upper`](language-modifier-upper.md) and
+[`capitalize`](language-modifier-capitalize.md).
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-nl2br.md b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-nl2br.md
new file mode 100644
index 000000000..2808716fc
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-nl2br.md
@@ -0,0 +1,37 @@
+# nl2br
+
+All `"\n"` line breaks will be converted to html ` ` tags in the
+given variable. This is equivalent to the PHP\'s
+[`nl2br()`](https://www.php.net/nl2br) function.
+
+## Basic usage
+```smarty
+{$myVar|nl2br}
+```
+
+## Examples
+
+```php
+assign('articleTitle',
+ "Sun or rain expected\ntoday, dark tonight"
+ );
+
+```
+
+Where the template is:
+
+```smarty
+{$articleTitle|nl2br}
+```
+
+Will output:
+
+```
+Sun or rain expected today, dark tonight
+```
+
+See also [`word_wrap`](language-modifier-wordwrap.md),
+[`count_paragraphs`](language-modifier-count-paragraphs.md) and
+[`count_sentences`](language-modifier-count-sentences.md).
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-regex-replace.md b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-regex-replace.md
new file mode 100644
index 000000000..033d2a43d
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-regex-replace.md
@@ -0,0 +1,55 @@
+# regex_replace
+
+A regular expression search and replace on a variable. Use the
+[`preg_replace()`](https://www.php.net/preg_replace) syntax from the PHP
+manual.
+
+## Basic usage
+```smarty
+{$myVar|regex_replace:"/foo/":"bar"}
+```
+
+> **Note**
+>
+> Although Smarty supplies this regex convenience modifier, it is
+> usually better to apply regular expressions in PHP, either via custom
+> functions or modifiers. Regular expressions are considered application
+> code and are not part of presentation logic.
+
+## Parameters
+
+| Parameter Position | Type | Required | Description |
+|--------------------|--------|----------|------------------------------------------------|
+| 1 | string | Yes | This is the regular expression to be replaced. |
+| 2 | string | Yes | This is the string of text to replace with. |
+
+
+## Examples
+
+```php
+assign('articleTitle', "Infertility unlikely to\nbe passed on, experts say.");
+
+```
+
+Where template is:
+
+```smarty
+{* replace each carriage return, tab and new line with a space *}
+
+{$articleTitle}
+{$articleTitle|regex_replace:"/[\r\t\n]/":" "}
+```
+
+Will output:
+
+```
+Infertility unlikely to
+be passed on, experts say.
+Infertility unlikely to be passed on, experts say.
+```
+
+
+See also [`replace`](language-modifier-replace.md) and
+[`escape`](language-modifier-escape.md).
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-replace.md b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-replace.md
new file mode 100644
index 000000000..0e01ab46f
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-replace.md
@@ -0,0 +1,45 @@
+# replace
+
+A simple search and replace on a variable. This is equivalent to the
+PHP's [`str_replace()`](https://www.php.net/str_replace) function.
+
+## Basic usage
+```smarty
+{$myVar|replace:"foo":"bar"}
+```
+
+## Parameters
+
+| Parameter Position | Type | Required | Description |
+|--------------------|--------|----------|---------------------------------------------|
+| 1 | string | Yes | This is the string of text to be replaced. |
+| 2 | string | Yes | This is the string of text to replace with. |
+
+
+## Examples
+
+```php
+assign('articleTitle', "Child's Stool Great for Use in Garden.");
+
+```
+
+Where template is:
+
+```smarty
+{$articleTitle}
+{$articleTitle|replace:'Garden':'Vineyard'}
+{$articleTitle|replace:' ':' '}
+```
+
+Will output:
+
+```
+Child's Stool Great for Use in Garden.
+Child's Stool Great for Use in Vineyard.
+Child's Stool Great for Use in Garden.
+```
+
+See also [`regex_replace`](language-modifier-regex-replace.md) and
+[`escape`](language-modifier-escape.md).
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-spacify.md b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-spacify.md
new file mode 100644
index 000000000..229e2d22d
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-spacify.md
@@ -0,0 +1,44 @@
+# spacify
+
+`spacify` is a way to insert a space between every character of a
+variable. You can optionally pass a different character or string to
+insert.
+
+## Basic usage
+```smarty
+{$myVar|spacify}
+```
+
+## Parameters
+
+| Parameter Position | Type | Required | Default | Description |
+|--------------------|--------|----------|-------------|-----------------------------------------------------------------|
+| 1 | string | No | *one space* | This what gets inserted between each character of the variable. |
+
+## Examples
+
+```php
+assign('articleTitle', 'Something Went Wrong in Jet Crash, Experts Say.');
+
+```
+
+Where template is:
+
+```smarty
+{$articleTitle}
+{$articleTitle|spacify}
+{$articleTitle|spacify:"^^"}
+```
+
+Will output:
+
+```
+Something Went Wrong in Jet Crash, Experts Say.
+S o m e t h i n g W .... snip .... s h , E x p e r t s S a y .
+S^^o^^m^^e^^t^^h^^i^^n^^g^^ .... snip .... ^^e^^r^^t^^s^^ ^^S^^a^^y^^.
+```
+
+See also [`wordwrap`](language-modifier-wordwrap.md) and
+[`nl2br`](language-modifier-nl2br.md).
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-string-format.md b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-string-format.md
new file mode 100644
index 000000000..6163a0785
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-string-format.md
@@ -0,0 +1,43 @@
+# string_format
+
+This is a way to format strings, such as decimal numbers and such. Use
+the syntax for [`sprintf()`](https://www.php.net/sprintf) for the
+formatting.
+
+## Basic usage
+```smarty
+{$myVar|string_format:"%d"}
+```
+
+## Parameters
+
+| Parameter Position | Type | Required | Description |
+|--------------------|--------|----------|---------------------------------------|
+| 1 | string | Yes | This is what format to use. (sprintf) |
+
+## Examples
+
+```php
+assign('number', 23.5787446);
+
+```
+
+Where template is:
+
+```smarty
+{$number}
+{$number|string_format:"%.2f"}
+{$number|string_format:"%d"}
+```
+
+Will output:
+
+```
+23.5787446
+23.58
+23
+```
+
+See also [`date_format`](language-modifier-date-format.md).
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-strip-tags.md b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-strip-tags.md
new file mode 100644
index 000000000..7d94fdd0d
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-strip-tags.md
@@ -0,0 +1,46 @@
+# strip_tags
+
+This strips out HTML markup tags, basically anything between `<` and `>`.
+
+## Basic usage
+```smarty
+{$myVar|strip_tags}
+```
+
+## Parameters
+
+| Parameter Position | Type | Required | Default | Description |
+|--------------------|------|----------|---------|------------------------------------------------------------|
+| 1 | bool | No | TRUE | This determines whether the tags are replaced by ' ' or '' |
+
+## Examples
+
+```php
+assign('articleTitle',
+ "Blind Woman Gets New
+Kidney from Dad she Hasn't Seen in years ."
+ );
+
+```
+
+
+Where template is:
+
+```smarty
+{$articleTitle}
+{$articleTitle|strip_tags} {* same as {$articleTitle|strip_tags:true} *}
+{$articleTitle|strip_tags:false}
+```
+
+Will output:
+
+```html
+Blind Woman Gets New Kidney from Dad she Hasn't Seen in years .
+Blind Woman Gets New Kidney from Dad she Hasn't Seen in years .
+Blind Woman Gets New Kidney from Dad she Hasn't Seen in years.
+```
+
+See also [`replace`](language-modifier-replace.md) and
+[`regex_replace`](language-modifier-regex-replace.md).
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-strip.md b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-strip.md
new file mode 100644
index 000000000..b7bdc282c
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-strip.md
@@ -0,0 +1,42 @@
+# strip
+
+This replaces all spaces, newlines and tabs with a single space, or with
+the supplied string.
+
+## Basic usage
+```smarty
+{$myVar|strip}
+```
+
+> **Note**
+>
+> If you want to strip blocks of template text, use the built-in
+> [`{strip}`](../language-builtin-functions/language-function-strip.md) function.
+
+## Examples
+
+```php
+assign('articleTitle', "Grandmother of\neight makes\t hole in one.");
+$smarty->display('index.tpl');
+```
+
+Where template is:
+
+```smarty
+{$articleTitle}
+{$articleTitle|strip}
+{$articleTitle|strip:' '}
+```
+
+Will output:
+
+```html
+Grandmother of
+eight makes hole in one.
+Grandmother of eight makes hole in one.
+Grandmother of eight makes hole in one.
+```
+
+See also [`{strip}`](../language-builtin-functions/language-function-strip.md) and
+[`truncate`](language-modifier-truncate.md).
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-to-charset.md b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-to-charset.md
new file mode 100644
index 000000000..c0b003842
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-to-charset.md
@@ -0,0 +1,20 @@
+# to_charset
+
+`to_charset` is used to transcode a string from the internal charset to
+a given charset. This is the exact opposite of the [from_charset
+modifier](#language.modifier.from_charset).
+
+## Parameters
+
+| Parameter Position | Type | Required | Possible Values | Default | Description |
+|--------------------|--------|----------|------------------------------------------------------------------------------------------------------------------------------|--------------|-------------------------------------------------------------|
+| 1 | string | No | `ISO-8859-1`, `UTF-8`, and any character set supported by [`mb_convert_encoding()`](https://www.php.net/mb_convert_encoding) | `ISO-8859-1` | The charset encoding the value is supposed to be encoded to |
+
+> **Note**
+>
+> Charset encoding should be handled by the application itself. This
+> modifier should only be used in cases where the application cannot
+> anticipate that a certain string is required in another encoding.
+
+See also [Charset Encoding](../../programmers/charset.md), [from_charset
+modifier](language-modifier-from-charset.md).
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-truncate.md b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-truncate.md
new file mode 100644
index 000000000..1cbb7abcb
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-truncate.md
@@ -0,0 +1,57 @@
+# truncate
+
+This truncates a variable to a character length, the default is 80. As
+an optional second parameter, you can specify a string of text to
+display at the end if the variable was truncated. The characters in the
+string are included with the original truncation length. By default,
+`truncate` will attempt to cut off at a word boundary. If you want to
+cut off at the exact character length, pass the optional third parameter
+of TRUE.
+
+## Basic usage
+```smarty
+{$myVar|truncate:40:"..."}
+```
+
+## Parameters
+
+| Parameter Position | Type | Required | Default | Description |
+|--------------------|---------|----------|---------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
+| 1 | integer | No | 80 | This determines how many characters to truncate to. |
+| 2 | string | No | \... | This is a text string that replaces the truncated text. Its length is included in the truncation length setting. |
+| 3 | boolean | No | FALSE | This determines whether or not to truncate at a word boundary with FALSE, or at the exact character with TRUE. |
+| 4 | boolean | No | FALSE | This determines whether the truncation happens at the end of the string with FALSE, or in the middle of the string with TRUE. Note that if this setting is TRUE, then word boundaries are ignored. |
+
+## Examples
+
+```php
+assign('articleTitle', 'Two Sisters Reunite after Eighteen Years at Checkout Counter.');
+```
+
+where template is:
+
+```smarty
+{$articleTitle}
+{$articleTitle|truncate}
+{$articleTitle|truncate:30}
+{$articleTitle|truncate:30:""}
+{$articleTitle|truncate:30:"---"}
+{$articleTitle|truncate:30:"":true}
+{$articleTitle|truncate:30:"...":true}
+{$articleTitle|truncate:30:'..':true:true}
+```
+
+This will output:
+
+```
+Two Sisters Reunite after Eighteen Years at Checkout Counter.
+Two Sisters Reunite after Eighteen Years at Checkout Counter.
+Two Sisters Reunite after...
+Two Sisters Reunite after
+Two Sisters Reunite after---
+Two Sisters Reunite after Eigh
+Two Sisters Reunite after E...
+Two Sisters Re..ckout Counter.
+```
+
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-unescape.md b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-unescape.md
new file mode 100644
index 000000000..8e8603053
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-unescape.md
@@ -0,0 +1,43 @@
+# unescape
+
+`unescape` is used to decode `entity`, `html` and `htmlall`. It counters
+the effects of the [escape modifier](language-modifier-escape.md) for the
+given types.
+
+## Basic usage
+```smarty
+{$myVar|unescape}
+```
+
+## Parameters
+
+| Parameter Position | Type | Required | Possible Values | Default | Description |
+|--------------------|--------|----------|----------------------------------------------------------------------------------------------------------------|---------|------------------------------------------------------------------------------------------------------------------------------|
+| 1 | string | No | `html`, `htmlall`, `entity`, | `html` | This is the escape format to use. |
+| 2 | string | No | `ISO-8859-1`, `UTF-8`, and any character set supported by [`htmlentities()`](https://www.php.net/htmlentities) | `UTF-8` | The character set encoding passed to html\_entity\_decode() or htmlspecialchars\_decode() or mb\_convert\_encoding() et. al. |
+
+## Examples
+
+```php
+assign('articleTitle',
+ "Germans use "Ümlauts" and pay in €uro"
+ );
+```
+
+These are example `unescape` template lines followed by the output
+
+```smarty
+{$articleTitle}
+Germans use "Ümlauts" and pay in €uro
+
+{$articleTitle|unescape:"html"}
+Germans use "Ümlauts" and pay in €uro
+
+{$articleTitle|unescape:"htmlall"}
+Germans use "Ümlauts" and pay in €uro
+```
+
+See also [escaping smarty parsing](../language-basic-syntax/language-escaping.md), [escape
+modifier](language-modifier-escape.md).
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-upper.md b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-upper.md
new file mode 100644
index 000000000..3173059c9
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-upper.md
@@ -0,0 +1,33 @@
+# upper
+
+This is used to uppercase a variable. This is equivalent to the PHP
+[`strtoupper()`](https://www.php.net/strtoupper) function.
+
+## Basic usage
+```smarty
+{$myVar|upper}
+```
+
+## Examples
+
+```php
+assign('articleTitle', "If Strike isn't Settled Quickly it may Last a While.");
+```
+
+Where template is:
+
+```smarty
+{$articleTitle}
+{$articleTitle|upper}
+```
+
+Will output:
+
+```
+If Strike isn't Settled Quickly it may Last a While.
+IF STRIKE ISN'T SETTLED QUICKLY IT MAY LAST A WHILE.
+```
+
+See also [`lower`](lower) and
+[`capitalize`](language-modifier-capitalize.md).
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-wordwrap.md b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-wordwrap.md
new file mode 100644
index 000000000..f3348fd72
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-wordwrap.md
@@ -0,0 +1,73 @@
+# wordwrap
+
+Wraps a string to a column width, the default is 80. As an optional
+second parameter, you can specify a string of text to wrap the text to
+the next line, the default is a carriage return `"\n"`. By default,
+`wordwrap` will attempt to wrap at a word boundary. If you want to cut
+off at the exact character length, pass the optional third parameter as
+TRUE. This is equivalent to the PHP
+[`wordwrap()`](https://www.php.net/wordwrap) function.
+
+## Basic usage
+```smarty
+{$myVar|wordwrap:30}
+```
+
+## Parameters
+
+| Parameter Position | Type | Required | Default | Description |
+|--------------------|---------|----------|---------|-----------------------------------------------------------------------------------------------|
+| 1 | integer | No | 80 | This determines how many columns to wrap to. |
+| 2 | string | No | \\n | This is the string used to wrap words with. |
+| 3 | boolean | No | FALSE | This determines whether to wrap at a word boundary (FALSE), or at the exact character (TRUE). |
+
+## Examples
+
+```php
+assign('articleTitle',
+ "Blind woman gets new kidney from dad she hasn't seen in years."
+ );
+
+```
+
+Where template is
+
+```smarty
+{$articleTitle}
+
+{$articleTitle|wordwrap:30}
+
+{$articleTitle|wordwrap:20}
+
+{$articleTitle|wordwrap:30:" \n"}
+
+{$articleTitle|wordwrap:26:"\n":true}
+```
+
+Will output:
+
+```html
+Blind woman gets new kidney from dad she hasn't seen in years.
+
+Blind woman gets new kidney
+from dad she hasn't seen in
+years.
+
+Blind woman gets new
+kidney from dad she
+hasn't seen in
+years.
+
+Blind woman gets new kidney
+from dad she hasn't seen in
+years.
+
+Blind woman gets new kidn
+ey from dad she hasn't se
+en in years.
+```
+
+See also [`nl2br`](language-modifier-nl2br.md) and
+[`{textformat}`](../language-custom-functions/language-function-textformat.md).
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/designers/language-variables/index.md b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/designers/language-variables/index.md
new file mode 100644
index 000000000..58ae6eb95
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/designers/language-variables/index.md
@@ -0,0 +1,36 @@
+# Variables
+
+Smarty has several types of variables. The type of the
+variable depends on what symbol it is prefixed or enclosed within.
+
+- [Variables assigned from PHP](language-assigned-variables.md)
+- [Variables loaded from config files](language-config-variables.md)
+- [{$smarty} reserved variable](language-variables-smarty.md)
+
+Variables in Smarty can be either displayed directly or used as
+arguments for [functions](../language-basic-syntax/language-syntax-functions.md),
+[attributes](../language-basic-syntax/language-syntax-attributes.md) and
+[modifiers](../language-modifiers/index.md), inside conditional expressions, etc.
+To print a variable, simply enclose it in the
+[delimiters](../../programmers/api-variables/variable-left-delimiter.md) so that it is the only thing
+contained between them.
+
+```smarty
+{$Name}
+
+{$product.part_no} {$product.description}
+
+{$Contacts[row].Phone}
+
+
+```
+
+## Scopes
+You can assign variables to specific [variable scopes](language-variable-scopes.md).
+
+
+> **Note**
+>
+> An easy way to examine assigned Smarty variables is with the
+> [debugging console](../chapter-debugging-console.md).
+
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/designers/language-variables/language-assigned-variables.md b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/designers/language-variables/language-assigned-variables.md
new file mode 100644
index 000000000..bd356a2b0
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/designers/language-variables/language-assigned-variables.md
@@ -0,0 +1,126 @@
+# Variables assigned from PHP
+
+Variables assigned from PHP are referenced by preceding them with a dollar
+(`$`) sign.
+
+## Examples
+
+```php
+assign('firstname', 'Doug');
+$smarty->assign('lastname', 'Evans');
+$smarty->assign('meetingPlace', 'New York');
+
+$smarty->display('index.tpl');
+
+```
+
+`index.tpl` source:
+
+```smarty
+Hello {$firstname} {$lastname}, glad to see you can make it.
+
+{* this will not work as $variables are case sensitive *}
+This weeks meeting is in {$meetingplace}.
+{* this will work *}
+This weeks meeting is in {$meetingPlace}.
+```
+
+This above would output:
+
+```html
+Hello Doug Evans, glad to see you can make it.
+
+This weeks meeting is in .
+This weeks meeting is in New York.
+```
+
+## Associative arrays
+
+You can also reference associative array variables by specifying the key
+after a dot "." symbol.
+
+```php
+assign('Contacts',
+ array('fax' => '555-222-9876',
+ 'email' => 'zaphod@slartibartfast.example.com',
+ 'phone' => array('home' => '555-444-3333',
+ 'cell' => '555-111-1234')
+ )
+ );
+$smarty->display('index.tpl');
+```
+
+`index.tpl` source:
+
+```smarty
+{$Contacts.fax}
+{$Contacts.email}
+{* you can print arrays of arrays as well *}
+{$Contacts.phone.home}
+{$Contacts.phone.cell}
+```
+
+this will output:
+
+```html
+555-222-9876
+zaphod@slartibartfast.example.com
+555-444-3333
+555-111-1234
+```
+
+## Array indexes
+
+You can reference arrays by their index, much like native PHP syntax.
+
+```php
+assign('Contacts', array(
+ '555-222-9876',
+ 'zaphod@slartibartfast.example.com',
+ array('555-444-3333',
+ '555-111-1234')
+ ));
+$smarty->display('index.tpl');
+```
+
+`index.tpl` source:
+
+```smarty
+{$Contacts[0]}
+{$Contacts[1]}
+{* you can print arrays of arrays as well *}
+{$Contacts[2][0]}
+{$Contacts[2][1]}
+```
+
+This will output:
+
+```html
+555-222-9876
+zaphod@slartibartfast.example.com
+555-444-3333
+555-111-1234
+```
+
+## Objects
+
+Properties of [objects](../../programmers/advanced-features/advanced-features-objects.md) assigned from PHP
+can be referenced by specifying the property name after the `->` symbol.
+
+```smarty
+name: {$person->name}
+email: {$person->email}
+```
+
+this will output:
+
+```html
+name: Zaphod Beeblebrox
+email: zaphod@slartibartfast.example.com
+```
\ No newline at end of file
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/designers/language-variables/language-config-variables.md b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/designers/language-variables/language-config-variables.md
new file mode 100644
index 000000000..89a90ce11
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/designers/language-variables/language-config-variables.md
@@ -0,0 +1,79 @@
+# Variables loaded from config files
+
+Variables that are loaded from the [config files](../config-files.md) are
+referenced by enclosing them within `#hash_marks#`, or with the smarty
+variable [`$smarty.config`](language-variables-smarty.md#smartyconfig-languagevariablessmartyconfig). The
+later syntax is useful for embedding into quoted attribute values, or
+accessing variable values such as `$smarty.config.$foo`.
+
+## Examples
+
+Example config file - `foo.conf`:
+```ini
+pageTitle = "This is mine"
+bodyBgColor = '#eeeeee'
+tableBorderSize = 3
+tableBgColor = "#bbbbbb"
+rowBgColor = "#cccccc"
+```
+
+A template demonstrating the `#hash#` method:
+
+```smarty
+{config_load file='foo.conf'}
+
+ {#pageTitle#}
+
+
+
+ First
+ Last
+ Address
+
+
+
+
+```
+
+A template demonstrating the
+[`$smarty.config`](language-variables-smarty.md#smartyconfig-languagevariablessmartyconfig) method:
+
+```smarty
+{config_load file='foo.conf'}
+
+{$smarty.config.pageTitle}
+
+
+
+ First
+ Last
+ Address
+
+
+
+
+```
+
+Both examples would output:
+
+```html
+
+ This is mine
+
+
+
+ First
+ Last
+ Address
+
+
+
+
+```
+
+Config file variables cannot be used until after they are loaded in from
+a config file. This procedure is explained later in this document under
+[`{config_load}`](../language-builtin-functions/language-function-config-load.md).
+
+See also [variables](../language-basic-syntax/language-syntax-variables.md) and [$smarty reserved
+variables](language-variables-smarty.md).
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/designers/language-variables/language-variable-scopes.md b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/designers/language-variables/language-variable-scopes.md
new file mode 100644
index 000000000..e2b244661
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/designers/language-variables/language-variable-scopes.md
@@ -0,0 +1,60 @@
+# Variable scopes
+
+You have the choice to assign variables to the scope of the main Smarty
+object, data objects created with [`createData()`](../../programmers/api-functions/api-create-data.md),
+and template objects created with
+[`createTemplate()`](../../programmers/api-functions/api-create-template.md). These objects can be
+chained. A template sees all the variables of its own object and all
+variables assigned to the objects in its chain of parent objects.
+
+By default, templates which are rendered by
+[`$smarty->display(...)`](../../programmers/api-functions/api-display.md) or
+[`$smarty->fetch(...)`](../../programmers/api-functions/api-fetch.md) calls are automatically linked to
+the Smarty object variable scope.
+
+By assigning variables to individual data or template objects you have
+full control which variables can be seen by a template.
+
+```php
+assign('foo','smarty');
+
+// assign variables to data object scope
+$data = $smarty->createData();
+$data->assign('foo','data');
+$data->assign('bar','bar-data');
+
+// assign variables to other data object scope
+$data2 = $smarty->createData($data);
+$data2->assign('bar','bar-data2');
+
+// assign variable to template object scope
+$tpl = $smarty->createTemplate('index.tpl');
+$tpl->assign('bar','bar-template');
+
+// assign variable to template object scope with link to Smarty object
+$tpl2 = $smarty->createTemplate('index.tpl',$smarty);
+$tpl2->assign('bar','bar-template2');
+
+// This display() does see $foo='smarty' from the $smarty object
+$smarty->display('index.tpl');
+
+// This display() does see $foo='data' and $bar='bar-data' from the data object $data
+$smarty->display('index.tpl',$data);
+
+// This display() does see $foo='data' from the data object $data
+// and $bar='bar-data2' from the data object $data2
+$smarty->display('index.tpl',$data2);
+
+// This display() does see $bar='bar-template' from the template object $tpl
+$tpl->display(); // or $smarty->display($tpl);
+
+// This display() does see $bar='bar-template2' from the template object $tpl2
+// and $foo='smarty' form the Smarty object $foo
+$tpl2->display(); // or $smarty->display($tpl2);
+```
+
+See also [`assign()`](../../programmers/api-functions/api-assign.md),
+[`createData()`](../../programmers/api-functions/api-create-data.md)
+and [`createTemplate()`](../../programmers/api-functions/api-create-template.md).
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/designers/language-variables/language-variables-smarty.md b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/designers/language-variables/language-variables-smarty.md
new file mode 100644
index 000000000..da543fb62
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/designers/language-variables/language-variables-smarty.md
@@ -0,0 +1,156 @@
+# {$smarty} reserved variable
+
+The PHP reserved `{$smarty}` variable can be used to access several
+environment and request variables. The full list of them follows.
+
+## Request variables
+
+The [request variables](https://www.php.net/reserved.variables) such as
+`$_GET`, `$_POST`, `$_COOKIE`, `$_SERVER`, `$_ENV` and `$_SESSION` can
+be accessed as demonstrated in the examples below:
+
+```smarty
+{* display value of page from URL ($_GET) http://www.example.com/index.php?page=foo *}
+{$smarty.get.page}
+
+{* display the variable "page" from a form ($_POST['page']) *}
+{$smarty.post.page}
+
+{* display the value of the cookie "username" ($_COOKIE['username']) *}
+{$smarty.cookies.username}
+
+{* display the server variable "SERVER_NAME" ($_SERVER['SERVER_NAME'])*}
+{$smarty.server.SERVER_NAME}
+
+{* display the system environment variable "PATH" *}
+{$smarty.env.PATH}
+
+{* display the php session variable "id" ($_SESSION['id']) *}
+{$smarty.session.id}
+
+{* display the variable "username" from merged get/post/cookies/server/env *}
+{$smarty.request.username}
+```
+
+> **Note**
+>
+> For historical reasons `{$SCRIPT_NAME}` is shorthand for
+> `{$smarty.server.SCRIPT_NAME}`.
+>
+>
+> click me
+> click me
+
+> **Note**
+>
+> Although Smarty provides direct access to PHP super globals for
+> convenience, it should be used with caution. Directly accessing super
+> globals mixes underlying application code structure with templates. A
+> good practice is to assign specific needed values to template vars.
+
+## {$smarty.now}
+
+The current [timestamp](https://www.php.net/function.time) can be accessed
+with `{$smarty.now}`. The value reflects the number of seconds passed
+since the so-called Epoch on January 1, 1970, and can be passed directly
+to the [`date_format`](../language-modifiers/language-modifier-date-format.md) modifier for
+display. Note that [`time()`](https://www.php.net/function.time) is called
+on each invocation; eg a script that takes three seconds to execute with
+a call to `$smarty.now` at start and end will show the three-second
+difference.
+
+```smarty
+{* use the date_format modifier to show current date and time *}
+{$smarty.now|date_format:'%Y-%m-%d %H:%M:%S'}
+```
+
+## {$smarty.const}
+
+You can access PHP constant values directly. See also [smarty
+constants](../../programmers/smarty-constants.md).
+
+```php
+ **Note**
+>
+> Although Smarty provides direct access to PHP constants for
+> convenience, it is typically avoided as this is mixing underlying
+> application code structure into the templates. A good practice is to
+> assign specific needed values to template vars.
+
+## {$smarty.capture}
+
+Template output captured via the built-in
+[`{capture}..{/capture}`](../language-builtin-functions/language-function-capture.md) function can be
+accessed using the `{$smarty.capture}` variable. See the
+[`{capture}`](../language-builtin-functions/language-function-capture.md) page for more information.
+
+## {$smarty.config}
+
+`{$smarty.config}` variable can be used to refer to loaded [config
+variables](language-config-variables.md). `{$smarty.config.foo}` is a
+synonym for `{#foo#}`. See the
+[{config_load}](../language-builtin-functions/language-function-config-load.md) page for more info.
+
+## {$smarty.section}
+
+The `{$smarty.section}` variables can be used to refer to
+[`{section}`](../language-builtin-functions/language-function-section.md) loop properties. These have
+some very useful values such as `.first`, `.index`, etc.
+
+> **Note**
+>
+> The `{$smarty.foreach}` variable is no longer used with the new
+> [`{foreach}`](../language-builtin-functions/language-function-foreach.md) syntax, but is still
+> supported with Smarty 2.x style foreach syntax.
+
+## {$smarty.template}
+
+Returns the name of the current template being processed (without the
+directory).
+
+## {$smarty.template_object}
+
+Returns the template object of the current template being processed.
+
+## {$smarty.current_dir}
+
+Returns the name of the directory for the current template being
+processed if it is loaded from the filesystem (the default).
+
+## {$smarty.version}
+
+Returns the version of Smarty the template was compiled with.
+
+```smarty
+
+```
+
+## {$smarty.block.child}
+
+Returns block text from child template. See [Template
+inheritance](../../programmers/advanced-features/advanced-features-template-inheritance.md).
+
+## {$smarty.block.parent}
+
+Returns block text from parent template. See [Template
+inheritance](../../programmers/advanced-features/advanced-features-template-inheritance.md)
+
+## {$smarty.ldelim}, {$smarty.rdelim}
+
+These variables are used for printing the left-delimiter and
+right-delimiter value literally, the same as
+[`{ldelim},{rdelim}`](../language-builtin-functions/language-function-ldelim.md).
+
+See also [assigned variables](language-assigned-variables.md) and [config
+variables](language-config-variables.md)
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/features.md b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/features.md
new file mode 100644
index 000000000..8405b46eb
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/features.md
@@ -0,0 +1,152 @@
+Features
+=======
+
+Some of Smarty's features:
+- It is extremely fast.
+- It is efficient since the PHP parser does the dirty work.
+- No template parsing overhead, only compiles once.
+- It is smart about [recompiling](#variable.compile.check) only the
+ template files that have changed.
+- You can easily create your own custom
+ [functions](#language.custom.functions) and [variable
+ modifiers](#language.modifiers), so the template language is
+ extremely extensible.
+- Configurable template [{delimiter}](#variable.left.delimiter) tag
+ syntax, so you can use `{$foo}`, `{{$foo}}`, ``, etc.
+- The [`{if}..{elseif}..{else}..{/if}`](#language.function.if)
+ constructs are passed to the PHP parser, so the `{if...}` expression
+ syntax can be as simple or as complex an evaluation as you like.
+- Allows unlimited nesting of
+ [`sections`](#language.function.section), `if's` etc.
+- Built-in [caching](#caching) support
+- Arbitrary [template](#resources) sources
+- [Template Inheritance](#advanced.features.template.inheritance) for
+ easy management of template content.
+- [Plugin](#plugins) architecture
+
+## Separation of presentation from application code
+- This means templates can certainly contain logic under the condition
+ that it is for presentation only. Things such as
+ [including](./designers/language-builtin-functions/language-function-include.md) other templates,
+ [alternating](./designers/language-custom-functions/language-function-cycle.md) table row colors,
+ [upper-casing](./designers/language-modifiers/language-modifier-upper.md) a variable,
+ [looping](./designers/language-builtin-functions/language-function-foreach.md) over an array of data and
+ rendering it are examples of presentation logic.
+- This does not mean however that Smarty forces a separation of
+ business and presentation logic. Smarty has no knowledge of which is
+ which, so placing business logic in the template is your own doing.
+- Also, if you desire *no* logic in your templates you certainly can
+ do so by boiling the content down to text and variables only.
+
+## How does it work?
+
+Under the hood, Smarty "compiles" (basically copies and converts) the
+templates into PHP scripts. This happens once when each template is
+first invoked, and then the compiled versions are used from that point
+forward. Smarty takes care of this for you, so the template designer
+just edits the Smarty templates and never has to manage the compiled
+versions. This approach keeps the templates easy to maintain, and yet
+keeps execution times extremely fast since the compiled code is just
+PHP. And of course, all PHP scripts take advantage of PHP op-code caches
+such as APC.
+
+## Template Inheritance
+
+Template inheritance was introduced in Smarty 3. Before template
+inheritance, we managed our templates in
+pieces such as header and footer templates. This organization lends
+itself to many problems that require some hoop-jumping, such as managing
+content within the header/footer on a per-page basis. With template
+inheritance, instead of including other templates we maintain our
+templates as single pages. We can then manipulate blocks of content
+within by inheriting them. This makes templates intuitive, efficient and
+easy to manage. See
+[Template Inheritance](./programmers/advanced-features/advanced-features-template-inheritance.md)
+for more info.
+
+## Why not use XML/XSLT syntax?
+There are a couple of good reasons. First, Smarty can be used for more
+than just XML/HTML based templates, such as generating emails,
+javascript, CSV, and PDF documents. Second, XML/XSLT syntax is even more
+verbose and fragile than PHP code! It is perfect for computers, but
+horrible for humans. Smarty is about being easy to read, understand and
+maintain.
+
+## Template Security
+Although Smarty insulates you from PHP, you still have the option to use
+it in certain ways if you wish. Template security forces the restriction
+of PHP (and select Smarty functions.) This is useful if you have third
+parties editing templates, and you don't want to unleash the full power
+of PHP or Smarty to them.
+
+## Integration
+Sometimes Smarty gets compared to Model-View-Controller (MVC)
+frameworks. Smarty is not an MVC, it is just the presentation layer,
+much like the View (V) part of an MVC. As a matter of fact, Smarty can
+easily be integrated as the view layer of an MVC. Many of the more
+popular ones have integration instructions for Smarty, or you may find
+some help here in the forums and documentation.
+
+## Other Template Engines
+Smarty is not the only engine following the *"Separate Programming Code
+from Presentation"* philosophy. For instance, Python has template
+engines built around the same principles such as Django Templates and
+CheetahTemplate. *Note: Languages such as Python do not mix with HTML
+natively, which give them the advantage of proper programming code
+separation from the outset. There are libraries available to mix Python
+with HTML, but they are typically avoided.*
+
+## What Smarty is Not
+
+Smarty is not an application development framework. Smarty is not an
+MVC. Smarty is not an alternative to Laravel, Symfony, CodeIgniter,
+or any of the other application development frameworks for PHP.
+
+Smarty is a template engine, and works as the (V)iew component of your
+application. Smarty can easily be coupled to any of the engines listed
+above as the view component. No different than any other software,
+Smarty has a learning curve. Smarty does not guarantee good application
+design or proper separation of presentation, this still needs to be
+addressed by a competent developer and web designer.
+
+## Is Smarty Right for Me?
+
+Smarty is not meant to be a tool for every job. The important thing is
+to identify if Smarty fits your needs. There are some important
+questions to ask yourself:
+
+### Template Syntax
+Are you content with PHP tags mixed with HTML? Are your
+web designers comfortable with PHP? Would your web designers prefer a
+tag-based syntax designed for presentation? Some experience working with
+both Smarty and PHP helps answer these questions.
+
+### The Business Case
+Is there a requirement to insulate the templates from
+PHP? Do you have untrusted parties editing templates that you do not
+wish to unleash the power of PHP to? Do you need to programmatically
+control what is and is not available within the templates? Smarty
+supplies these capabilities by design.
+
+## Feature set
+Does Smarty's features such as caching, template
+inheritance and plugin architecture save development cycles writing code
+that would be needed otherwise? Does the codebase or framework you plan
+on using have the features you need for the presentation component?
+
+## Sites using Smarty
+Many well-known PHP projects make use of Smarty such as XOOPS CMS, CMS Made Simple, Tiki
+CMS/Groupware and X-Cart to name a few.
+
+## Summary
+Whether you are using Smarty for a small website or massive enterprise
+solution, it can accommodate your needs. There are numerous features
+that make Smarty a great choice:
+
+- separation of PHP from HTML/CSS just makes sense
+- readability for organization and management
+- security for 3rd party template access
+- feature completeness, and easily extendable to your own needs
+- massive user base, Smarty is here to stay
+- LGPL license for commercial use
+- 100% free to use, open source project
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/getting-started.md b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/getting-started.md
new file mode 100644
index 000000000..f549e50e7
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/getting-started.md
@@ -0,0 +1,167 @@
+# Getting started
+
+## Requirements
+Smarty can be run with PHP 7.1 to PHP 8.3.
+
+## Installation
+Smarty can be installed with [Composer](https://getcomposer.org/).
+
+To get the latest stable version of Smarty use:
+```shell
+composer require smarty/smarty
+```
+
+To get the latest, unreleased version, use:
+```shell
+composer require smarty/smarty:dev-master
+```
+
+To get the previous stable version of Smarty, Smarty 3, use:
+```shell
+composer require smarty/smarty:^3
+```
+
+Here's how you create an instance of Smarty in your PHP scripts:
+```php
+setTemplateDir('/some/template/dir');
+$smarty->setConfigDir('/some/config/dir');
+$smarty->setCompileDir('/some/compile/dir');
+$smarty->setCacheDir('/some/cache/dir');
+```
+
+The compile dir and cache dir need to be writable for the user running the PHP script.
+
+> **Note**
+>
+> This is usually user "nobody" and group "nobody". For OS X users, the
+> default is user "www" and group "www". If you are using Apache, you
+> can look in your `httpd.conf` file to see what user and group are
+> being used.
+
+```bash
+chown nobody:nobody /web/www.example.com/guestbook/templates_c/
+chmod 770 /web/www.example.com/guestbook/templates_c/
+
+chown nobody:nobody /web/www.example.com/guestbook/cache/
+chmod 770 /web/www.example.com/guestbook/cache/
+```
+
+You can verify if your system has the correct access rights for
+ these directories with [`testInstall()`](./programmers/api-functions/api-test-install.md):
+
+```php
+$smarty = new Smarty();
+$smarty->setTemplateDir('/some/template/dir');
+$smarty->setConfigDir('/some/config/dir');
+$smarty->setCompileDir('/some/compile/dir');
+$smarty->setCacheDir('/some/cache/dir');
+$smarty->testInstall();
+```
+
+Now, let's create the `index.tpl` file that Smarty will display. This
+needs to be located in the [`$template_dir`](./programmers/api-variables/variable-template-dir.md).
+
+```smarty
+{* Smarty *}
+Hello {$name}, welcome to Smarty!
+```
+
+> **Note**
+>
+> `{* Smarty *}` is a template [comment](./designers/language-basic-syntax/language-syntax-comments.md). It
+> is not required, but it is good practice to start all your template
+> files with this comment. It makes the file easy to recognize
+> regardless of the file extension. For example, text editors could
+> recognize the file and turn on special syntax highlighting.
+
+Now lets edit our php file. We'll create an instance of Smarty,
+[`assign()`](./programmers/api-functions/api-assign.md) a template variable and
+[`display()`](./programmers/api-functions/api-display.md) the `index.tpl` file.
+
+```php
+setTemplateDir('/web/www.example.com/guestbook/templates/');
+$smarty->setCompileDir('/web/www.example.com/guestbook/templates_c/');
+$smarty->setConfigDir('/web/www.example.com/guestbook/configs/');
+$smarty->setCacheDir('/web/www.example.com/guestbook/cache/');
+
+$smarty->assign('name', 'Ned');
+$smarty->display('index.tpl');
+
+```
+
+> **Note**
+>
+> In our example, we are setting absolute paths to all the Smarty
+> directories. If `/web/www.example.com/guestbook/` is within your PHP
+> include\_path, then these settings are not necessary. However, it is
+> more efficient and (from experience) less error-prone to set them to
+> absolute paths. This ensures that Smarty is getting files from the
+> directories you intended.
+
+Now, run your PHP file. You should see *"Hello Ned, welcome to Smarty!"*
+
+You have completed the basic setup for Smarty!
+
+## Extended Setup
+
+This is a continuation of the [basic installation](#installation), please read that first!
+
+A slightly more flexible way to set up Smarty is to extend the Smarty
+class and initialize your Smarty
+environment. So instead of repeatedly setting directory paths, assigning
+the same vars, etc., we can do that in one place.
+
+```php
+setTemplateDir('/web/www.example.com/guestbook/templates/');
+ $this->setCompileDir('/web/www.example.com/guestbook/templates_c/');
+ $this->setConfigDir('/web/www.example.com/guestbook/configs/');
+ $this->setCacheDir('/web/www.example.com/guestbook/cache/');
+
+ $this->caching = Smarty::CACHING_LIFETIME_CURRENT;
+ $this->assign('app_name', 'Guest Book');
+ }
+
+}
+```
+
+Now, we can use `Smarty_GuestBook` instead of `Smarty` in our scripts:
+```php
+assign('name', 'Ned');
+$smarty->display('index.tpl');
+```
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/index.md b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/index.md
new file mode 100644
index 000000000..cff5e490e
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/index.md
@@ -0,0 +1,50 @@
+# Smarty 4 Documentation
+Smarty is a template engine for PHP, facilitating the separation of presentation (HTML/CSS) from application logic.
+
+It allows you to write **templates**, using **variables**, **modifiers**, **functions** and **comments**, like this:
+```html
+{$title|escape}
+
+
+ The number of pixels is: {math equation="x * y" x=$height y=$width}.
+
+```
+
+When this template is rendered, with the value "Hello world" for the variable $title, 640 for $width,
+and 480 for $height, the result is:
+```html
+Hello world
+
+
+ The number of pixels is: 307200.
+
+```
+
+## Introduction
+- [Philosophy](./philosophy.md) - or "Why do I need a template engine?"
+- [Features](./features.md) - or "Why do I want Smarty?"
+- [Getting Started](./getting-started.md)
+
+## Smarty for template designers
+- [Basic Syntax](designers/language-basic-syntax/index.md)
+- [Variables](designers/language-variables/index.md)
+- [Variable Modifiers](designers/language-modifiers/index.md)
+- [Combining Modifiers](./designers/language-combining-modifiers.md)
+- [Built-in Functions](designers/language-builtin-functions/index.md)
+- [Custom Functions](designers/language-custom-functions/index.md)
+- [Config Files](./designers/config-files.md)
+- [Debugging Console](./designers/chapter-debugging-console.md)
+
+## Smarty for php developers
+- [Charset Encoding](./programmers/charset.md)
+- [Constants](./programmers/smarty-constants.md)
+- [Smarty Class Variables](./programmers/api-variables.md)
+- [Smarty Class Methods](./programmers/api-functions.md)
+- [Caching](./programmers/caching.md)
+- [Resources](./programmers/resources.md)
+- [Advanced Features](./programmers/advanced-features.md)
+- [Extending Smarty With Plugins](./programmers/plugins.md)
+
+## Other
+- [Some random tips & tricks](./appendixes/tips.md)
+- [Troubleshooting](./appendixes/troubleshooting.md)
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/philosophy.md b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/philosophy.md
new file mode 100644
index 000000000..34555c288
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/philosophy.md
@@ -0,0 +1,107 @@
+# Philosophy
+
+## What is Smarty?
+
+Smarty is a template engine for PHP. More specifically, it facilitates a
+manageable way to separate application logic and content from its
+presentation. This is best described in a situation where the
+application programmer and the template designer play different roles,
+or in most cases are not the same person.
+
+For example, let\'s say you are creating a web page that is displaying a
+newspaper article.
+
+- The article `$headline`, `$tagline`, `$author` and `$body` are
+ content elements, they contain no information about how they will be
+ presented. They are [passed](#api.assign) into Smarty by the
+ application.
+
+- Then the template designer edits the templates and uses a
+ combination of HTML tags and [template tags](#language.basic.syntax)
+ to format the presentation of these
+ [variables](#language.syntax.variables) with elements such as
+ tables, div\'s, background colors, font sizes, style sheets, svg
+ etc.
+
+- One day the programmer needs to change the way the article content
+ is retrieved, ie a change in application logic. This change does not
+ affect the template designer, the content will still arrive in the
+ template exactly the same.
+
+- Likewise, if the template designer wants to completely redesign the
+ templates, this would require no change to the application logic.
+
+- Therefore, the programmer can make changes to the application logic
+ without the need to restructure templates, and the template designer
+ can make changes to templates without breaking application logic.
+
+## Goals
+
+The Smarty design was largely driven by these goals:
+- clean separation of presentation from application code
+- PHP backend, Smarty template frontend
+- complement PHP, not replace it
+- fast development/deployment for programmers and designers
+- quick and easy to maintain
+- syntax easy to understand, no PHP knowledge necessary
+- flexibility for custom development
+- security: insulation from PHP
+- free, open source
+
+
+
+## Two camps of thought
+
+When it comes to templating in PHP, there are basically two camps of
+thought. The first camp exclaims that \"PHP is a template engine\". This
+approach simply mixes PHP code with HTML. Although this approach is
+fastest from a pure script-execution point of view, many would argue
+that the PHP syntax is messy and complicated when mixed with tagged
+markup such as HTML.
+
+The second camp exclaims that presentation should be void of all
+programming code, and instead use simple tags to indicate where
+application content is revealed. This approach is common with other
+template engines (even in other programming languages), and is also the
+approach that Smarty takes. The idea is to keep the templates focused
+squarely on presentation, void of application code, and with as little
+overhead as possible.
+
+## Why is separating PHP from templates important?
+
+Two major benefits:
+
+- SYNTAX: Templates typically consist of semantic markup such as HTML.
+ PHP syntax works well for application code, but quickly degenerates
+ when mixed with HTML. Smarty\'s simple {tag} syntax is designed
+ specifically to express presentation. Smarty focuses your templates
+ on presentation and less on \"code\". This lends to quicker template
+ deployment and easier maintenance. Smarty syntax requires no working
+ knowledge of PHP, and is intuitive for programmers and
+ non-programmers alike.
+
+- INSULATION: When PHP is mixed with templates, there are no
+ restrictions on what type of logic can be injected into a template.
+ Smarty insulates the templates from PHP, creating a controlled
+ separation of presentation from business logic. Smarty also has
+ security features that can further enforce restrictions on
+ templates.
+
+## Web designers and PHP
+
+A common question: "Web designers have to learn a syntax anyway, why
+not PHP?" Of course web designers can learn PHP, and they may already
+be familiar with it. The issue isn't their ability to learn PHP, it is
+about the consequences of mixing PHP with HTML. If designers use PHP, it
+is too easy to add code into templates that doesn't belong there (you
+just handed them a swiss-army knife when they just needed a knife.) You
+can teach them the rules of application design, but this is probably
+something they don't really need to learn (now they are developers!)
+The PHP manual is also an overwhelming pile of information to sift
+through. It is like handing the owner of a car the factory assembly
+manual when all they need is the owners manual. Smarty gives web
+designers exactly the tools they need, and gives developers fine-grained
+control over those tools. The simplicity of the tag-based syntax is also
+a huge welcome for designers, it helps them streamline the organization
+and management of templates.
+
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/advanced-features.md b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/advanced-features.md
new file mode 100644
index 000000000..60d4416b5
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/advanced-features.md
@@ -0,0 +1,14 @@
+Advanced Features {#advanced.features}
+=================
+
+## Table of contents
+
+- [Security](./advanced-features/advanced-features-security.md)
+- [Changing settings by template](./advanced-features/advanced-features-template-settings.md)
+- [Template Inheritance](./advanced-features/advanced-features-template-inheritance.md)
+- [Streams](./advanced-features/advanced-features-streams.md)
+- [Objects](./advanced-features/advanced-features-objects.md)
+- [Static Classes](./advanced-features/advanced-features-static-classes.md)
+- [Prefilters](./advanced-features/advanced-features-prefilters.md)
+- [Postfilters](./advanced-features/advanced-features-postfilters.md)
+- [Output Filters](./advanced-features/advanced-features-outputfilters.md)
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/advanced-features/advanced-features-objects.md b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/advanced-features/advanced-features-objects.md
new file mode 100644
index 000000000..b681945e1
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/advanced-features/advanced-features-objects.md
@@ -0,0 +1,99 @@
+Objects {#advanced.features.objects}
+=======
+
+Smarty allows access to PHP [objects](https://www.php.net/object) through
+the templates.
+
+> **Note**
+>
+> When you assign/register objects to templates, be sure that all
+> properties and methods accessed from the template are for presentation
+> purposes only. It is very easy to inject application logic through
+> objects, and this leads to poor designs that are difficult to manage.
+> See the Best Practices section of the Smarty website.
+
+There are two ways to access them.
+
+- One way is to [register objects](#api.register.object) to the
+ template, then use access them via syntax similar to [custom
+ functions](#language.custom.functions).
+
+- The other way is to [`assign()`](#api.assign) objects to the
+ templates and access them much like any other assigned variable.
+
+The first method has a much nicer template syntax. It is also more
+secure, as a registered object can be restricted to certain methods or
+properties. However, **a registered object cannot be looped over or
+assigned in arrays of objects**, etc. The method you choose will be
+determined by your needs, but use the first method whenever possible to
+keep template syntax to a minimum.
+
+If security is enabled, no private methods or functions can be accessed
+(beginning with \'\_\'). If a method and property of the same name exist,
+the method will be used.
+
+You can restrict the methods and properties that can be accessed by
+listing them in an array as the third registration parameter.
+
+By default, parameters passed to objects through the templates are
+passed the same way [custom functions](#language.custom.functions) get
+them. An associative array is passed as the first parameter, and the
+smarty object as the second. If you want the parameters passed one at a
+time for each argument like traditional object parameter passing, set
+the fourth registration parameter to FALSE.
+
+The optional fifth parameter has only effect with `format` being TRUE
+and contains a list of methods that should be treated as blocks. That
+means these methods have a closing tag in the template
+(`{foobar->meth2}...{/foobar->meth2}`) and the parameters to the methods
+have the same synopsis as the parameters for
+[`block-function-plugins`](#plugins.block.functions): They get the four
+parameters `$params`, `$content`, `$smarty` and `&$repeat` and they also
+behave like block-function-plugins.
+
+
+ registerObject('foobar',$myobj);
+
+ // if we want to restrict access to certain methods or properties, list them
+ $smarty->registerObject('foobar',$myobj,array('meth1','meth2','prop1'));
+
+ // if you want to use the traditional object parameter format, pass a boolean of false
+ $smarty->registerObject('foobar',$myobj,null,false);
+
+ // We can also assign objects. assign_by_ref when possible.
+ $smarty->assign_by_ref('myobj', $myobj);
+
+ $smarty->display('index.tpl');
+ ?>
+
+
+
+And here\'s how to access your objects in `index.tpl`:
+
+
+ {* access our registered object *}
+ {foobar->meth1 p1='foo' p2=$bar}
+
+ {* you can also assign the output *}
+ {foobar->meth1 p1='foo' p2=$bar assign='output'}
+ the output was {$output}
+
+ {* access our assigned object *}
+ {$myobj->meth1('foo',$bar)}
+
+
+
+See also [`registerObject()`](#api.register.object) and
+[`assign()`](#api.assign).
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/advanced-features/advanced-features-outputfilters.md b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/advanced-features/advanced-features-outputfilters.md
new file mode 100644
index 000000000..393d7da23
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/advanced-features/advanced-features-outputfilters.md
@@ -0,0 +1,43 @@
+Output Filters {#advanced.features.outputfilters}
+==============
+
+When the template is invoked via [`display()`](#api.display) or
+[`fetch()`](#api.fetch), its output can be sent through one or more
+output filters. This differs from
+[`postfilters`](#advanced.features.postfilters) because postfilters
+operate on compiled templates before they are saved to the disk, whereas
+output filters operate on the template output when it is executed.
+
+Output filters can be either [registered](#api.register.filter) or
+loaded from the [plugins directory](#variable.plugins.dir) by using the
+[`loadFilter()`](#api.load.filter) method or by setting the
+[`$autoload_filters`](#variable.autoload.filters) variable. Smarty will
+pass the template output as the first argument, and expect the function
+to return the result of the processing.
+
+
+ registerFilter("output","protect_email");
+ $smarty->display("index.tpl');
+
+ // now any occurrence of an email address in the template output will have
+ // a simple protection against spambots
+ ?>
+
+
+
+See also [`registerFilter()`](#api.register.filter),
+[`loadFilter()`](#api.load.filter),
+[`$autoload_filters`](#variable.autoload.filters),
+[postfilters](#advanced.features.postfilters) and
+[`$plugins_dir`](#variable.plugins.dir).
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/advanced-features/advanced-features-postfilters.md b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/advanced-features/advanced-features-postfilters.md
new file mode 100644
index 000000000..d3bad546a
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/advanced-features/advanced-features-postfilters.md
@@ -0,0 +1,40 @@
+Postfilters {#advanced.features.postfilters}
+===========
+
+Template postfilters are PHP functions that your templates are ran
+through *after they are compiled*. Postfilters can be either
+[registered](#api.register.filter) or loaded from the [plugins
+directory](#variable.plugins.dir) by using the
+[`loadFilter()`](#api.load.filter) function or by setting the
+[`$autoload_filters`](#variable.autoload.filters) variable. Smarty will
+pass the compiled template code as the first argument, and expect the
+function to return the result of the processing.
+
+
+ \n\"; ?>\n".$tpl_source;
+ }
+
+ // register the postfilter
+ $smarty->registerFilter('post','add_header_comment');
+ $smarty->display('index.tpl');
+ ?>
+
+
+
+The postfilter above will make the compiled Smarty template `index.tpl`
+look like:
+
+
+
+ {* rest of template content... *}
+
+
+
+See also [`registerFilter()`](#api.register.filter),
+[prefilters](#advanced.features.prefilters),
+[outputfilters](#advanced.features.outputfilters), and
+[`loadFilter()`](#api.load.filter).
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/advanced-features/advanced-features-prefilters.md b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/advanced-features/advanced-features-prefilters.md
new file mode 100644
index 000000000..76229e633
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/advanced-features/advanced-features-prefilters.md
@@ -0,0 +1,36 @@
+Prefilters {#advanced.features.prefilters}
+==========
+
+Template prefilters are PHP functions that your templates are ran
+through *before they are compiled*. This is good for preprocessing your
+templates to remove unwanted comments, keeping an eye on what people are
+putting in their templates, etc.
+
+Prefilters can be either [registered](#api.register.filter) or loaded
+from the [plugins directory](#variable.plugins.dir) by using
+[`loadFilter()`](#api.load.filter) function or by setting the
+[`$autoload_filters`](#variable.autoload.filters) variable.
+
+Smarty will pass the template source code as the first argument, and
+expect the function to return the resulting template source code.
+
+This will remove all the html comments in the template source.
+
+
+ /U",'',$tpl_source);
+ }
+
+ // register the prefilter
+ $smarty->registerFilter('pre','remove_dw_comments');
+ $smarty->display('index.tpl');
+ ?>
+
+
+
+See also [`registerFilter()`](#api.register.filter),
+[postfilters](#advanced.features.postfilters) and
+[`loadFilter()`](#api.load.filter).
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/advanced-features/advanced-features-security.md b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/advanced-features/advanced-features-security.md
new file mode 100644
index 000000000..730915f14
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/advanced-features/advanced-features-security.md
@@ -0,0 +1,144 @@
+Security {#advanced.features.security}
+========
+
+Security is good for situations when you have untrusted parties editing
+the templates e.g. via ftp, and you want to reduce the risk of system
+security compromises through the template language.
+
+The settings of the security policy are defined by properties of an
+instance of the Smarty\_Security class. These are the possible settings:
+
+- `$secure_dir` is an array of template directories that are
+ considered secure. [`$template_dir`](#variable.template.dir)
+ considered secure implicitly. The default is an empty array.
+
+- `$trusted_dir` is an array of all directories that are considered
+ trusted. Trusted directories are where you keep php scripts that are
+ executed directly from the templates with
+ [`{insert}`](#language.function.insert.php). The default is an
+ empty array.
+
+- `$trusted_uri` is an array of regular expressions matching URIs that
+ are considered trusted. This security directive used by
+ [`{fetch}`](#language.function.fetch) and
+ [`{html_image}`](#language.function.html.image). URIs passed to
+ these functions are reduced to `{$PROTOCOL}://{$HOSTNAME}` to allow
+ simple regular expressions (without having to deal with edge cases
+ like authentication-tokens).
+
+ The expression `'#https?://.*smarty.net$#i'` would allow accessing
+ the following URIs:
+
+ - `http://smarty.net/foo`
+
+ - `http://smarty.net/foo`
+
+ - `http://www.smarty.net/foo`
+
+ - `http://smarty.net/foo`
+
+ - `https://foo.bar.www.smarty.net/foo/bla?blubb=1`
+
+ but deny access to these URIs:
+
+ - `http://smarty.com/foo` (not matching top-level domain \"com\")
+
+ - `ftp://www.smarty.net/foo` (not matching protocol \"ftp\")
+
+ - `http://www.smarty.net.otherdomain.com/foo` (not matching end of
+ domain \"smarty.net\")
+
+- `$static_classes` is an array of classes that are considered
+ trusted. The default is an empty array which allows access to all
+ static classes. To disable access to all static classes set
+ \$static\_classes = null.
+
+- `$php_functions` is an array of PHP functions that are considered
+ trusted and can be used from within template. To disable access to
+ all PHP functions set \$php\_functions = null. An empty array (
+ \$php\_functions = array() ) will allow all PHP functions. The
+ default is array(\'isset\', \'empty\', \'count\', \'sizeof\',
+ \'in\_array\', \'is\_array\',\'time\',\'nl2br\').
+
+- `$php_modifiers` is an array of PHP functions that are considered
+ trusted and can be used from within template as modifier. To disable
+ access to all PHP modifier set \$php\_modifier = null. An empty
+ array ( \$php\_modifier = array() ) will allow all PHP functions.
+ The default is array(\'escape\',\'count\').
+
+- `$streams` is an array of streams that are considered trusted and
+ can be used from within template. To disable access to all streams
+ set \$streams = null. An empty array ( \$streams = array() ) will
+ allow all streams. The default is array(\'file\').
+
+- `$allowed_modifiers` is an array of (registered / autoloaded)
+ modifiers that should be accessible to the template. If this array
+ is non-empty, only the herein listed modifiers may be used. This is
+ a whitelist.
+
+- `$disabled_modifiers` is an array of (registered / autoloaded)
+ modifiers that may not be accessible to the template.
+
+- `$allowed_tags` is a boolean flag which controls if constants can
+ function-, block and filter plugins that should be accessible to the
+ template. If this array is non-empty, only the herein listed
+ modifiers may be used. This is a whitelist.
+
+- `$disabled_tags` is an array of (registered / autoloaded) function-,
+ block and filter plugins that may not be accessible to the template.
+
+- `$allow_constants` is a boolean flag which controls if constants can
+ be accessed by the template. The default is \"true\".
+
+- `$allow_super_globals` is a boolean flag which controls if the PHP
+ super globals can be accessed by the template. The default is
+ \"true\".
+
+If security is enabled, no private methods, functions or properties of
+static classes or assigned objects can be accessed (beginning with
+\'\_\') by the template.
+
+To customize the security policy settings you can extend the
+Smarty\_Security class or create an instance of it.
+
+
+ enableSecurity('My_Security_Policy');
+ ?>
+
+
+ php_functions = null;
+ // allow everthing as modifier
+ $my_security_policy->php_modifiers = array();
+ // enable security
+ $smarty->enableSecurity($my_security_policy);
+ ?>
+
+
+ enableSecurity();
+ ?>
+
+> **Note**
+>
+> Most security policy settings are only checked when the template gets
+> compiled. For that reason you should delete all cached and compiled
+> template files when you change your security settings.
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/advanced-features/advanced-features-static-classes.md b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/advanced-features/advanced-features-static-classes.md
new file mode 100644
index 000000000..8ef79113c
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/advanced-features/advanced-features-static-classes.md
@@ -0,0 +1,27 @@
+Static Classes {#advanced.features.static.classes}
+==============
+
+You can directly access static classes. The syntax is the same as in
+PHP.
+
+> **Note**
+>
+> Direct access to PHP classes is not recommended. This ties the
+> underlying application code structure directly to the presentation,
+> and also complicates template syntax. It is recommended to register
+> plugins which insulate templates from PHP classes/objects. Use at your
+> own discretion. See the Best Practices section of the Smarty website.
+
+
+ {assign var=foo value=myclass::BAR} <--- class constant BAR
+
+ {assign var=foo value=myclass::method()} <--- method result
+
+ {assign var=foo value=myclass::method1()->method2} <--- method chaining
+
+ {assign var=foo value=myclass::$bar} <--- property bar of class myclass
+
+ {assign var=foo value=$bar::method} <--- using Smarty variable bar as class name
+
+
+
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/advanced-features/advanced-features-streams.md b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/advanced-features/advanced-features-streams.md
new file mode 100644
index 000000000..d6f7a0de5
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/advanced-features/advanced-features-streams.md
@@ -0,0 +1,15 @@
+Streams {#advanced.features.streams}
+=======
+
+You can also use streams to call variables. *{\$foo:bar}* will use the
+*foo://bar* stream to get the template variable.
+
+Using a PHP stream for a template variable resource from within a
+template.
+
+
+ {$foo:bar}
+
+
+
+See also [`Template Resources`](#resources)
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/advanced-features/advanced-features-template-inheritance.md b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/advanced-features/advanced-features-template-inheritance.md
new file mode 100644
index 000000000..ce47310ca
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/advanced-features/advanced-features-template-inheritance.md
@@ -0,0 +1,128 @@
+Template Inheritance {#advanced.features.template.inheritance}
+====================
+
+Inheritance brings the concept of Object Oriented Programming to
+templates, allowing you to define one (or more) base templates that can
+be extended by child templates. Extending means that the child template
+can override all or some of the parent named block areas.
+
+- The inheritance tree can be as deep as you want, meaning you can
+ extend a file that extends another one that extends another one and
+ so on.
+
+- The child templates can not define any content besides what\'s
+ inside [`{block}`](#language.function.block) tags they override.
+ Anything outside of [`{block}`](#language.function.block) tags will
+ be removed.
+
+- The content of [`{block}`](#language.function.block) tags from child
+ and parent templates can be merged by the `append` or `prepend`
+ [`{block}`](#language.function.block) tag option flags and
+ `{$smarty.block.parent}` or `{$smarty.block.child}` placeholders.
+
+- Template inheritance is a compile time process which creates a
+ single compiled template file. Compared to corresponding solutions
+ based on subtemplates included with the
+ [`{include}`](#language.function.include) tag it does have much
+ better performance when rendering.
+
+- The child template extends its parent defined with the
+ [`{extends}`](#language.function.extends) tag, which must be the
+ first line in the child template. Instead of using the
+ [`{extends}`](#language.function.extends) tags in the template files
+ you can define the whole template inheritance tree in the PHP script
+ when you are calling [`fetch()`](#api.fetch) or
+ [`display()`](#api.display) with the `extends:` template resource
+ type. The later provides even more flexibility.
+
+> **Note**
+>
+> When `$compile_check` is enabled, all files in the inheritance tree
+> are checked for modifications upon each invocation. You may want to
+> disable `$compile_check` on production servers for this reason.
+
+> **Note**
+>
+> If you have a subtemplate which is included with
+> [`{include}`](#language.function.include) and it contains
+> [`{block}`](#language.function.block) areas it works only if the
+> [`{include}`](#language.function.include) itself is called from within
+> a surrounding [`{block}`](#language.function.block). In the final
+> parent template you may need a dummy
+> [`{block}`](#language.function.block) for it.
+
+layout.tpl (parent)
+
+
+
+
+ {block name=title}Default Page Title{/block}
+ {block name=head}{/block}
+
+
+ {block name=body}{/block}
+
+
+
+
+
+myproject.tpl (child)
+
+
+ {extends file='layout.tpl'}
+ {block name=head}
+
+
+ {/block}
+
+
+
+
+mypage.tpl (grandchild)
+
+
+ {extends file='myproject.tpl'}
+ {block name=title}My Page Title{/block}
+ {block name=head}
+
+
+ {/block}
+ {block name=body}My HTML Page Body goes here{/block}
+
+
+
+To render the above use
+
+
+ $smarty->display('mypage.tpl');
+
+The resulting output is
+
+
+
+
+ My Page Title
+
+
+
+
+ My HTML Page Body goes here
+
+
+
+Instead of using [`{extends}`](#language.function.extends) tags in the
+template files you can define the inheritance tree in your PHP script by
+using the [`extends:` resource](#resources.extends) type.
+
+The code below will return same result as the example above.
+
+
+ display('extends:layout.tpl|myproject.tpl|mypage.tpl');
+ ?>
+
+
+
+See also [`{block}`](#language.function.block),
+[`{extends}`](#language.function.extends) and [`extends:`
+resource](#resources.extends)
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/advanced-features/advanced-features-template-settings.md b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/advanced-features/advanced-features-template-settings.md
new file mode 100644
index 000000000..b06430ff0
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/advanced-features/advanced-features-template-settings.md
@@ -0,0 +1,32 @@
+Changing settings by template {#advanced.features.template.settings}
+=============================
+
+Normally you configure the Smarty settings by modifying the
+[`Smarty class variables`](#api.variables). Furthermore you can register
+plugins, filters etc. with [`Smarty functions`](#api.functions).
+Modifications done to the Smarty object will be global for all
+templates.
+
+However the Smarty class variables and functions can be accessed or
+called by individual template objects. Modification done to a template
+object will apply only for that template and its included subtemplates.
+
+
+ createTemplate('index.tpl);
+ $tpl->cache_lifetime = 600;
+ //or
+ $tpl->setCacheLifetime(600);
+ $smarty->display($tpl);
+ ?>
+
+
+
+
+ createTemplate('index.tpl);
+ $tpl->registerPlugin('modifier','mymodifier');
+ $smarty->display($tpl);
+ ?>
+
+
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-functions.md b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-functions.md
new file mode 100644
index 000000000..6f120fa9a
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-functions.md
@@ -0,0 +1,64 @@
+Smarty Class Methods {#api.functions}
+====================
+
+## Table of contents
+
+- [addConfigDir()](./api-functions/api-add-config-dir.md) — add a directory to the list of directories where config files are stored
+- [addPluginsDir()](./api-functions/api-add-plugins-dir.md) — add a directory to the list of directories where plugins are stored
+- [addTemplateDir()](./api-functions/api-add-template-dir.md) — add a directory to the list of directories where templates are stored
+- [append()](./api-functions/api-append.md) — append an element to an assigned array
+- [appendByRef()](./api-functions/api-append-by-ref.md) — append values by reference
+- [assign()](./api-functions/api-assign.md) — assign variables/objects to the templates
+- [assignByRef()](./api-functions/api-assign-by-ref.md) — assign values by reference
+- [clearAllAssign()](./api-functions/api-clear-all-assign.md) — clears the values of all assigned variables
+- [clearAllCache()](./api-functions/api-clear-all-cache.md) — clears the entire template cache
+- [clearAssign()](./api-functions/api-clear-assign.md) — clears the value of an assigned variable
+- [clearCache()](./api-functions/api-clear-cache.md) — clears the cache for a specific template
+- [clearCompiledTemplate()](./api-functions/api-clear-compiled-tpl.md) — clears the compiled version of the specified template resource
+- [clearConfig()](./api-functions/api-clear-config.md) — clears assigned config variables
+- [compileAllConfig()](./api-functions/api-compile-all-config.md) — compiles all known config files
+- [compileAllTemplates()](./api-functions/api-compile-all-templates.md) — compiles all known templates
+- [configLoad()](./api-functions/api-config-load.md) — loads config file data and assigns it to the template
+- [createData()](./api-functions/api-create-data.md) — creates a data object
+- [createTemplate()](./api-functions/api-create-template.md) — returns a template object
+- [disableSecurity()](./api-functions/api-disable-security.md) — disables template security
+- [display()](./api-functions/api-display.md) — displays the template
+- [enableSecurity()](./api-functions/api-enable-security.md) — enables template security
+- [fetch()](./api-functions/api-fetch.md) — returns the template output
+- [getCacheDir()](./api-functions/api-get-cache-dir.md) — return the directory where the rendered template's output is stored
+- [getCompileDir()](./api-functions/api-get-compile-dir.md) — returns the directory where compiled templates are stored
+- [getConfigDir()](./api-functions/api-get-config-dir.md) — return the directory where config files are stored
+- [getConfigVars()](./api-functions/api-get-config-vars.md) — returns the given loaded config variable value
+- [getPluginsDir()](./api-functions/api-get-plugins-dir.md) — return the directory where plugins are stored
+- [getRegisteredObject()](./api-functions/api-get-registered-object.md) — returns a reference to a registered object
+- [getTags()](./api-functions/api-get-tags.md) — return tags used by template
+- [getTemplateDir()](./api-functions/api-get-template-dir.md) — return the directory where templates are stored
+- [getTemplateVars()](./api-functions/api-get-template-vars.md) — returns assigned variable value(s)
+- [isCached()](./api-functions/api-is-cached.md) — returns true if there is a valid cache for this template
+- [loadFilter()](./api-functions/api-load-filter.md) — load a filter plugin
+- [muteExpectedErrors()](./api-functions/api-mute-expected-errors.md) — mutes expected warnings and notices deliberately generated by Smarty
+- [registerCacheResource()](./api-functions/api-register-cacheresource.md) — dynamically register CacheResources
+- [registerClass()](./api-functions/api-register-class.md) — register a class for use in the templates
+- [registerDefaultPluginHandler()](./api-functions/api-register-default-plugin-handler.md) — register a function which gets called on undefined tags
+- [registerFilter()](./api-functions/api-register-filter.md) — dynamically register filters
+- [registerPlugin()](./api-functions/api-register-plugin.md) — dynamically register plugins
+- [registerObject()](./api-functions/api-register-object.md) — register an object for use in the templates
+- [registerResource()](./api-functions/api-register-resource.md) — dynamically register resources
+- [setCacheDir()](./api-functions/api-set-cache-dir.md) — set the directory where the rendered template's output is stored
+- [setCompileDir()](./api-functions/api-set-compile-dir.md) — set the directory where compiled templates are stored
+- [setConfigDir()](./api-functions/api-set-config-dir.md) — set the directories where config files are stored
+- [setPluginsDir()](./api-functions/api-set-plugins-dir.md) — set the directories where plugins are stored
+- [setTemplateDir()](./api-functions/api-set-template-dir.md) — set the directories where templates are stored
+- [templateExists()](./api-functions/api-template-exists.md) — checks whether the specified template exists
+- [unregisterCacheResource()](./api-functions/api-unregister-cacheresource.md) — dynamically unregister a CacheResource plugin
+- [unregisterFilter()](./api-functions/api-unregister-filter.md) — dynamically unregister a filter
+- [unregisterPlugin()](./api-functions/api-unregister-plugin.md) — dynamically unregister plugins
+- [unregisterObject()](./api-functions/api-unregister-object.md) — dynamically unregister an object
+- [unregisterResource()](./api-functions/api-unregister-resource.md) — dynamically unregister a resource plugin
+- [testInstall()](./api-functions/api-test-install.md) — checks Smarty installation
+
+> **Note**
+>
+> See
+> [`Changing settings by template`](./advanced-features/advanced-features-template-settings.md)
+> section for how to use the functions for individual templates.
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-functions/api-add-config-dir.md b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-functions/api-add-config-dir.md
new file mode 100644
index 000000000..c3a052289
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-functions/api-add-config-dir.md
@@ -0,0 +1,49 @@
+addConfigDir()
+
+add a directory to the list of directories where config files are stored
+
+Description
+===========
+
+Smarty
+
+addConfigDir
+
+string\|array
+
+config\_dir
+
+string
+
+key
+
+
+ addConfigDir('./config_1');
+
+ // add directory where config files are stored and specify array-key
+ $smarty->addConfigDir('./config_1', 'one');
+
+ // add multiple directories where config files are stored and specify array-keys
+ $smarty->addTemplateDir(array(
+ 'two' => './config_2',
+ 'three' => './config_3',
+ ));
+
+ // view the template dir chain
+ var_dump($smarty->getConfigDir());
+
+ // chaining of method calls
+ $smarty->setConfigDir('./config')
+ ->addConfigDir('./config_1', 'one')
+ ->addConfigDir('./config_2', 'two');
+
+ ?>
+
+
+
+See also [`getConfigDir()`](#api.get.config.dir),
+[`setConfigDir()`](#api.set.config.dir) and
+[`$config_dir`](#variable.config.dir).
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-functions/api-add-plugins-dir.md b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-functions/api-add-plugins-dir.md
new file mode 100644
index 000000000..ec9741b6e
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-functions/api-add-plugins-dir.md
@@ -0,0 +1,42 @@
+addPluginsDir()
+
+add a directory to the list of directories where plugins are stored
+
+Description
+===========
+
+Smarty
+
+addPluginsDir
+
+string\|array
+
+plugins\_dir
+
+
+ addPluginsDir('./plugins_1');
+
+ // add multiple directories where plugins are stored
+ $smarty->setPluginsDir(array(
+ './plugins_2',
+ './plugins_3',
+ ));
+
+ // view the plugins dir chain
+ var_dump($smarty->getPluginsDir());
+
+ // chaining of method calls
+ $smarty->setPluginsDir('./plugins')
+ ->addPluginsDir('./plugins_1')
+ ->addPluginsDir('./plugins_2');
+
+ ?>
+
+
+
+See also [`getPluginsDir()`](#api.get.plugins.dir),
+[`setPluginsDir()`](#api.set.plugins.dir) and
+[`$plugins_dir`](#variable.plugins.dir).
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-functions/api-add-template-dir.md b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-functions/api-add-template-dir.md
new file mode 100644
index 000000000..e0d24564c
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-functions/api-add-template-dir.md
@@ -0,0 +1,49 @@
+addTemplateDir()
+
+add a directory to the list of directories where templates are stored
+
+Description
+===========
+
+Smarty
+
+addTemplateDir
+
+string\|array
+
+template\_dir
+
+string
+
+key
+
+
+ addTemplateDir('./templates_1');
+
+ // add directory where templates are stored and specify array-key
+ $smarty->addTemplateDir('./templates_1', 'one');
+
+ // add multiple directories where templates are stored and specify array-keys
+ $smarty->addTemplateDir(array(
+ 'two' => './templates_2',
+ 'three' => './templates_3',
+ ));
+
+ // view the template dir chain
+ var_dump($smarty->getTemplateDir());
+
+ // chaining of method calls
+ $smarty->setTemplateDir('./templates')
+ ->addTemplateDir('./templates_1', 'one')
+ ->addTemplateDir('./templates_2', 'two');
+
+ ?>
+
+
+
+See also [`getTemplateDir()`](#api.get.template.dir),
+[`setTemplateDir()`](#api.set.template.dir) and
+[`$template_dir`](#variable.template.dir).
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-functions/api-append-by-ref.md b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-functions/api-append-by-ref.md
new file mode 100644
index 000000000..cd396d9cc
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-functions/api-append-by-ref.md
@@ -0,0 +1,46 @@
+appendByRef()
+
+append values by reference
+
+Description
+===========
+
+void
+
+appendByRef
+
+string
+
+varname
+
+mixed
+
+var
+
+bool
+
+merge
+
+This is used to [`append()`](#api.append) values to the templates by
+reference.
+
+> **Note**
+>
+> With the introduction of PHP5, `appendByRef()` is not necessary for
+> most intents and purposes. `appendByRef()` is useful if you want a PHP
+> array index value to be affected by its reassignment from a template.
+> Assigned object properties behave this way by default.
+
+NOTE.PARAMETER.MERGE
+
+
+ appendByRef('Name', $myname);
+ $smarty->appendByRef('Address', $address);
+ ?>
+
+
+
+See also [`append()`](#api.append), [`assign()`](#api.assign) and
+[`getTemplateVars()`](#api.get.template.vars).
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-functions/api-append.md b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-functions/api-append.md
new file mode 100644
index 000000000..b94586417
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-functions/api-append.md
@@ -0,0 +1,61 @@
+append()
+
+append an element to an assigned array
+
+Description
+===========
+
+void
+
+append
+
+mixed
+
+var
+
+void
+
+append
+
+string
+
+varname
+
+mixed
+
+var
+
+bool
+
+merge
+
+If you append to a string value, it is converted to an array value and
+then appended to. You can explicitly pass name/value pairs, or
+associative arrays containing the name/value pairs. If you pass the
+optional third parameter of TRUE, the value will be merged with the
+current array instead of appended.
+
+NOTE.PARAMETER.MERGE
+
+
+ append('foo', 'Fred');
+ // After this line, foo will now be seen as an array in the template
+ $smarty->append('foo', 'Albert');
+
+ $array = array(1 => 'one', 2 => 'two');
+ $smarty->append('X', $array);
+ $array2 = array(3 => 'three', 4 => 'four');
+ // The following line will add a second element to the X array
+ $smarty->append('X', $array2);
+
+ // passing an associative array
+ $smarty->append(array('city' => 'Lincoln', 'state' => 'Nebraska'));
+ ?>
+
+
+
+See also [`appendByRef()`](#api.append.by.ref),
+[`assign()`](#api.assign) and
+[`getTemplateVars()`](#api.get.template.vars)
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-functions/api-assign-by-ref.md b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-functions/api-assign-by-ref.md
new file mode 100644
index 000000000..7c42b4836
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-functions/api-assign-by-ref.md
@@ -0,0 +1,42 @@
+assignByRef()
+
+assign values by reference
+
+Description
+===========
+
+void
+
+assignByRef
+
+string
+
+varname
+
+mixed
+
+var
+
+This is used to [`assign()`](#api.assign) values to the templates by
+reference.
+
+> **Note**
+>
+> With the introduction of PHP5, `assignByRef()` is not necessary for
+> most intents and purposes. `assignByRef()` is useful if you want a PHP
+> array index value to be affected by its reassignment from a template.
+> Assigned object properties behave this way by default.
+
+
+ assignByRef('Name', $myname);
+ $smarty->assignByRef('Address', $address);
+ ?>
+
+
+
+See also [`assign()`](#api.assign),
+[`clearAllAssign()`](#api.clear.all.assign), [`append()`](#api.append),
+[`{assign}`](#language.function.assign) and
+[`getTemplateVars()`](#api.get.template.vars).
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-functions/api-assign.md b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-functions/api-assign.md
new file mode 100644
index 000000000..c3b9985d4
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-functions/api-assign.md
@@ -0,0 +1,84 @@
+assign()
+
+assign variables/objects to the templates
+
+Description
+===========
+
+void
+
+assign
+
+mixed
+
+var
+
+void
+
+assign
+
+string
+
+varname
+
+mixed
+
+var
+
+bool
+
+nocache
+
+You can explicitly pass name/value pairs, or associative arrays
+containing the name/value pairs.
+
+If you pass the optional third `nocache` parameter of TRUE, the variable
+is assigned as nocache variable. See
+[`Cacheability of Variables`](#cacheability.variables) for details.
+
+> **Note**
+>
+> When you assign/register objects to templates, be sure that all
+> properties and methods accessed from the template are for presentation
+> purposes only. It is very easy to inject application logic through
+> objects, and this leads to poor designs that are difficult to manage.
+> See the Best Practices section of the Smarty website.
+
+
+ assign('Name', 'Fred');
+ $smarty->assign('Address', $address);
+
+ // passing an associative array
+ $smarty->assign(array('city' => 'Lincoln', 'state' => 'Nebraska'));
+
+ // passing an array
+ $myArray = array('no' => 10, 'label' => 'Peanuts');
+ $smarty->assign('foo',$myArray);
+
+ // passing a row from a database (eg adodb)
+ $sql = 'select id, name, email from contacts where contact ='.$id;
+ $smarty->assign('contact', $db->getRow($sql));
+ ?>
+
+These are accessed in the template with
+
+
+ {* note the vars are case sensitive like php *}
+ {$Name}
+ {$Address}
+ {$city}
+ {$state}
+
+ {$foo.no}, {$foo.label}
+ {$contact.id}, {$contact.name},{$contact.email}
+
+To access more complex array assignments see
+[`{foreach}`](#language.function.foreach) and
+[`{section}`](#language.function.section)
+
+See also [`assignByRef()`](#api.assign.by.ref),
+[`getTemplateVars()`](#api.get.template.vars),
+[`clearAssign()`](#api.clear.assign), [`append()`](#api.append) and
+[`{assign}`](#language.function.assign)
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-functions/api-clear-all-assign.md b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-functions/api-clear-all-assign.md
new file mode 100644
index 000000000..cc75fad0f
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-functions/api-clear-all-assign.md
@@ -0,0 +1,34 @@
+clearAllAssign()
+
+clears the values of all assigned variables
+
+Description
+===========
+
+void
+
+clearAllAssign
+
+
+ assign('Name', 'Fred');
+ $smarty->assign('Address', $address);
+
+ // will output above
+ print_r( $smarty->getTemplateVars() );
+
+ // clear all assigned variables
+ $smarty->clearAllAssign();
+
+ // will output nothing
+ print_r( $smarty->getTemplateVars() );
+
+ ?>
+
+
+
+See also [`clearAssign()`](#api.clear.assign),
+[`clearConfig()`](#api.clear.config),
+[`getTemplateVars()`](#api.get.template.vars), [`assign()`](#api.assign)
+and [`append()`](#api.append)
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-functions/api-clear-all-cache.md b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-functions/api-clear-all-cache.md
new file mode 100644
index 000000000..55cbe5795
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-functions/api-clear-all-cache.md
@@ -0,0 +1,37 @@
+clearAllCache()
+
+clears the entire template cache
+
+Description
+===========
+
+void
+
+clearAllCache
+
+int
+
+expire\_time
+
+As an optional parameter, you can supply a minimum age in seconds the
+cache files must be before they will get cleared.
+
+> **Note**
+>
+> Since Smarty version 3.1.14 it is possible to delete cache files by
+> their individual expiration time at creation by passing constant
+> SMARTY::CLEAR\_EXPIRED as `expire_time` parameter.
+
+
+ clearAllCache();
+
+ // clears all files over one hour old
+ $smarty->clearAllCache(3600);
+ ?>
+
+
+
+See also [`clearCache()`](#api.clear.cache),
+[`isCached()`](#api.is.cached) and the [caching](#caching) page.
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-functions/api-clear-assign.md b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-functions/api-clear-assign.md
new file mode 100644
index 000000000..ac0731e86
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-functions/api-clear-assign.md
@@ -0,0 +1,32 @@
+clearAssign()
+
+clears the value of an assigned variable
+
+Description
+===========
+
+void
+
+clearAssign
+
+mixed
+
+var
+
+This can be a single value, or an array of values.
+
+
+ clearAssign('Name');
+
+ // clears multiple variables
+ $smarty->clearAssign(array('Name', 'Address', 'Zip'));
+ ?>
+
+
+
+See also [`clearAllAssign()`](#api.clear.all.assign),
+[`clearConfig()`](#api.clear.config),
+[`getTemplateVars()`](#api.get.template.vars), [`assign()`](#api.assign)
+and [`append()`](#api.append)
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-functions/api-clear-cache.md b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-functions/api-clear-cache.md
new file mode 100644
index 000000000..3e17d80c8
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-functions/api-clear-cache.md
@@ -0,0 +1,60 @@
+clearCache()
+
+clears the cache for a specific template
+
+Description
+===========
+
+void
+
+clearCache
+
+string
+
+template
+
+string
+
+cache\_id
+
+string
+
+compile\_id
+
+int
+
+expire\_time
+
+- If you have [multiple caches](#caching.multiple.caches) for a
+ template, you can clear a specific cache by supplying the `cache_id`
+ as the second parameter.
+
+- You can also pass a [`$compile_id`](#variable.compile.id) as a third
+ parameter. You can [group templates together](#caching.groups) so
+ they can be removed as a group, see the [caching section](#caching)
+ for more information.
+
+- As an optional fourth parameter, you can supply a minimum age in
+ seconds the cache file must be before it will get cleared.
+
+ > **Note**
+ >
+ > Since Smarty version 3.1.14 it is possible to delete cache files
+ > by their individual expiration time at creation by passing
+ > constant SMARTY::CLEAR\_EXPIRED as fourth parameter.
+
+
+
+
+ clearCache('index.tpl');
+
+ // clear the cache for a particular cache id in an multiple-cache template
+ $smarty->clearCache('index.tpl', 'MY_CACHE_ID');
+ ?>
+
+
+
+See also [`clearAllCache()`](#api.clear.all.cache) and
+[`caching`](#caching) section.
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-functions/api-clear-compiled-tpl.md b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-functions/api-clear-compiled-tpl.md
new file mode 100644
index 000000000..dfa688eb6
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-functions/api-clear-compiled-tpl.md
@@ -0,0 +1,44 @@
+clearCompiledTemplate()
+
+clears the compiled version of the specified template resource
+
+Description
+===========
+
+void
+
+clearCompiledTemplate
+
+string
+
+tpl\_file
+
+string
+
+compile\_id
+
+int
+
+exp\_time
+
+This clears the compiled version of the specified template resource, or
+all compiled template files if one is not specified. If you pass a
+[`$compile_id`](#variable.compile.id) only the compiled template for
+this specific [`$compile_id`](#variable.compile.id) is cleared. If you
+pass an exp\_time, then only compiled templates older than `exp_time`
+seconds are cleared, by default all compiled templates are cleared
+regardless of their age. This function is for advanced use only, not
+normally needed.
+
+
+ clearCompiledTemplate('index.tpl');
+
+ // clear entire compile directory
+ $smarty->clearCompiledTemplate();
+ ?>
+
+
+
+See also [`clearCache()`](#api.clear.cache).
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-functions/api-clear-config.md b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-functions/api-clear-config.md
new file mode 100644
index 000000000..43e86be17
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-functions/api-clear-config.md
@@ -0,0 +1,35 @@
+clearConfig()
+
+clears assigned config variables
+
+Description
+===========
+
+void
+
+clearConfig
+
+string
+
+var
+
+This clears all assigned [config variables](#language.config.variables).
+If a variable name is supplied, only that variable is cleared.
+
+
+ clearConfig();
+
+ // clear one variable
+ $smarty->clearConfig('foobar');
+ ?>
+
+
+
+See also [`getConfigVars()`](#api.get.config.vars),
+[`config variables`](#language.config.variables),
+[`config files`](#config.files),
+[`{config_load}`](#language.function.config.load),
+[`configLoad()`](#api.config.load) and
+[`clearAssign()`](#api.clear.assign).
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-functions/api-compile-all-config.md b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-functions/api-compile-all-config.md
new file mode 100644
index 000000000..a102fc97e
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-functions/api-compile-all-config.md
@@ -0,0 +1,61 @@
+compileAllConfig()
+
+compiles all known config files
+
+Description
+===========
+
+string
+
+compileAllConfig
+
+string
+
+extension
+
+boolean
+
+force
+
+integer
+
+timelimit
+
+integer
+
+maxerror
+
+This function compiles config files found in the
+[`$config_dir`](#variable.config.dir) folder. It uses the following
+parameters:
+
+- `extension` is an optional string which defines the file extension
+ for the config files. The default is \".conf\".
+
+- `force` is an optional boolean which controls if only modified
+ (false) or all (true) config files shall be compiled. The default is
+ \"false\".
+
+- `timelimit` is an optional integer to set a runtime limit in seconds
+ for the compilation process. The default is no limit.
+
+- `maxerror` is an optional integer to set an error limit. If more
+ config files failed to compile the function will be aborted. The
+ default is no limit.
+
+> **Note**
+>
+> This function may not create desired results in all configurations.
+> Use is on own risk.
+
+
+ compileAllConfig('.config',true);
+
+ ?>
+
+
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-functions/api-compile-all-templates.md b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-functions/api-compile-all-templates.md
new file mode 100644
index 000000000..53a021da8
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-functions/api-compile-all-templates.md
@@ -0,0 +1,71 @@
+compileAllTemplates()
+
+compiles all known templates
+
+Description
+===========
+
+string
+
+compileAllTemplates
+
+string
+
+extension
+
+boolean
+
+force
+
+integer
+
+timelimit
+
+integer
+
+maxerror
+
+This function compiles template files found in the
+[`$template_dir`](#variable.template.dir) folder. It uses the following
+parameters:
+
+- `extension` is an optional string which defines the file extension
+ for the template files. The default is \".tpl\".
+
+- `force` is an optional boolean which controls if only modified
+ (false) or all (true) templates shall be compiled. The default is
+ \"false\".
+
+- `timelimit` is an optional integer to set a runtime limit in seconds
+ for the compilation process. The default is no limit.
+
+- `maxerror` is an optional integer to set an error limit. If more
+ templates failed to compile the function will be aborted. The
+ default is no limit.
+
+> **Note**
+>
+> This function may not create desired results in all configurations.
+> Use is on own risk.
+
+> **Note**
+>
+> If any template requires registered plugins, filters or objects you
+> must register all of them before running this function.
+
+> **Note**
+>
+> If you are using template inheritance this function will create
+> compiled files of parent templates which will never be used.
+
+
+ compileAllTemplates('.tpl',true);
+
+ ?>
+
+
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-functions/api-config-load.md b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-functions/api-config-load.md
new file mode 100644
index 000000000..bf6001fa4
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-functions/api-config-load.md
@@ -0,0 +1,47 @@
+configLoad()
+
+loads config file data and assigns it to the template
+
+Description
+===========
+
+void
+
+configLoad
+
+string
+
+file
+
+string
+
+section
+
+This loads [config file](#config.files) data and assigns it to the
+template. This works identically to the template
+[`{config_load}`](#language.function.config.load) function.
+
+> **Note**
+>
+> As of Smarty 2.4.0, assigned template variables are kept across
+> invocations of [`fetch()`](#api.fetch) and
+> [`display()`](#api.display). Config vars loaded from `configLoad()`
+> are always global in scope. Config files are also compiled for faster
+> execution, and respect the [`$force_compile`](#variable.force.compile)
+> and [`$compile_check`](#variable.compile.check) settings.
+
+
+ configLoad('my.conf');
+
+ // load a section
+ $smarty->configLoad('my.conf', 'foobar');
+ ?>
+
+
+
+See also [`{config_load}`](#language.function.config.load),
+[`getConfigVars()`](#api.get.config.vars),
+[`clearConfig()`](#api.clear.config), and
+[`config variables`](#language.config.variables)
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-functions/api-create-data.md b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-functions/api-create-data.md
new file mode 100644
index 000000000..7e083776e
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-functions/api-create-data.md
@@ -0,0 +1,52 @@
+createData()
+
+creates a data object
+
+Description
+===========
+
+string
+
+createData
+
+object
+
+parent
+
+string
+
+createData
+
+This creates a data object which will hold assigned variables. It uses
+the following parameters:
+
+- `parent` is an optional parameter. It is an uplink to the main
+ Smarty object, a another user-created data object or to user-created
+ template object. These objects can be chained. Templates can access
+ variables assigned to any of the objects in it\'s parent chain.
+
+Data objects are used to create scopes for assigned variables. They can
+be used to control which variables are seen by which templates.
+
+
+ createData();
+
+ // assign variable to data scope
+ $data->assign('foo','bar');
+
+ // create template object which will use variables from data object
+ $tpl = $smarty->createTemplate('index.tpl',$data);
+
+ // display the template
+ $tpl->display();
+ ?>
+
+
+
+See also [`display()`](#api.display), and
+[`createTemplate()`](#api.create.template),
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-functions/api-create-template.md b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-functions/api-create-template.md
new file mode 100644
index 000000000..5129406d4
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-functions/api-create-template.md
@@ -0,0 +1,99 @@
+createTemplate()
+
+returns a template object
+
+Description
+===========
+
+Smarty\_Internal\_Template
+
+createTemplate
+
+string
+
+template
+
+object
+
+parent
+
+Smarty\_Internal\_Template
+
+createTemplate
+
+string
+
+template
+
+array
+
+data
+
+Smarty\_Internal\_Template
+
+createTemplate
+
+string
+
+template
+
+string
+
+cache\_id
+
+string
+
+compile\_id
+
+object
+
+parent
+
+Smarty\_Internal\_Template
+
+createTemplate
+
+string
+
+template
+
+string
+
+cache\_id
+
+string
+
+compile\_id
+
+array
+
+data
+
+This creates a template object which later can be rendered by the
+[display](#api.display) or [fetch](#api.fetch) method. It uses the
+following parameters:
+
+- `template` must be a valid [template resource](#resources) type and
+ path.
+
+
+
+
+ createTemplate('index.tpl');
+
+ // assign variable to template scope
+ $tpl->assign('foo','bar');
+
+ // display the template
+ $tpl->display();
+ ?>
+
+
+
+See also [`display()`](#api.display), and
+[`templateExists()`](#api.template.exists).
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-functions/api-disable-security.md b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-functions/api-disable-security.md
new file mode 100644
index 000000000..1166828e5
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-functions/api-disable-security.md
@@ -0,0 +1,15 @@
+disableSecurity()
+
+disables template security
+
+Description
+===========
+
+string
+
+disableSecurity
+
+This disables security checking on templates.
+
+See also [`enableSecurity()`](#api.enable.security), and
+[Security](#advanced.features.security).
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-functions/api-display.md b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-functions/api-display.md
new file mode 100644
index 000000000..59726195e
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-functions/api-display.md
@@ -0,0 +1,82 @@
+display()
+
+displays the template
+
+Description
+===========
+
+void
+
+display
+
+string
+
+template
+
+string
+
+cache\_id
+
+string
+
+compile\_id
+
+This displays the contents of a template. To return the contents of a
+template into a variable, use [`fetch()`](#api.fetch). Supply a valid
+[template resource](#resources) type and path. As an optional second
+parameter, you can pass a `$cache_id`, see the [caching
+section](#caching) for more information.
+
+PARAMETER.COMPILEID
+
+
+ setCaching(true);
+
+ // only do db calls if cache doesn't exist
+ if(!$smarty->isCached('index.tpl')) {
+
+ // dummy up some data
+ $address = '245 N 50th';
+ $db_data = array(
+ 'City' => 'Lincoln',
+ 'State' => 'Nebraska',
+ 'Zip' => '68502'
+ );
+
+ $smarty->assign('Name', 'Fred');
+ $smarty->assign('Address', $address);
+ $smarty->assign('data', $db_data);
+
+ }
+
+ // display the output
+ $smarty->display('index.tpl');
+ ?>
+
+
+
+Use the syntax for [template resources](#resources) to display files
+outside of the [`$template_dir`](#variable.template.dir) directory.
+
+
+ display('/usr/local/include/templates/header.tpl');
+
+ // absolute filepath (same thing)
+ $smarty->display('file:/usr/local/include/templates/header.tpl');
+
+ // windows absolute filepath (MUST use "file:" prefix)
+ $smarty->display('file:C:/www/pub/templates/header.tpl');
+
+ // include from template resource named "db"
+ $smarty->display('db:header.tpl');
+ ?>
+
+
+
+See also [`fetch()`](#api.fetch) and
+[`templateExists()`](#api.template.exists).
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-functions/api-enable-security.md b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-functions/api-enable-security.md
new file mode 100644
index 000000000..72ee38bb9
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-functions/api-enable-security.md
@@ -0,0 +1,41 @@
+enableSecurity()
+
+enables template security
+
+Description
+===========
+
+string
+
+enableSecurity
+
+string
+
+securityclass
+
+string
+
+enableSecurity
+
+object
+
+securityobject
+
+string
+
+enableSecurity
+
+This enables security checking on templates. It uses the following
+parameters:
+
+- `securityclass` is an optional parameter. It\'s the name of the
+ class with defines the security policy parameters.
+
+- `securityobject` is an optional parameter. It\'s the object with
+ defines the security policy parameters.
+
+For the details how to setup a security policy see the
+[Security](#advanced.features.security) section.
+
+See also [`disableSecurity()`](#api.disable.security), and
+[Security](#advanced.features.security).
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-functions/api-fetch.md b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-functions/api-fetch.md
new file mode 100644
index 000000000..6da05bd0e
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-functions/api-fetch.md
@@ -0,0 +1,91 @@
+fetch()
+
+returns the template output
+
+Description
+===========
+
+string
+
+fetch
+
+string
+
+template
+
+string
+
+cache\_id
+
+string
+
+compile\_id
+
+This returns the template output instead of [displaying](#api.display)
+it. Supply a valid [template resource](#resources) type and path. As an
+optional second parameter, you can pass a `$cache id`, see the [caching
+section](#caching) for more information.
+
+PARAMETER.COMPILEID
+
+
+ setCaching(true);
+
+ // set a separate cache_id for each unique URL
+ $cache_id = md5($_SERVER['REQUEST_URI']);
+
+ // capture the output
+ $output = $smarty->fetch('index.tpl', $cache_id);
+
+ // do something with $output here
+ echo $output;
+ ?>
+
+
+
+The `email_body.tpl` template
+
+
+ Dear {$contact_info.name},
+
+ Welcome and thank you for signing up as a member of our user group.
+
+ Click on the link below to login with your user name
+ of '{$contact_info.username}' so you can post in our forums.
+
+ {$login_url}
+
+ List master
+
+ {textformat wrap=40}
+ This is some long-winded disclaimer text that would automatically get wrapped
+ at 40 characters. This helps make the text easier to read in mail programs that
+ do not wrap sentences for you.
+ {/textformat}
+
+
+
+The php script using the PHP [`mail()`](https://www.php.net/function.mail)
+function
+
+
+ assign('contact_info',$contact_info);
+ $smarty->assign('login_url',"http://{$_SERVER['SERVER_NAME']}/login");
+
+ mail($contact_info['email'], 'Thank You', $smarty->fetch('email_body.tpl'));
+
+ ?>
+
+
+
+See also [`{fetch}`](#language.function.fetch)
+[`display()`](#api.display), [`{eval}`](#language.function.eval), and
+[`templateExists()`](#api.template.exists).
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-functions/api-get-cache-dir.md b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-functions/api-get-cache-dir.md
new file mode 100644
index 000000000..9e55d8d0b
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-functions/api-get-cache-dir.md
@@ -0,0 +1,23 @@
+getCacheDir()
+
+return the directory where the rendered template\'s output is stored
+
+Description
+===========
+
+string
+
+getCacheDir
+
+
+ getCacheDir();
+
+ ?>
+
+
+
+See also [`setCacheDir()`](#api.set.cache.dir) and
+[`$cache_dir`](#variable.cache.dir).
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-functions/api-get-compile-dir.md b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-functions/api-get-compile-dir.md
new file mode 100644
index 000000000..3bfae7306
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-functions/api-get-compile-dir.md
@@ -0,0 +1,23 @@
+getCompileDir()
+
+returns the directory where compiled templates are stored
+
+Description
+===========
+
+string
+
+getCompileDir
+
+
+ getCompileDir();
+
+ ?>
+
+
+
+See also [`setCompileDir()`](#api.set.compile.dir) and
+[`$compile_dir`](#variable.compile.dir).
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-functions/api-get-config-dir.md b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-functions/api-get-config-dir.md
new file mode 100644
index 000000000..f41472ca4
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-functions/api-get-config-dir.md
@@ -0,0 +1,40 @@
+getConfigDir()
+
+return the directory where config files are stored
+
+Description
+===========
+
+string\|array
+
+getConfigDir
+
+string
+
+key
+
+
+ setConfigDir(array(
+ 'one' => './config',
+ 'two' => './config_2',
+ 'three' => './config_3',
+ ));
+
+ // get all directories where config files are stored
+ $config_dir = $smarty->getConfigDir();
+ var_dump($config_dir); // array
+
+ // get directory identified by key
+ $config_dir = $smarty->getConfigDir('one');
+ var_dump($config_dir); // string
+
+ ?>
+
+
+
+See also [`setConfigDir()`](#api.set.config.dir),
+[`addConfigDir()`](#api.add.config.dir) and
+[`$config_dir`](#variable.config.dir).
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-functions/api-get-config-vars.md b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-functions/api-get-config-vars.md
new file mode 100644
index 000000000..f252e8674
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-functions/api-get-config-vars.md
@@ -0,0 +1,37 @@
+getConfigVars()
+
+returns the given loaded config variable value
+
+Description
+===========
+
+array
+
+getConfigVars
+
+string
+
+varname
+
+If no parameter is given, an array of all loaded [config
+variables](#language.config.variables) is returned.
+
+
+ getConfigVars('foo');
+
+ // get all loaded config template vars
+ $all_config_vars = $smarty->getConfigVars();
+
+ // take a look at them
+ print_r($all_config_vars);
+ ?>
+
+
+
+See also [`clearConfig()`](#api.clear.config),
+[`{config_load}`](#language.function.config.load),
+[`configLoad()`](#api.config.load) and
+[`getTemplateVars()`](#api.get.template.vars).
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-functions/api-get-plugins-dir.md b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-functions/api-get-plugins-dir.md
new file mode 100644
index 000000000..aa6035549
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-functions/api-get-plugins-dir.md
@@ -0,0 +1,31 @@
+getPluginsDir()
+
+return the directory where plugins are stored
+
+Description
+===========
+
+array
+
+getPluginsDir
+
+
+ setPluginsDir(array(
+ './plugins',
+ './plugins_2',
+ ));
+
+ // get all directories where plugins are stored
+ $config_dir = $smarty->getPluginsDir();
+ var_dump($config_dir); // array
+
+ ?>
+
+
+
+See also [`setPluginsDir()`](#api.set.plugins.dir),
+[`addPluginsDir()`](#api.add.plugins.dir) and
+[`$plugins_dir`](#variable.plugins.dir).
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-functions/api-get-registered-object.md b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-functions/api-get-registered-object.md
new file mode 100644
index 000000000..a7c920e14
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-functions/api-get-registered-object.md
@@ -0,0 +1,36 @@
+getRegisteredObject()
+
+returns a reference to a registered object
+
+Description
+===========
+
+array
+
+getRegisteredObject
+
+string
+
+object\_name
+
+This is useful from within a custom function when you need direct access
+to a [registered object](#api.register.object). See the
+[objects](#advanced.features.objects) page for more info.
+
+
+ getRegisteredObject($params['object']);
+ // use $obj_ref is now a reference to the object
+ }
+ }
+ ?>
+
+
+
+See also [`registerObject()`](#api.register.object),
+[`unregisterObject()`](#api.unregister.object) and [objects
+page](#advanced.features.objects)
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-functions/api-get-tags.md b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-functions/api-get-tags.md
new file mode 100644
index 000000000..7729b468b
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-functions/api-get-tags.md
@@ -0,0 +1,40 @@
+getTags()
+
+return tags used by template
+
+Description
+===========
+
+string
+
+getTags
+
+object
+
+template
+
+This function returns an array of tagname/attribute pairs for all tags
+used by the template. It uses the following parameters:
+
+- `template` is the template object.
+
+> **Note**
+>
+> This function is experimental.
+
+
+ createTemplate('index.tpl');
+
+ // get tags
+ $tags = $smarty->getTags($tpl);
+
+ print_r($tags);
+
+ ?>
+
+
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-functions/api-get-template-dir.md b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-functions/api-get-template-dir.md
new file mode 100644
index 000000000..42c75908b
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-functions/api-get-template-dir.md
@@ -0,0 +1,40 @@
+getTemplateDir()
+
+return the directory where templates are stored
+
+Description
+===========
+
+string\|array
+
+getTemplateDir
+
+string
+
+key
+
+
+ setTemplateDir(array(
+ 'one' => './templates',
+ 'two' => './templates_2',
+ 'three' => './templates_3',
+ ));
+
+ // get all directories where templates are stored
+ $template_dir = $smarty->getTemplateDir();
+ var_dump($template_dir); // array
+
+ // get directory identified by key
+ $template_dir = $smarty->getTemplateDir('one');
+ var_dump($template_dir); // string
+
+ ?>
+
+
+
+See also [`setTemplateDir()`](#api.set.template.dir),
+[`addTemplateDir()`](#api.add.template.dir) and
+[`$template_dir`](#variable.template.dir).
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-functions/api-get-template-vars.md b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-functions/api-get-template-vars.md
new file mode 100644
index 000000000..27882eef4
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-functions/api-get-template-vars.md
@@ -0,0 +1,37 @@
+getTemplateVars()
+
+returns assigned variable value(s)
+
+Description
+===========
+
+array
+
+getTemplateVars
+
+string
+
+varname
+
+If no parameter is given, an array of all [assigned](#api.assign)
+variables are returned.
+
+
+ getTemplateVars('foo');
+
+ // get all assigned template vars
+ $all_tpl_vars = $smarty->getTemplateVars();
+
+ // take a look at them
+ print_r($all_tpl_vars);
+ ?>
+
+
+
+See also [`assign()`](#api.assign),
+[`{assign}`](#language.function.assign), [`append()`](#api.append),
+[`clearAssign()`](#api.clear.assign),
+[`clearAllAssign()`](#api.clear.all.assign) and
+[`getConfigVars()`](#api.get.config.vars)
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-functions/api-is-cached.md b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-functions/api-is-cached.md
new file mode 100644
index 000000000..0c41bf04a
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-functions/api-is-cached.md
@@ -0,0 +1,81 @@
+isCached()
+
+returns true if there is a valid cache for this template
+
+Description
+===========
+
+bool
+
+isCached
+
+string
+
+template
+
+string
+
+cache\_id
+
+string
+
+compile\_id
+
+- This only works if [`$caching`](#variable.caching) is set to one of
+ `Smarty::CACHING_LIFETIME_CURRENT` or
+ `Smarty::CACHING_LIFETIME_SAVED` to enable caching. See the [caching
+ section](#caching) for more info.
+
+- You can also pass a `$cache_id` as an optional second parameter in
+ case you want [multiple caches](#caching.multiple.caches) for the
+ given template.
+
+- You can supply a [`$compile id`](#variable.compile.id) as an
+ optional third parameter. If you omit that parameter the persistent
+ [`$compile_id`](#variable.compile.id) is used if its set.
+
+- If you do not want to pass a `$cache_id` but want to pass a
+ [`$compile_id`](#variable.compile.id) you have to pass NULL as a
+ `$cache_id`.
+
+> **Note**
+>
+> If `isCached()` returns TRUE it actually loads the cached output and
+> stores it internally. Any subsequent call to
+> [`display()`](#api.display) or [`fetch()`](#api.fetch) will return
+> this internally stored output and does not try to reload the cache
+> file. This prevents a race condition that may occur when a second
+> process clears the cache between the calls to `isCached()` and to
+> [`display()`](#api.display) in the example above. This also means
+> calls to [`clearCache()`](#api.clear.cache) and other changes of the
+> cache-settings may have no effect after `isCached()` returned TRUE.
+
+
+ setCaching(Smarty::CACHING_LIFETIME_CURRENT);
+
+ if(!$smarty->isCached('index.tpl')) {
+ // do database calls, assign vars here
+ }
+
+ $smarty->display('index.tpl');
+ ?>
+
+
+
+
+ setCaching(Smarty::CACHING_LIFETIME_CURRENT);
+
+ if(!$smarty->isCached('index.tpl', 'FrontPage')) {
+ // do database calls, assign vars here
+ }
+
+ $smarty->display('index.tpl', 'FrontPage');
+ ?>
+
+
+
+See also [`clearCache()`](#api.clear.cache),
+[`clearAllCache()`](#api.clear.all.cache), and [caching
+section](#caching).
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-functions/api-load-filter.md b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-functions/api-load-filter.md
new file mode 100644
index 000000000..19286ee33
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-functions/api-load-filter.md
@@ -0,0 +1,42 @@
+loadFilter()
+
+load a filter plugin
+
+Description
+===========
+
+void
+
+loadFilter
+
+string
+
+type
+
+string
+
+name
+
+The first argument specifies the type of the filter to load and can be
+one of the following: `pre`, `post` or `output`. The second argument
+specifies the `name` of the filter plugin.
+
+
+ loadFilter('pre', 'trim');
+
+ // load another prefilter named 'datefooter'
+ $smarty->loadFilter('pre', 'datefooter');
+
+ // load output filter named 'compress'
+ $smarty->loadFilter('output', 'compress');
+
+ ?>
+
+
+
+See also [`registerFilter()`](#api.register.filter),
+[`$autoload_filters`](#variable.autoload.filters) and [advanced
+features](#advanced.features).
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-functions/api-mute-expected-errors.md b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-functions/api-mute-expected-errors.md
new file mode 100644
index 000000000..626288ea6
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-functions/api-mute-expected-errors.md
@@ -0,0 +1,21 @@
+Smarty::muteExpectedErrors()
+
+mutes expected warnings and notices deliberately generated by Smarty
+
+Description
+===========
+
+string
+
+muteExpectedErrors
+
+muteExpectedErrors() registers a custom error handler using
+[set\_error\_handler()](https://www.php.net/set_error_handler). The error
+handler merely inspects `$errno` and `$errfile` to determine if the
+given error was produced deliberately and must be ignored, or should be
+passed on to the next error handler.
+
+`Smarty::unmuteExpectedErrors()` removes the current error handler.
+Please note, that if you\'ve registered any custom error handlers after
+the muteExpectedErrors() call, the unmute will not remove Smarty\'s
+muting error handler, but the one registered last.
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-functions/api-register-cacheresource.md b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-functions/api-register-cacheresource.md
new file mode 100644
index 000000000..60ae60308
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-functions/api-register-cacheresource.md
@@ -0,0 +1,40 @@
+registerCacheResource()
+
+dynamically register CacheResources
+
+Description
+===========
+
+void
+
+registerCacheResource
+
+string
+
+name
+
+Smarty\_CacheResource
+
+resource\_handler
+
+Use this to dynamically register a [CacheResource
+plugin](#caching.custom) with Smarty. Pass in the `name` of the
+CacheResource and the object extending Smarty\_CacheResource. See
+[Custom Cache Implementation](#caching.custom) for more information on
+how to create custom CacheResources.
+
+> **Note**
+>
+> In Smarty2 this used to be a callback function called
+> `$cache_handler_func`. Smarty3 replaced this callback by the
+> `Smarty_CacheResource` module.
+
+
+ registerCacheResource('mysql', new Smarty_CacheResource_Mysql());
+ ?>
+
+
+
+See also [`unregisterCacheResource()`](#api.unregister.cacheresource)
+and the [Custom CacheResource Implementation](#caching.custom) section.
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-functions/api-register-class.md b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-functions/api-register-class.md
new file mode 100644
index 000000000..ee339cadb
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-functions/api-register-class.md
@@ -0,0 +1,65 @@
+registerClass()
+
+register a class for use in the templates
+
+Description
+===========
+
+void
+
+registerClass
+
+string
+
+class\_name
+
+string
+
+class\_impl
+
+Smarty allows you to access static classes from templates as long as the
+[Security Policy](#advanced.features.security) does not tell it
+otherwise. If security is enabled, classes registered with
+`registerClass()` are accessible to templates.
+
+
+ registerClass("Foo", "Bar");
+
+
+
+
+ {* Smarty will access this class as long as it's not prohibited by security *}
+ {Bar::$property}
+ {* Foo translates to the real class Bar *}
+ {Foo::$property}
+
+
+
+
+ registerClass("Foo", "\my\php\application\Bar");
+
+
+
+
+ {* Foo translates to the real class \my\php\application\Bar *}
+ {Foo::$property}
+
+
+
+See also [`registerObject()`](#api.register.object), and
+[Security](#advanced.features.security).
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-functions/api-register-default-plugin-handler.md b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-functions/api-register-default-plugin-handler.md
new file mode 100644
index 000000000..03547df71
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-functions/api-register-default-plugin-handler.md
@@ -0,0 +1,93 @@
+registerDefaultPluginHandler()
+
+register a function which gets called on undefined tags
+
+Description
+===========
+
+void
+
+registerDefaultPluginHandler
+
+mixed
+
+callback
+
+Register a default plugin handler which gets called if the compiler can
+not find a definition for a tag otherwise. It uses the following
+parameters:
+
+If during compilation Smarty encounters tag which is not defined
+internal, registered or located in the plugins folder it tries to
+resolve it by calling the registered default plugin handler. The handler
+may be called several times for same undefined tag looping over valid
+plugin types.
+
+
+ registerDefaultPluginHandler('my_plugin_handler');
+
+ /**
+ * Default Plugin Handler
+ *
+ * called when Smarty encounters an undefined tag during compilation
+ *
+ * @param string $name name of the undefined tag
+ * @param string $type tag type (e.g. Smarty::PLUGIN_FUNCTION, Smarty::PLUGIN_BLOCK,
+ Smarty::PLUGIN_COMPILER, Smarty::PLUGIN_MODIFIER, Smarty::PLUGIN_MODIFIERCOMPILER)
+ * @param Smarty_Internal_Template $template template object
+ * @param string &$callback returned function name
+ * @param string &$script optional returned script filepath if function is external
+ * @param bool &$cacheable true by default, set to false if plugin is not cachable (Smarty >= 3.1.8)
+ * @return bool true if successfull
+ */
+ function my_plugin_handler ($name, $type, $template, &$callback, &$script, &$cacheable)
+ {
+ switch ($type) {
+ case Smarty::PLUGIN_FUNCTION:
+ switch ($name) {
+ case 'scriptfunction':
+ $script = './scripts/script_function_tag.php';
+ $callback = 'default_script_function_tag';
+ return true;
+ case 'localfunction':
+ $callback = 'default_local_function_tag';
+ return true;
+ default:
+ return false;
+ }
+ case Smarty::PLUGIN_COMPILER:
+ switch ($name) {
+ case 'scriptcompilerfunction':
+ $script = './scripts/script_compiler_function_tag.php';
+ $callback = 'default_script_compiler_function_tag';
+ return true;
+ default:
+ return false;
+ }
+ case Smarty::PLUGIN_BLOCK:
+ switch ($name) {
+ case 'scriptblock':
+ $script = './scripts/script_block_tag.php';
+ $callback = 'default_script_block_tag';
+ return true;
+ default:
+ return false;
+ }
+ default:
+ return false;
+ }
+ }
+
+ ?>
+
+
+
+> **Note**
+>
+> The return callback must be static; a function name or an array of
+> class and method name.
+>
+> Dynamic callbacks like objects methods are not supported.
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-functions/api-register-filter.md b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-functions/api-register-filter.md
new file mode 100644
index 000000000..fd91d2661
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-functions/api-register-filter.md
@@ -0,0 +1,45 @@
+registerFilter()
+
+dynamically register filters
+
+Description
+===========
+
+void
+
+registerFilter
+
+string
+
+type
+
+mixed
+
+callback
+
+Use this to dynamically register filters to operate on a templates. It
+uses the following parameters:
+
+NOTE.PARAMETER.FUNCTION
+
+A [prefilter](#plugins.prefilters.postfilters) runs through the template
+source before it gets compiled. See [template
+prefilters](#advanced.features.prefilters) for more information on how
+to setup a prefiltering function.
+
+A [postfilter](#plugins.prefilters.postfilters) runs through the
+template code after it was compiled to PHP. See [template
+postfilters](#advanced.features.postfilters) for more information on how
+to setup a postfiltering function.
+
+A [outputfilter](#plugins.outputfilters) operates on a template\'s
+output before it is [displayed](#api.display). See [template output
+filters](#advanced.features.outputfilters) for more information on how
+to set up an output filter function.
+
+See also [`unregisterFilter()`](#api.unregister.filter),
+[`loadFilter()`](#api.load.filter),
+[`$autoload_filters`](#variable.autoload.filters), [template pre
+filters](#advanced.features.prefilters) [template post
+filters](#advanced.features.postfilters) [template output
+filters](#advanced.features.outputfilters) section.
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-functions/api-register-object.md b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-functions/api-register-object.md
new file mode 100644
index 000000000..c310e8c2a
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-functions/api-register-object.md
@@ -0,0 +1,44 @@
+registerObject()
+
+register an object for use in the templates
+
+Description
+===========
+
+void
+
+registerObject
+
+string
+
+object\_name
+
+object
+
+object
+
+array
+
+allowed\_methods\_properties
+
+boolean
+
+format
+
+array
+
+block\_methods
+
+> **Note**
+>
+> When you register/assign objects to templates, be sure that all
+> properties and methods accessed from the template are for presentation
+> purposes only. It is very easy to inject application logic through
+> objects, and this leads to poor designs that are difficult to manage.
+> See the Best Practices section of the Smarty website.
+
+See the [objects section](#advanced.features.objects) for more
+information.
+
+See also [`getRegisteredObject()`](#api.get.registered.object), and
+[`unregisterObject()`](#api.unregister.object).
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-functions/api-register-plugin.md b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-functions/api-register-plugin.md
new file mode 100644
index 000000000..6eb433810
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-functions/api-register-plugin.md
@@ -0,0 +1,110 @@
+registerPlugin()
+
+dynamically register plugins
+
+Description
+===========
+
+void
+
+registerPlugin
+
+string
+
+type
+
+string
+
+name
+
+mixed
+
+callback
+
+bool
+
+cacheable
+
+mixed
+
+cache\_attrs
+
+This method registers functions or methods defined in your script as
+plugin. It uses the following parameters:
+
+- `cacheable` and `cache_attrs` can be omitted in most cases. See
+ [controlling cacheability of plugins output](#caching.cacheable) on
+ how to use them properly.
+
+
+
+
+ registerPlugin("function","date_now", "print_current_date");
+
+ function print_current_date($params, $smarty)
+ {
+ if(empty($params["format"])) {
+ $format = "%b %e, %Y";
+ } else {
+ $format = $params["format"];
+ }
+ return strftime($format,time());
+ }
+ ?>
+
+
+
+And in the template
+
+
+ {date_now}
+
+ {* or to format differently *}
+ {date_now format="%Y/%m/%d"}
+
+
+ registerPlugin("block","translate", "do_translation");
+ ?>
+
+
+
+Where the template is:
+
+
+ {translate lang="br"}Hello, world!{/translate}
+
+
+
+
+ registerPlugin("modifier","ss", "stripslashes");
+
+ ?>
+
+In the template, use `ss` to strip slashes.
+
+
+
+
+See also [`unregisterPlugin()`](#api.unregister.plugin), [plugin
+functions](#plugins.functions), [plugin block
+functions](#plugins.block.functions), [plugin compiler
+functions](#plugins.compiler.functions), and the [creating plugin
+modifiers](#plugins.modifiers) section.
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-functions/api-register-resource.md b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-functions/api-register-resource.md
new file mode 100644
index 000000000..ca4005460
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-functions/api-register-resource.md
@@ -0,0 +1,46 @@
+registerResource()
+
+dynamically register resources
+
+Description
+===========
+
+void
+
+registerResource
+
+string
+
+name
+
+Smarty\_resource
+
+resource\_handler
+
+Use this to dynamically register a [Resource plugin](#resources) with
+Smarty. Pass in the `name` of the Resource and the object extending
+Smarty\_Resource. See [template resources](#resources) for more
+information on how to setup a function for fetching templates.
+
+> **Note**
+>
+> A resource name must be at least two characters in length. One
+> character resource names will be ignored and used as part of the file
+> path, such as `$smarty->display('c:/path/to/index.tpl');`
+
+> **Note**
+>
+> Prior to Smarty 3.1 `registerResource()` accepted an array of callback
+> functions. While this is still possible for backward compatibility
+> reasons, it is strongly discouraged as callback functions have been
+> deprecated as of Smarty 3.1.
+
+
+ registerResource('mysql', new Smarty_Resource_Mysql());
+ ?>
+
+
+
+See also [`unregisterResource()`](#api.unregister.resource) and the
+[template resources](#resources) section.
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-functions/api-set-cache-dir.md b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-functions/api-set-cache-dir.md
new file mode 100644
index 000000000..7f7c4b60d
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-functions/api-set-cache-dir.md
@@ -0,0 +1,32 @@
+setCacheDir()
+
+set the directory where the rendered template\'s output is stored
+
+Description
+===========
+
+Smarty
+
+setCacheDir
+
+string
+
+cache\_dir
+
+
+ setCacheDir('./cache');
+
+ // chaining of method calls
+ $smarty->setTemplateDir('./templates')
+ ->setCompileDir('./templates_c')
+ ->setCacheDir('./cache');
+
+ ?>
+
+
+
+See also [`getCacheDir()`](#api.get.cache.dir) and
+[`$cache_dir`](#variable.cache.dir).
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-functions/api-set-compile-dir.md b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-functions/api-set-compile-dir.md
new file mode 100644
index 000000000..bfeb55a53
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-functions/api-set-compile-dir.md
@@ -0,0 +1,32 @@
+setCompileDir()
+
+set the directory where compiled templates are stored
+
+Description
+===========
+
+Smarty
+
+setCompileDir
+
+string
+
+compile\_dir
+
+
+ setCompileDir('./templates_c');
+
+ // chaining of method calls
+ $smarty->setTemplateDir('./templates')
+ ->setCompileDir('./templates_c')
+ ->setCacheDir('./cache');
+
+ ?>
+
+
+
+See also [`getCompileDir()`](#api.get.compile.dir) and
+[`$compile_dir`](#variable.compile.dir).
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-functions/api-set-config-dir.md b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-functions/api-set-config-dir.md
new file mode 100644
index 000000000..97a6ae977
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-functions/api-set-config-dir.md
@@ -0,0 +1,47 @@
+setConfigDir()
+
+set the directories where config files are stored
+
+Description
+===========
+
+Smarty
+
+setConfigDir
+
+string\|array
+
+config\_dir
+
+
+ setConfigDir('./config');
+
+ // view the config dir chain
+ var_dump($smarty->getConfigDir());
+
+ // set multiple directorÃes where config files are stored
+ $smarty->setConfigDir(array(
+ 'one' => './config',
+ 'two' => './config_2',
+ 'three' => './config_3',
+ ));
+
+ // view the config dir chain
+ var_dump($smarty->getConfigDir());
+
+ // chaining of method calls
+ $smarty->setTemplateDir('./templates')
+ ->setConfigDir('./config')
+ ->setCompileDir('./templates_c')
+ ->setCacheDir('./cache');
+
+ ?>
+
+
+
+See also [`getConfigDir()`](#api.get.config.dir),
+[`addConfigDir()`](#api.add.config.dir) and
+[`$config_dir`](#variable.config.dir).
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-functions/api-set-plugins-dir.md b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-functions/api-set-plugins-dir.md
new file mode 100644
index 000000000..25b0567b1
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-functions/api-set-plugins-dir.md
@@ -0,0 +1,46 @@
+setPluginsDir()
+
+set the directories where plugins are stored
+
+Description
+===========
+
+Smarty
+
+setPluginsDir
+
+string\|array
+
+plugins\_dir
+
+
+ setPluginsDir('./plugins');
+
+ // view the plugins dir chain
+ var_dump($smarty->getPluginsDir());
+
+ // set multiple directorÃes where plugins are stored
+ $smarty->setPluginsDir(array(
+ './plugins',
+ './plugins_2',
+ ));
+
+ // view the plugins dir chain
+ var_dump($smarty->getPluginsDir());
+
+ // chaining of method calls
+ $smarty->setTemplateDir('./templates')
+ ->setPluginsDir('./plugins')
+ ->setCompileDir('./templates_c')
+ ->setCacheDir('./cache');
+
+ ?>
+
+
+
+See also [`getPluginsDir()`](#api.get.plugins.dir),
+[`addPluginsDir()`](#api.add.plugins.dir) and
+[`$plugins_dir`](#variable.plugins.dir).
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-functions/api-set-template-dir.md b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-functions/api-set-template-dir.md
new file mode 100644
index 000000000..2de23309b
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-functions/api-set-template-dir.md
@@ -0,0 +1,46 @@
+setTemplateDir()
+
+set the directories where templates are stored
+
+Description
+===========
+
+Smarty
+
+setTemplateDir
+
+string\|array
+
+template\_dir
+
+
+ setTemplateDir('./cache');
+
+ // view the template dir chain
+ var_dump($smarty->getTemplateDir());
+
+ // set multiple directorÃes where templates are stored
+ $smarty->setTemplateDir(array(
+ 'one' => './templates',
+ 'two' => './templates_2',
+ 'three' => './templates_3',
+ ));
+
+ // view the template dir chain
+ var_dump($smarty->getTemplateDir());
+
+ // chaining of method calls
+ $smarty->setTemplateDir('./templates')
+ ->setCompileDir('./templates_c')
+ ->setCacheDir('./cache');
+
+ ?>
+
+
+
+See also [`getTemplateDir()`](#api.get.template.dir),
+[`addTemplateDir()`](#api.add.template.dir) and
+[`$template_dir`](#variable.template.dir).
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-functions/api-template-exists.md b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-functions/api-template-exists.md
new file mode 100644
index 000000000..07f61b12e
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-functions/api-template-exists.md
@@ -0,0 +1,59 @@
+templateExists()
+
+checks whether the specified template exists
+
+Description
+===========
+
+bool
+
+templateExists
+
+string
+
+template
+
+It can accept either a path to the template on the filesystem or a
+resource string specifying the template.
+
+This example uses `$_GET['page']` to
+[`{include}`](#language.function.include) a content template. If the
+template does not exist then an error page is displayed instead. First
+the `page_container.tpl`
+
+
+
+ {$title}
+
+ {include file='page_top.tpl'}
+
+ {* include middle content page *}
+ {include file=$content_template}
+
+ {include file='page_footer.tpl'}
+
+
+
+
+And the php script
+
+
+ templateExists($mid_template) ){
+ $mid_template = 'page_not_found.tpl';
+ }
+ $smarty->assign('content_template', $mid_template);
+
+ $smarty->display('page_container.tpl');
+
+ ?>
+
+
+
+See also [`display()`](#api.display), [`fetch()`](#api.fetch),
+[`{include}`](#language.function.include) and
+[`{insert}`](#language.function.insert)
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-functions/api-test-install.md b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-functions/api-test-install.md
new file mode 100644
index 000000000..918bd220a
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-functions/api-test-install.md
@@ -0,0 +1,22 @@
+testInstall()
+
+checks Smarty installation
+
+Description
+===========
+
+void
+
+testInstall
+
+This function verifies that all required working folders of the Smarty
+installation can be accessed. It does output a corresponding protocol.
+
+
+ testInstall();
+ ?>
+
+
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-functions/api-unregister-cacheresource.md b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-functions/api-unregister-cacheresource.md
new file mode 100644
index 000000000..d097519db
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-functions/api-unregister-cacheresource.md
@@ -0,0 +1,28 @@
+unregisterCacheResource()
+
+dynamically unregister a CacheResource plugin
+
+Description
+===========
+
+void
+
+unregisterCacheResource
+
+string
+
+name
+
+Pass in the `name` of the CacheResource.
+
+
+ unregisterCacheResource('mysql');
+
+ ?>
+
+
+
+See also [`registerCacheResource()`](#api.register.cacheresource) and
+the [Custom CacheResource Implementation](#caching.custom) section.
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-functions/api-unregister-filter.md b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-functions/api-unregister-filter.md
new file mode 100644
index 000000000..44020eb40
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-functions/api-unregister-filter.md
@@ -0,0 +1,23 @@
+unregisterFilter()
+
+dynamically unregister a filter
+
+Description
+===========
+
+void
+
+unregisterFilter
+
+string
+
+type
+
+string\|array
+
+callback
+
+Use this to dynamically unregister filters. It uses the following
+parameters:
+
+See also [`registerFilter()`](#api.register.filter).
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-functions/api-unregister-object.md b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-functions/api-unregister-object.md
new file mode 100644
index 000000000..c012581f9
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-functions/api-unregister-object.md
@@ -0,0 +1,17 @@
+unregisterObject()
+
+dynamically unregister an object
+
+Description
+===========
+
+void
+
+unregisterObject
+
+string
+
+object\_name
+
+See also [`registerObject()`](#api.register.object) and [objects
+section](#advanced.features.objects)
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-functions/api-unregister-plugin.md b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-functions/api-unregister-plugin.md
new file mode 100644
index 000000000..c692ac60f
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-functions/api-unregister-plugin.md
@@ -0,0 +1,36 @@
+unregisterPlugin
+
+dynamically unregister plugins
+
+Description
+===========
+
+void
+
+unregisterPlugin
+
+string
+
+type
+
+string
+
+name
+
+This method unregisters plugins which previously have been registered by
+[registerPlugin()](#api.register.plugin), It uses the following
+parameters:
+
+
+
+
+ unregisterPlugin("function","date_now");
+
+ ?>
+
+
+
+See also [`registerPlugin()`](#api.register.plugin).
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-functions/api-unregister-resource.md b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-functions/api-unregister-resource.md
new file mode 100644
index 000000000..1a6067bd2
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-functions/api-unregister-resource.md
@@ -0,0 +1,28 @@
+unregisterResource()
+
+dynamically unregister a resource plugin
+
+Description
+===========
+
+void
+
+unregisterResource
+
+string
+
+name
+
+Pass in the `name` of the resource.
+
+
+ unregisterResource('db');
+
+ ?>
+
+
+
+See also [`registerResource()`](#api.register.resource) and [template
+resources](#resources)
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-variables.md b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-variables.md
new file mode 100644
index 000000000..ee9c07611
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-variables.md
@@ -0,0 +1,63 @@
+Smarty Class Variables {#api.variables}
+======================
+
+These are all of the available Smarty class variables. You can access
+them directly, or use the corresponding setter/getter methods.
+
+- [$allow_php_templates](./api-variables/variable-allow-php-templates.md)
+- [$auto_literal](./api-variables/variable-auto-literal.md)
+- [$autoload_filters](./api-variables/variable-autoload-filters.md)
+- [$cache_dir](./api-variables/variable-cache-dir.md)
+- [$cache_id](./api-variables/variable-cache-id.md)
+- [$cache_lifetime](./api-variables/variable-cache-lifetime.md)
+- [$cache_locking](./api-variables/variable-cache-locking.md)
+- [$cache_modified_check](./api-variables/variable-cache-modified-check.md)
+- [$caching](./api-variables/variable-caching.md)
+- [$caching_type](./api-variables/variable-caching-type.md)
+- [$compile_check](./api-variables/variable-compile-check.md)
+- [$compile_dir](./api-variables/variable-compile-dir.md)
+- [$compile_id](./api-variables/variable-compile-id.md)
+- [$compile_locking](./api-variables/variable-compile-locking.md)
+- [$compiler_class](./api-variables/variable-compiler-class.md)
+- [$config_booleanize](./api-variables/variable-config-booleanize.md)
+- [$config_dir](./api-variables/variable-config-dir.md)
+- [$config_overwrite](./api-variables/variable-config-overwrite.md)
+- [$config_read_hidden](./api-variables/variable-config-read-hidden.md)
+- [$debug_tpl](./api-variables/variable-debug-template.md)
+- [$debugging](./api-variables/variable-debugging.md)
+- [$debugging_ctrl](./api-variables/variable-debugging-ctrl.md)
+- [$default_config_type](./api-variables/variable-default-config-type.md)
+- [$default_modifiers](./api-variables/variable-default-modifiers.md)
+- [$default_resource_type](./api-variables/variable-default-resource-type.md)
+- [$default_config_handler_func](./api-variables/variable-default-config-handler-func.md)
+- [$default_template_handler_func](./api-variables/variable-default-template-handler-func.md)
+- [$direct_access_security](./api-variables/variable-direct-access-security.md)
+- [$error_reporting](./api-variables/variable-error-reporting.md)
+- [$escape_html](./api-variables/variable-escape-html.md)
+- [$force_cache](./api-variables/variable-force-cache.md)
+- [$force_compile](./api-variables/variable-force-compile.md)
+- [$left_delimiter](./api-variables/variable-left-delimiter.md)
+- [$locking_timeout](./api-variables/variable-locking-timeout.md)
+- [$merge_compiled_includes](./api-variables/variable-merge-compiled-includes.md)
+- [$plugins_dir](./api-variables/variable-plugins-dir.md)
+- [$right_delimiter](./api-variables/variable-right-delimiter.md)
+- [$smarty_debug_id](./api-variables/variable-smarty-debug-id.md)
+- [$template_dir](./api-variables/variable-template-dir.md)
+- [$trusted_dir](./api-variables/variable-trusted-dir.md)
+- [$use_include_path](./api-variables/variable-use-include-path.md)
+- [$use_sub_dirs](./api-variables/variable-use-sub-dirs.md)
+
+> **Note**
+>
+> All class variables have magic setter/getter methods available.
+> setter/getter methods are camelCaseFormat, unlike the variable itself.
+> So for example, you can set and get the \$smarty-\>template\_dir
+> variable with \$smarty-\>setTemplateDir(\$dir) and \$dir =
+> \$smarty-\>getTemplateDir() respectively.
+
+> **Note**
+>
+> See
+> [`Changing settings by template`](./advanced-features/advanced-features-template-settings.md)
+> section for how to change Smarty class variables for individual
+> templates.
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-variables/variable-allow-php-templates.md b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-variables/variable-allow-php-templates.md
new file mode 100644
index 000000000..e15520e2d
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-variables/variable-allow-php-templates.md
@@ -0,0 +1,18 @@
+\$allow\_php\_templates {#variable.allow.php.templates}
+=======================
+
+By default the PHP template file resource is disabled. Setting
+`$allow_php_templates` to TRUE will enable PHP template files.
+
+::: {.informalexample}
+
+ allow_php_templates = true;
+ ?>
+
+
+:::
+
+> **Note**
+>
+> The PHP template file resource is an undocumented deprecated feature.
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-variables/variable-auto-literal.md b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-variables/variable-auto-literal.md
new file mode 100644
index 000000000..8d0685025
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-variables/variable-auto-literal.md
@@ -0,0 +1,17 @@
+\$auto\_literal {#variable.auto.literal}
+===============
+
+The Smarty delimiter tags { and } will be ignored so long as they are
+surrounded by white space. This behavior can be disabled by setting
+auto\_literal to false.
+
+::: {.informalexample}
+
+ auto_literal = false;
+ ?>
+
+
+:::
+
+See also [Escaping Smarty parsing](#language.escaping),
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-variables/variable-autoload-filters.md b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-variables/variable-autoload-filters.md
new file mode 100644
index 000000000..8a300b065
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-variables/variable-autoload-filters.md
@@ -0,0 +1,21 @@
+\$autoload\_filters {#variable.autoload.filters}
+===================
+
+If there are some filters that you wish to load on every template
+invocation, you can specify them using this variable and Smarty will
+automatically load them for you. The variable is an associative array
+where keys are filter types and values are arrays of the filter names.
+For example:
+
+::: {.informalexample}
+
+ autoload_filters = array('pre' => array('trim', 'stamp'),
+ 'output' => array('convert'));
+ ?>
+
+
+:::
+
+See also [`registerFilter()`](#api.register.filter) and
+[`loadFilter()`](#api.load.filter)
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-variables/variable-cache-dir.md b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-variables/variable-cache-dir.md
new file mode 100644
index 000000000..6cb2b5559
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-variables/variable-cache-dir.md
@@ -0,0 +1,35 @@
+\$cache\_dir {#variable.cache.dir}
+============
+
+This is the name of the directory where template caches are stored. By
+default this is `./cache`, meaning that Smarty will look for the
+`cache/` directory in the same directory as the executing php script.
+**This directory must be writeable by the web server**, [see
+install](#installing.smarty.basic) for more info.
+
+You can also use your own [custom cache implementation](#caching.custom)
+to control cache files, which will ignore this setting. See also
+[`$use_sub_dirs`](#variable.use.sub.dirs).
+
+> **Note**
+>
+> This setting must be either a relative or absolute path. include\_path
+> is not used for writing files.
+
+> **Note**
+>
+> It is not recommended to put this directory under the web server
+> document root.
+
+> **Note**
+>
+> As of Smarty 3.1 the attribute \$cache\_dir is no longer accessible
+> directly. Use [`getCacheDir()`](#api.get.cache.dir) and
+> [`setCacheDir()`](#api.set.cache.dir) instead.
+
+See also [`getCacheDir()`](#api.get.cache.dir),
+[`setCacheDir()`](#api.set.cache.dir), [`$caching`](#variable.caching),
+[`$use_sub_dirs`](#variable.use.sub.dirs),
+[`$cache_lifetime`](#variable.cache.lifetime),
+[`$cache_modified_check`](#variable.cache.modified.check) and the
+[caching section](#caching).
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-variables/variable-cache-id.md b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-variables/variable-cache-id.md
new file mode 100644
index 000000000..c27fae921
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-variables/variable-cache-id.md
@@ -0,0 +1,11 @@
+\$cache\_id {#variable.cache.id}
+===========
+
+Persistent cache\_id identifier. As an alternative to passing the same
+`$cache_id` to each and every function call, you can set this
+`$cache_id` and it will be used implicitly thereafter.
+
+With a `$cache_id` you can have multiple cache files for a single call
+to [`display()`](#api.display) or [`fetch()`](#api.fetch) depending for
+example from different content of the same template. See the [caching
+section](#caching) for more information.
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-variables/variable-cache-lifetime.md b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-variables/variable-cache-lifetime.md
new file mode 100644
index 000000000..c9624b556
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-variables/variable-cache-lifetime.md
@@ -0,0 +1,30 @@
+\$cache\_lifetime {#variable.cache.lifetime}
+=================
+
+This is the length of time in seconds that a template cache is valid.
+Once this time has expired, the cache will be regenerated.
+
+- `$caching` must be turned on (either
+ Smarty::CACHING\_LIFETIME\_CURRENT or
+ Smarty::CACHING\_LIFETIME\_SAVED) for `$cache_lifetime` to have any
+ purpose.
+
+- A `$cache_lifetime` value of -1 will force the cache to never
+ expire.
+
+- A value of 0 will cause the cache to always regenerate (good for
+ testing only, to disable caching a more efficient method is to set
+ [`$caching`](#variable.caching) = Smarty::CACHING\_OFF).
+
+- If you want to give certain templates their own cache lifetime, you
+ could do this by setting [`$caching`](#variable.caching) =
+ Smarty::CACHING\_LIFETIME\_SAVED, then set `$cache_lifetime` to a
+ unique value just before calling [`display()`](#api.display) or
+ [`fetch()`](#api.fetch).
+
+If [`$force_compile`](#variable.force.compile) is enabled, the cache
+files will be regenerated every time, effectively disabling caching. You
+can clear all the cache files with the
+[`clear_all_cache()`](#api.clear.all.cache) function, or individual
+cache files (or groups) with the [`clear_cache()`](#api.clear.cache)
+function.
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-variables/variable-cache-locking.md b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-variables/variable-cache-locking.md
new file mode 100644
index 000000000..6dca30c7b
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-variables/variable-cache-locking.md
@@ -0,0 +1,11 @@
+\$cache\_locking {#variable.cache.locking}
+================
+
+Cache locking avoids concurrent cache generation. This means resource
+intensive pages can be generated only once, even if they\'ve been
+requested multiple times in the same moment.
+
+Cache locking is disabled by default. To enable it set `$cache_locking`
+to TRUE.
+
+See also [`$locking_timeout`](#variable.locking.timeout)
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-variables/variable-cache-modified-check.md b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-variables/variable-cache-modified-check.md
new file mode 100644
index 000000000..05e00bb91
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-variables/variable-cache-modified-check.md
@@ -0,0 +1,12 @@
+\$cache\_modified\_check {#variable.cache.modified.check}
+========================
+
+If set to TRUE, Smarty will respect the If-Modified-Since header sent
+from the client. If the cached file timestamp has not changed since the
+last visit, then a `'304: Not Modified'` header will be sent instead of
+the content. This works only on cached content without
+[`{insert}`](#language.function.insert) tags.
+
+See also [`$caching`](#variable.caching),
+[`$cache_lifetime`](#variable.cache.lifetime), and the [caching
+section](#caching).
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-variables/variable-caching-type.md b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-variables/variable-caching-type.md
new file mode 100644
index 000000000..22b88cf6a
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-variables/variable-caching-type.md
@@ -0,0 +1,9 @@
+\$caching\_type {#variable.caching.type}
+===============
+
+This property specifies the name of the caching handler to use. It
+defaults to `file`, enabling the internal filesystem based cache
+handler.
+
+See [Custom Cache Implementation](#caching.custom) for pointers on
+setting up your own cache handler.
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-variables/variable-caching.md b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-variables/variable-caching.md
new file mode 100644
index 000000000..9377e3b6d
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-variables/variable-caching.md
@@ -0,0 +1,38 @@
+\$caching {#variable.caching}
+=========
+
+This tells Smarty whether or not to cache the output of the templates to
+the [`$cache_dir`](#variable.cache.dir). By default this is set to the
+constant Smarty::CACHING\_OFF. If your templates consistently generate
+the same content, it is advisable to turn on `$caching`, as this may
+result in significant performance gains.
+
+You can also have [multiple](#caching.multiple.caches) caches for the
+same template.
+
+- A constant value of Smarty::CACHING\_LIFETIME\_CURRENT or
+ Smarty::CACHING\_LIFETIME\_SAVED enables caching.
+
+- A value of Smarty::CACHING\_LIFETIME\_CURRENT tells Smarty to use
+ the current [`$cache_lifetime`](#variable.cache.lifetime) variable
+ to determine if the cache has expired.
+
+- A value of Smarty::CACHING\_LIFETIME\_SAVED tells Smarty to use the
+ [`$cache_lifetime`](#variable.cache.lifetime) value at the time the
+ cache was generated. This way you can set the
+ [`$cache_lifetime`](#variable.cache.lifetime) just before
+ [fetching](#api.fetch) the template to have granular control over
+ when that particular cache expires. See also
+ [`isCached()`](#api.is.cached).
+
+- If [`$compile_check`](#variable.compile.check) is enabled, the
+ cached content will be regenerated if any of the templates or config
+ files that are part of this cache are changed.
+
+- If [`$force_compile`](#variable.force.compile) is enabled, the
+ cached content will always be regenerated.
+
+See also [`$cache_dir`](#variable.cache.dir),
+[`$cache_lifetime`](#variable.cache.lifetime),
+[`$cache_modified_check`](#variable.cache.modified.check),
+[`is_cached()`](#api.is.cached) and the [caching section](#caching).
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-variables/variable-compile-check.md b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-variables/variable-compile-check.md
new file mode 100644
index 000000000..075e7f17a
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-variables/variable-compile-check.md
@@ -0,0 +1,30 @@
+\$compile\_check {#variable.compile.check}
+================
+
+Upon each invocation of the PHP application, Smarty tests to see if the
+current template has changed (different timestamp) since the last time
+it was compiled. If it has changed, it recompiles that template. If the
+template has yet not been compiled at all, it will compile regardless of
+this setting. By default this variable is set to TRUE.
+
+Once an application is put into production (ie the templates won\'t be
+changing), the compile check step is no longer needed. Be sure to set
+`$compile_check` to FALSE for maximum performance. Note that if you
+change this to FALSE and a template file is changed, you will \*not\*
+see the change since the template will not get recompiled.
+
+Note that up to Smarty 4.x, Smarty will check for the existence of
+the source template even if `$compile_check` is disabled.
+
+If [`$caching`](#variable.caching) is enabled and `$compile_check` is
+enabled, then the cache files will get regenerated if an involved
+template file or config file was updated.
+
+As of Smarty 3.1 `$compile_check` can be set to the value
+`Smarty::COMPILECHECK_CACHEMISS`. This enables Smarty to revalidate the
+compiled template, once a cache file is regenerated. So if there was a
+cached template, but it\'s expired, Smarty will run a single
+compile\_check before regenerating the cache.
+
+See [`$force_compile`](#variable.force.compile) and
+[`clearCompiledTemplate()`](#api.clear.compiled.tpl).
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-variables/variable-compile-dir.md b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-variables/variable-compile-dir.md
new file mode 100644
index 000000000..c18c9acba
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-variables/variable-compile-dir.md
@@ -0,0 +1,29 @@
+\$compile\_dir {#variable.compile.dir}
+==============
+
+This is the name of the directory where compiled templates are located.
+By default this is `./templates_c`, meaning that Smarty will look for
+the `templates_c/` directory in the same directory as the executing php
+script. **This directory must be writeable by the web server**, [see
+install](#installing.smarty.basic) for more info.
+
+> **Note**
+>
+> This setting must be either a relative or absolute path. include\_path
+> is not used for writing files.
+
+> **Note**
+>
+> It is not recommended to put this directory under the web server
+> document root.
+
+> **Note**
+>
+> As of Smarty 3.1 the attribute \$compile\_dir is no longer accessible
+> directly. Use [`getCompileDir()`](#api.get.compile.dir) and
+> [`setCompileDir()`](#api.set.compile.dir) instead.
+
+See also [`getCompileDir()`](#api.get.compile.dir),
+[`setCompileDir()`](#api.set.compile.dir),
+[`$compile_id`](#variable.compile.id) and
+[`$use_sub_dirs`](#variable.use.sub.dirs).
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-variables/variable-compile-id.md b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-variables/variable-compile-id.md
new file mode 100644
index 000000000..ca2b08fb5
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-variables/variable-compile-id.md
@@ -0,0 +1,44 @@
+\$compile\_id {#variable.compile.id}
+=============
+
+Persistent compile identifier. As an alternative to passing the same
+`$compile_id` to each and every function call, you can set this
+`$compile_id` and it will be used implicitly thereafter.
+
+If you use the same template with different [pre- and/or
+post-filters](#plugins.prefilters.postfilters) you must use a unique
+`$compile_id` to keep the compiled template files separated.
+
+For example a [prefilter](#plugins.prefilters.postfilters) that
+localizes your templates (that is: translates language dependent parts)
+at compile time, then you could use the current language as
+`$compile_id` and you will get a set of compiled templates for each
+language you use.
+
+
+ compile_id = 'en';
+ ?>
+
+
+
+Another application would be to use the same compile directory across
+multiple domains / multiple virtual hosts.
+
+
+ compile_id = $_SERVER['SERVER_NAME'];
+ $smarty->compile_dir = '/path/to/shared_compile_dir';
+
+ ?>
+
+
+
+> **Note**
+>
+> In Smarty 3 a `$compile_id` is no longer required to keep templates
+> with same name in different [`$template_dir`
+> folders](#variable.template.dir) separated. The [`$template_dir` file
+> path](#variable.template.dir) is encoded in the file name of compiled
+> and cached template files.
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-variables/variable-compile-locking.md b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-variables/variable-compile-locking.md
new file mode 100644
index 000000000..ff7a66f3a
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-variables/variable-compile-locking.md
@@ -0,0 +1,7 @@
+\$compile\_locking {#variable.compile.locking}
+==================
+
+Compile locking avoids concurrent compilation of the same template.
+
+Compile locking is enabled by default. To disable it set
+`$compile_locking` to FALSE.
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-variables/variable-compiler-class.md b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-variables/variable-compiler-class.md
new file mode 100644
index 000000000..32ea982d6
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-variables/variable-compiler-class.md
@@ -0,0 +1,6 @@
+\$compiler\_class {#variable.compiler.class}
+=================
+
+Specifies the name of the compiler class that Smarty will use to compile
+the templates. The default is \'Smarty\_Compiler\'. For advanced users
+only.
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-variables/variable-config-booleanize.md b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-variables/variable-config-booleanize.md
new file mode 100644
index 000000000..4ba555f84
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-variables/variable-config-booleanize.md
@@ -0,0 +1,8 @@
+\$config\_booleanize {#variable.config.booleanize}
+====================
+
+If set to TRUE, [config files](#config.files) values of `on/true/yes`
+and `off/false/no` get converted to boolean values automatically. This
+way you can use the values in the template like so:
+`{if #foobar#}...{/if}`. If foobar was `on`, `true` or `yes`, the `{if}`
+statement will execute. Defaults to TRUE.
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-variables/variable-config-dir.md b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-variables/variable-config-dir.md
new file mode 100644
index 000000000..d73f3274f
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-variables/variable-config-dir.md
@@ -0,0 +1,23 @@
+\$config\_dir {#variable.config.dir}
+=============
+
+This is the directory used to store [config files](#config.files) used
+in the templates. Default is `./configs`, meaning that Smarty will look
+for the `configs/` directory in the same directory as the executing php
+script.
+
+> **Note**
+>
+> It is not recommended to put this directory under the web server
+> document root.
+
+> **Note**
+>
+> As of Smarty 3.1 the attribute \$config\_dir is no longer accessible
+> directly. Use [`getConfigDir()`](#api.get.config.dir),
+> [`setConfigDir()`](#api.set.config.dir) and
+> [`addConfigDir()`](#api.add.config.dir) instead.
+
+See also [`getConfigDir()`](#api.get.config.dir),
+[`setConfigDir()`](#api.set.config.dir) and
+[`addConfigDir()`](#api.add.config.dir).
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-variables/variable-config-overwrite.md b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-variables/variable-config-overwrite.md
new file mode 100644
index 000000000..0b8968374
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-variables/variable-config-overwrite.md
@@ -0,0 +1,40 @@
+\$config\_overwrite {#variable.config.overwrite}
+===================
+
+If set to TRUE, the default then variables read in from [config
+files](#config.files) will overwrite each other. Otherwise, the
+variables will be pushed onto an array. This is helpful if you want to
+store arrays of data in config files, just list each element multiple
+times.
+
+This examples uses [`{cycle}`](#language.function.cycle) to output a
+table with alternating red/green/blue row colors with
+`$config_overwrite` = FALSE.
+
+The config file.
+
+
+ # row colors
+ rowColors = #FF0000
+ rowColors = #00FF00
+ rowColors = #0000FF
+
+
+
+The template with a [`{section}`](#language.function.section) loop.
+
+
+
+ {section name=r loop=$rows}
+
+ ....etc....
+
+ {/section}
+
+
+
+
+See also [`{config_load}`](#language.function.config.load),
+[`getConfigVars()`](#api.get.config.vars),
+[`clearConfig()`](#api.clear.config), [`configLoad()`](#api.config.load)
+and the [config files section](#config.files).
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-variables/variable-config-read-hidden.md b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-variables/variable-config-read-hidden.md
new file mode 100644
index 000000000..19cde68bd
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-variables/variable-config-read-hidden.md
@@ -0,0 +1,8 @@
+\$config\_read\_hidden {#variable.config.read.hidden}
+======================
+
+If set to TRUE, hidden sections ie section names beginning with a
+period(.) in [config files](#config.files) can be read from templates.
+Typically you would leave this FALSE, that way you can store sensitive
+data in the config files such as database parameters and not worry about
+the template loading them. FALSE by default.
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-variables/variable-debug-template.md b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-variables/variable-debug-template.md
new file mode 100644
index 000000000..faec0e171
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-variables/variable-debug-template.md
@@ -0,0 +1,9 @@
+\$debug\_tpl {#variable.debug_template}
+============
+
+This is the name of the template file used for the debugging console. By
+default, it is named `debug.tpl` and is located in the
+[`SMARTY_DIR`](#constant.smarty.dir).
+
+See also [`$debugging`](#variable.debugging) and the [debugging
+console](#chapter.debugging.console) section.
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-variables/variable-debugging-ctrl.md b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-variables/variable-debugging-ctrl.md
new file mode 100644
index 000000000..a9355c0a2
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-variables/variable-debugging-ctrl.md
@@ -0,0 +1,20 @@
+\$debugging\_ctrl {#variable.debugging.ctrl}
+=================
+
+This allows alternate ways to enable debugging. `NONE` means no
+alternate methods are allowed. `URL` means when the keyword
+`SMARTY_DEBUG` is found in the `QUERY_STRING`, debugging is enabled for
+that invocation of the script. If [`$debugging`](#variable.debugging) is
+TRUE, this value is ignored.
+
+
+ debugging = false; // the default
+ $smarty->debugging_ctrl = ($_SERVER['SERVER_NAME'] == 'localhost') ? 'URL' : 'NONE';
+ ?>
+
+See also [debugging console](#chapter.debugging.console) section,
+[`$debugging`](#variable.debugging) and
+[`$smarty_debug_id`](#variable.smarty.debug.id).
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-variables/variable-debugging.md b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-variables/variable-debugging.md
new file mode 100644
index 000000000..4473e0c8d
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-variables/variable-debugging.md
@@ -0,0 +1,17 @@
+\$debugging {#variable.debugging}
+===========
+
+This enables the [debugging console](#chapter.debugging.console). The
+console is a javascript popup window that informs you of the
+[included](#language.function.include) templates, variables
+[assigned](#api.assign) from php and [config file
+variables](#language.config.variables) for the current script. It does
+not show variables assigned within a template with the
+[`{assign}`](#language.function.assign) function.
+
+The console can also be enabled from the url with
+[`$debugging_ctrl`](#variable.debugging.ctrl).
+
+See also [`{debug}`](#language.function.debug),
+[`$debug_tpl`](#variable.debug_template), and
+[`$debugging_ctrl`](#variable.debugging.ctrl).
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-variables/variable-default-config-handler-func.md b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-variables/variable-default-config-handler-func.md
new file mode 100644
index 000000000..0d6ec5e0d
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-variables/variable-default-config-handler-func.md
@@ -0,0 +1,50 @@
+\$default\_config\_handler\_func {#variable.default.config.handler.func}
+================================
+
+This function is called when a config file cannot be obtained from its
+resource.
+
+> **Note**
+>
+> The default handler is currently only invoked for file resources. It
+> is not triggered when the resource itself cannot be found, in which
+> case a SmartyException is thrown.
+
+
+ default_config_handler_func = 'my_default_config_handler_func';
+
+ /**
+ * Default Config Handler
+ *
+ * called when Smarty's file: resource is unable to load a requested file
+ *
+ * @param string $type resource type (e.g. "file", "string", "eval", "resource")
+ * @param string $name resource name (e.g. "foo/bar.tpl")
+ * @param string &$content config's content
+ * @param integer &$modified config's modification time
+ * @param Smarty $smarty Smarty instance
+ * @return string|boolean path to file or boolean true if $content and $modified
+ * have been filled, boolean false if no default config
+ * could be loaded
+ */
+ function my_default_config_handler_func($type, $name, &$content, &$modified, Smarty $smarty) {
+ if (false) {
+ // return corrected filepath
+ return "/tmp/some/foobar.tpl";
+ } elseif (false) {
+ // return a config directly
+ $content = 'someVar = "the config source"';
+ $modified = time();
+ return true;
+ } else {
+ // tell smarty that we failed
+ return false;
+ }
+ }
+
+ ?>
+
+
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-variables/variable-default-config-type.md b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-variables/variable-default-config-type.md
new file mode 100644
index 000000000..60bf9f1ea
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-variables/variable-default-config-type.md
@@ -0,0 +1,7 @@
+\$default\_config\_type {#variable.default.config.type}
+=======================
+
+This tells smarty what resource type to use for config files. The
+default value is `file`, meaning that `$smarty->configLoad('test.conf')`
+and `$smarty->configLoad('file:test.conf')` are identical in meaning.
+See the [resource](#resources) chapter for more details.
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-variables/variable-default-modifiers.md b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-variables/variable-default-modifiers.md
new file mode 100644
index 000000000..c6b73eb12
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-variables/variable-default-modifiers.md
@@ -0,0 +1,8 @@
+\$default\_modifiers {#variable.default.modifiers}
+====================
+
+This is an array of modifiers to implicitly apply to every variable in a
+template. For example, to HTML-escape every variable by default, use
+`array('escape:"htmlall"')`. To make a variable exempt from default
+modifiers, add the \'nofilter\' attribute to the output tag such as
+`{$var nofilter}`.
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-variables/variable-default-resource-type.md b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-variables/variable-default-resource-type.md
new file mode 100644
index 000000000..e8a803178
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-variables/variable-default-resource-type.md
@@ -0,0 +1,7 @@
+\$default\_resource\_type {#variable.default.resource.type}
+=========================
+
+This tells smarty what resource type to use implicitly. The default
+value is `file`, meaning that `$smarty->display('index.tpl')` and
+`$smarty->display('file:index.tpl')` are identical in meaning. See the
+[resource](#resources) chapter for more details.
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-variables/variable-default-template-handler-func.md b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-variables/variable-default-template-handler-func.md
new file mode 100644
index 000000000..d8fcbb1ad
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-variables/variable-default-template-handler-func.md
@@ -0,0 +1,50 @@
+\$default\_template\_handler\_func {#variable.default.template.handler.func}
+==================================
+
+This function is called when a template cannot be obtained from its
+resource.
+
+> **Note**
+>
+> The default handler is currently only invoked for file resources. It
+> is not triggered when the resource itself cannot be found, in which
+> case a SmartyException is thrown.
+
+
+ default_template_handler_func = 'my_default_template_handler_func';
+
+ /**
+ * Default Template Handler
+ *
+ * called when Smarty's file: resource is unable to load a requested file
+ *
+ * @param string $type resource type (e.g. "file", "string", "eval", "resource")
+ * @param string $name resource name (e.g. "foo/bar.tpl")
+ * @param string &$content template's content
+ * @param integer &$modified template's modification time
+ * @param Smarty $smarty Smarty instance
+ * @return string|boolean path to file or boolean true if $content and $modified
+ * have been filled, boolean false if no default template
+ * could be loaded
+ */
+ function my_default_template_handler_func($type, $name, &$content, &$modified, Smarty $smarty) {
+ if (false) {
+ // return corrected filepath
+ return "/tmp/some/foobar.tpl";
+ } elseif (false) {
+ // return a template directly
+ $content = "the template source";
+ $modified = time();
+ return true;
+ } else {
+ // tell smarty that we failed
+ return false;
+ }
+ }
+
+ ?>
+
+
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-variables/variable-direct-access-security.md b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-variables/variable-direct-access-security.md
new file mode 100644
index 000000000..f471f5de0
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-variables/variable-direct-access-security.md
@@ -0,0 +1,13 @@
+\$direct\_access\_security {#variable.direct.access.security}
+==========================
+
+Direct access security inhibits direct browser access to compiled or
+cached template files.
+
+Direct access security is enabled by default. To disable it set
+`$direct_access_security` to FALSE.
+
+> **Note**
+>
+> This is a compile time option. If you change the setting you must make
+> sure that the templates get recompiled.
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-variables/variable-error-reporting.md b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-variables/variable-error-reporting.md
new file mode 100644
index 000000000..c0aa9cedb
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-variables/variable-error-reporting.md
@@ -0,0 +1,17 @@
+\$error\_reporting {#variable.error.reporting}
+==================
+
+When this value is set to a non-null-value it\'s value is used as php\'s
+[`error_reporting`](https://www.php.net/error_reporting) level inside of
+[`display()`](#api.display) and [`fetch()`](#api.fetch).
+
+Smarty 3.1.2 introduced the
+[`muteExpectedErrors()`](#api.mute.expected.errors) function. Calling
+`Smarty::muteExpectedErrors();` after setting up custom error handling
+will ensure that warnings and notices (deliberately) produced by Smarty
+will not be passed to other custom error handlers. If your error logs
+are filling up with warnings regarding `filemtime()` or `unlink()`
+calls, please enable Smarty\'s error muting.
+
+See also [debugging](#chapter.debugging.console) and
+[troubleshooting](#troubleshooting).
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-variables/variable-escape-html.md b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-variables/variable-escape-html.md
new file mode 100644
index 000000000..87c7b9672
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-variables/variable-escape-html.md
@@ -0,0 +1,21 @@
+\$escape\_html {#variable.escape.html}
+==============
+
+Setting `$escape_html` to TRUE will escape all template variable output
+by wrapping it in
+`htmlspecialchars({$output}, ENT_QUOTES, $char_set);`,
+which is the same as `{$variable|escape:"html"}`.
+
+Template designers can choose to selectively disable this feature by
+adding the `nofilter` flag: `{$variable nofilter}`.
+
+Modifiers and Filters are run in the following order: modifier,
+default\_modifier, \$escape\_html, registered variable filters,
+autoloaded variable filters, template instance\'s variable filters.
+Everything except the individual modifier can be disabled with the
+`nofilter` flag.
+
+> **Note**
+>
+> This is a compile time option. If you change the setting you must make
+> sure that the templates get recompiled.
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-variables/variable-force-cache.md b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-variables/variable-force-cache.md
new file mode 100644
index 000000000..de0c0c15a
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-variables/variable-force-cache.md
@@ -0,0 +1,6 @@
+\$force\_cache {#variable.force.cache}
+==============
+
+This forces Smarty to (re)cache templates on every invocation. It does
+not override the [`$caching`](#variable.caching) level, but merely
+pretends the template has never been cached before.
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-variables/variable-force-compile.md b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-variables/variable-force-compile.md
new file mode 100644
index 000000000..73f1e792d
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-variables/variable-force-compile.md
@@ -0,0 +1,9 @@
+\$force\_compile {#variable.force.compile}
+================
+
+This forces Smarty to (re)compile templates on every invocation. This
+setting overrides [`$compile_check`](#variable.compile.check). By
+default this is FALSE. This is handy for development and
+[debugging](#chapter.debugging.console). It should never be used in a
+production environment. If [`$caching`](#variable.caching) is enabled,
+the cache file(s) will be regenerated every time.
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-variables/variable-left-delimiter.md b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-variables/variable-left-delimiter.md
new file mode 100644
index 000000000..bcc13f0e5
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-variables/variable-left-delimiter.md
@@ -0,0 +1,8 @@
+\$left\_delimiter {#variable.left.delimiter}
+=================
+
+This is the left delimiter used by the template language. Default is
+`{`.
+
+See also [`$right_delimiter`](#variable.right.delimiter) and [escaping
+smarty parsing](#language.escaping) .
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-variables/variable-locking-timeout.md b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-variables/variable-locking-timeout.md
new file mode 100644
index 000000000..82fd0568a
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-variables/variable-locking-timeout.md
@@ -0,0 +1,7 @@
+\$locking\_timeout {#variable.locking.timeout}
+==================
+
+This is maximum time in seconds a cache lock is valid to avoid dead
+locks. The default value is 10 seconds.
+
+See also [`$cache_locking`](#variable.cache.locking)
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-variables/variable-merge-compiled-includes.md b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-variables/variable-merge-compiled-includes.md
new file mode 100644
index 000000000..8220c442b
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-variables/variable-merge-compiled-includes.md
@@ -0,0 +1,27 @@
+\$merge\_compiled\_includes {#variable.merge.compiled.includes}
+===========================
+
+By setting `$merge_compiled_includes` to TRUE Smarty will merge the
+compiled template code of subtemplates into the compiled code of the
+main template. This increases rendering speed of templates using a many
+different sub-templates.
+
+Individual sub-templates can be merged by setting the `inline` option
+flag within the `{include}` tag. `$merge_compiled_includes` does not
+have to be enabled for the `inline` merge.
+
+::: {.informalexample}
+
+ merge_compiled_includes = true;
+ ?>
+
+
+:::
+
+> **Note**
+>
+> This is a compile time option. If you change the setting you must make
+> sure that the templates get recompiled.
+
+See also [`{include}`](#language.function.include) tag
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-variables/variable-plugins-dir.md b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-variables/variable-plugins-dir.md
new file mode 100644
index 000000000..8a7cfcdb2
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-variables/variable-plugins-dir.md
@@ -0,0 +1,28 @@
+\$plugins\_dir {#variable.plugins.dir}
+==============
+
+This is the directory or directories where Smarty will look for the
+plugins that it needs. Default is `plugins/` under the
+[`SMARTY_DIR`](#constant.smarty.dir). If you supply a relative path,
+Smarty will first look under the [`SMARTY_DIR`](#constant.smarty.dir),
+then relative to the current working directory, then relative to the PHP
+include\_path. If `$plugins_dir` is an array of directories, Smarty will
+search for your plugin in each plugin directory **in the order they are
+given**.
+
+> **Note**
+>
+> For best performance, do not setup your `$plugins_dir` to have to use
+> the PHP include path. Use an absolute pathname, or a path relative to
+> `SMARTY_DIR` or the current working directory.
+
+> **Note**
+>
+> As of Smarty 3.1 the attribute \$plugins\_dir is no longer accessible
+> directly. Use [`getPluginsDir()`](#api.get.plugins.dir),
+> [`setPluginsDir()`](#api.set.plugins.dir) and
+> [`addPluginsDir()`](#api.add.plugins.dir) instead.
+
+See also [`getPluginsDir()`](#api.get.plugins.dir),
+[`setPluginsDir()`](#api.set.plugins.dir) and
+[`addPluginsDir()`](#api.add.plugins.dir).
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-variables/variable-right-delimiter.md b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-variables/variable-right-delimiter.md
new file mode 100644
index 000000000..14a9b568e
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-variables/variable-right-delimiter.md
@@ -0,0 +1,8 @@
+\$right\_delimiter {#variable.right.delimiter}
+==================
+
+This is the right delimiter used by the template language. Default is
+`}`.
+
+See also [`$left_delimiter`](#variable.left.delimiter) and [escaping
+smarty parsing](#language.escaping).
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-variables/variable-smarty-debug-id.md b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-variables/variable-smarty-debug-id.md
new file mode 100644
index 000000000..0733ed518
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-variables/variable-smarty-debug-id.md
@@ -0,0 +1,9 @@
+\$smarty\_debug\_id {#variable.smarty.debug.id}
+===================
+
+The value of `$smarty_debug_id` defines the URL keyword to enable
+debugging at browser level. The default value is `SMARTY_DEBUG`.
+
+See also [debugging console](#chapter.debugging.console) section,
+[`$debugging`](#variable.debugging) and
+[`$debugging_ctrl`](#variable.debugging.ctrl).
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-variables/variable-template-dir.md b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-variables/variable-template-dir.md
new file mode 100644
index 000000000..1db9c4139
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-variables/variable-template-dir.md
@@ -0,0 +1,36 @@
+\$template\_dir {#variable.template.dir}
+===============
+
+This is the name of the default template directory. If you do not supply
+a resource type when including files, they will be found here. By
+default this is `./templates`, meaning that Smarty will look for the
+`templates/` directory in the same directory as the executing php
+script. \$template\_dir can also be an array of directory paths: Smarty
+will traverse the directories and stop on the first matching template
+found.
+
+> **Note**
+>
+> It is not recommended to put this directory under the web server
+> document root.
+
+> **Note**
+>
+> If the directories known to `$template_dir` are relative to
+> directories known to the
+> [include\_path](https://www.php.net/ini.core.php#ini.include-path) you
+> need to activate the [`$use_include_path`](#variable.use.include.path)
+> option.
+
+> **Note**
+>
+> As of Smarty 3.1 the attribute \$template\_dir is no longer accessible
+> directly. Use [`getTemplateDir()`](#api.get.template.dir),
+> [`setTemplateDir()`](#api.set.template.dir) and
+> [`addTemplateDir()`](#api.add.template.dir) instead.
+
+See also [`Template Resources`](#resources),
+[`$use_include_path`](#variable.use.include.path),
+[`getTemplateDir()`](#api.get.template.dir),
+[`setTemplateDir()`](#api.set.template.dir) and
+[`addTemplateDir()`](#api.add.template.dir).
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-variables/variable-trusted-dir.md b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-variables/variable-trusted-dir.md
new file mode 100644
index 000000000..9720ae8a6
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-variables/variable-trusted-dir.md
@@ -0,0 +1,8 @@
+\$trusted\_dir {#variable.trusted.dir}
+==============
+
+`$trusted_dir` is only for use when security is enabled. This is an
+array of all directories that are considered trusted. Trusted
+directories are where you keep php scripts that are executed directly
+from the templates with
+[`{insert}`](#language.function.insert.php).
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-variables/variable-use-include-path.md b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-variables/variable-use-include-path.md
new file mode 100644
index 000000000..90f55f073
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-variables/variable-use-include-path.md
@@ -0,0 +1,49 @@
+\$use\_include\_path {#variable.use.include.path}
+====================
+
+This tells smarty to respect the
+[include\_path](https://www.php.net/ini.core.php#ini.include-path) within
+the [`File Template Resource`](#resources.file) handler and the plugin
+loader to resolve the directories known to
+[`$template_dir`](#variable.template.dir). The flag also makes the
+plugin loader check the include\_path for
+[`$plugins_dir`](#variable.plugins.dir).
+
+> **Note**
+>
+> You should not design your applications to rely on the include\_path,
+> as this may - depending on your implementation - slow down your system
+> (and Smarty) considerably.
+
+If use\_include\_path is enabled, file discovery for
+[`$template_dir`](#variable.template.dir) and
+[`$plugins_dir`](#variable.plugins.dir) work as follows.
+
+- For each element `$directory` in array (\$template\_dir or
+ \$plugins\_dir) do
+
+- Test if requested file is in `$directory` relative to the [current
+ working directory](https://www.php.net/function.getcwd.php). If file
+ found, return it.
+
+- For each `$path` in include\_path do
+
+- Test if requested file is in `$directory` relative to the `$path`
+ (possibly relative to the [current working
+ directory](https://www.php.net/function.getcwd.php)). If file found,
+ return it.
+
+- Try default\_handler or fail.
+
+This means that whenever a directory/file relative to the current
+working directory is encountered, it is preferred over anything
+potentially accessible through the include\_path.
+
+> **Note**
+>
+> Smarty does not filter elements of the include\_path. That means a
+> \".:\" within your include path will trigger the current working
+> directory lookup twice.
+
+See also [`Template Resources`](#resources) and
+[`$template_dir`](#variable.template.dir)
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-variables/variable-use-sub-dirs.md b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-variables/variable-use-sub-dirs.md
new file mode 100644
index 000000000..dcda3f2d6
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/api-variables/variable-use-sub-dirs.md
@@ -0,0 +1,31 @@
+\$use\_sub\_dirs {#variable.use.sub.dirs}
+================
+
+Smarty will create subdirectories under the [compiled
+templates](#variable.compile.dir) and [cache](#variable.cache.dir)
+directories if `$use_sub_dirs` is set to TRUE, default is FALSE. In an
+environment where there are potentially tens of thousands of files
+created, this may help the filesystem speed. On the other hand, some
+environments do not allow PHP processes to create directories, so this
+must be disabled which is the default.
+
+Sub directories are more efficient, so use them if you can.
+Theoretically you get much better performance on a filesystem with 10
+directories each having 100 files, than with 1 directory having 1000
+files. This was certainly the case with Solaris 7 (UFS)\... with newer
+filesystems such as ext3 and especially reiserfs, the difference is
+almost nothing.
+
+> **Note**
+>
+> - `$use_sub_dirs=true` doesn\'t work with
+> [safe\_mode=On](https://www.php.net/features.safe-mode), that\'s why
+> it\'s switchable and why it\'s off by default.
+>
+> - `$use_sub_dirs=true` on Windows can cause problems.
+>
+> - Safe\_mode is being deprecated in PHP6.
+>
+See also [`$compile_id`](#variable.compile.id),
+[`$cache_dir`](#variable.cache.dir), and
+[`$compile_dir`](#variable.compile.dir).
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/caching.md b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/caching.md
new file mode 100644
index 000000000..5656b71b5
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/caching.md
@@ -0,0 +1,24 @@
+Caching
+=======
+
+Caching is used to speed up a call to [`display()`](./api-functions/api-display.md) or
+[`fetch()`](./api-functions/api-fetch.md) by saving its output to a file. If a cached
+version of the call is available, that is displayed instead of
+regenerating the output. Caching can speed things up tremendously,
+especially templates with longer computation times. Since the output of
+[`display()`](./api-functions/api-display.md) or [`fetch()`](./api-functions/api-fetch.md) is cached, one
+cache file could conceivably be made up of several template files,
+config files, etc.
+
+Since templates are dynamic, it is important to be careful what you are
+caching and for how long. For instance, if you are displaying the front
+page of your website that does not change its content very often, it
+might work well to cache this page for an hour or more. On the other
+hand, if you are displaying a page with a timetable containing new
+information by the minute, it would not make sense to cache this page.
+
+## Table of contents
+- [Setting Up Caching](./caching/caching-setting-up.md)
+- [Multiple Caches Per Page](./caching/caching-multiple-caches.md)
+- [Controlling Cacheability of Output](./caching/caching-groups.md)
+- [Custom Cache Implementation](./caching/caching-custom.md)
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/caching/caching-cacheable.md b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/caching/caching-cacheable.md
new file mode 100644
index 000000000..ee9b60090
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/caching/caching-cacheable.md
@@ -0,0 +1,176 @@
+Controlling Cacheability of Output {#caching.cacheable}
+==================================
+
+If caching is enabled normally the whole final output of the page gets
+cached. However Smarty3 offers several options how to exclude sections
+of your output from caching.
+
+> **Note**
+>
+> Be sure any variables used within a non-cached section are also
+> assigned from PHP when the page is loaded from the cache.
+
+Cacheability of Template Section {#cacheability.sections}
+--------------------------------
+
+A larger section of your template can easily excluded from caching by
+using the [`{nocache}`](#language.function.nocache) and
+[`{/nocache}`](#language.function.nocache) tags.
+
+
+
+ Today's date is
+ {nocache}
+ {$smarty.now|date_format}
+ {/nocache}
+
+
+
+The above code will output the current date on a cached page.
+
+Cacheability of Tags {#cacheability.tags}
+--------------------
+
+Caching for an individual tag can be disabled by adding the \"nocache\"
+option flag to the tag.
+
+
+ Today's date is
+ {$smarty.now|date_format nocache}
+
+
+
+Cacheability of Variables {#cacheability.variables}
+-------------------------
+
+You can [`assign()`](#api.assign) variables as not cachable. Any tag
+which uses such variable will be automatically executed in nocache mode.
+
+> **Note**
+>
+> If a tag is executed in nocache mode you must make sure that all other
+> variables used by that tag are also assigned from PHP when the page is
+> loaded from the cache.
+
+> **Note**
+>
+> The nocache status of an assigned variable will effect the compiled
+> template code. If you change the status you must manually delete
+> existing compiled and cached template files to force a recompile.
+
+
+ // assign $foo as nocahe variable
+ $smarty->assign('foo',time(),true);
+
+
+ Dynamic time value is {$foo}
+
+
+
+Cacheability of Plugins {#cacheability.plugins}
+-----------------------
+
+The cacheability of plugins can be declared when registering them. The
+third parameter to [`registerPlugin()`](#api.register.plugin) is called
+`$cacheable` and defaults to TRUE.
+
+When registering a plugin with `$cacheable=false` the plugin is called
+everytime the page is displayed, even if the page comes from the cache.
+The plugin function behaves a little like an
+[`{insert}`](#plugins.inserts) function.
+
+> **Note**
+>
+> The `$cacheable` status will effect the compiled template code. If you
+> change the status you must manually delete existing compiled and
+> cached template files to force a recompile.
+
+In contrast to [`{insert}`](#plugins.inserts) the attributes to the
+plugins are not cached by default. They can be declared to be cached
+with the fourth parameter `$cache_attrs`. `$cache_attrs` is an array of
+attribute-names that should be cached, so the plugin-function get value
+as it was the time the page was written to cache everytime it is fetched
+from the cache.
+
+
+ setCaching(Smarty::CACHING_LIFETIME_CURRENT);
+
+ function remaining_seconds($params, $smarty) {
+ $remain = $params['endtime'] - time();
+ if($remain >= 0){
+ return $remain . ' second(s)';
+ }else{
+ return 'done';
+ }
+ }
+
+ $smarty->registerPlugin('function','remaining', 'remaining_seconds', false, array('endtime'));
+
+ if (!$smarty->isCached('index.tpl')) {
+ // fetch $obj from db and assign...
+ $smarty->assignByRef('obj', $obj);
+ }
+
+ $smarty->display('index.tpl');
+ ?>
+
+
+
+where `index.tpl` is:
+
+
+ Time Remaining: {remaining endtime=$obj->endtime}
+
+
+
+The number of seconds till the endtime of `$obj` is reached changes on
+each display of the page, even if the page is cached. Since the endtime
+attribute is cached the object only has to be pulled from the database
+when page is written to the cache but not on subsequent requests of the
+page.
+
+
+ index.php:
+
+ setCaching(Smarty::CACHING_LIFETIME_CURRENT);
+
+ function smarty_block_dynamic($param, $content, $smarty) {
+ return $content;
+ }
+ $smarty->registerPlugin('block','dynamic', 'smarty_block_dynamic', false);
+
+ $smarty->display('index.tpl');
+ ?>
+
+
+
+where `index.tpl` is:
+
+
+ Page created: {'0'|date_format:'%D %H:%M:%S'}
+
+ {dynamic}
+
+ Now is: {'0'|date_format:'%D %H:%M:%S'}
+
+ ... do other stuff ...
+
+ {/dynamic}
+
+
+
+When reloading the page you will notice that both dates differ. One is
+"dynamic" one is "static". You can do everything between
+`{dynamic}...{/dynamic}` and be sure it will not be cached like the rest
+of the page.
+
+> **Note**
+>
+> The above example shall just demonstrate how a dynamic block plugins
+> works. See
+> [`Cacheability of Template Section`](#cacheability.sections) on how to
+> disable caching of a template section by the built-in
+> [`{nocache}`](#language.function.nocache) and
+> [`{/nocache}`](#language.function.nocache) tags.
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/caching/caching-custom.md b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/caching/caching-custom.md
new file mode 100644
index 000000000..77d2ce7b3
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/caching/caching-custom.md
@@ -0,0 +1,296 @@
+Custom Cache Implementation {#caching.custom}
+===========================
+
+As an alternative to using the default file-based caching mechanism, you
+can specify a custom cache implementation that will be used to read,
+write and clear cached files.
+
+> **Note**
+>
+> In Smarty2 this used to be a callback function called
+> `$cache_handler_func`. Smarty3 replaced this callback by the
+> `Smarty_CacheResource` module.
+
+With a custom cache implementation you\'re likely trying to achieve at
+least one of the following goals: replace the slow filesystem by a
+faster storage engine, centralize the cache to be accessible to multiple
+servers.
+
+Smarty allows CacheResource implementations to use one of the APIs
+`Smarty_CacheResource_Custom` or `Smarty_CacheResource_KeyValueStore`.
+`Smarty_CacheResource_Custom` is a simple API directing all read, write,
+clear calls to your implementation. This API allows you to store
+wherever and however you deem fit. The
+`Smarty_CacheResource_KeyValueStore` API allows you to turn any \"dumb\"
+KeyValue-Store (like APC, Memcache, ...) into a full-featured
+CacheResource implementation. That is, everything around deep
+cache-groups like \"a\|b\|c\" is being handled for you in way that
+allows clearing the cache-group \"a\" and all nested groups are cleared
+as well - even though KeyValue-Stores don\'t allow this kind of
+hierarchy by nature.
+
+Custom CacheResources may be put in a file `cacheresource.foobarxyz.php`
+within your [`$plugins_dir`](#variable.plugins.dir), or registered on
+runtime with [`registerCacheResource()`](#api.register.cacheresource).
+In either case you need to set [`$caching_type`](#variable.caching.type)
+to invoke your custom CacheResource implementation.
+
+
+ caching_type = 'mysql';
+
+ /**
+ * MySQL CacheResource
+ *
+ * CacheResource Implementation based on the Custom API to use
+ * MySQL as the storage resource for Smarty's output caching.
+ *
+ * Table definition:
+ * CREATE TABLE IF NOT EXISTS `output_cache` (
+ * `id` CHAR(40) NOT NULL COMMENT 'sha1 hash',
+ * `name` VARCHAR(250) NOT NULL,
+ * `cache_id` VARCHAR(250) NULL DEFAULT NULL,
+ * `compile_id` VARCHAR(250) NULL DEFAULT NULL,
+ * `modified` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
+ * `content` LONGTEXT NOT NULL,
+ * PRIMARY KEY (`id`),
+ * INDEX(`name`),
+ * INDEX(`cache_id`),
+ * INDEX(`compile_id`),
+ * INDEX(`modified`)
+ * ) ENGINE = InnoDB;
+ *
+ * @package CacheResource-examples
+ * @author Rodney Rehm
+ */
+ class Smarty_CacheResource_Mysql extends Smarty_CacheResource_Custom {
+ // PDO instance
+ protected $db;
+ protected $fetch;
+ protected $fetchTimestamp;
+ protected $save;
+
+ public function __construct() {
+ try {
+ $this->db = new PDO("mysql:dbname=test;host=127.0.0.1", "smarty", "smarty");
+ } catch (PDOException $e) {
+ throw new SmartyException('Mysql Resource failed: ' . $e->getMessage());
+ }
+ $this->fetch = $this->db->prepare('SELECT modified, content FROM output_cache WHERE id = :id');
+ $this->fetchTimestamp = $this->db->prepare('SELECT modified FROM output_cache WHERE id = :id');
+ $this->save = $this->db->prepare('REPLACE INTO output_cache (id, name, cache_id, compile_id, content)
+ VALUES (:id, :name, :cache_id, :compile_id, :content)');
+ }
+
+ /**
+ * fetch cached content and its modification time from data source
+ *
+ * @param string $id unique cache content identifier
+ * @param string $name template name
+ * @param string $cache_id cache id
+ * @param string $compile_id compile id
+ * @param string $content cached content
+ * @param integer $mtime cache modification timestamp (epoch)
+ * @return void
+ */
+ protected function fetch($id, $name, $cache_id, $compile_id, &$content, &$mtime)
+ {
+ $this->fetch->execute(array('id' => $id));
+ $row = $this->fetch->fetch();
+ $this->fetch->closeCursor();
+ if ($row) {
+ $content = $row['content'];
+ $mtime = strtotime($row['modified']);
+ } else {
+ $content = null;
+ $mtime = null;
+ }
+ }
+
+ /**
+ * Fetch cached content's modification timestamp from data source
+ *
+ * @note implementing this method is optional. Only implement it if modification times can be accessed faster than loading the complete cached content.
+ * @param string $id unique cache content identifier
+ * @param string $name template name
+ * @param string $cache_id cache id
+ * @param string $compile_id compile id
+ * @return integer|boolean timestamp (epoch) the template was modified, or false if not found
+ */
+ protected function fetchTimestamp($id, $name, $cache_id, $compile_id)
+ {
+ $this->fetchTimestamp->execute(array('id' => $id));
+ $mtime = strtotime($this->fetchTimestamp->fetchColumn());
+ $this->fetchTimestamp->closeCursor();
+ return $mtime;
+ }
+
+ /**
+ * Save content to cache
+ *
+ * @param string $id unique cache content identifier
+ * @param string $name template name
+ * @param string $cache_id cache id
+ * @param string $compile_id compile id
+ * @param integer|null $exp_time seconds till expiration time in seconds or null
+ * @param string $content content to cache
+ * @return boolean success
+ */
+ protected function save($id, $name, $cache_id, $compile_id, $exp_time, $content)
+ {
+ $this->save->execute(array(
+ 'id' => $id,
+ 'name' => $name,
+ 'cache_id' => $cache_id,
+ 'compile_id' => $compile_id,
+ 'content' => $content,
+ ));
+ return !!$this->save->rowCount();
+ }
+
+ /**
+ * Delete content from cache
+ *
+ * @param string $name template name
+ * @param string $cache_id cache id
+ * @param string $compile_id compile id
+ * @param integer|null $exp_time seconds till expiration or null
+ * @return integer number of deleted caches
+ */
+ protected function delete($name, $cache_id, $compile_id, $exp_time)
+ {
+ // delete the whole cache
+ if ($name === null && $cache_id === null && $compile_id === null && $exp_time === null) {
+ // returning the number of deleted caches would require a second query to count them
+ $query = $this->db->query('TRUNCATE TABLE output_cache');
+ return -1;
+ }
+ // build the filter
+ $where = array();
+ // equal test name
+ if ($name !== null) {
+ $where[] = 'name = ' . $this->db->quote($name);
+ }
+ // equal test compile_id
+ if ($compile_id !== null) {
+ $where[] = 'compile_id = ' . $this->db->quote($compile_id);
+ }
+ // range test expiration time
+ if ($exp_time !== null) {
+ $where[] = 'modified < DATE_SUB(NOW(), INTERVAL ' . intval($exp_time) . ' SECOND)';
+ }
+ // equal test cache_id and match sub-groups
+ if ($cache_id !== null) {
+ $where[] = '(cache_id = '. $this->db->quote($cache_id)
+ . ' OR cache_id LIKE '. $this->db->quote($cache_id .'|%') .')';
+ }
+ // run delete query
+ $query = $this->db->query('DELETE FROM output_cache WHERE ' . join(' AND ', $where));
+ return $query->rowCount();
+ }
+ }
+
+
+
+
+ caching_type = 'memcache';
+
+ /**
+ * Memcache CacheResource
+ *
+ * CacheResource Implementation based on the KeyValueStore API to use
+ * memcache as the storage resource for Smarty's output caching.
+ *
+ * Note that memcache has a limitation of 256 characters per cache-key.
+ * To avoid complications all cache-keys are translated to a sha1 hash.
+ *
+ * @package CacheResource-examples
+ * @author Rodney Rehm
+ */
+ class Smarty_CacheResource_Memcache extends Smarty_CacheResource_KeyValueStore {
+ /**
+ * memcache instance
+ * @var Memcache
+ */
+ protected $memcache = null;
+
+ public function __construct()
+ {
+ $this->memcache = new Memcache();
+ $this->memcache->addServer( '127.0.0.1', 11211 );
+ }
+
+ /**
+ * Read values for a set of keys from cache
+ *
+ * @param array $keys list of keys to fetch
+ * @return array list of values with the given keys used as indexes
+ * @return boolean true on success, false on failure
+ */
+ protected function read(array $keys)
+ {
+ $_keys = $lookup = array();
+ foreach ($keys as $k) {
+ $_k = sha1($k);
+ $_keys[] = $_k;
+ $lookup[$_k] = $k;
+ }
+ $_res = array();
+ $res = $this->memcache->get($_keys);
+ foreach ($res as $k => $v) {
+ $_res[$lookup[$k]] = $v;
+ }
+ return $_res;
+ }
+
+ /**
+ * Save values for a set of keys to cache
+ *
+ * @param array $keys list of values to save
+ * @param int $expire expiration time
+ * @return boolean true on success, false on failure
+ */
+ protected function write(array $keys, $expire=null)
+ {
+ foreach ($keys as $k => $v) {
+ $k = sha1($k);
+ $this->memcache->set($k, $v, 0, $expire);
+ }
+ return true;
+ }
+
+ /**
+ * Remove values from cache
+ *
+ * @param array $keys list of keys to delete
+ * @return boolean true on success, false on failure
+ */
+ protected function delete(array $keys)
+ {
+ foreach ($keys as $k) {
+ $k = sha1($k);
+ $this->memcache->delete($k);
+ }
+ return true;
+ }
+
+ /**
+ * Remove *all* values from cache
+ *
+ * @return boolean true on success, false on failure
+ */
+ protected function purge()
+ {
+ return $this->memcache->flush();
+ }
+ }
+
+
+
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/caching/caching-groups.md b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/caching/caching-groups.md
new file mode 100644
index 000000000..7e248b2f3
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/caching/caching-groups.md
@@ -0,0 +1,60 @@
+Cache Groups {#caching.groups}
+============
+
+You can do more elaborate grouping by setting up `$cache_id` groups.
+This is accomplished by separating each sub-group with a vertical bar
+`|` in the `$cache_id` value. You can have as many sub-groups as you
+like.
+
+- You can think of cache groups like a directory hierarchy. For
+ instance, a cache group of `'a|b|c'` could be thought of as the
+ directory structure `'/a/b/c/'`.
+
+- `clearCache(null,'a|b|c')` would be like removing the files
+ `'/a/b/c/*'`. `clearCache(null,'a|b')` would be like removing the
+ files `'/a/b/*'`.
+
+- If you specify a [`$compile_id`](#variable.compile.id) such as
+ `clearCache(null,'a|b','foo')` it is treated as an appended cache
+ group `'/a/b/c/foo/'`.
+
+- If you specify a template name such as
+ `clearCache('foo.tpl','a|b|c')` then Smarty will attempt to remove
+ `'/a/b/c/foo.tpl'`.
+
+- You CANNOT remove a specified template name under multiple cache
+ groups such as `'/a/b/*/foo.tpl'`, the cache grouping works
+ left-to-right ONLY. You will need to group your templates under a
+ single cache group hierarchy to be able to clear them as a group.
+
+Cache grouping should not be confused with your template directory
+hierarchy, the cache grouping has no knowledge of how your templates are
+structured. So for example, if you have a template structure like
+`themes/blue/index.tpl` and you want to be able to clear all the cache
+files for the "blue" theme, you will need to create a cache group
+structure that mimics your template file structure, such as
+`display('themes/blue/index.tpl','themes|blue')`, then clear them with
+`clearCache(null,'themes|blue')`.
+
+
+ setCaching(Smarty::CACHING_LIFETIME_CURRENT);
+
+ // clear all caches with 'sports|basketball' as the first two cache_id groups
+ $smarty->clearCache(null,'sports|basketball');
+
+ // clear all caches with "sports" as the first cache_id group. This would
+ // include "sports|basketball", or "sports|(anything)|(anything)|(anything)|..."
+ $smarty->clearCache(null,'sports');
+
+ // clear the foo.tpl cache file with "sports|basketball" as the cache_id
+ $smarty->clearCache('foo.tpl','sports|basketball');
+
+
+ $smarty->display('index.tpl','sports|basketball');
+ ?>
+
+
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/caching/caching-multiple-caches.md b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/caching/caching-multiple-caches.md
new file mode 100644
index 000000000..40fffc3d7
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/caching/caching-multiple-caches.md
@@ -0,0 +1,87 @@
+Multiple Caches Per Page {#caching.multiple.caches}
+========================
+
+You can have multiple cache files for a single call to
+[`display()`](#api.display) or [`fetch()`](#api.fetch). Let\'s say that
+a call to `display('index.tpl')` may have several different output
+contents depending on some condition, and you want separate caches for
+each one. You can do this by passing a `$cache_id` as the second
+parameter to the function call.
+
+
+ setCaching(Smarty::CACHING_LIFETIME_CURRENT);
+
+ $my_cache_id = $_GET['article_id'];
+
+ $smarty->display('index.tpl', $my_cache_id);
+ ?>
+
+
+
+Above, we are passing the variable `$my_cache_id` to
+[`display()`](#api.display) as the `$cache_id`. For each unique value of
+`$my_cache_id`, a separate cache will be generated for `index.tpl`. In
+this example, `article_id` was passed in the URL and is used as the
+`$cache_id`.
+
+> **Note**
+>
+> Be very cautious when passing values from a client (web browser) into
+> Smarty or any PHP application. Although the above example of using the
+> article\_id from the URL looks handy, it could have bad consequences.
+> The `$cache_id` is used to create a directory on the file system, so
+> if the user decided to pass an extremely large value for article\_id,
+> or write a script that sends random article\_id\'s at a rapid pace,
+> this could possibly cause problems at the server level. Be sure to
+> sanitize any data passed in before using it. In this instance, maybe
+> you know the article\_id has a length of ten characters and is made up
+> of alpha-numerics only, and must be a valid article\_id in the
+> database. Check for this!
+
+Be sure to pass the same `$cache_id` as the second parameter to
+[`isCached()`](#api.is.cached) and [`clearCache()`](#api.clear.cache).
+
+
+ setCaching(Smarty::CACHING_LIFETIME_CURRENT);
+
+ $my_cache_id = $_GET['article_id'];
+
+ if(!$smarty->isCached('index.tpl',$my_cache_id)) {
+ // No cache available, do variable assignments here.
+ $contents = get_database_contents();
+ $smarty->assign($contents);
+ }
+
+ $smarty->display('index.tpl',$my_cache_id);
+ ?>
+
+
+
+You can clear all caches for a particular `$cache_id` by passing NULL as
+the first parameter to [`clearCache()`](#api.clear.cache).
+
+
+ setCaching(Smarty::CACHING_LIFETIME_CURRENT);
+
+ // clear all caches with "sports" as the $cache_id
+ $smarty->clearCache(null,'sports');
+
+ $smarty->display('index.tpl','sports');
+ ?>
+
+
+
+In this manner, you can "group" your caches together by giving them the
+same `$cache_id`.
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/caching/caching-setting-up.md b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/caching/caching-setting-up.md
new file mode 100644
index 000000000..bc9d2ad9e
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/caching/caching-setting-up.md
@@ -0,0 +1,153 @@
+Setting Up Caching {#caching.setting.up}
+==================
+
+The first thing to do is enable caching by setting
+[`$caching`](#variable.caching) to one of
+`Smarty::CACHING_LIFETIME_CURRENT` or `Smarty::CACHING_LIFETIME_SAVED`.
+
+
+ cacheLifetime() to determine
+ // the number of seconds a cache is good for
+ $smarty->setCaching(Smarty::CACHING_LIFETIME_CURRENT);
+
+ $smarty->display('index.tpl');
+ ?>
+
+
+
+With caching enabled, the function call to `display('index.tpl')` will
+render the template as usual, but also saves a copy of its output to a
+file (a cached copy) in the [`$cache_dir`](#variable.cache.dir). On the
+next call to `display('index.tpl')`, the cached copy will be used
+instead of rendering the template again.
+
+> **Note**
+>
+> The files in the [`$cache_dir`](#variable.cache.dir) are named similar
+> to the template name. Although they end in the `.php` extension, they
+> are not intended to be directly executable. Do not edit these files!
+
+Each cached page has a limited lifetime determined by
+[`$cache_lifetime`](#variable.cache.lifetime). The default value is 3600
+seconds, or one hour. After that time expires, the cache is regenerated.
+It is possible to give individual caches their own expiration time by
+setting [`$caching`](#variable.caching) to
+`Smarty::CACHING_LIFETIME_SAVED`. See
+[`$cache_lifetime`](#variable.cache.lifetime) for more details.
+
+
+ setCaching(Smarty::CACHING_LIFETIME_SAVED);
+
+ // set the cache_lifetime for index.tpl to 5 minutes
+ $smarty->setCacheLifetime(300);
+ $smarty->display('index.tpl');
+
+ // set the cache_lifetime for home.tpl to 1 hour
+ $smarty->setCacheLifetime(3600);
+ $smarty->display('home.tpl');
+
+ // NOTE: the following $cache_lifetime setting will not work when $caching
+ // is set to Smarty::CACHING_LIFETIME_SAVED.
+ // The cache lifetime for home.tpl has already been set
+ // to 1 hour, and will no longer respect the value of $cache_lifetime.
+ // The home.tpl cache will still expire after 1 hour.
+ $smarty->setCacheLifetime(30); // 30 seconds
+ $smarty->display('home.tpl');
+ ?>
+
+
+
+If [`$compile_check`](#variable.compile.check) is enabled (default),
+every template file and config file that is involved with the cache file
+is checked for modification. If any of the files have been modified
+since the cache was generated, the cache is immediately regenerated.
+This is a computational overhead, so for optimum performance set
+[`$compile_check`](#variable.compile.check) to FALSE.
+
+
+ setCaching(Smarty::CACHING_LIFETIME_CURRENT);
+ $smarty->setCompileCheck(false);
+
+ $smarty->display('index.tpl');
+ ?>
+
+
+
+If [`$force_compile`](#variable.force.compile) is enabled, the cache
+files will always be regenerated. This effectively disables caching,
+however this also seriously degrades performance.
+[`$force_compile`](#variable.force.compile) is meant to be used for
+[debugging](#chapter.debugging.console) purposes. The appropriate way to
+disable caching is to set [`$caching`](#variable.caching) to
+Smarty::CACHING\_OFF.
+
+The [`isCached()`](#api.is.cached) function can be used to test if a
+template has a valid cache or not. If you have a cached template that
+requires something like a database fetch, you can use this to skip that
+process.
+
+
+ setCaching(Smarty::CACHING_LIFETIME_CURRENT);
+
+ if(!$smarty->isCached('index.tpl')) {
+ // No cache available, do variable assignments here.
+ $contents = get_database_contents();
+ $smarty->assign($contents);
+ }
+
+ $smarty->display('index.tpl');
+ ?>
+
+
+
+You can keep parts of a page dynamic (disable caching) with the
+[`{nocache}{/nocache}`](#language.function.nocache) block function, the
+[`{insert}`](#language.function.insert) function, or by using the
+`nocache` parameter for most template functions.
+
+Let\'s say the whole page can be cached except for a banner that is
+displayed down the side of the page. By using the
+[`{insert}`](#language.function.insert) function for the banner, you can
+keep this element dynamic within the cached content. See the
+documentation on [`{insert}`](#language.function.insert) for more
+details and examples.
+
+You can clear all the cache files with the
+[`clearAllCache()`](#api.clear.all.cache) function, or individual cache
+files [and groups](#caching.groups) with the
+[`clearCache()`](#api.clear.cache) function.
+
+
+ setCaching(Smarty::CACHING_LIFETIME_CURRENT);
+
+ // clear only cache for index.tpl
+ $smarty->clearCache('index.tpl');
+
+ // clear out all cache files
+ $smarty->clearAllCache();
+
+ $smarty->display('index.tpl');
+ ?>
+
+
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/charset.md b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/charset.md
new file mode 100644
index 000000000..9dedf4dcd
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/charset.md
@@ -0,0 +1,44 @@
+Charset Encoding {#charset}
+================
+
+Charset Encoding {#charset.encoding}
+================
+
+There are a variety of encodings for textual data, ISO-8859-1 (Latin1)
+and UTF-8 being the most popular. Unless you change `Smarty::$_CHARSET`,
+Smarty recognizes `UTF-8` as the internal charset if
+[Multibyte String](https://www.php.net/mbstring) is available,
+`ISO-8859-1` if not.
+
+> **Note**
+>
+> `ISO-8859-1` has been PHP\'s default internal charset since the
+> beginning. Unicode has been evolving since 1991. Since then it has
+> become the one charset to conquer them all, as it is capable of
+> encoding most of the known characters even across different character
+> systems (latin, cyrillic, japanese, ...). `UTF-8` is unicode\'s most
+> used encoding, as it allows referencing the thousands of character
+> with the smallest size overhead possible.
+>
+> Since unicode and UTF-8 are very wide spread nowadays, their use is
+> strongly encouraged.
+
+> **Note**
+>
+> Smarty\'s internals and core plugins are truly UTF-8 compatible since
+> Smarty 3.1. To achieve unicode compatibility, the [Multibyte
+> String](https://www.php.net/mbstring) PECL is required. Unless your PHP
+> environment offers this package, Smarty will not be able to offer
+> full-scale UTF-8 compatibility.
+
+
+ // use japanese character encoding
+ if (function_exists('mb_internal_charset')) {
+ mb_internal_charset('EUC-JP');
+ }
+
+ require_once 'libs/Smarty.class.php';
+ Smarty::$_CHARSET = 'EUC-JP';
+ $smarty = new Smarty();
+
+
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/plugins.md b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/plugins.md
new file mode 100644
index 000000000..41a7ea0c4
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/plugins.md
@@ -0,0 +1,44 @@
+Extending Smarty With Plugins {#plugins}
+=============================
+
+## Table of contents
+
+- [How Plugins Work](./plugins/plugins-howto.md)
+- [Naming Conventions](./plugins/plugins-naming-conventions.md)
+- [Writing Plugins](./plugins/plugins-writing.md)
+- [Template Functions](./plugins/plugins-functions.md)
+- [Modifiers](./plugins/plugins-modifiers.md)
+- [Block Functions](./plugins/plugins-block-functions.md)
+- [Compiler Functions](./plugins/plugins-compiler-functions.md)
+- [Prefilters/Postfilters](./plugins/plugins-prefilters-postfilters.md)
+- [Output Filters](./plugins/plugins-outputfilters.md)
+- [Resources](./plugins/plugins-resources.md)
+- [Inserts](./plugins/plugins-inserts.md)
+
+Version 2.0 introduced the plugin architecture that is used for almost
+all the customizable functionality of Smarty. This includes:
+
+- functions
+
+- modifiers
+
+- block functions
+
+- compiler functions
+
+- prefilters
+
+- postfilters
+
+- outputfilters
+
+- resources
+
+- inserts
+
+With the exception of resources, backwards compatibility with the old
+way of registering handler functions via register\_\* API is preserved.
+If you did not use the API but instead modified the class variables
+`$custom_funcs`, `$custom_mods`, and other ones directly, then you will
+need to adjust your scripts to either use the API or convert your custom
+functionality into plugins.
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/plugins/plugins-block-functions.md b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/plugins/plugins-block-functions.md
new file mode 100644
index 000000000..0e11c0782
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/plugins/plugins-block-functions.md
@@ -0,0 +1,95 @@
+Block Functions {#plugins.block.functions}
+===============
+
+void
+
+smarty\_block\_
+
+name
+
+array
+
+\$params
+
+mixed
+
+\$content
+
+object
+
+\$template
+
+boolean
+
+&\$repeat
+
+Block functions are functions of the form: `{func} .. {/func}`. In other
+words, they enclose a template block and operate on the contents of this
+block. Block functions take precedence over [custom
+functions](#language.custom.functions) of the same name, that is, you
+cannot have both custom function `{func}` and block function
+`{func}..{/func}`.
+
+- By default your function implementation is called twice by Smarty:
+ once for the opening tag, and once for the closing tag. (See
+ `$repeat` below on how to change this.)
+
+- Starting with Smarty 3.1 the returned value of the opening tag call
+ is displayed as well.
+
+- Only the opening tag of the block function may have
+ [attributes](#language.syntax.attributes). All attributes passed to
+ template functions from the template are contained in the `$params`
+ variable as an associative array. The opening tag attributes are
+ also accessible to your function when processing the closing tag.
+
+- The value of the `$content` variable depends on whether your
+ function is called for the opening or closing tag. In case of the
+ opening tag, it will be NULL, and in case of the closing tag it will
+ be the contents of the template block. Note that the template block
+ will have already been processed by Smarty, so all you will receive
+ is the template output, not the template source.
+
+- The parameter `$repeat` is passed by reference to the function
+ implementation and provides a possibility for it to control how many
+ times the block is displayed. By default `$repeat` is TRUE at the
+ first call of the block-function (the opening tag) and FALSE on all
+ subsequent calls to the block function (the block\'s closing tag).
+ Each time the function implementation returns with `$repeat` being
+ TRUE, the contents between `{func}...{/func}` are evaluated and the
+ function implementation is called again with the new block contents
+ in the parameter `$content`.
+
+If you have nested block functions, it\'s possible to find out what the
+parent block function is by accessing `$smarty->_tag_stack` variable.
+Just do a [`var_dump()`](https://www.php.net/var_dump) on it and the
+structure should be apparent.
+
+
+
+
+
+
+See also: [`registerPlugin()`](#api.register.plugin),
+[`unregisterPlugin()`](#api.unregister.plugin).
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/plugins/plugins-compiler-functions.md b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/plugins/plugins-compiler-functions.md
new file mode 100644
index 000000000..ef2454e8a
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/plugins/plugins-compiler-functions.md
@@ -0,0 +1,66 @@
+Compiler Functions {#plugins.compiler.functions}
+==================
+
+Compiler functions are called only during compilation of the template.
+They are useful for injecting PHP code or time-sensitive static content
+into the template. If there is both a compiler function and a [custom
+function](#language.custom.functions) registered under the same name,
+the compiler function has precedence.
+
+mixed
+
+smarty\_compiler\_
+
+name
+
+array
+
+\$params
+
+object
+
+\$smarty
+
+The compiler function is passed two parameters: the params array which
+contains precompiled strings for the attribute values and the Smarty
+object. It\'s supposed to return the code to be injected into the
+compiled template including the surrounding PHP tags.
+
+
+ _current_file . " compiled at " . date('Y-m-d H:M'). "';\n?>";
+ }
+ ?>
+
+This function can be called from the template as:
+
+
+ {* this function gets executed at compile time only *}
+ {tplheader}
+
+
+
+The resulting PHP code in the compiled template would be something like
+this:
+
+
+
+
+
+
+See also [`registerPlugin()`](#api.register.plugin),
+[`unregisterPlugin()`](#api.unregister.plugin).
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/plugins/plugins-functions.md b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/plugins/plugins-functions.md
new file mode 100644
index 000000000..067b93826
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/plugins/plugins-functions.md
@@ -0,0 +1,94 @@
+Template Functions {#plugins.functions}
+==================
+
+void
+
+smarty\_function\_
+
+name
+
+array
+
+\$params
+
+object
+
+\$template
+
+All [attributes](#language.syntax.attributes) passed to template
+functions from the template are contained in the `$params` as an
+associative array.
+
+The output (return value) of the function will be substituted in place
+of the function tag in the template, eg the
+[`{fetch}`](#language.function.fetch) function. Alternatively, the
+function can simply perform some other task without any output, eg the
+[`{assign}`](#language.function.assign) function.
+
+If the function needs to assign some variables to the template or use
+some other Smarty-provided functionality, it can use the supplied
+`$template` object to do so eg `$template->foo()`.
+
+
+
+
+which can be used in the template as:
+
+ Question: Will we ever have time travel?
+ Answer: {eightball}.
+
+
+
+ assign($params['var'], $params['value']);
+
+ }
+ ?>
+
+
+
+See also: [`registerPlugin()`](#api.register.plugin),
+[`unregisterPlugin()`](#api.unregister.plugin).
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/plugins/plugins-howto.md b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/plugins/plugins-howto.md
new file mode 100644
index 000000000..5738c3fcb
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/plugins/plugins-howto.md
@@ -0,0 +1,18 @@
+How Plugins Work {#plugins.howto}
+================
+
+Plugins are always loaded on demand. Only the specific modifiers,
+functions, resources, etc invoked in the templates scripts will be
+loaded. Moreover, each plugin is loaded only once, even if you have
+several different instances of Smarty running within the same request.
+
+Pre/postfilters and output filters are a bit of a special case. Since
+they are not mentioned in the templates, they must be registered or
+loaded explicitly via API functions before the template is processed.
+The order in which multiple filters of the same type are executed
+depends on the order in which they are registered or loaded.
+
+The [plugins directory](#variable.plugins.dir) can be a string
+containing a path or an array containing multiple paths. To install a
+plugin, simply place it in one of the directories and Smarty will use it
+automatically.
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/plugins/plugins-inserts.md b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/plugins/plugins-inserts.md
new file mode 100644
index 000000000..370a97bd0
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/plugins/plugins-inserts.md
@@ -0,0 +1,48 @@
+Inserts {#plugins.inserts}
+=======
+
+Insert plugins are used to implement functions that are invoked by
+[`{insert}`](#language.function.insert) tags in the template.
+
+string
+
+smarty\_insert\_
+
+name
+
+array
+
+\$params
+
+object
+
+\$template
+
+The first parameter to the function is an associative array of
+attributes passed to the insert.
+
+The insert function is supposed to return the result which will be
+substituted in place of the `{insert}` tag in the template.
+
+
+
+
+
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/plugins/plugins-modifiers.md b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/plugins/plugins-modifiers.md
new file mode 100644
index 000000000..a4e99daa3
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/plugins/plugins-modifiers.md
@@ -0,0 +1,86 @@
+Modifiers {#plugins.modifiers}
+=========
+
+[Modifiers](#language.modifiers) are little functions that are applied
+to a variable in the template before it is displayed or used in some
+other context. Modifiers can be chained together.
+
+mixed
+
+smarty\_modifier\_
+
+name
+
+mixed
+
+\$value
+
+\[mixed
+
+\$param1
+
+, \...\]
+
+The first parameter to the modifier plugin is the value on which the
+modifier is to operate. The rest of the parameters are optional,
+depending on what kind of operation is to be performed.
+
+The modifier has to [return](https://www.php.net/return) the result of its
+processing.
+
+This plugin basically aliases one of the built-in PHP functions. It does
+not have any additional parameters.
+
+
+
+
+
+ $length) {
+ $length -= strlen($etc);
+ $fragment = substr($string, 0, $length+1);
+ if ($break_words)
+ $fragment = substr($fragment, 0, -1);
+ else
+ $fragment = preg_replace('/\s+(\S+)?$/', '', $fragment);
+ return $fragment.$etc;
+ } else
+ return $string;
+ }
+ ?>
+
+
+
+See also [`registerPlugin()`](#api.register.plugin),
+[`unregisterPlugin()`](#api.unregister.plugin).
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/plugins/plugins-naming-conventions.md b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/plugins/plugins-naming-conventions.md
new file mode 100644
index 000000000..15bc26015
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/plugins/plugins-naming-conventions.md
@@ -0,0 +1,51 @@
+Naming Conventions {#plugins.naming.conventions}
+==================
+
+Plugin files and functions must follow a very specific naming convention
+in order to be located by Smarty.
+
+**plugin files** must be named as follows:
+
+> `
+> type.name.php
+> `
+
+- Where `type` is one of these plugin types:
+
+ - function
+
+ - modifier
+
+ - block
+
+ - compiler
+
+ - prefilter
+
+ - postfilter
+
+ - outputfilter
+
+ - resource
+
+ - insert
+
+- And `name` should be a valid identifier; letters, numbers, and
+ underscores only, see [php
+ variables](https://www.php.net/language.variables).
+
+- Some examples: `function.html_select_date.php`, `resource.db.php`,
+ `modifier.spacify.php`.
+
+**plugin functions** inside the PHP files must be named as follows:
+
+> `smarty_type_name`
+
+- The meanings of `type` and `name` are the same as above.
+
+- An example modifier name `foo` would be
+ `function smarty_modifier_foo()`.
+
+Smarty will output appropriate error messages if the plugin file it
+needs is not found, or if the file or the plugin function are named
+improperly.
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/plugins/plugins-outputfilters.md b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/plugins/plugins-outputfilters.md
new file mode 100644
index 000000000..4e34ab7eb
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/plugins/plugins-outputfilters.md
@@ -0,0 +1,48 @@
+Output Filters {#plugins.outputfilters}
+==============
+
+Output filter plugins operate on a template\'s output, after the
+template is loaded and executed, but before the output is displayed.
+
+string
+
+smarty\_outputfilter\_
+
+name
+
+string
+
+\$template\_output
+
+object
+
+\$template
+
+The first parameter to the output filter function is the template output
+that needs to be processed, and the second parameter is the instance of
+Smarty invoking the plugin. The plugin is supposed to do the processing
+and return the results.
+
+
+
+
+
+
+See also [`registerFilter()`](#api.register.filter),
+[`unregisterFilter()`](#api.unregister.filter).
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/plugins/plugins-prefilters-postfilters.md b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/plugins/plugins-prefilters-postfilters.md
new file mode 100644
index 000000000..39467cbcb
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/plugins/plugins-prefilters-postfilters.md
@@ -0,0 +1,89 @@
+Prefilters/Postfilters {#plugins.prefilters.postfilters}
+======================
+
+Prefilter and postfilter plugins are very similar in concept; where they
+differ is in the execution \-- more precisely the time of their
+execution.
+
+string
+
+smarty\_prefilter\_
+
+name
+
+string
+
+\$source
+
+object
+
+\$template
+
+Prefilters are used to process the source of the template immediately
+before compilation. The first parameter to the prefilter function is the
+template source, possibly modified by some other prefilters. The plugin
+is supposed to return the modified source. Note that this source is not
+saved anywhere, it is only used for compilation.
+
+string
+
+smarty\_postfilter\_
+
+name
+
+string
+
+\$compiled
+
+object
+
+\$template
+
+Postfilters are used to process the compiled output of the template (the
+PHP code) immediately after the compilation is done but before the
+compiled template is saved to the filesystem. The first parameter to the
+postfilter function is the compiled template code, possibly modified by
+other postfilters. The plugin is supposed to return the modified version
+of this code.
+
+
+ ]+>!e', 'strtolower("$1")', $source);
+ }
+ ?>
+
+
+
+
+ \ngetTemplateVars()); ?>\n" . $compiled;
+ return $compiled;
+ }
+ ?>
+
+
+
+See also [`registerFilter()`](#api.register.filter) and
+[`unregisterFilter()`](#api.unregister.filter).
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/plugins/plugins-resources.md b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/plugins/plugins-resources.md
new file mode 100644
index 000000000..1b1fdf0ab
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/plugins/plugins-resources.md
@@ -0,0 +1,128 @@
+Resources {#plugins.resources}
+=========
+
+Resource plugins are meant as a generic way of providing template
+sources or PHP script components to Smarty. Some examples of resources:
+databases, LDAP, shared memory, sockets, and so on.
+
+Custom Resources may be put in a file `resource.foobarxyz.php` within
+your [`$plugins_dir`](#variable.plugins.dir), or registered on runtime
+with [`registerResource()`](#api.register.resource). In either case you
+will be able to access that resource by prepending its name to the
+template you\'re addressing: `foobarxyz:yourtemplate.tpl`.
+
+If a Resource\'s templates should not be run through the Smarty
+compiler, the Custom Resource may extend `Smarty_Resource_Uncompiled`.
+The Resource Handler must then implement the function
+`renderUncompiled(Smarty_Internal_Template $_template)`. `$_template` is
+a reference to the current template and contains all assigned variables
+which the implementor can access via
+`$_template->smarty->getTemplateVars()`. These Resources simply echo
+their rendered content to the output stream. The rendered output will be
+output-cached if the Smarty instance was configured accordingly. See
+`libs/sysplugins/smarty_internal_resource_php.php` for an example.
+
+If the Resource\'s compiled templates should not be cached on disk, the
+Custom Resource may extend `Smarty_Resource_Recompiled`. These Resources
+are compiled every time they are accessed. This may be an expensive
+overhead. See `libs/sysplugins/smarty_internal_resource_eval.php` for an
+example.
+
+
+ CREATE TABLE IF NOT EXISTS `templates` (
+ * `name` varchar(100) NOT NULL,
+ * `modified` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
+ * `source` text,
+ * PRIMARY KEY (`name`)
+ * ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+ *
+ * Demo data:
+ * INSERT INTO `templates` (`name`, `modified`, `source`) VALUES ('test.tpl', "2010-12-25 22:00:00", '{$x="hello world"}{$x}');
+ *
+ * @package Resource-examples
+ * @author Rodney Rehm
+ */
+ class Smarty_Resource_Mysql extends Smarty_Resource_Custom {
+ // PDO instance
+ protected $db;
+ // prepared fetch() statement
+ protected $fetch;
+ // prepared fetchTimestamp() statement
+ protected $mtime;
+
+ public function __construct() {
+ try {
+ $this->db = new PDO("mysql:dbname=test;host=127.0.0.1", "smarty", "smarty");
+ } catch (PDOException $e) {
+ throw new SmartyException('Mysql Resource failed: ' . $e->getMessage());
+ }
+ $this->fetch = $this->db->prepare('SELECT modified, source FROM templates WHERE name = :name');
+ $this->mtime = $this->db->prepare('SELECT modified FROM templates WHERE name = :name');
+ }
+
+ /**
+ * Fetch a template and its modification time from database
+ *
+ * @param string $name template name
+ * @param string $source template source
+ * @param integer $mtime template modification timestamp (epoch)
+ * @return void
+ */
+ protected function fetch($name, &$source, &$mtime)
+ {
+ $this->fetch->execute(array('name' => $name));
+ $row = $this->fetch->fetch();
+ $this->fetch->closeCursor();
+ if ($row) {
+ $source = $row['source'];
+ $mtime = strtotime($row['modified']);
+ } else {
+ $source = null;
+ $mtime = null;
+ }
+ }
+
+ /**
+ * Fetch a template's modification time from database
+ *
+ * @note implementing this method is optional. Only implement it if modification times can be accessed faster than loading the comple template source.
+ * @param string $name template name
+ * @return integer timestamp (epoch) the template was modified
+ */
+ protected function fetchTimestamp($name) {
+ $this->mtime->execute(array('name' => $name));
+ $mtime = $this->mtime->fetchColumn();
+ $this->mtime->closeCursor();
+ return strtotime($mtime);
+ }
+ }
+
+
+ require_once 'libs/Smarty.class.php';
+ $smarty = new Smarty();
+ $smarty->registerResource('mysql', new Smarty_Resource_Mysql());
+
+ // using resource from php script
+ $smarty->display("mysql:index.tpl");
+ ?>
+
+
+
+And from within Smarty template:
+
+
+ {include file='mysql:extras/navigation.tpl'}
+
+
+
+See also [`registerResource()`](#api.register.resource),
+[`unregisterResource()`](#api.unregister.resource).
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/plugins/plugins-writing.md b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/plugins/plugins-writing.md
new file mode 100644
index 000000000..972911d97
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/plugins/plugins-writing.md
@@ -0,0 +1,36 @@
+Writing Plugins {#plugins.writing}
+===============
+
+Plugins can be either loaded by Smarty automatically from the filesystem
+or they can be registered at runtime via one of the register\_\* API
+functions. They can also be unregistered by using unregister\_\* API
+functions.
+
+For the plugins that are registered at runtime, the name of the plugin
+function(s) does not have to follow the naming convention.
+
+If a plugin depends on some functionality provided by another plugin (as
+is the case with some plugins bundled with Smarty), then the proper way
+to load the needed plugin is this:
+
+
+ smarty->loadPlugin('smarty_shared_make_timestamp');
+ // plugin code
+ }
+ ?>
+
+
+
+As a general rule, the currently evaluated template\'s
+Smarty\_Internal\_Template object is always passed to the plugins as the
+last parameter with two exceptions:
+
+- modifiers do not get passed the Smarty\_Internal\_Template object at
+ all
+
+- blocks get passed `$repeat` after the Smarty\_Internal\_Template
+ object to keep backwards compatibility to older versions of Smarty.
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/resources.md b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/resources.md
new file mode 100644
index 000000000..239690061
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/resources.md
@@ -0,0 +1,19 @@
+Resources
+=========
+
+The templates may come from a variety of sources. When you
+[`display()`](./api-functions/api-display.md) or [`fetch()`](./api-functions/api-fetch.md) a template, or
+when you include a template from within another template, you supply a
+resource type, followed by the appropriate path and template name. If a
+resource is not explicitly given, the value of
+[`$default_resource_type`](./api-variables/variable-default-resource-type.md) (default:
+\"file\") is assumed.
+
+## Table of contents
+
+- [File Template Resources](./resources/resources-file.md)
+- [String Template Resources](./resources/resources-string.md)
+- [Stream Template Resources](./resources/resources-streams.md)
+- [Extends Template Resources](./resources/resources-extends.md)
+- [Custom Template Resources](./resources/resources-custom.md)
+
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/resources/resources-custom.md b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/resources/resources-custom.md
new file mode 100644
index 000000000..d679afcb1
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/resources/resources-custom.md
@@ -0,0 +1,111 @@
+Custom Template Resources {#resources.custom}
+=========================
+
+You can retrieve templates using whatever possible source you can access
+with PHP: databases, sockets, files, etc. You do this by writing
+resource plugin functions and registering them with Smarty.
+
+See [resource plugins](#plugins.resources) section for more information
+on the functions you are supposed to provide.
+
+> **Note**
+>
+> Note that you cannot override the built-in `file:` resource, but you
+> can provide a resource that fetches templates from the file system in
+> some other way by registering under another resource name.
+
+
+ CREATE TABLE IF NOT EXISTS `templates` (
+ * `name` varchar(100) NOT NULL,
+ * `modified` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
+ * `source` text,
+ * PRIMARY KEY (`name`)
+ * ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+ *
+ * Demo data:
+ * INSERT INTO `templates` (`name`, `modified`, `source`) VALUES ('test.tpl', "2010-12-25 22:00:00", '{$x="hello world"}{$x}');
+ *
+ * @package Resource-examples
+ * @author Rodney Rehm
+ */
+ class Smarty_Resource_Mysql extends Smarty_Resource_Custom {
+ // PDO instance
+ protected $db;
+ // prepared fetch() statement
+ protected $fetch;
+ // prepared fetchTimestamp() statement
+ protected $mtime;
+
+ public function __construct() {
+ try {
+ $this->db = new PDO("mysql:dbname=test;host=127.0.0.1", "smarty", "smarty");
+ } catch (PDOException $e) {
+ throw new SmartyException('Mysql Resource failed: ' . $e->getMessage());
+ }
+ $this->fetch = $this->db->prepare('SELECT modified, source FROM templates WHERE name = :name');
+ $this->mtime = $this->db->prepare('SELECT modified FROM templates WHERE name = :name');
+ }
+
+ /**
+ * Fetch a template and its modification time from database
+ *
+ * @param string $name template name
+ * @param string $source template source
+ * @param integer $mtime template modification timestamp (epoch)
+ * @return void
+ */
+ protected function fetch($name, &$source, &$mtime)
+ {
+ $this->fetch->execute(array('name' => $name));
+ $row = $this->fetch->fetch();
+ $this->fetch->closeCursor();
+ if ($row) {
+ $source = $row['source'];
+ $mtime = strtotime($row['modified']);
+ } else {
+ $source = null;
+ $mtime = null;
+ }
+ }
+
+ /**
+ * Fetch a template's modification time from database
+ *
+ * @note implementing this method is optional. Only implement it if modification times can be accessed faster than loading the comple template source.
+ * @param string $name template name
+ * @return integer timestamp (epoch) the template was modified
+ */
+ protected function fetchTimestamp($name) {
+ $this->mtime->execute(array('name' => $name));
+ $mtime = $this->mtime->fetchColumn();
+ $this->mtime->closeCursor();
+ return strtotime($mtime);
+ }
+ }
+
+
+ require_once 'libs/Smarty.class.php';
+ $smarty = new Smarty();
+ $smarty->registerResource('mysql', new Smarty_Resource_Mysql());
+
+ // using resource from php script
+ $smarty->display("mysql:index.tpl");
+ ?>
+
+
+
+And from within Smarty template:
+
+
+ {include file='mysql:extras/navigation.tpl'}
+
+
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/resources/resources-extends.md b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/resources/resources-extends.md
new file mode 100644
index 000000000..d7213d894
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/resources/resources-extends.md
@@ -0,0 +1,36 @@
+Extends Template Resources {#resources.extends}
+==========================
+
+The `extends:` resource is used to define child/parent relationships for
+template inheritance from the PHP script. For details see section of
+[Template Inheritance](#advanced.features.template.inheritance).
+
+As of Smarty 3.1 the `extends:` resource may use any available [template
+resource](#resources), including `string:` and `eval:`. When [templates
+from strings](#resources.string) are used, make sure they are properly
+(url or base64) encoded. Is an `eval:` resource found within an
+inheritance chain, its \"don\'t save a compile file\" property is
+superseded by the `extends:` resource. The templates within an
+inheritance chain are not compiled separately, though. Only a single
+compiled template will be generated.
+
+> **Note**
+>
+> Use this when inheritance is required programmatically. When inheriting
+> within PHP, it is not obvious from the child template what inheritance
+> took place. If you have a choice, it is normally more flexible and
+> intuitive to handle inheritance chains from within the templates.
+
+
+ display('extends:parent.tpl|child.tpl|grandchild.tpl');
+
+ // inheritance from multiple template sources
+ $smarty->display('extends:db:parent.tpl|file:child.tpl|grandchild.tpl|eval:{block name="fooBazVar_"}hello world{/block}');
+ ?>
+
+
+
+See also [Template Inheritance](#advanced.features.template.inheritance)
+[`{block}`](#language.function.block) and
+[`{extends}`](#language.function.extends).
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/resources/resources-file.md b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/resources/resources-file.md
new file mode 100644
index 000000000..9a89af183
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/resources/resources-file.md
@@ -0,0 +1,160 @@
+File Template Resources {#resources.file}
+=======================
+
+Smarty ships with a built-in template resource for the filesystem. The
+`file:` is the default resource. The resource key `file:` must only be
+specified, if the
+[`$default_resource_type`](#variable.default.resource.type) has been
+changed.
+
+If the file resource cannot find the requested template, the
+[`$default_template_handler_func`](#variable.default.template.handler.func)
+is invoked.
+
+> **Note**
+>
+> As of Smarty 3.1 the file resource no longer walks through the
+> [include\_path](https://www.php.net/ini.core.php#ini.include-path) unless
+> [`$use_include_path` is activated](#variable.use.include.path)
+
+Templates from \$template\_dir {#templates.from.template.dir}
+------------------------------
+
+The file resource pulls templates source files from the directories
+specified in [`$template_dir`](#variable.template.dir). The list of
+directories is traversed in the order they appear in the array. The
+first template found is the one to process.
+
+
+ display('index.tpl');
+ $smarty->display('file:index.tpl'); // same as above
+ ?>
+
+
+
+From within a Smarty template
+
+
+ {include file='index.tpl'}
+ {include file='file:index.tpl'} {* same as above *}
+
+
+
+Templates from a specific \$template\_dir {#templates.from.specified.template.dir}
+-----------------------------------------
+
+Smarty 3.1 introduced the bracket-syntax for specifying an element from
+[`$template_dir`](#variable.template.dir). This allows websites
+employing multiple sets of templates better control over which template
+to access.
+
+The bracket-syntax can be used from anywhere you can specify the `file:`
+resource type.
+
+
+ setTemplateDir(array(
+ './templates', // element: 0, index: 0
+ './templates_2', // element: 1, index: 1
+ '10' => 'templates_10', // element: 2, index: '10'
+ 'foo' => 'templates_foo', // element: 3, index: 'foo'
+ ));
+
+ /*
+ assume the template structure
+ ./templates/foo.tpl
+ ./templates_2/foo.tpl
+ ./templates_2/bar.tpl
+ ./templates_10/foo.tpl
+ ./templates_10/bar.tpl
+ ./templates_foo/foo.tpl
+ */
+
+ // regular access
+ $smarty->display('file:foo.tpl');
+ // will load ./templates/foo.tpl
+
+ // using numeric index
+ $smarty->display('file:[1]foo.tpl');
+ // will load ./templates_2/foo.tpl
+
+ // using numeric string index
+ $smarty->display('file:[10]foo.tpl');
+ // will load ./templates_10/foo.tpl
+
+ // using string index
+ $smarty->display('file:[foo]foo.tpl');
+ // will load ./templates_foo/foo.tpl
+
+ // using "unknown" numeric index (using element number)
+ $smarty->display('file:[2]foo.tpl');
+ // will load ./templates_10/foo.tpl
+
+ ?>
+
+
+
+From within a Smarty template
+
+
+ {include file="file:foo.tpl"}
+ {* will load ./templates/foo.tpl *}
+
+ {include file="file:[1]foo.tpl"}
+ {* will load ./templates_2/foo.tpl *}
+
+ {include file="file:[foo]foo.tpl"}
+ {* will load ./templates_foo/foo.tpl *}
+
+
+
+Templates from any directory {#templates.from.any.dir}
+----------------------------
+
+Templates outside of the [`$template_dir`](#variable.template.dir)
+require the `file:` template resource type, followed by the absolute
+path to the template (with leading slash.)
+
+> **Note**
+>
+> With [`Security`](#advanced.features.security) enabled, access to
+> templates outside of the [`$template_dir`](#variable.template.dir) is
+> not allowed unless you list those directories in `$secure_dir`.
+
+
+ display('file:/export/templates/index.tpl');
+ $smarty->display('file:/path/to/my/templates/menu.tpl');
+ ?>
+
+
+
+And from within a Smarty template:
+
+
+ {include file='file:/usr/local/share/templates/navigation.tpl'}
+
+
+
+Windows Filepaths {#templates.windows.filepath}
+-----------------
+
+If you are using a Windows machine, filepaths usually include a drive
+letter (C:) at the beginning of the pathname. Be sure to use `file:` in
+the path to avoid namespace conflicts and get the desired results.
+
+
+ display('file:C:/export/templates/index.tpl');
+ $smarty->display('file:F:/path/to/my/templates/menu.tpl');
+ ?>
+
+
+
+And from within Smarty template:
+
+
+ {include file='file:D:/usr/local/share/templates/navigation.tpl'}
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/resources/resources-streams.md b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/resources/resources-streams.md
new file mode 100644
index 000000000..e0596f591
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/resources/resources-streams.md
@@ -0,0 +1,27 @@
+Stream Template Resources {#resources.streams}
+=========================
+
+Streams allow you to use PHP streams as a template resource. The syntax
+is much the same a traditional template resource names.
+
+Smarty will first look for a registered template resource. If nothing is
+found, it will check if a PHP stream is available. If a stream is
+available, Smarty will use it to fetch the template.
+
+> **Note**
+>
+> You can further define allowed streams with security enabled.
+
+Using a PHP stream for a template resource from the display() function.
+
+
+ $smarty->display('foo:bar.tpl');
+
+
+
+Using a PHP stream for a template resource from within a template.
+
+
+ {include file="foo:bar.tpl"}
+
+
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/resources/resources-string.md b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/resources/resources-string.md
new file mode 100644
index 000000000..d3f6d4155
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/resources/resources-string.md
@@ -0,0 +1,73 @@
+String Template Resources {#resources.string}
+=========================
+
+Smarty can render templates from a string by using the `string:` or
+`eval:` resource.
+
+- The `string:` resource behaves much the same as a template file. The
+ template source is compiled from a string and stores the compiled
+ template code for later reuse. Each unique template string will
+ create a new compiled template file. If your template strings are
+ accessed frequently, this is a good choice. If you have frequently
+ changing template strings (or strings with low reuse value), the
+ `eval:` resource may be a better choice, as it doesn\'t save
+ compiled templates to disk.
+
+- The `eval:` resource evaluates the template source every time a page
+ is rendered. This is a good choice for strings with low reuse value.
+ If the same string is accessed frequently, the `string:` resource
+ may be a better choice.
+
+> **Note**
+>
+> With a `string:` resource type, each unique string generates a
+> compiled file. Smarty cannot detect a string that has changed, and
+> therefore will generate a new compiled file for each unique string. It
+> is important to choose the correct resource so that you do not fill
+> your disk space with wasted compiled strings.
+
+
+ assign('foo','value');
+ $template_string = 'display {$foo} here';
+ $smarty->display('string:'.$template_string); // compiles for later reuse
+ $smarty->display('eval:'.$template_string); // compiles every time
+ ?>
+
+
+
+From within a Smarty template
+
+
+ {include file="string:$template_string"} {* compiles for later reuse *}
+ {include file="eval:$template_string"} {* compiles every time *}
+
+
+
+
+Both `string:` and `eval:` resources may be encoded with
+[`urlencode()`](https://www.php.net/urlencode) or
+[`base64_encode()`](https://www.php.net/urlencode). This is not necessary
+for the usual use of `string:` and `eval:`, but is required when using
+either of them in conjunction with
+[`Extends Template Resource`](#resources.extends)
+
+
+ assign('foo','value');
+ $template_string_urlencode = urlencode('display {$foo} here');
+ $template_string_base64 = base64_encode('display {$foo} here');
+ $smarty->display('eval:urlencode:'.$template_string_urlencode); // will decode string using urldecode()
+ $smarty->display('eval:base64:'.$template_string_base64); // will decode string using base64_decode()
+ ?>
+
+
+
+From within a Smarty template
+
+
+ {include file="string:urlencode:$template_string_urlencode"} {* will decode string using urldecode() *}
+ {include file="eval:base64:$template_string_base64"} {* will decode string using base64_decode() *}
+
+
+
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/resources/template-resources.md b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/resources/template-resources.md
new file mode 100644
index 000000000..7bb5d752e
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/resources/template-resources.md
@@ -0,0 +1,130 @@
+Resources {#resasdources}
+=========
+
+The templates may come from a variety of sources. When you
+[`display()`](#api.display) or [`fetch()`](#api.fetch) a template, or
+when you include a template from within another template, you supply a
+resource type, followed by the appropriate path and template name. If a
+resource is not explicitly given, the value of
+[`$default_resource_type`](#variable.default.resource.type) is assumed.
+
+Templates from other sources {#templates.from.elsewhere}
+----------------------------
+
+You can retrieve templates using whatever possible source you can access
+with PHP: databases, sockets, files, etc. You do this by writing
+resource plugin functions and registering them with Smarty.
+
+See [resource plugins](#plugins.resources) section for more information
+on the functions you are supposed to provide.
+
+> **Note**
+>
+> Note that you cannot override the built-in `file:` resource, but you
+> can provide a resource that fetches templates from the file system in
+> some other way by registering under another resource name.
+
+
+ CREATE TABLE IF NOT EXISTS `templates` (
+ * `name` varchar(100) NOT NULL,
+ * `modified` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
+ * `source` text,
+ * PRIMARY KEY (`name`)
+ * ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+ *
+ * Demo data:
+ * INSERT INTO `templates` (`name`, `modified`, `source`) VALUES ('test.tpl', "2010-12-25 22:00:00", '{$x="hello world"}{$x}');
+ *
+ * @package Resource-examples
+ * @author Rodney Rehm
+ */
+ class Smarty_Resource_Mysql extends Smarty_Resource_Custom {
+ // PDO instance
+ protected $db;
+ // prepared fetch() statement
+ protected $fetch;
+ // prepared fetchTimestamp() statement
+ protected $mtime;
+
+ public function __construct() {
+ try {
+ $this->db = new PDO("mysql:dbname=test;host=127.0.0.1", "smarty", "smarty");
+ } catch (PDOException $e) {
+ throw new SmartyException('Mysql Resource failed: ' . $e->getMessage());
+ }
+ $this->fetch = $this->db->prepare('SELECT modified, source FROM templates WHERE name = :name');
+ $this->mtime = $this->db->prepare('SELECT modified FROM templates WHERE name = :name');
+ }
+
+ /**
+ * Fetch a template and its modification time from database
+ *
+ * @param string $name template name
+ * @param string $source template source
+ * @param integer $mtime template modification timestamp (epoch)
+ * @return void
+ */
+ protected function fetch($name, &$source, &$mtime)
+ {
+ $this->fetch->execute(array('name' => $name));
+ $row = $this->fetch->fetch();
+ $this->fetch->closeCursor();
+ if ($row) {
+ $source = $row['source'];
+ $mtime = strtotime($row['modified']);
+ } else {
+ $source = null;
+ $mtime = null;
+ }
+ }
+
+ /**
+ * Fetch a template's modification time from database
+ *
+ * @note implementing this method is optional. Only implement it if modification times can be accessed faster than loading the comple template source.
+ * @param string $name template name
+ * @return integer timestamp (epoch) the template was modified
+ */
+ protected function fetchTimestamp($name) {
+ $this->mtime->execute(array('name' => $name));
+ $mtime = $this->mtime->fetchColumn();
+ $this->mtime->closeCursor();
+ return strtotime($mtime);
+ }
+ }
+
+
+ require_once 'libs/Smarty.class.php';
+ $smarty = new Smarty();
+ $smarty->registerResource('mysql', new Smarty_Resource_Mysql());
+
+ // using resource from php script
+ $smarty->display("mysql:index.tpl");
+ ?>
+
+
+
+And from within Smarty template:
+
+
+ {include file='mysql:extras/navigation.tpl'}
+
+
+
+Default template handler function {#default.template.handler.function}
+---------------------------------
+
+You can specify a function that is used to retrieve template contents in
+the event the template cannot be retrieved from its resource. One use of
+this is to create templates that do not exist on-the-fly.
+
+See also [`Streams`](#advanced.features.streams)
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/smarty-constants.md b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/smarty-constants.md
new file mode 100644
index 000000000..de04e1b59
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/programmers/smarty-constants.md
@@ -0,0 +1,26 @@
+Constants {#smarty.constants}
+=========
+
+SMARTY\_DIR {#constant.smarty.dir}
+===========
+
+This is the **full system path** to the location of the Smarty class
+files. If this is not defined in your script, then Smarty will attempt
+to determine the appropriate value automatically. If defined, the path
+**must end with a trailing slash/**.
+
+
+
+
+
+
+See also [`$smarty.const`](../designers/language-variables/language-variables-smarty.md).
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/upgrading.md b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/upgrading.md
new file mode 100644
index 000000000..667a1422c
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/docs/upgrading.md
@@ -0,0 +1,38 @@
+# Upgrading from an older version
+
+## Upgrading from v3 to v4
+
+Smarty 4 is mostly identical to Smarty 3. Most notably, it adds support for PHP8 and drops support for PHP7.0 and below.
+Additionally, some deprecated features that have long been discouraged have been dropped from the language.
+
+### Muting PHP8 warnings
+If you simultaneously upgrade Smarty to v4 van PHP to v8, you may notice your error logs filling up with warnings about undefined or null template vars
+due to a change in how PHP handles these. This may be helpful to spot errors, but if you find this annoying, you can use
+`$smarty->muteUndefinedOrNullWarnings()` to make Smarty convert these warnings into notices.
+
+### ASP tags
+You can no longer user ASP-style tags like `<% %>` and `<%= %>` in your templates.
+Replace them with `{...}` tags.
+
+### SmartyBC
+Check your codebase for `SmartyBC`.
+We have dropped deprecated API calls that where only accessible through the SmartyBC class.
+
+### No more embedded PHP
+We have completely dropped support for `{php}` and `{include_php}` tags and embedded PHP in templates.
+Check your templates for this, and rewrite any embedded PHP blocks, by moving logic to your PHP files or by
+creating a [plugin function](./programmers/plugins/plugins-functions.md).
+
+### Other changes
+
+Search your code for the following changes:
+
+- `SMARTY_RESOURCE_CHAR_SET` and `SMARTY_RESOURCE_DATE_FORMAT` constants have been removed
+- `Smarty::muteExpectedErrors` and `Smarty::unmuteExpectedErrors` API methods have been removed
+- `Smarty::getVariable` method has been removed. Use [Smarty::getTemplateVars](programmers/api-functions/api-get-template-vars.md) instead.
+- [Smarty::registerResource](programmers/api-functions/api-register-resource.md) no longer accepts an array of callback functions
+
+
+
+
+
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/lexer/smarty_internal_configfilelexer.plex b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/lexer/smarty_internal_configfilelexer.plex
new file mode 100644
index 000000000..7a86fadc4
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/lexer/smarty_internal_configfilelexer.plex
@@ -0,0 +1,318 @@
+ 'START', 2 => 'VALUE', 3 => 'NAKED_STRING_VALUE', 4 => 'COMMENT', 5 => 'SECTION', 6 => 'TRIPPLE');
+
+ /**
+ * storage for assembled token patterns
+ *
+ * @var string
+ */
+ private $yy_global_pattern1 = null;
+ private $yy_global_pattern2 = null;
+ private $yy_global_pattern3 = null;
+ private $yy_global_pattern4 = null;
+ private $yy_global_pattern5 = null;
+ private $yy_global_pattern6 = null;
+
+ /**
+ * token names
+ *
+ * @var array
+ */
+ public $smarty_token_names = array( // Text for parser error messages
+ );
+
+ /**
+ * constructor
+ *
+ * @param string $data template source
+ * @param Smarty_Internal_Config_File_Compiler $compiler
+ */
+ public function __construct($data, Smarty_Internal_Config_File_Compiler $compiler)
+ {
+ $this->data = $data . "\n"; //now all lines are \n-terminated
+ $this->dataLength = strlen($data);
+ $this->counter = 0;
+ if (preg_match('/^\xEF\xBB\xBF/', $this->data, $match)) {
+ $this->counter += strlen($match[0]);
+ }
+ $this->line = 1;
+ $this->compiler = $compiler;
+ $this->smarty = $compiler->smarty;
+ $this->configBooleanize = $this->smarty->config_booleanize;
+ }
+
+ public function replace ($input) {
+ return $input;
+ }
+
+ public function PrintTrace()
+ {
+ $this->yyTraceFILE = fopen('php://output', 'w');
+ $this->yyTracePrompt = ' ';
+ }
+
+
+/*!lex2php
+%input $this->data
+%counter $this->counter
+%token $this->token
+%value $this->value
+%line $this->line
+commentstart = /#|;/
+openB = /\[/
+closeB = /\]/
+section = /.*?(?=[\.=\[\]\r\n])/
+equal = /=/
+whitespace = /[ \t\r]+/
+dot = /\./
+id = /[0-9]*[a-zA-Z_]\w*/
+newline = /\n/
+single_quoted_string = /'[^'\\]*(?:\\.[^'\\]*)*'(?=[ \t\r]*[\n#;])/
+double_quoted_string = /"[^"\\]*(?:\\.[^"\\]*)*"(?=[ \t\r]*[\n#;])/
+tripple_quotes = /"""/
+tripple_quotes_end = /"""(?=[ \t\r]*[\n#;])/
+text = /[\S\s]/
+float = /\d+\.\d+(?=[ \t\r]*[\n#;])/
+int = /\d+(?=[ \t\r]*[\n#;])/
+maybe_bool = /[a-zA-Z]+(?=[ \t\r]*[\n#;])/
+naked_string = /[^\n]+?(?=[ \t\r]*\n)/
+*/
+
+/*!lex2php
+%statename START
+
+commentstart {
+ $this->token = Smarty_Internal_Configfileparser::TPC_COMMENTSTART;
+ $this->yypushstate(self::COMMENT);
+}
+openB {
+ $this->token = Smarty_Internal_Configfileparser::TPC_OPENB;
+ $this->yypushstate(self::SECTION);
+}
+closeB {
+ $this->token = Smarty_Internal_Configfileparser::TPC_CLOSEB;
+}
+equal {
+ $this->token = Smarty_Internal_Configfileparser::TPC_EQUAL;
+ $this->yypushstate(self::VALUE);
+}
+whitespace {
+ return false;
+}
+newline {
+ $this->token = Smarty_Internal_Configfileparser::TPC_NEWLINE;
+}
+id {
+ $this->token = Smarty_Internal_Configfileparser::TPC_ID;
+}
+text {
+ $this->token = Smarty_Internal_Configfileparser::TPC_OTHER;
+}
+
+*/
+
+/*!lex2php
+%statename VALUE
+
+whitespace {
+ return false;
+}
+float {
+ $this->token = Smarty_Internal_Configfileparser::TPC_FLOAT;
+ $this->yypopstate();
+}
+int {
+ $this->token = Smarty_Internal_Configfileparser::TPC_INT;
+ $this->yypopstate();
+}
+tripple_quotes {
+ $this->token = Smarty_Internal_Configfileparser::TPC_TRIPPLE_QUOTES;
+ $this->yypushstate(self::TRIPPLE);
+}
+single_quoted_string {
+ $this->token = Smarty_Internal_Configfileparser::TPC_SINGLE_QUOTED_STRING;
+ $this->yypopstate();
+}
+double_quoted_string {
+ $this->token = Smarty_Internal_Configfileparser::TPC_DOUBLE_QUOTED_STRING;
+ $this->yypopstate();
+}
+maybe_bool {
+ if (!$this->configBooleanize || !in_array(strtolower($this->value), array('true', 'false', 'on', 'off', 'yes', 'no')) ) {
+ $this->yypopstate();
+ $this->yypushstate(self::NAKED_STRING_VALUE);
+ return true; //reprocess in new state
+ } else {
+ $this->token = Smarty_Internal_Configfileparser::TPC_BOOL;
+ $this->yypopstate();
+ }
+}
+naked_string {
+ $this->token = Smarty_Internal_Configfileparser::TPC_NAKED_STRING;
+ $this->yypopstate();
+}
+newline {
+ $this->token = Smarty_Internal_Configfileparser::TPC_NAKED_STRING;
+ $this->value = '';
+ $this->yypopstate();
+}
+
+*/
+
+/*!lex2php
+%statename NAKED_STRING_VALUE
+
+naked_string {
+ $this->token = Smarty_Internal_Configfileparser::TPC_NAKED_STRING;
+ $this->yypopstate();
+}
+
+*/
+
+/*!lex2php
+%statename COMMENT
+
+whitespace {
+ return false;
+}
+naked_string {
+ $this->token = Smarty_Internal_Configfileparser::TPC_NAKED_STRING;
+}
+newline {
+ $this->token = Smarty_Internal_Configfileparser::TPC_NEWLINE;
+ $this->yypopstate();
+}
+
+*/
+
+/*!lex2php
+%statename SECTION
+
+dot {
+ $this->token = Smarty_Internal_Configfileparser::TPC_DOT;
+}
+section {
+ $this->token = Smarty_Internal_Configfileparser::TPC_SECTION;
+ $this->yypopstate();
+}
+
+*/
+/*!lex2php
+%statename TRIPPLE
+
+tripple_quotes_end {
+ $this->token = Smarty_Internal_Configfileparser::TPC_TRIPPLE_QUOTES_END;
+ $this->yypopstate();
+ $this->yypushstate(self::START);
+}
+text {
+ $to = strlen($this->data);
+ preg_match("/\"\"\"[ \t\r]*[\n#;]/",$this->data,$match,PREG_OFFSET_CAPTURE,$this->counter);
+ if (isset($match[0][1])) {
+ $to = $match[0][1];
+ } else {
+ $this->compiler->trigger_config_file_error ('missing or misspelled literal closing tag');
+ }
+ $this->value = substr($this->data,$this->counter,$to-$this->counter);
+ $this->token = Smarty_Internal_Configfileparser::TPC_TRIPPLE_TEXT;
+}
+*/
+
+}
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/lexer/smarty_internal_configfileparser.y b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/lexer/smarty_internal_configfileparser.y
new file mode 100644
index 000000000..c981b58e9
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/lexer/smarty_internal_configfileparser.y
@@ -0,0 +1,346 @@
+/**
+* Smarty Internal Plugin Configfileparser
+*
+* This is the config file parser
+*
+*
+* @package Smarty
+* @subpackage Config
+* @author Uwe Tews
+*/
+%name TPC_
+%declare_class {
+/**
+* Smarty Internal Plugin Configfileparse
+*
+* This is the config file parser.
+* It is generated from the smarty_internal_configfileparser.y file
+* @package Smarty
+* @subpackage Compiler
+* @author Uwe Tews
+*/
+class Smarty_Internal_Configfileparser
+}
+%include_class
+{
+ /**
+ * result status
+ *
+ * @var bool
+ */
+ public $successful = true;
+ /**
+ * return value
+ *
+ * @var mixed
+ */
+ public $retvalue = 0;
+ /**
+ * @var
+ */
+ public $yymajor;
+ /**
+ * lexer object
+ *
+ * @var Smarty_Internal_Configfilelexer
+ */
+ private $lex;
+ /**
+ * internal error flag
+ *
+ * @var bool
+ */
+ private $internalError = false;
+ /**
+ * compiler object
+ *
+ * @var Smarty_Internal_Config_File_Compiler
+ */
+ public $compiler = null;
+ /**
+ * smarty object
+ *
+ * @var Smarty
+ */
+ public $smarty = null;
+ /**
+ * copy of config_overwrite property
+ *
+ * @var bool
+ */
+ private $configOverwrite = false;
+ /**
+ * copy of config_read_hidden property
+ *
+ * @var bool
+ */
+ private $configReadHidden = false;
+ /**
+ * helper map
+ *
+ * @var array
+ */
+ private static $escapes_single = array('\\' => '\\',
+ '\'' => '\'');
+
+ /**
+ * constructor
+ *
+ * @param Smarty_Internal_Configfilelexer $lex
+ * @param Smarty_Internal_Config_File_Compiler $compiler
+ */
+ public function __construct(Smarty_Internal_Configfilelexer $lex, Smarty_Internal_Config_File_Compiler $compiler)
+ {
+ $this->lex = $lex;
+ $this->smarty = $compiler->smarty;
+ $this->compiler = $compiler;
+ $this->configOverwrite = $this->smarty->config_overwrite;
+ $this->configReadHidden = $this->smarty->config_read_hidden;
+ }
+
+ /**
+ * parse optional boolean keywords
+ *
+ * @param string $str
+ *
+ * @return bool
+ */
+ private function parse_bool($str)
+ {
+ $str = strtolower($str);
+ if (in_array($str, array('on', 'yes', 'true'))) {
+ $res = true;
+ } else {
+ $res = false;
+ }
+ return $res;
+ }
+
+ /**
+ * parse single quoted string
+ * remove outer quotes
+ * unescape inner quotes
+ *
+ * @param string $qstr
+ *
+ * @return string
+ */
+ private static function parse_single_quoted_string($qstr)
+ {
+ $escaped_string = substr($qstr, 1, strlen($qstr) - 2); //remove outer quotes
+
+ $ss = preg_split('/(\\\\.)/', $escaped_string, - 1, PREG_SPLIT_DELIM_CAPTURE);
+
+ $str = '';
+ foreach ($ss as $s) {
+ if (strlen($s) === 2 && $s[0] === '\\') {
+ if (isset(self::$escapes_single[$s[1]])) {
+ $s = self::$escapes_single[$s[1]];
+ }
+ }
+ $str .= $s;
+ }
+ return $str;
+ }
+
+ /**
+ * parse double quoted string
+ *
+ * @param string $qstr
+ *
+ * @return string
+ */
+ private static function parse_double_quoted_string($qstr)
+ {
+ $inner_str = substr($qstr, 1, strlen($qstr) - 2);
+ return stripcslashes($inner_str);
+ }
+
+ /**
+ * parse triple quoted string
+ *
+ * @param string $qstr
+ *
+ * @return string
+ */
+ private static function parse_tripple_double_quoted_string($qstr)
+ {
+ return stripcslashes($qstr);
+ }
+
+ /**
+ * set a config variable in target array
+ *
+ * @param array $var
+ * @param array $target_array
+ */
+ private function set_var(array $var, array &$target_array)
+ {
+ $key = $var['key'];
+ $value = $var['value'];
+
+ if ($this->configOverwrite || !isset($target_array['vars'][$key])) {
+ $target_array['vars'][$key] = $value;
+ } else {
+ settype($target_array['vars'][$key], 'array');
+ $target_array['vars'][$key][] = $value;
+ }
+ }
+
+ /**
+ * add config variable to global vars
+ *
+ * @param array $vars
+ */
+ private function add_global_vars(array $vars)
+ {
+ if (!isset($this->compiler->config_data['vars'])) {
+ $this->compiler->config_data['vars'] = array();
+ }
+ foreach ($vars as $var) {
+ $this->set_var($var, $this->compiler->config_data);
+ }
+ }
+
+ /**
+ * add config variable to section
+ *
+ * @param string $section_name
+ * @param array $vars
+ */
+ private function add_section_vars($section_name, array $vars)
+ {
+ if (!isset($this->compiler->config_data['sections'][$section_name]['vars'])) {
+ $this->compiler->config_data['sections'][$section_name]['vars'] = array();
+ }
+ foreach ($vars as $var) {
+ $this->set_var($var, $this->compiler->config_data['sections'][$section_name]);
+ }
+ }
+}
+
+%token_prefix TPC_
+
+%parse_accept
+{
+ $this->successful = !$this->internalError;
+ $this->internalError = false;
+ $this->retvalue = $this->_retvalue;
+}
+
+%syntax_error
+{
+ $this->internalError = true;
+ $this->yymajor = $yymajor;
+ $this->compiler->trigger_config_file_error();
+}
+
+%stack_overflow
+{
+ $this->internalError = true;
+ $this->compiler->trigger_config_file_error('Stack overflow in configfile parser');
+}
+
+// Complete config file
+start(res) ::= global_vars sections. {
+ res = null;
+}
+
+// Global vars
+global_vars(res) ::= var_list(vl). {
+ $this->add_global_vars(vl);
+ res = null;
+}
+
+// Sections
+sections(res) ::= sections section. {
+ res = null;
+}
+
+sections(res) ::= . {
+ res = null;
+}
+
+section(res) ::= OPENB SECTION(i) CLOSEB newline var_list(vars). {
+ $this->add_section_vars(i, vars);
+ res = null;
+}
+
+section(res) ::= OPENB DOT SECTION(i) CLOSEB newline var_list(vars). {
+ if ($this->configReadHidden) {
+ $this->add_section_vars(i, vars);
+ }
+ res = null;
+}
+
+// Var list
+var_list(res) ::= var_list(vl) newline. {
+ res = vl;
+}
+
+var_list(res) ::= var_list(vl) var(v). {
+ res = array_merge(vl, array(v));
+}
+
+var_list(res) ::= . {
+ res = array();
+}
+
+
+// Var
+var(res) ::= ID(id) EQUAL value(v). {
+ res = array('key' => id, 'value' => v);
+}
+
+
+value(res) ::= FLOAT(i). {
+ res = (float) i;
+}
+
+value(res) ::= INT(i). {
+ res = (int) i;
+}
+
+value(res) ::= BOOL(i). {
+ res = $this->parse_bool(i);
+}
+
+value(res) ::= SINGLE_QUOTED_STRING(i). {
+ res = self::parse_single_quoted_string(i);
+}
+
+value(res) ::= DOUBLE_QUOTED_STRING(i). {
+ res = self::parse_double_quoted_string(i);
+}
+
+value(res) ::= TRIPPLE_QUOTES(i) TRIPPLE_TEXT(c) TRIPPLE_QUOTES_END(ii). {
+ res = self::parse_tripple_double_quoted_string(c);
+}
+
+value(res) ::= TRIPPLE_QUOTES(i) TRIPPLE_QUOTES_END(ii). {
+ res = '';
+}
+
+value(res) ::= NAKED_STRING(i). {
+ res = i;
+}
+
+// NOTE: this is not a valid rule
+// It is added hier to produce a usefull error message on a missing '=';
+value(res) ::= OTHER(i). {
+ res = i;
+}
+
+
+// Newline and comments
+newline(res) ::= NEWLINE. {
+ res = null;
+}
+
+newline(res) ::= COMMENTSTART NEWLINE. {
+ res = null;
+}
+
+newline(res) ::= COMMENTSTART NAKED_STRING NEWLINE. {
+ res = null;
+}
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/lexer/smarty_internal_templatelexer.plex b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/lexer/smarty_internal_templatelexer.plex
new file mode 100644
index 000000000..2cd46df97
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/lexer/smarty_internal_templatelexer.plex
@@ -0,0 +1,687 @@
+
+ */
+class Smarty_Internal_Templatelexer
+{
+ /**
+ * Source
+ *
+ * @var string
+ */
+ public $data;
+
+ /**
+ * Source length
+ *
+ * @var int
+ */
+ public $dataLength = null;
+
+ /**
+ * byte counter
+ *
+ * @var int
+ */
+ public $counter;
+
+ /**
+ * token number
+ *
+ * @var int
+ */
+ public $token;
+
+ /**
+ * token value
+ *
+ * @var string
+ */
+ public $value;
+
+ /**
+ * current line
+ *
+ * @var int
+ */
+ public $line;
+
+ /**
+ * tag start line
+ *
+ * @var
+ */
+ public $taglineno;
+
+ /**
+ * php code type
+ *
+ * @var string
+ */
+ public $phpType = '';
+
+ /**
+ * state number
+ *
+ * @var int
+ */
+ public $state = 1;
+
+ /**
+ * Smarty object
+ *
+ * @var Smarty
+ */
+ public $smarty = null;
+
+ /**
+ * compiler object
+ *
+ * @var Smarty_Internal_TemplateCompilerBase
+ */
+ public $compiler = null;
+
+ /**
+ * trace file
+ *
+ * @var resource
+ */
+ public $yyTraceFILE;
+
+ /**
+ * trace prompt
+ *
+ * @var string
+ */
+ public $yyTracePrompt;
+
+ /**
+ * XML flag true while processing xml
+ *
+ * @var bool
+ */
+ public $is_xml = false;
+
+ /**
+ * state names
+ *
+ * @var array
+ */
+ public $state_name = array(1 => 'TEXT', 2 => 'TAG', 3 => 'TAGBODY', 4 => 'LITERAL', 5 => 'DOUBLEQUOTEDSTRING',);
+
+ /**
+ * token names
+ *
+ * @var array
+ */
+ public $smarty_token_names = array( // Text for parser error messages
+ 'NOT' => '(!,not)',
+ 'OPENP' => '(',
+ 'CLOSEP' => ')',
+ 'OPENB' => '[',
+ 'CLOSEB' => ']',
+ 'PTR' => '->',
+ 'APTR' => '=>',
+ 'EQUAL' => '=',
+ 'NUMBER' => 'number',
+ 'UNIMATH' => '+" , "-',
+ 'MATH' => '*" , "/" , "%',
+ 'INCDEC' => '++" , "--',
+ 'SPACE' => ' ',
+ 'DOLLAR' => '$',
+ 'SEMICOLON' => ';',
+ 'COLON' => ':',
+ 'DOUBLECOLON' => '::',
+ 'AT' => '@',
+ 'HATCH' => '#',
+ 'QUOTE' => '"',
+ 'BACKTICK' => '`',
+ 'VERT' => '"|" modifier',
+ 'DOT' => '.',
+ 'COMMA' => '","',
+ 'QMARK' => '"?"',
+ 'ID' => 'id, name',
+ 'TEXT' => 'text',
+ 'LDELSLASH' => '{/..} closing tag',
+ 'LDEL' => '{...} Smarty tag',
+ 'COMMENT' => 'comment',
+ 'AS' => 'as',
+ 'TO' => 'to',
+ 'LOGOP' => '"<", "==" ... logical operator',
+ 'TLOGOP' => '"lt", "eq" ... logical operator; "is div by" ... if condition',
+ 'SCOND' => '"is even" ... if condition',
+ );
+
+ /**
+ * literal tag nesting level
+ *
+ * @var int
+ */
+ private $literal_cnt = 0;
+
+ /**
+ * preg token pattern for state TEXT
+ *
+ * @var string
+ */
+ private $yy_global_pattern1 = null;
+
+ /**
+ * preg token pattern for state TAG
+ *
+ * @var string
+ */
+ private $yy_global_pattern2 = null;
+
+ /**
+ * preg token pattern for state TAGBODY
+ *
+ * @var string
+ */
+ private $yy_global_pattern3 = null;
+
+ /**
+ * preg token pattern for state LITERAL
+ *
+ * @var string
+ */
+ private $yy_global_pattern4 = null;
+
+ /**
+ * preg token pattern for state DOUBLEQUOTEDSTRING
+ *
+ * @var null
+ */
+ private $yy_global_pattern5 = null;
+
+ /**
+ * preg token pattern for text
+ *
+ * @var null
+ */
+ private $yy_global_text = null;
+
+ /**
+ * preg token pattern for literal
+ *
+ * @var null
+ */
+ private $yy_global_literal = null;
+
+ /**
+ * constructor
+ *
+ * @param string $source template source
+ * @param Smarty_Internal_TemplateCompilerBase $compiler
+ */
+ public function __construct($source, Smarty_Internal_TemplateCompilerBase $compiler)
+ {
+ $this->data = $source;
+ $this->dataLength = strlen($this->data);
+ $this->counter = 0;
+ if (preg_match('/^\xEF\xBB\xBF/i', $this->data, $match)) {
+ $this->counter += strlen($match[0]);
+ }
+ $this->line = 1;
+ $this->smarty = $compiler->template->smarty;
+ $this->compiler = $compiler;
+ $this->compiler->initDelimiterPreg();
+ $this->smarty_token_names['LDEL'] = $this->smarty->getLeftDelimiter();
+ $this->smarty_token_names['RDEL'] = $this->smarty->getRightDelimiter();
+ }
+
+ /**
+ * open lexer/parser trace file
+ *
+ */
+ public function PrintTrace()
+ {
+ $this->yyTraceFILE = fopen('php://output', 'w');
+ $this->yyTracePrompt = ' ';
+ }
+
+ /**
+ * replace placeholders with runtime preg code
+ *
+ * @param string $preg
+ *
+ * @return string
+ */
+ public function replace($preg)
+ {
+ return $this->compiler->replaceDelimiter($preg);
+ }
+
+ /**
+ * check if current value is an autoliteral left delimiter
+ *
+ * @return bool
+ */
+ public function isAutoLiteral()
+ {
+ return $this->smarty->getAutoLiteral() && isset($this->value[ $this->compiler->getLdelLength() ]) ?
+ strpos(" \n\t\r", $this->value[ $this->compiler->getLdelLength() ]) !== false : false;
+ }
+
+ /*!lex2php
+ %input $this->data
+ %counter $this->counter
+ %token $this->token
+ %value $this->value
+ %line $this->line
+ userliteral = ~(SMARTYldel)SMARTYautoliteral\s+SMARTYliteral~
+ char = ~[\S\s]~
+ textdoublequoted = ~([^"\\]*?)((?:\\.[^"\\]*?)*?)(?=((SMARTYldel)SMARTYal|\$|`\$|"SMARTYliteral))~
+ namespace = ~([0-9]*[a-zA-Z_]\w*)?(\\[0-9]*[a-zA-Z_]\w*)+~
+ emptyjava = ~[{][}]~
+ slash = ~[/]~
+ ldel = ~(SMARTYldel)SMARTYal~
+ rdel = ~\s*SMARTYrdel~
+ nocacherdel = ~(\s+nocache)?\s*SMARTYrdel~
+ smartyblockchildparent = ~[\$]smarty\.block\.(child|parent)~
+ integer = ~\d+~
+ hex = ~0[xX][0-9a-fA-F]+~
+ math = ~\s*([*]{1,2}|[%/^&]|[<>]{2})\s*~
+ comment = ~(SMARTYldel)SMARTYal[*]~
+ incdec = ~([+]|[-]){2}~
+ unimath = ~\s*([+]|[-])\s*~
+ openP = ~\s*[(]\s*~
+ closeP = ~\s*[)]~
+ openB = ~\[\s*~
+ closeB = ~\s*\]~
+ dollar = ~[$]~
+ dot = ~[.]~
+ comma = ~\s*[,]\s*~
+ doublecolon = ~[:]{2}~
+ colon = ~\s*[:]\s*~
+ at = ~[@]~
+ hatch = ~[#]~
+ semicolon = ~\s*[;]\s*~
+ equal = ~\s*[=]\s*~
+ space = ~\s+~
+ ptr = ~\s*[-][>]\s*~
+ aptr = ~\s*[=][>]\s*~
+ singlequotestring = ~'[^'\\]*(?:\\.[^'\\]*)*'~
+ backtick = ~[`]~
+ vert = ~[|][@]?~
+ qmark = ~\s*[?]\s*~
+ constant = ~[_]+[A-Z0-9][0-9A-Z_]*|[A-Z][0-9A-Z_]*(?![0-9A-Z_]*[a-z])~
+ attr = ~\s+[0-9]*[a-zA-Z_][a-zA-Z0-9_\-:]*\s*[=]\s*~
+ id = ~[0-9]*[a-zA-Z_]\w*~
+ literal = ~literal~
+ strip = ~strip~
+ lop = ~\s*([!=][=]{1,2}|[<][=>]?|[>][=]?|[&|]{2})\s*~
+ slop = ~\s+(eq|ne|neq|gt|ge|gte|lt|le|lte|mod|and|or|xor)\s+~
+ tlop = ~\s+is\s+(not\s+)?(odd|even|div)\s+by\s+~
+ scond = ~\s+is\s+(not\s+)?(odd|even)~
+ isin = ~\s+is\s+in\s+~
+ as = ~\s+as\s+~
+ to = ~\s+to\s+~
+ step = ~\s+step\s+~
+ if = ~(if|elseif|else if|while)\s+~
+ for = ~for\s+~
+ makenocache = ~make_nocache\s+~
+ array = ~array~
+ foreach = ~foreach(?![^\s])~
+ setfilter = ~setfilter\s+~
+ instanceof = ~\s+instanceof\s+~
+ not = ~[!]\s*|not\s+~
+ typecast = ~[(](int(eger)?|bool(ean)?|float|double|real|string|binary|array|object)[)]\s*~
+ double_quote = ~["]~
+ */
+ /*!lex2php
+ %statename TEXT
+ emptyjava {
+ $this->token = Smarty_Internal_Templateparser::TP_TEXT;
+ }
+ comment {
+ $to = $this->dataLength;
+ preg_match("/[*]{$this->compiler->getRdelPreg()}[\n]?/",$this->data,$match,PREG_OFFSET_CAPTURE,$this->counter);
+ if (isset($match[0][1])) {
+ $to = $match[0][1] + strlen($match[0][0]);
+ } else {
+ $this->compiler->trigger_template_error ("missing or misspelled comment closing tag '{$this->smarty->getRightDelimiter()}'");
+ }
+ $this->value = substr($this->data,$this->counter,$to-$this->counter);
+ return false;
+ }
+ userliteral {
+ $this->token = Smarty_Internal_Templateparser::TP_TEXT;
+ }
+ ldel literal rdel {
+ $this->token = Smarty_Internal_Templateparser::TP_LITERALSTART;
+ $this->yypushstate(self::LITERAL);
+ }
+ ldel slash literal rdel {
+ $this->token = Smarty_Internal_Templateparser::TP_LITERALEND;
+ $this->yypushstate(self::LITERAL);
+ }
+ ldel {
+ $this->yypushstate(self::TAG);
+ return true;
+ }
+ char {
+ if (!isset($this->yy_global_text)) {
+ $this->yy_global_text = $this->replace('/(SMARTYldel)SMARTYal/isS');
+ }
+ $to = $this->dataLength;
+ preg_match($this->yy_global_text, $this->data,$match,PREG_OFFSET_CAPTURE,$this->counter);
+ if (isset($match[0][1])) {
+ $to = $match[0][1];
+ }
+ $this->value = substr($this->data,$this->counter,$to-$this->counter);
+ $this->token = Smarty_Internal_Templateparser::TP_TEXT;
+ }
+ */
+ /*!lex2php
+ %statename TAG
+ ldel if {
+ $this->token = Smarty_Internal_Templateparser::TP_LDELIF;
+ $this->yybegin(self::TAGBODY);
+ $this->taglineno = $this->line;
+ }
+ ldel for {
+ $this->token = Smarty_Internal_Templateparser::TP_LDELFOR;
+ $this->yybegin(self::TAGBODY);
+ $this->taglineno = $this->line;
+ }
+ ldel foreach {
+ $this->token = Smarty_Internal_Templateparser::TP_LDELFOREACH;
+ $this->yybegin(self::TAGBODY);
+ $this->taglineno = $this->line;
+ }
+ ldel setfilter {
+ $this->token = Smarty_Internal_Templateparser::TP_LDELSETFILTER;
+ $this->yybegin(self::TAGBODY);
+ $this->taglineno = $this->line;
+ }
+ ldel makenocache {
+ $this->token = Smarty_Internal_Templateparser::TP_LDELMAKENOCACHE;
+ $this->yybegin(self::TAGBODY);
+ $this->taglineno = $this->line;
+ }
+ ldel id nocacherdel {
+ $this->yypopstate();
+ $this->token = Smarty_Internal_Templateparser::TP_SIMPLETAG;
+ $this->taglineno = $this->line;
+ }
+ ldel smartyblockchildparent rdel {
+ $this->yypopstate();
+ $this->token = Smarty_Internal_Templateparser::TP_SMARTYBLOCKCHILDPARENT;
+ $this->taglineno = $this->line;
+ }
+ ldel slash id rdel {
+ $this->yypopstate();
+ $this->token = Smarty_Internal_Templateparser::TP_CLOSETAG;
+ $this->taglineno = $this->line;
+ }
+ ldel dollar id nocacherdel {
+ if ($this->_yy_stack[count($this->_yy_stack)-1] === self::TEXT) {
+ $this->yypopstate();
+ $this->token = Smarty_Internal_Templateparser::TP_SIMPELOUTPUT;
+ $this->taglineno = $this->line;
+ } else {
+ $this->value = $this->smarty->getLeftDelimiter();
+ $this->token = Smarty_Internal_Templateparser::TP_LDEL;
+ $this->yybegin(self::TAGBODY);
+ $this->taglineno = $this->line;
+ }
+ }
+ ldel slash {
+ $this->token = Smarty_Internal_Templateparser::TP_LDELSLASH;
+ $this->yybegin(self::TAGBODY);
+ $this->taglineno = $this->line;
+ }
+ ldel {
+ $this->token = Smarty_Internal_Templateparser::TP_LDEL;
+ $this->yybegin(self::TAGBODY);
+ $this->taglineno = $this->line;
+ }
+ */
+ /*!lex2php
+ %statename TAGBODY
+ rdel {
+ $this->token = Smarty_Internal_Templateparser::TP_RDEL;
+ $this->yypopstate();
+ }
+ ldel {
+ $this->yypushstate(self::TAG);
+ return true;
+ }
+ double_quote {
+ $this->token = Smarty_Internal_Templateparser::TP_QUOTE;
+ $this->yypushstate(self::DOUBLEQUOTEDSTRING);
+ $this->compiler->enterDoubleQuote();
+ }
+ singlequotestring {
+ $this->token = Smarty_Internal_Templateparser::TP_SINGLEQUOTESTRING;
+ }
+ dollar id {
+ $this->token = Smarty_Internal_Templateparser::TP_DOLLARID;
+ }
+ dollar {
+ $this->token = Smarty_Internal_Templateparser::TP_DOLLAR;
+ }
+ isin {
+ $this->token = Smarty_Internal_Templateparser::TP_ISIN;
+ }
+ as {
+ $this->token = Smarty_Internal_Templateparser::TP_AS;
+ }
+ to {
+ $this->token = Smarty_Internal_Templateparser::TP_TO;
+ }
+ step {
+ $this->token = Smarty_Internal_Templateparser::TP_STEP;
+ }
+ instanceof {
+ $this->token = Smarty_Internal_Templateparser::TP_INSTANCEOF;
+ }
+ lop {
+ $this->token = Smarty_Internal_Templateparser::TP_LOGOP;
+ }
+ slop {
+ $this->token = Smarty_Internal_Templateparser::TP_SLOGOP;
+ }
+ tlop {
+ $this->token = Smarty_Internal_Templateparser::TP_TLOGOP;
+ }
+ scond {
+ $this->token = Smarty_Internal_Templateparser::TP_SINGLECOND;
+ }
+ not{
+ $this->token = Smarty_Internal_Templateparser::TP_NOT;
+ }
+ typecast {
+ $this->token = Smarty_Internal_Templateparser::TP_TYPECAST;
+ }
+ openP {
+ $this->token = Smarty_Internal_Templateparser::TP_OPENP;
+ }
+ closeP {
+ $this->token = Smarty_Internal_Templateparser::TP_CLOSEP;
+ }
+ openB {
+ $this->token = Smarty_Internal_Templateparser::TP_OPENB;
+ }
+ closeB {
+ $this->token = Smarty_Internal_Templateparser::TP_CLOSEB;
+ }
+ ptr {
+ $this->token = Smarty_Internal_Templateparser::TP_PTR;
+ }
+ aptr {
+ $this->token = Smarty_Internal_Templateparser::TP_APTR;
+ }
+ equal {
+ $this->token = Smarty_Internal_Templateparser::TP_EQUAL;
+ }
+ incdec {
+ $this->token = Smarty_Internal_Templateparser::TP_INCDEC;
+ }
+ unimath {
+ $this->token = Smarty_Internal_Templateparser::TP_UNIMATH;
+ }
+ math {
+ $this->token = Smarty_Internal_Templateparser::TP_MATH;
+ }
+ at {
+ $this->token = Smarty_Internal_Templateparser::TP_AT;
+ }
+ array openP {
+ $this->token = Smarty_Internal_Templateparser::TP_ARRAYOPEN;
+ }
+ hatch {
+ $this->token = Smarty_Internal_Templateparser::TP_HATCH;
+ }
+ attr {
+ // resolve conflicts with shorttag and right_delimiter starting with '='
+ if (substr($this->data, $this->counter + strlen($this->value) - 1, $this->compiler->getRdelLength()) === $this->smarty->getRightDelimiter()) {
+ preg_match('/\s+/',$this->value,$match);
+ $this->value = $match[0];
+ $this->token = Smarty_Internal_Templateparser::TP_SPACE;
+ } else {
+ $this->token = Smarty_Internal_Templateparser::TP_ATTR;
+ }
+ }
+ namespace {
+ $this->token = Smarty_Internal_Templateparser::TP_NAMESPACE;
+ }
+ id {
+ $this->token = Smarty_Internal_Templateparser::TP_ID;
+ }
+ integer {
+ $this->token = Smarty_Internal_Templateparser::TP_INTEGER;
+ }
+ backtick {
+ $this->token = Smarty_Internal_Templateparser::TP_BACKTICK;
+ $this->yypopstate();
+ }
+ vert {
+ $this->token = Smarty_Internal_Templateparser::TP_VERT;
+ }
+ dot {
+ $this->token = Smarty_Internal_Templateparser::TP_DOT;
+ }
+ comma {
+ $this->token = Smarty_Internal_Templateparser::TP_COMMA;
+ }
+ semicolon {
+ $this->token = Smarty_Internal_Templateparser::TP_SEMICOLON;
+ }
+ doublecolon {
+ $this->token = Smarty_Internal_Templateparser::TP_DOUBLECOLON;
+ }
+ colon {
+ $this->token = Smarty_Internal_Templateparser::TP_COLON;
+ }
+ qmark {
+ $this->token = Smarty_Internal_Templateparser::TP_QMARK;
+ }
+ hex {
+ $this->token = Smarty_Internal_Templateparser::TP_HEX;
+ }
+ space {
+ $this->token = Smarty_Internal_Templateparser::TP_SPACE;
+ }
+ char {
+ $this->token = Smarty_Internal_Templateparser::TP_TEXT;
+ }
+ */
+
+ /*!lex2php
+ %statename LITERAL
+ ldel literal rdel {
+ $this->literal_cnt++;
+ $this->token = Smarty_Internal_Templateparser::TP_LITERAL;
+ }
+ ldel slash literal rdel {
+ if ($this->literal_cnt) {
+ $this->literal_cnt--;
+ $this->token = Smarty_Internal_Templateparser::TP_LITERAL;
+ } else {
+ $this->token = Smarty_Internal_Templateparser::TP_LITERALEND;
+ $this->yypopstate();
+ }
+ }
+ char {
+ if (!isset($this->yy_global_literal)) {
+ $this->yy_global_literal = $this->replace('/(SMARTYldel)SMARTYal[\/]?literalSMARTYrdel/isS');
+ }
+ $to = $this->dataLength;
+ preg_match($this->yy_global_literal, $this->data,$match,PREG_OFFSET_CAPTURE,$this->counter);
+ if (isset($match[0][1])) {
+ $to = $match[0][1];
+ } else {
+ $this->compiler->trigger_template_error ("missing or misspelled literal closing tag");
+ }
+ $this->value = substr($this->data,$this->counter,$to-$this->counter);
+ $this->token = Smarty_Internal_Templateparser::TP_LITERAL;
+ }
+ */
+ /*!lex2php
+ %statename DOUBLEQUOTEDSTRING
+ userliteral {
+ $this->token = Smarty_Internal_Templateparser::TP_TEXT;
+ }
+ ldel literal rdel {
+ $this->token = Smarty_Internal_Templateparser::TP_TEXT;
+ }
+ ldel slash literal rdel {
+ $this->token = Smarty_Internal_Templateparser::TP_TEXT;
+ }
+ ldel slash {
+ $this->yypushstate(self::TAG);
+ return true;
+ }
+ ldel id {
+ $this->yypushstate(self::TAG);
+ return true;
+ }
+ ldel {
+ $this->token = Smarty_Internal_Templateparser::TP_LDEL;
+ $this->taglineno = $this->line;
+ $this->yypushstate(self::TAGBODY);
+ }
+ double_quote {
+ $this->token = Smarty_Internal_Templateparser::TP_QUOTE;
+ $this->yypopstate();
+ }
+ backtick dollar {
+ $this->token = Smarty_Internal_Templateparser::TP_BACKTICK;
+ $this->value = substr($this->value,0,-1);
+ $this->yypushstate(self::TAGBODY);
+ $this->taglineno = $this->line;
+ }
+ dollar id {
+ $this->token = Smarty_Internal_Templateparser::TP_DOLLARID;
+ }
+ dollar {
+ $this->token = Smarty_Internal_Templateparser::TP_TEXT;
+ }
+ textdoublequoted {
+ $this->token = Smarty_Internal_Templateparser::TP_TEXT;
+ }
+ char {
+ $to = $this->dataLength;
+ $this->value = substr($this->data,$this->counter,$to-$this->counter);
+ $this->token = Smarty_Internal_Templateparser::TP_TEXT;
+ }
+ */
+ }
+
+
\ No newline at end of file
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/lexer/smarty_internal_templateparser.y b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/lexer/smarty_internal_templateparser.y
new file mode 100644
index 000000000..ffc85bc06
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/lexer/smarty_internal_templateparser.y
@@ -0,0 +1,1272 @@
+/*
+ * This file is part of Smarty.
+ *
+ * (c) 2015 Uwe Tews
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+%stack_size 500
+%name TP_
+%declare_class {
+/**
+* Smarty Template Parser Class
+*
+* This is the template parser.
+* It is generated from the smarty_internal_templateparser.y file
+*
+* @author Uwe Tews
+*/
+class Smarty_Internal_Templateparser
+}
+%include_class
+{
+ const ERR1 = 'Security error: Call to private object member not allowed';
+ const ERR2 = 'Security error: Call to dynamic object member not allowed';
+
+ /**
+ * result status
+ *
+ * @var bool
+ */
+ public $successful = true;
+
+ /**
+ * return value
+ *
+ * @var mixed
+ */
+ public $retvalue = 0;
+
+ /**
+ * @var
+ */
+ public $yymajor;
+
+ /**
+ * last index of array variable
+ *
+ * @var mixed
+ */
+ public $last_index;
+
+ /**
+ * last variable name
+ *
+ * @var string
+ */
+ public $last_variable;
+
+ /**
+ * root parse tree buffer
+ *
+ * @var Smarty_Internal_ParseTree_Template
+ */
+ public $root_buffer;
+
+ /**
+ * current parse tree object
+ *
+ * @var Smarty_Internal_ParseTree
+ */
+ public $current_buffer;
+
+ /**
+ * lexer object
+ *
+ * @var Smarty_Internal_Templatelexer
+ */
+ public $lex;
+
+ /**
+ * internal error flag
+ *
+ * @var bool
+ */
+ private $internalError = false;
+
+ /**
+ * {strip} status
+ *
+ * @var bool
+ */
+ public $strip = false;
+ /**
+ * compiler object
+ *
+ * @var Smarty_Internal_TemplateCompilerBase
+ */
+ public $compiler = null;
+
+ /**
+ * smarty object
+ *
+ * @var Smarty
+ */
+ public $smarty = null;
+
+ /**
+ * template object
+ *
+ * @var Smarty_Internal_Template
+ */
+ public $template = null;
+
+ /**
+ * block nesting level
+ *
+ * @var int
+ */
+ public $block_nesting_level = 0;
+
+ /**
+ * security object
+ *
+ * @var Smarty_Security
+ */
+ public $security = null;
+
+ /**
+ * template prefix array
+ *
+ * @var \Smarty_Internal_ParseTree[]
+ */
+ public $template_prefix = array();
+
+ /**
+ * template prefix array
+ *
+ * @var \Smarty_Internal_ParseTree[]
+ */
+ public $template_postfix = array();
+
+ /**
+ * constructor
+ *
+ * @param Smarty_Internal_Templatelexer $lex
+ * @param Smarty_Internal_TemplateCompilerBase $compiler
+ */
+ public function __construct(Smarty_Internal_Templatelexer $lex, Smarty_Internal_TemplateCompilerBase $compiler)
+ {
+ $this->lex = $lex;
+ $this->compiler = $compiler;
+ $this->template = $this->compiler->template;
+ $this->smarty = $this->template->smarty;
+ $this->security = isset($this->smarty->security_policy) ? $this->smarty->security_policy : false;
+ $this->current_buffer = $this->root_buffer = new Smarty_Internal_ParseTree_Template();
+ }
+
+ /**
+ * insert PHP code in current buffer
+ *
+ * @param string $code
+ */
+ public function insertPhpCode($code)
+ {
+ $this->current_buffer->append_subtree($this, new Smarty_Internal_ParseTree_Tag($this, $code));
+ }
+
+ /**
+ * error rundown
+ *
+ */
+ public function errorRunDown()
+ {
+ while ($this->yystack !== array()) {
+ $this->yy_pop_parser_stack();
+ }
+ if (is_resource($this->yyTraceFILE)) {
+ fclose($this->yyTraceFILE);
+ }
+ }
+
+ /**
+ * merge PHP code with prefix code and return parse tree tag object
+ *
+ * @param string $code
+ *
+ * @return Smarty_Internal_ParseTree_Tag
+ */
+ public function mergePrefixCode($code)
+ {
+ $tmp = '';
+ foreach ($this->compiler->prefix_code as $preCode) {
+ $tmp .= $preCode;
+ }
+ $this->compiler->prefix_code = array();
+ $tmp .= $code;
+ return new Smarty_Internal_ParseTree_Tag($this, $this->compiler->processNocacheCode($tmp, true));
+ }
+
+}
+
+%token_prefix TP_
+
+%parse_accept
+{
+ $this->successful = !$this->internalError;
+ $this->internalError = false;
+ $this->retvalue = $this->_retvalue;
+}
+
+%syntax_error
+{
+ $this->internalError = true;
+ $this->yymajor = $yymajor;
+ $this->compiler->trigger_template_error();
+}
+
+%stack_overflow
+{
+ $this->internalError = true;
+ $this->compiler->trigger_template_error('Stack overflow in template parser');
+}
+
+
+%right VERT.
+%left COLON.
+
+
+ //
+ // complete template
+ //
+start(res) ::= template. {
+ $this->root_buffer->prepend_array($this, $this->template_prefix);
+ $this->root_buffer->append_array($this, $this->template_postfix);
+ res = $this->root_buffer->to_smarty_php($this);
+}
+
+ // template text
+template ::= template TEXT(B). {
+ $text = $this->yystack[ $this->yyidx + 0 ]->minor;
+
+ if ((string)$text == '') {
+ $this->current_buffer->append_subtree($this, null);
+ }
+
+ $this->current_buffer->append_subtree($this, new Smarty_Internal_ParseTree_Text($text, $this->strip));
+}
+ // strip on
+template ::= template STRIPON. {
+ $this->strip = true;
+}
+ // strip off
+template ::= template STRIPOFF. {
+ $this->strip = false;
+}
+
+ // Literal
+template ::= template LITERALSTART literal_e2(B) LITERALEND. {
+ $this->current_buffer->append_subtree($this, new Smarty_Internal_ParseTree_Text(B));
+}
+
+
+literal_e2(A) ::= literal_e1(B) LITERALSTART literal_e1(C) LITERALEND. {
+ A = B.C;
+}
+literal_e2(A) ::= literal_e1(B). {
+ A = B;
+}
+
+literal_e1(A) ::= literal_e1(B) LITERAL(C). {
+ A = B.C;
+
+}
+
+literal_e1(A) ::= . {
+ A = '';
+}
+ // Smarty tag
+template ::= template smartytag(B). {
+ if ($this->compiler->has_code) {
+ $this->current_buffer->append_subtree($this, $this->mergePrefixCode(B));
+ }
+ $this->compiler->has_variable_string = false;
+ $this->block_nesting_level = count($this->compiler->_tag_stack);
+}
+
+
+ // empty template
+template ::= .
+
+smartytag(A) ::= SIMPELOUTPUT(B). {
+ $var = trim(substr(B, $this->compiler->getLdelLength(), -$this->compiler->getRdelLength()), ' $');
+ if (preg_match('/^(.*)(\s+nocache)$/', $var, $match)) {
+ A = $this->compiler->compileTag('private_print_expression',array('nocache'),array('value'=>$this->compiler->compileVariable('\''.$match[1].'\'')));
+ } else {
+ A = $this->compiler->compileTag('private_print_expression',array(),array('value'=>$this->compiler->compileVariable('\''.$var.'\'')));
+ }
+}
+
+// simple tag like {name}
+smartytag(A)::= SIMPLETAG(B). {
+ $tag = trim(substr(B, $this->compiler->getLdelLength(), -$this->compiler->getRdelLength()));
+ if ($tag == 'strip') {
+ $this->strip = true;
+ A = null;
+ } else {
+ if (defined($tag)) {
+ if ($this->security) {
+ $this->security->isTrustedConstant($tag, $this->compiler);
+ }
+ A = $this->compiler->compileTag('private_print_expression',array(),array('value'=>$tag));
+ } else {
+ if (preg_match('/^(.*)(\s+nocache)$/', $tag, $match)) {
+ A = $this->compiler->compileTag($match[1],array('\'nocache\''));
+ } else {
+ A = $this->compiler->compileTag($tag,array());
+ }
+ }
+ }
+}
+ // {$smarty.block.child} or {$smarty.block.parent}
+smartytag(A) ::= SMARTYBLOCKCHILDPARENT(i). {
+ $j = strrpos(i,'.');
+ if (i[$j+1] == 'c') {
+ // {$smarty.block.child}
+ A = $this->compiler->compileTag('child',array(),array(i));
+ } else {
+ // {$smarty.block.parent}
+ A = $this->compiler->compileTag('parent',array(),array(i));
+ }
+}
+
+smartytag(A) ::= LDEL tagbody(B) RDEL. {
+ A = B;
+}
+
+ smartytag(A) ::= tag(B) RDEL. {
+ A = B;
+ }
+ // output with optional attributes
+tagbody(A) ::= outattr(B). {
+ A = $this->compiler->compileTag('private_print_expression',B[1],array('value'=>B[0]));
+}
+
+//
+// Smarty tags start here
+//
+
+ // assign new style
+tagbody(A) ::= DOLLARID(B) eqoutattr(C). {
+ A = $this->compiler->compileTag('assign',array_merge(array(array('value'=>C[0]),array('var'=>'\''.substr(B,1).'\'')),C[1]));
+}
+
+tagbody(A) ::= varindexed(B) eqoutattr(C). {
+ A = $this->compiler->compileTag('assign',array_merge(array(array('value'=>C[0]),array('var'=>B['var'])),C[1]),array('smarty_internal_index'=>B['smarty_internal_index']));
+}
+
+eqoutattr(A) ::= EQUAL outattr(B). {
+ A = B;
+}
+
+outattr(A) ::= output(B) attributes(C). {
+ A = array(B,C);
+}
+
+output(A) ::= variable(B). {
+ A = B;
+}
+output(A) ::= value(B). {
+ A = B;
+}
+output(A) ::= expr(B). {
+ A = B;
+}
+
+ // tag with optional Smarty2 style attributes
+tag(res) ::= LDEL ID(i) attributes(a). {
+ if (defined(i)) {
+ if ($this->security) {
+ $this->security->isTrustedConstant(i, $this->compiler);
+ }
+ res = $this->compiler->compileTag('private_print_expression',a,array('value'=>i));
+ } else {
+ res = $this->compiler->compileTag(i,a);
+ }
+}
+tag(res) ::= LDEL ID(i). {
+ if (defined(i)) {
+ if ($this->security) {
+ $this->security->isTrustedConstant(i, $this->compiler);
+ }
+ res = $this->compiler->compileTag('private_print_expression',array(),array('value'=>i));
+ } else {
+ res = $this->compiler->compileTag(i,array());
+ }
+}
+
+
+ // tag with modifier and optional Smarty2 style attributes
+tag(res) ::= LDEL ID(i) modifierlist(l)attributes(a). {
+ if (defined(i)) {
+ if ($this->security) {
+ $this->security->isTrustedConstant(i, $this->compiler);
+ }
+ res = $this->compiler->compileTag('private_print_expression',a,array('value'=>i, 'modifierlist'=>l));
+ } else {
+ res = $this->compiler->compileTag(i,a, array('modifierlist'=>l));
+ }
+}
+
+ // registered object tag
+tag(res) ::= LDEL ID(i) PTR ID(m) attributes(a). {
+ res = $this->compiler->compileTag(i,a,array('object_method'=>m));
+}
+
+ // registered object tag with modifiers
+tag(res) ::= LDEL ID(i) PTR ID(me) modifierlist(l) attributes(a). {
+ res = $this->compiler->compileTag(i,a,array('modifierlist'=>l, 'object_method'=>me));
+}
+
+ // nocache tag
+tag(res) ::= LDELMAKENOCACHE DOLLARID(i). {
+ res = $this->compiler->compileTag('make_nocache',array(array('var'=>'\''.substr(i,1).'\'')));
+}
+
+ // {if}, {elseif} and {while} tag
+tag(res) ::= LDELIF(i) expr(ie). {
+ $tag = trim(substr(i,$this->compiler->getLdelLength()));
+ res = $this->compiler->compileTag(($tag === 'else if')? 'elseif' : $tag,array(),array('if condition'=>ie));
+}
+
+tag(res) ::= LDELIF(i) expr(ie) attributes(a). {
+ $tag = trim(substr(i,$this->compiler->getLdelLength()));
+ res = $this->compiler->compileTag(($tag === 'else if')? 'elseif' : $tag,a,array('if condition'=>ie));
+}
+
+tag(res) ::= LDELIF(i) statement(ie). {
+ $tag = trim(substr(i,$this->compiler->getLdelLength()));
+ res = $this->compiler->compileTag(($tag === 'else if')? 'elseif' : $tag,array(),array('if condition'=>ie));
+}
+
+tag(res) ::= LDELIF(i) statement(ie) attributes(a). {
+ $tag = trim(substr(i,$this->compiler->getLdelLength()));
+ res = $this->compiler->compileTag(($tag === 'else if')? 'elseif' : $tag,a,array('if condition'=>ie));
+}
+
+ // {for} tag
+tag(res) ::= LDELFOR statements(st) SEMICOLON expr(ie) SEMICOLON varindexed(v2) foraction(e2) attributes(a). {
+ res = $this->compiler->compileTag('for',array_merge(a,array(array('start'=>st),array('ifexp'=>ie),array('var'=>v2),array('step'=>e2))),1);
+}
+
+ foraction(res) ::= EQUAL expr(e). {
+ res = '='.e;
+}
+
+ foraction(res) ::= INCDEC(e). {
+ res = e;
+}
+
+tag(res) ::= LDELFOR statement(st) TO expr(v) attributes(a). {
+ res = $this->compiler->compileTag('for',array_merge(a,array(array('start'=>st),array('to'=>v))),0);
+}
+
+tag(res) ::= LDELFOR statement(st) TO expr(v) STEP expr(v2) attributes(a). {
+ res = $this->compiler->compileTag('for',array_merge(a,array(array('start'=>st),array('to'=>v),array('step'=>v2))),0);
+}
+
+ // {foreach} tag
+tag(res) ::= LDELFOREACH SPACE expr(e) AS varvar(v0) attributes(a). {
+ res = $this->compiler->compileTag('foreach',array_merge(a,array(array('from'=>e),array('item'=>v0))));
+}
+
+tag(res) ::= LDELFOREACH SPACE expr(e) AS varvar(v1) APTR varvar(v0) attributes(a). {
+ res = $this->compiler->compileTag('foreach',array_merge(a,array(array('from'=>e),array('item'=>v0),array('key'=>v1))));
+}
+tag(res) ::= LDELFOREACH attributes(a). {
+ res = $this->compiler->compileTag('foreach',a);
+}
+
+ // {setfilter}
+tag(res) ::= LDELSETFILTER ID(m) modparameters(p). {
+ res = $this->compiler->compileTag('setfilter',array(),array('modifier_list'=>array(array_merge(array(m),p))));
+}
+
+tag(res) ::= LDELSETFILTER ID(m) modparameters(p) modifierlist(l). {
+ res = $this->compiler->compileTag('setfilter',array(),array('modifier_list'=>array_merge(array(array_merge(array(m),p)),l)));
+}
+
+
+ // end of block tag {/....}
+smartytag(res)::= CLOSETAG(t). {
+ $tag = trim(substr(t, $this->compiler->getLdelLength(), -$this->compiler->getRdelLength()), ' /');
+ if ($tag === 'strip') {
+ $this->strip = false;
+ res = null;
+ } else {
+ res = $this->compiler->compileTag($tag.'close',array());
+ }
+ }
+tag(res) ::= LDELSLASH ID(i). {
+ res = $this->compiler->compileTag(i.'close',array());
+}
+
+tag(res) ::= LDELSLASH ID(i) modifierlist(l). {
+ res = $this->compiler->compileTag(i.'close',array(),array('modifier_list'=>l));
+}
+
+ // end of block object tag {/....}
+tag(res) ::= LDELSLASH ID(i) PTR ID(m). {
+ res = $this->compiler->compileTag(i.'close',array(),array('object_method'=>m));
+}
+
+tag(res) ::= LDELSLASH ID(i) PTR ID(m) modifierlist(l). {
+ res = $this->compiler->compileTag(i.'close',array(),array('object_method'=>m, 'modifier_list'=>l));
+}
+
+//
+//Attributes of Smarty tags
+//
+ // list of attributes
+attributes(res) ::= attributes(a1) attribute(a2). {
+ res = a1;
+ res[] = a2;
+}
+
+ // single attribute
+attributes(res) ::= attribute(a). {
+ res = array(a);
+}
+
+ // no attributes
+attributes(res) ::= . {
+ res = array();
+}
+
+ // attribute
+attribute(res) ::= SPACE ID(v) EQUAL ID(id). {
+ if (defined(id)) {
+ if ($this->security) {
+ $this->security->isTrustedConstant(id, $this->compiler);
+ }
+ res = array(v=>id);
+ } else {
+ res = array(v=>'\''.id.'\'');
+ }
+}
+
+attribute(res) ::= ATTR(v) expr(e). {
+ res = array(trim(v," =\n\r\t")=>e);
+}
+
+attribute(res) ::= ATTR(v) value(e). {
+ res = array(trim(v," =\n\r\t")=>e);
+}
+
+attribute(res) ::= SPACE ID(v). {
+ res = '\''.v.'\'';
+}
+
+attribute(res) ::= SPACE expr(e). {
+ res = e;
+}
+
+attribute(res) ::= SPACE value(v). {
+ res = v;
+}
+
+attribute(res) ::= SPACE INTEGER(i) EQUAL expr(e). {
+ res = array(i=>e);
+}
+
+
+
+//
+// statement
+//
+statements(res) ::= statement(s). {
+ res = array(s);
+}
+
+statements(res) ::= statements(s1) COMMA statement(s). {
+ s1[]=s;
+ res = s1;
+}
+
+statement(res) ::= DOLLARID(i) EQUAL INTEGER(e). {
+ res = array('var' => '\''.substr(i,1).'\'', 'value'=>e);
+}
+statement(res) ::= DOLLARID(i) EQUAL expr(e). {
+ res = array('var' => '\''.substr(i,1).'\'', 'value'=>e);
+}
+
+statement(res) ::= varindexed(vi) EQUAL expr(e). {
+ res = array('var' => vi, 'value'=>e);
+}
+
+statement(res) ::= OPENP statement(st) CLOSEP. {
+ res = st;
+}
+
+
+//
+// expressions
+//
+
+ // single value
+expr(res) ::= value(v). {
+ res = v;
+}
+
+ // ternary
+expr(res) ::= ternary(v). {
+ res = v;
+}
+
+ // resources/streams
+expr(res) ::= DOLLARID(i) COLON ID(i2). {
+ res = '$_smarty_tpl->getStreamVariable(\''.substr(i,1).'://' . i2 . '\')';
+}
+
+ // arithmetic expression
+expr(res) ::= expr(e) MATH(m) value(v). {
+ res = e . trim(m) . v;
+}
+
+expr(res) ::= expr(e) UNIMATH(m) value(v). {
+ res = e . trim(m) . v;
+}
+
+// if expression
+ // special conditions
+expr(res) ::= expr(e1) tlop(c) value(e2). {
+ res = c['pre']. e1.c['op'].e2 .')';
+}
+ // simple expression
+expr(res) ::= expr(e1) lop(c) expr(e2). {
+ res = e1.c.e2;
+}
+
+expr(res) ::= expr(e1) scond(c). {
+ res = c . e1 . ')';
+}
+
+expr(res) ::= expr(e1) ISIN array(a). {
+ res = 'in_array('.e1.','.a.')';
+}
+
+expr(res) ::= expr(e1) ISIN value(v). {
+ res = 'in_array('.e1.',(array)'.v.')';
+}
+
+
+//
+// ternary
+//
+ternary(res) ::= OPENP expr(v) CLOSEP QMARK DOLLARID(e1) COLON expr(e2). {
+ res = v.' ? '. $this->compiler->compileVariable('\''.substr(e1,1).'\'') . ' : '.e2;
+}
+
+ternary(res) ::= OPENP expr(v) CLOSEP QMARK expr(e1) COLON expr(e2). {
+ res = v.' ? '.e1.' : '.e2;
+}
+
+ // value
+value(res) ::= variable(v). {
+ res = v;
+}
+
+ // +/- value
+value(res) ::= UNIMATH(m) value(v). {
+ res = m.v;
+}
+
+ // logical negation
+value(res) ::= NOT value(v). {
+ res = '!'.v;
+}
+
+value(res) ::= TYPECAST(t) value(v). {
+ res = t.v;
+}
+
+value(res) ::= variable(v) INCDEC(o). {
+ res = v.o;
+}
+
+ // numeric
+value(res) ::= HEX(n). {
+ res = n;
+}
+
+value(res) ::= INTEGER(n). {
+ res = n;
+}
+
+value(res) ::= INTEGER(n1) DOT INTEGER(n2). {
+ res = n1.'.'.n2;
+}
+
+value(res) ::= INTEGER(n1) DOT. {
+ res = n1.'.';
+}
+
+value(res) ::= DOT INTEGER(n1). {
+ res = '.'.n1;
+}
+
+ // ID, true, false, null
+value(res) ::= ID(id). {
+ if (defined(id)) {
+ if ($this->security) {
+ $this->security->isTrustedConstant(id, $this->compiler);
+ }
+ res = id;
+ } else {
+ res = '\''.id.'\'';
+ }
+}
+
+ // function call
+value(res) ::= function(f). {
+ res = f;
+}
+
+ // expression
+value(res) ::= OPENP expr(e) CLOSEP. {
+ res = '('. e .')';
+}
+
+value(res) ::= variable(v1) INSTANCEOF(i) ns1(v2). {
+ res = v1.i.v2;
+}
+value(res) ::= variable(v1) INSTANCEOF(i) variable(v2). {
+ res = v1.i.v2;
+}
+
+ // singele quoted string
+value(res) ::= SINGLEQUOTESTRING(t). {
+ res = t;
+}
+
+ // double quoted string
+value(res) ::= doublequoted_with_quotes(s). {
+ res = s;
+}
+
+
+value(res) ::= varindexed(vi) DOUBLECOLON static_class_access(r). {
+ if ($this->security && $this->security->static_classes !== array()) {
+ $this->compiler->trigger_template_error('dynamic static class not allowed by security setting');
+ }
+ $prefixVar = $this->compiler->getNewPrefixVariable();
+ if (vi['var'] === '\'smarty\'') {
+ $this->compiler->appendPrefixCode("compiler->compileTag('private_special_variable',array(),vi['smarty_internal_index']).';?>');
+ } else {
+ $this->compiler->appendPrefixCode("compiler->compileVariable(vi['var']).vi['smarty_internal_index'].';?>');
+ }
+ res = $prefixVar .'::'.r[0].r[1];
+}
+
+ // Smarty tag
+value(res) ::= smartytag(st). {
+ $prefixVar = $this->compiler->getNewPrefixVariable();
+ $tmp = $this->compiler->appendCode('', st);
+ $this->compiler->appendPrefixCode($this->compiler->appendCode($tmp, ""));
+ res = $prefixVar;
+}
+
+value(res) ::= value(v) modifierlist(l). {
+ res = $this->compiler->compileTag('private_modifier',array(),array('value'=>v,'modifierlist'=>l));
+}
+ // name space constant
+value(res) ::= NAMESPACE(c). {
+ res = c;
+}
+
+ // array
+value(res) ::= arraydef(a). {
+ res = a;
+}
+ // static class access
+value(res) ::= ns1(c)DOUBLECOLON static_class_access(s). {
+ if (!in_array(strtolower(c), array('self', 'parent')) && (!$this->security || $this->security->isTrustedStaticClassAccess(c, s, $this->compiler))) {
+ if (isset($this->smarty->registered_classes[c])) {
+ res = $this->smarty->registered_classes[c].'::'.s[0].s[1];
+ } else {
+ trigger_error('Using unregistered static method "' . c.'::'.s[0] . '" in a template is deprecated and will be ' .
+ 'removed in a future release. Use Smarty::registerClass to explicitly register ' .
+ 'a class for access.', E_USER_DEPRECATED);
+ res = c.'::'.s[0].s[1];
+ }
+ } else {
+ $this->compiler->trigger_template_error ('static class \''.c.'\' is undefined or not allowed by security setting');
+ }
+}
+//
+// namespace stuff
+//
+
+ns1(res) ::= ID(i). {
+ res = i;
+}
+
+ns1(res) ::= NAMESPACE(i). {
+ res = i;
+ }
+
+
+
+
+//
+// variables
+//
+ // Smarty variable (optional array)
+variable(res) ::= DOLLARID(i). {
+ res = $this->compiler->compileVariable('\''.substr(i,1).'\'');
+}
+variable(res) ::= varindexed(vi). {
+ if (vi['var'] === '\'smarty\'') {
+ $smarty_var = $this->compiler->compileTag('private_special_variable',array(),vi['smarty_internal_index']);
+ res = $smarty_var;
+ } else {
+ // used for array reset,next,prev,end,current
+ $this->last_variable = vi['var'];
+ $this->last_index = vi['smarty_internal_index'];
+ res = $this->compiler->compileVariable(vi['var']).vi['smarty_internal_index'];
+ }
+}
+
+ // variable with property
+variable(res) ::= varvar(v) AT ID(p). {
+ res = '$_smarty_tpl->tpl_vars['. v .']->'.p;
+}
+
+ // object
+variable(res) ::= object(o). {
+ res = o;
+}
+
+ // config variable
+variable(res) ::= HATCH ID(i) HATCH. {
+ res = $this->compiler->compileConfigVariable('\'' . i . '\'');
+}
+
+variable(res) ::= HATCH ID(i) HATCH arrayindex(a). {
+ res = '(is_array($tmp = ' . $this->compiler->compileConfigVariable('\'' . i . '\'') . ') ? $tmp'.a.' :null)';
+}
+
+variable(res) ::= HATCH variable(v) HATCH. {
+ res = $this->compiler->compileConfigVariable(v);
+}
+
+variable(res) ::= HATCH variable(v) HATCH arrayindex(a). {
+ res = '(is_array($tmp = ' . $this->compiler->compileConfigVariable(v) . ') ? $tmp'.a.' : null)';
+}
+
+varindexed(res) ::= DOLLARID(i) arrayindex(a). {
+ res = array('var'=>'\''.substr(i,1).'\'', 'smarty_internal_index'=>a);
+}
+varindexed(res) ::= varvar(v) arrayindex(a). {
+ res = array('var'=>v, 'smarty_internal_index'=>a);
+}
+
+//
+// array index
+//
+ // multiple array index
+arrayindex(res) ::= arrayindex(a1) indexdef(a2). {
+ res = a1.a2;
+}
+
+ // no array index
+arrayindex ::= . {
+ return;
+}
+
+// single index definition
+ // Smarty2 style index
+indexdef(res) ::= DOT DOLLARID(i). {
+ res = '['.$this->compiler->compileVariable('\''.substr(i,1).'\'').']';
+}
+indexdef(res) ::= DOT varvar(v). {
+ res = '['.$this->compiler->compileVariable(v).']';
+}
+
+indexdef(res) ::= DOT varvar(v) AT ID(p). {
+ res = '['.$this->compiler->compileVariable(v).'->'.p.']';
+}
+
+indexdef(res) ::= DOT ID(i). {
+ res = '[\''. i .'\']';
+}
+
+indexdef(res) ::= DOT INTEGER(n). {
+ res = '['. n .']';
+}
+
+
+indexdef(res) ::= DOT LDEL expr(e) RDEL. {
+ res = '['. e .']';
+}
+
+ // section tag index
+indexdef(res) ::= OPENB ID(i)CLOSEB. {
+ res = '['.$this->compiler->compileTag('private_special_variable',array(),'[\'section\'][\''.i.'\'][\'index\']').']';
+}
+
+indexdef(res) ::= OPENB ID(i) DOT ID(i2) CLOSEB. {
+ res = '['.$this->compiler->compileTag('private_special_variable',array(),'[\'section\'][\''.i.'\'][\''.i2.'\']').']';
+}
+indexdef(res) ::= OPENB SINGLEQUOTESTRING(s) CLOSEB. {
+ res = '['.s.']';
+}
+indexdef(res) ::= OPENB INTEGER(n) CLOSEB. {
+ res = '['.n.']';
+}
+indexdef(res) ::= OPENB DOLLARID(i) CLOSEB. {
+ res = '['.$this->compiler->compileVariable('\''.substr(i,1).'\'').']';
+}
+indexdef(res) ::= OPENB variable(v) CLOSEB. {
+ res = '['.v.']';
+}
+indexdef(res) ::= OPENB value(v) CLOSEB. {
+ res = '['.v.']';
+}
+
+ // PHP style index
+indexdef(res) ::= OPENB expr(e) CLOSEB. {
+ res = '['. e .']';
+}
+
+ // for assign append array
+indexdef(res) ::= OPENB CLOSEB. {
+ res = '[]';
+}
+
+
+//
+// variable variable names
+//
+
+ // singel identifier element
+varvar(res) ::= DOLLARID(i). {
+ res = '\''.substr(i,1).'\'';
+}
+ // single $
+varvar(res) ::= DOLLAR. {
+ res = '\'\'';
+}
+
+ // sequence of identifier elements
+varvar(res) ::= varvar(v1) varvarele(v2). {
+ res = v1.'.'.v2;
+}
+
+ // fix sections of element
+varvarele(res) ::= ID(s). {
+ res = '\''.s.'\'';
+}
+varvarele(res) ::= SIMPELOUTPUT(i). {
+ $var = trim(substr(i, $this->compiler->getLdelLength(), -$this->compiler->getRdelLength()), ' $');
+ res = $this->compiler->compileVariable('\''.$var.'\'');
+}
+
+ // variable sections of element
+varvarele(res) ::= LDEL expr(e) RDEL. {
+ res = '('.e.')';
+}
+
+//
+// objects
+//
+object(res) ::= varindexed(vi) objectchain(oc). {
+ if (vi['var'] === '\'smarty\'') {
+ res = $this->compiler->compileTag('private_special_variable',array(),vi['smarty_internal_index']).oc;
+ } else {
+ res = $this->compiler->compileVariable(vi['var']).vi['smarty_internal_index'].oc;
+ }
+}
+
+ // single element
+objectchain(res) ::= objectelement(oe). {
+ res = oe;
+}
+
+ // chain of elements
+objectchain(res) ::= objectchain(oc) objectelement(oe). {
+ res = oc.oe;
+}
+
+ // variable
+objectelement(res)::= PTR ID(i) arrayindex(a). {
+ if ($this->security && substr(i,0,1) === '_') {
+ $this->compiler->trigger_template_error (self::ERR1);
+ }
+ res = '->'.i.a;
+}
+
+objectelement(res)::= PTR varvar(v) arrayindex(a). {
+ if ($this->security) {
+ $this->compiler->trigger_template_error (self::ERR2);
+ }
+ res = '->{'.$this->compiler->compileVariable(v).a.'}';
+}
+
+objectelement(res)::= PTR LDEL expr(e) RDEL arrayindex(a). {
+ if ($this->security) {
+ $this->compiler->trigger_template_error (self::ERR2);
+ }
+ res = '->{'.e.a.'}';
+}
+
+objectelement(res)::= PTR ID(ii) LDEL expr(e) RDEL arrayindex(a). {
+ if ($this->security) {
+ $this->compiler->trigger_template_error (self::ERR2);
+ }
+ res = '->{\''.ii.'\'.'.e.a.'}';
+}
+
+ // method
+objectelement(res)::= PTR method(f). {
+ res = '->'.f;
+}
+
+
+//
+// function
+//
+function(res) ::= ns1(f) OPENP params(p) CLOSEP. {
+ res = $this->compiler->compilePHPFunctionCall(f, p);
+}
+
+
+//
+// method
+//
+method(res) ::= ID(f) OPENP params(p) CLOSEP. {
+ if ($this->security && substr(f,0,1) === '_') {
+ $this->compiler->trigger_template_error (self::ERR1);
+ }
+ res = f . '('. implode(',',p) .')';
+}
+
+method(res) ::= DOLLARID(f) OPENP params(p) CLOSEP. {
+ if ($this->security) {
+ $this->compiler->trigger_template_error (self::ERR2);
+ }
+ $prefixVar = $this->compiler->getNewPrefixVariable();
+ $this->compiler->appendPrefixCode("compiler->compileVariable('\''.substr(f,1).'\'').';?>');
+ res = $prefixVar .'('. implode(',',p) .')';
+}
+
+// function/method parameter
+ // multiple parameters
+params(res) ::= params(p) COMMA expr(e). {
+ res = array_merge(p,array(e));
+}
+
+ // single parameter
+params(res) ::= expr(e). {
+ res = array(e);
+}
+
+ // kein parameter
+params(res) ::= . {
+ res = array();
+}
+
+//
+// modifier
+//
+modifierlist(res) ::= modifierlist(l) modifier(m) modparameters(p). {
+ res = array_merge(l,array(array_merge(m,p)));
+}
+
+modifierlist(res) ::= modifier(m) modparameters(p). {
+ res = array(array_merge(m,p));
+}
+
+modifier(res) ::= VERT AT ID(m). {
+ res = array(m);
+}
+
+modifier(res) ::= VERT ID(m). {
+ res = array(m);
+}
+
+//
+// modifier parameter
+//
+ // multiple parameter
+modparameters(res) ::= modparameters(mps) modparameter(mp). {
+ res = array_merge(mps,mp);
+}
+
+ // no parameter
+modparameters(res) ::= . {
+ res = array();
+}
+
+ // parameter expression
+modparameter(res) ::= COLON value(mp). {
+ res = array(mp);
+}
+modparameter(res) ::= COLON UNIMATH(m) value(mp). {
+ res = array(trim(m).mp);
+}
+
+modparameter(res) ::= COLON array(mp). {
+ res = array(mp);
+}
+
+ // static class methode call
+static_class_access(res) ::= method(m). {
+ res = array(m, '', 'method');
+}
+
+ // static class methode call with object chainig
+static_class_access(res) ::= method(m) objectchain(oc). {
+ res = array(m, oc, 'method');
+}
+
+ // static class constant
+static_class_access(res) ::= ID(v). {
+ res = array(v, '');
+}
+
+ // static class variables
+static_class_access(res) ::= DOLLARID(v) arrayindex(a). {
+ res = array(v, a, 'property');
+}
+
+ // static class variables with object chain
+static_class_access(res) ::= DOLLARID(v) arrayindex(a) objectchain(oc). {
+ res = array(v, a.oc, 'property');
+}
+
+
+// if conditions and operators
+lop(res) ::= LOGOP(o). {
+ res = ' '. trim(o) . ' ';
+}
+
+lop(res) ::= SLOGOP(o). {
+ static $lops = array(
+ 'eq' => ' == ',
+ 'ne' => ' != ',
+ 'neq' => ' != ',
+ 'gt' => ' > ',
+ 'ge' => ' >= ',
+ 'gte' => ' >= ',
+ 'lt' => ' < ',
+ 'le' => ' <= ',
+ 'lte' => ' <= ',
+ 'mod' => ' % ',
+ 'and' => ' && ',
+ 'or' => ' || ',
+ 'xor' => ' xor ',
+ );
+ $op = strtolower(preg_replace('/\s*/', '', o));
+ res = $lops[$op];
+}
+tlop(res) ::= TLOGOP(o). {
+ static $tlops = array(
+ 'isdivby' => array('op' => ' % ', 'pre' => '!('),
+ 'isnotdivby' => array('op' => ' % ', 'pre' => '('),
+ 'isevenby' => array('op' => ' / ', 'pre' => '!(1 & '),
+ 'isnotevenby' => array('op' => ' / ', 'pre' => '(1 & '),
+ 'isoddby' => array('op' => ' / ', 'pre' => '(1 & '),
+ 'isnotoddby' => array('op' => ' / ', 'pre' => '!(1 & '),
+ );
+ $op = strtolower(preg_replace('/\s*/', '', o));
+ res = $tlops[$op];
+ }
+
+scond(res) ::= SINGLECOND(o). {
+ static $scond = array (
+ 'iseven' => '!(1 & ',
+ 'isnoteven' => '(1 & ',
+ 'isodd' => '(1 & ',
+ 'isnotodd' => '!(1 & ',
+ );
+ $op = strtolower(str_replace(' ', '', o));
+ res = $scond[$op];
+}
+
+//
+// ARRAY element assignment
+//
+arraydef(res) ::= OPENB arrayelements(a) CLOSEB. {
+ res = 'array('.a.')';
+}
+arraydef(res) ::= ARRAYOPEN arrayelements(a) CLOSEP. {
+ res = 'array('.a.')';
+}
+
+arrayelements(res) ::= arrayelement(a). {
+ res = a;
+}
+
+arrayelements(res) ::= arrayelements(a1) COMMA arrayelement(a). {
+ res = a1.','.a;
+}
+
+arrayelements ::= . {
+ return;
+}
+
+arrayelement(res) ::= value(e1) APTR expr(e2). {
+ res = e1.'=>'.e2;
+}
+
+arrayelement(res) ::= ID(i) APTR expr(e2). {
+ res = '\''.i.'\'=>'.e2;
+}
+
+arrayelement(res) ::= expr(e). {
+ res = e;
+}
+
+
+//
+// double quoted strings
+//
+doublequoted_with_quotes(res) ::= QUOTE QUOTE. {
+ res = '\'\'';
+}
+
+doublequoted_with_quotes(res) ::= QUOTE doublequoted(s) QUOTE. {
+ $this->compiler->leaveDoubleQuote();
+ res = s->to_smarty_php($this);
+}
+
+
+doublequoted(res) ::= doublequoted(o1) doublequotedcontent(o2). {
+ o1->append_subtree($this, o2);
+ res = o1;
+}
+
+doublequoted(res) ::= doublequotedcontent(o). {
+ res = new Smarty_Internal_ParseTree_Dq($this, o);
+}
+
+doublequotedcontent(res) ::= BACKTICK variable(v) BACKTICK. {
+ res = new Smarty_Internal_ParseTree_Code('(string)'.v);
+}
+
+doublequotedcontent(res) ::= BACKTICK expr(e) BACKTICK. {
+ res = new Smarty_Internal_ParseTree_Code('(string)('.e.')');
+}
+
+doublequotedcontent(res) ::= DOLLARID(i). {
+ res = new Smarty_Internal_ParseTree_Code('(string)$_smarty_tpl->tpl_vars[\''. substr(i,1) .'\']->value');
+}
+
+doublequotedcontent(res) ::= LDEL variable(v) RDEL. {
+ res = new Smarty_Internal_ParseTree_Code('(string)'.v);
+}
+
+doublequotedcontent(res) ::= LDEL expr(e) RDEL. {
+ res = new Smarty_Internal_ParseTree_Code('(string)('.e.')');
+}
+
+doublequotedcontent(res) ::= smartytag(st). {
+ res = new Smarty_Internal_ParseTree_Tag($this, st);
+}
+
+doublequotedcontent(res) ::= TEXT(o). {
+ res = new Smarty_Internal_ParseTree_DqContent(o);
+}
+
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/Autoloader.php b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/Autoloader.php
new file mode 100644
index 000000000..da7e32abf
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/Autoloader.php
@@ -0,0 +1,111 @@
+ 'Smarty.class.php');
+
+ /**
+ * Registers Smarty_Autoloader backward compatible to older installations.
+ *
+ * @param bool $prepend Whether to prepend the autoloader or not.
+ */
+ public static function registerBC($prepend = false)
+ {
+ /**
+ * register the class autoloader
+ */
+ if (!defined('SMARTY_SPL_AUTOLOAD')) {
+ define('SMARTY_SPL_AUTOLOAD', 0);
+ }
+ if (SMARTY_SPL_AUTOLOAD
+ && set_include_path(get_include_path() . PATH_SEPARATOR . SMARTY_SYSPLUGINS_DIR) !== false
+ ) {
+ $registeredAutoLoadFunctions = spl_autoload_functions();
+ if (!isset($registeredAutoLoadFunctions[ 'spl_autoload' ])) {
+ spl_autoload_register();
+ }
+ } else {
+ self::register($prepend);
+ }
+ }
+
+ /**
+ * Registers Smarty_Autoloader as an SPL autoloader.
+ *
+ * @param bool $prepend Whether to prepend the autoloader or not.
+ */
+ public static function register($prepend = false)
+ {
+ self::$SMARTY_DIR = defined('SMARTY_DIR') ? SMARTY_DIR : __DIR__ . DIRECTORY_SEPARATOR;
+ self::$SMARTY_SYSPLUGINS_DIR = defined('SMARTY_SYSPLUGINS_DIR') ? SMARTY_SYSPLUGINS_DIR :
+ self::$SMARTY_DIR . 'sysplugins' . DIRECTORY_SEPARATOR;
+ spl_autoload_register(array(__CLASS__, 'autoload'), true, $prepend);
+ }
+
+ /**
+ * Handles auto loading of classes.
+ *
+ * @param string $class A class name.
+ */
+ public static function autoload($class)
+ {
+ if ($class[ 0 ] !== 'S' || strpos($class, 'Smarty') !== 0) {
+ return;
+ }
+ $_class = smarty_strtolower_ascii($class);
+ if (isset(self::$rootClasses[ $_class ])) {
+ $file = self::$SMARTY_DIR . self::$rootClasses[ $_class ];
+ if (is_file($file)) {
+ include $file;
+ }
+ } else {
+ $file = self::$SMARTY_SYSPLUGINS_DIR . $_class . '.php';
+ if (is_file($file)) {
+ include $file;
+ }
+ }
+ return;
+ }
+}
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/Smarty.class.php b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/Smarty.class.php
new file mode 100644
index 000000000..b285a99e0
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/Smarty.class.php
@@ -0,0 +1,1405 @@
+
+ * @author Uwe Tews
+ * @author Rodney Rehm
+ * @package Smarty
+ */
+/**
+ * set SMARTY_DIR to absolute path to Smarty library files.
+ * Sets SMARTY_DIR only if user application has not already defined it.
+ */
+if (!defined('SMARTY_DIR')) {
+ /**
+ *
+ */
+ define('SMARTY_DIR', __DIR__ . DIRECTORY_SEPARATOR);
+}
+/**
+ * set SMARTY_SYSPLUGINS_DIR to absolute path to Smarty internal plugins.
+ * Sets SMARTY_SYSPLUGINS_DIR only if user application has not already defined it.
+ */
+if (!defined('SMARTY_SYSPLUGINS_DIR')) {
+ /**
+ *
+ */
+ define('SMARTY_SYSPLUGINS_DIR', SMARTY_DIR . 'sysplugins' . DIRECTORY_SEPARATOR);
+}
+if (!defined('SMARTY_PLUGINS_DIR')) {
+ /**
+ *
+ */
+ define('SMARTY_PLUGINS_DIR', SMARTY_DIR . 'plugins' . DIRECTORY_SEPARATOR);
+}
+if (!defined('SMARTY_MBSTRING')) {
+ /**
+ *
+ */
+ define('SMARTY_MBSTRING', function_exists('mb_get_info'));
+}
+
+/**
+ * Load helper functions
+ */
+if (!defined('SMARTY_HELPER_FUNCTIONS_LOADED')) {
+ include __DIR__ . '/functions.php';
+}
+
+/**
+ * Load Smarty_Autoloader
+ */
+if (!class_exists('Smarty_Autoloader')) {
+ include __DIR__ . '/bootstrap.php';
+}
+
+/**
+ * Load always needed external class files
+ */
+require_once SMARTY_SYSPLUGINS_DIR . 'smarty_internal_data.php';
+require_once SMARTY_SYSPLUGINS_DIR . 'smarty_internal_extension_handler.php';
+require_once SMARTY_SYSPLUGINS_DIR . 'smarty_internal_templatebase.php';
+require_once SMARTY_SYSPLUGINS_DIR . 'smarty_internal_template.php';
+require_once SMARTY_SYSPLUGINS_DIR . 'smarty_resource.php';
+require_once SMARTY_SYSPLUGINS_DIR . 'smarty_variable.php';
+require_once SMARTY_SYSPLUGINS_DIR . 'smarty_template_source.php';
+require_once SMARTY_SYSPLUGINS_DIR . 'smarty_template_resource_base.php';
+require_once SMARTY_SYSPLUGINS_DIR . 'smarty_internal_resource_file.php';
+
+/**
+ * This is the main Smarty class
+ *
+ * @package Smarty
+ *
+ * The following methods will be dynamically loaded by the extension handler when they are called.
+ * They are located in a corresponding Smarty_Internal_Method_xxxx class
+ *
+ * @method int clearAllCache(int $exp_time = null, string $type = null)
+ * @method int clearCache(string $template_name, string $cache_id = null, string $compile_id = null, int $exp_time = null, string $type = null)
+ * @method int compileAllTemplates(string $extension = '.tpl', bool $force_compile = false, int $time_limit = 0, $max_errors = null)
+ * @method int compileAllConfig(string $extension = '.conf', bool $force_compile = false, int $time_limit = 0, $max_errors = null)
+ * @method int clearCompiledTemplate($resource_name = null, $compile_id = null, $exp_time = null)
+ */
+class Smarty extends Smarty_Internal_TemplateBase
+{
+ /**
+ * smarty version
+ */
+ const SMARTY_VERSION = '4.5.3';
+ /**
+ * define variable scopes
+ */
+ const SCOPE_LOCAL = 1;
+ const SCOPE_PARENT = 2;
+ const SCOPE_TPL_ROOT = 4;
+ const SCOPE_ROOT = 8;
+ const SCOPE_SMARTY = 16;
+ const SCOPE_GLOBAL = 32;
+ /**
+ * define caching modes
+ */
+ const CACHING_OFF = 0;
+ const CACHING_LIFETIME_CURRENT = 1;
+ const CACHING_LIFETIME_SAVED = 2;
+ /**
+ * define constant for clearing cache files be saved expiration dates
+ */
+ const CLEAR_EXPIRED = -1;
+ /**
+ * define compile check modes
+ */
+ const COMPILECHECK_OFF = 0;
+ const COMPILECHECK_ON = 1;
+ const COMPILECHECK_CACHEMISS = 2;
+ /**
+ * define debug modes
+ */
+ const DEBUG_OFF = 0;
+ const DEBUG_ON = 1;
+ const DEBUG_INDIVIDUAL = 2;
+
+ /**
+ * filter types
+ */
+ const FILTER_POST = 'post';
+ const FILTER_PRE = 'pre';
+ const FILTER_OUTPUT = 'output';
+ const FILTER_VARIABLE = 'variable';
+ /**
+ * plugin types
+ */
+ const PLUGIN_FUNCTION = 'function';
+ const PLUGIN_BLOCK = 'block';
+ const PLUGIN_COMPILER = 'compiler';
+ const PLUGIN_MODIFIER = 'modifier';
+ const PLUGIN_MODIFIERCOMPILER = 'modifiercompiler';
+
+ /**
+ * assigned global tpl vars
+ */
+ public static $global_tpl_vars = array();
+
+ /**
+ * Flag denoting if Multibyte String functions are available
+ */
+ public static $_MBSTRING = SMARTY_MBSTRING;
+
+ /**
+ * The character set to adhere to (e.g. "UTF-8")
+ */
+ public static $_CHARSET = SMARTY_MBSTRING ? 'UTF-8' : 'ISO-8859-1';
+
+ /**
+ * The date format to be used internally
+ * (accepts date() and strftime())
+ */
+ public static $_DATE_FORMAT = '%b %e, %Y';
+
+ /**
+ * Flag denoting if PCRE should run in UTF-8 mode
+ */
+ public static $_UTF8_MODIFIER = 'u';
+
+ /**
+ * Flag denoting if operating system is windows
+ */
+ public static $_IS_WINDOWS = false;
+
+ /**
+ * auto literal on delimiters with whitespace
+ *
+ * @var boolean
+ */
+ public $auto_literal = true;
+
+ /**
+ * display error on not assigned variables
+ *
+ * @var boolean
+ */
+ public $error_unassigned = false;
+
+ /**
+ * look up relative file path in include_path
+ *
+ * @var boolean
+ */
+ public $use_include_path = false;
+
+ /**
+ * flag if template_dir is normalized
+ *
+ * @var bool
+ */
+ public $_templateDirNormalized = false;
+
+ /**
+ * joined template directory string used in cache keys
+ *
+ * @var string
+ */
+ public $_joined_template_dir = null;
+
+ /**
+ * flag if config_dir is normalized
+ *
+ * @var bool
+ */
+ public $_configDirNormalized = false;
+
+ /**
+ * joined config directory string used in cache keys
+ *
+ * @var string
+ */
+ public $_joined_config_dir = null;
+
+ /**
+ * default template handler
+ *
+ * @var callable
+ */
+ public $default_template_handler_func = null;
+
+ /**
+ * default config handler
+ *
+ * @var callable
+ */
+ public $default_config_handler_func = null;
+
+ /**
+ * default plugin handler
+ *
+ * @var callable
+ */
+ public $default_plugin_handler_func = null;
+
+ /**
+ * flag if template_dir is normalized
+ *
+ * @var bool
+ */
+ public $_compileDirNormalized = false;
+
+ /**
+ * flag if plugins_dir is normalized
+ *
+ * @var bool
+ */
+ public $_pluginsDirNormalized = false;
+
+ /**
+ * flag if template_dir is normalized
+ *
+ * @var bool
+ */
+ public $_cacheDirNormalized = false;
+
+ /**
+ * force template compiling?
+ *
+ * @var boolean
+ */
+ public $force_compile = false;
+
+ /**
+ * use sub dirs for compiled/cached files?
+ *
+ * @var boolean
+ */
+ public $use_sub_dirs = false;
+
+ /**
+ * allow ambiguous resources (that are made unique by the resource handler)
+ *
+ * @var boolean
+ */
+ public $allow_ambiguous_resources = false;
+
+ /**
+ * merge compiled includes
+ *
+ * @var boolean
+ */
+ public $merge_compiled_includes = false;
+
+ /*
+ * flag for behaviour when extends: resource and {extends} tag are used simultaneous
+ * if false disable execution of {extends} in templates called by extends resource.
+ * (behaviour as versions < 3.1.28)
+ *
+ * @var boolean
+ */
+ public $extends_recursion = true;
+
+ /**
+ * force cache file creation
+ *
+ * @var boolean
+ */
+ public $force_cache = false;
+
+ /**
+ * template left-delimiter
+ *
+ * @var string
+ */
+ public $left_delimiter = "{";
+
+ /**
+ * template right-delimiter
+ *
+ * @var string
+ */
+ public $right_delimiter = "}";
+
+ /**
+ * array of strings which shall be treated as literal by compiler
+ *
+ * @var array string
+ */
+ public $literals = array();
+
+ /**
+ * class name
+ * This should be instance of Smarty_Security.
+ *
+ * @var string
+ * @see Smarty_Security
+ */
+ public $security_class = 'Smarty_Security';
+
+ /**
+ * implementation of security class
+ *
+ * @var Smarty_Security
+ */
+ public $security_policy = null;
+
+ /**
+ * controls if the php template file resource is allowed
+ *
+ * @var bool
+ */
+ public $allow_php_templates = false;
+
+ /**
+ * debug mode
+ * Setting this to true enables the debug-console.
+ *
+ * @var boolean
+ */
+ public $debugging = false;
+
+ /**
+ * This determines if debugging is enable-able from the browser.
+ *
+ * NONE => no debugging control allowed
+ * URL => enable debugging when SMARTY_DEBUG is found in the URL.
+ *
+ *
+ * @var string
+ */
+ public $debugging_ctrl = 'NONE';
+
+ /**
+ * Name of debugging URL-param.
+ * Only used when $debugging_ctrl is set to 'URL'.
+ * The name of the URL-parameter that activates debugging.
+ *
+ * @var string
+ */
+ public $smarty_debug_id = 'SMARTY_DEBUG';
+
+ /**
+ * Path of debug template.
+ *
+ * @var string
+ */
+ public $debug_tpl = null;
+
+ /**
+ * When set, smarty uses this value as error_reporting-level.
+ *
+ * @var int
+ */
+ public $error_reporting = null;
+
+ /**
+ * Controls whether variables with the same name overwrite each other.
+ *
+ * @var boolean
+ */
+ public $config_overwrite = true;
+
+ /**
+ * Controls whether config values of on/true/yes and off/false/no get converted to boolean.
+ *
+ * @var boolean
+ */
+ public $config_booleanize = true;
+
+ /**
+ * Controls whether hidden config sections/vars are read from the file.
+ *
+ * @var boolean
+ */
+ public $config_read_hidden = false;
+
+ /**
+ * locking concurrent compiles
+ *
+ * @var boolean
+ */
+ public $compile_locking = true;
+
+ /**
+ * Controls whether cache resources should use locking mechanism
+ *
+ * @var boolean
+ */
+ public $cache_locking = false;
+
+ /**
+ * seconds to wait for acquiring a lock before ignoring the write lock
+ *
+ * @var float
+ */
+ public $locking_timeout = 10;
+
+ /**
+ * resource type used if none given
+ * Must be an valid key of $registered_resources.
+ *
+ * @var string
+ */
+ public $default_resource_type = 'file';
+
+ /**
+ * caching type
+ * Must be an element of $cache_resource_types.
+ *
+ * @var string
+ */
+ public $caching_type = 'file';
+
+ /**
+ * config type
+ *
+ * @var string
+ */
+ public $default_config_type = 'file';
+
+ /**
+ * check If-Modified-Since headers
+ *
+ * @var boolean
+ */
+ public $cache_modified_check = false;
+
+ /**
+ * registered plugins
+ *
+ * @var array
+ */
+ public $registered_plugins = array();
+
+ /**
+ * registered objects
+ *
+ * @var array
+ */
+ public $registered_objects = array();
+
+ /**
+ * registered classes
+ *
+ * @var array
+ */
+ public $registered_classes = array();
+
+ /**
+ * registered filters
+ *
+ * @var array
+ */
+ public $registered_filters = array();
+
+ /**
+ * registered resources
+ *
+ * @var array
+ */
+ public $registered_resources = array();
+
+ /**
+ * registered cache resources
+ *
+ * @var array
+ */
+ public $registered_cache_resources = array();
+
+ /**
+ * autoload filter
+ *
+ * @var array
+ */
+ public $autoload_filters = array();
+
+ /**
+ * default modifier
+ *
+ * @var array
+ */
+ public $default_modifiers = array();
+
+ /**
+ * autoescape variable output
+ *
+ * @var boolean
+ */
+ public $escape_html = false;
+
+ /**
+ * start time for execution time calculation
+ *
+ * @var int
+ */
+ public $start_time = 0;
+
+ /**
+ * required by the compiler for BC
+ *
+ * @var string
+ */
+ public $_current_file = null;
+
+ /**
+ * internal flag to enable parser debugging
+ *
+ * @var bool
+ */
+ public $_parserdebug = false;
+
+ /**
+ * This object type (Smarty = 1, template = 2, data = 4)
+ *
+ * @var int
+ */
+ public $_objType = 1;
+
+ /**
+ * Debug object
+ *
+ * @var Smarty_Internal_Debug
+ */
+ public $_debug = null;
+
+ /**
+ * template directory
+ *
+ * @var array
+ */
+ protected $template_dir = array('./templates/');
+
+ /**
+ * flags for normalized template directory entries
+ *
+ * @var array
+ */
+ protected $_processedTemplateDir = array();
+
+ /**
+ * config directory
+ *
+ * @var array
+ */
+ protected $config_dir = array('./configs/');
+
+ /**
+ * flags for normalized template directory entries
+ *
+ * @var array
+ */
+ protected $_processedConfigDir = array();
+
+ /**
+ * compile directory
+ *
+ * @var string
+ */
+ protected $compile_dir = './templates_c/';
+
+ /**
+ * plugins directory
+ *
+ * @var array
+ */
+ protected $plugins_dir = array();
+
+ /**
+ * cache directory
+ *
+ * @var string
+ */
+ protected $cache_dir = './cache/';
+
+ /**
+ * removed properties
+ *
+ * @var string[]
+ */
+ protected $obsoleteProperties = array(
+ 'resource_caching', 'template_resource_caching', 'direct_access_security',
+ '_dir_perms', '_file_perms', 'plugin_search_order',
+ 'inheritance_merge_compiled_includes', 'resource_cache_mode',
+ );
+
+ /**
+ * List of private properties which will call getter/setter on a direct access
+ *
+ * @var string[]
+ */
+ protected $accessMap = array(
+ 'template_dir' => 'TemplateDir', 'config_dir' => 'ConfigDir',
+ 'plugins_dir' => 'PluginsDir', 'compile_dir' => 'CompileDir',
+ 'cache_dir' => 'CacheDir',
+ );
+
+ /**
+ * PHP7 Compatibility mode
+ * @var bool
+ */
+ private $isMutingUndefinedOrNullWarnings = false;
+
+ /**
+ * Initialize new Smarty object
+ */
+ public function __construct()
+ {
+ $this->_clearTemplateCache();
+ parent::__construct();
+ if (is_callable('mb_internal_encoding')) {
+ mb_internal_encoding(Smarty::$_CHARSET);
+ }
+ $this->start_time = microtime(true);
+ if (isset($_SERVER[ 'SCRIPT_NAME' ])) {
+ Smarty::$global_tpl_vars[ 'SCRIPT_NAME' ] = new Smarty_Variable($_SERVER[ 'SCRIPT_NAME' ]);
+ }
+ // Check if we're running on windows
+ Smarty::$_IS_WINDOWS = strtoupper(substr(PHP_OS, 0, 3)) === 'WIN';
+ // let PCRE (preg_*) treat strings as ISO-8859-1 if we're not dealing with UTF-8
+ if (Smarty::$_CHARSET !== 'UTF-8') {
+ Smarty::$_UTF8_MODIFIER = '';
+ }
+ }
+
+ /**
+ * Check if a template resource exists
+ *
+ * @param string $resource_name template name
+ *
+ * @return bool status
+ * @throws \SmartyException
+ */
+ public function templateExists($resource_name)
+ {
+ // create source object
+ $source = Smarty_Template_Source::load(null, $this, $resource_name);
+ return $source->exists;
+ }
+
+ /**
+ * Loads security class and enables security
+ *
+ * @param string|Smarty_Security $security_class if a string is used, it must be class-name
+ *
+ * @return Smarty current Smarty instance for chaining
+ * @throws \SmartyException
+ */
+ public function enableSecurity($security_class = null)
+ {
+ Smarty_Security::enableSecurity($this, $security_class);
+ return $this;
+ }
+
+ /**
+ * Disable security
+ *
+ * @return Smarty current Smarty instance for chaining
+ */
+ public function disableSecurity()
+ {
+ $this->security_policy = null;
+ return $this;
+ }
+
+ /**
+ * Add template directory(s)
+ *
+ * @param string|array $template_dir directory(s) of template sources
+ * @param string $key of the array element to assign the template dir to
+ * @param bool $isConfig true for config_dir
+ *
+ * @return Smarty current Smarty instance for chaining
+ */
+ public function addTemplateDir($template_dir, $key = null, $isConfig = false)
+ {
+ if ($isConfig) {
+ $processed = &$this->_processedConfigDir;
+ $dir = &$this->config_dir;
+ $this->_configDirNormalized = false;
+ } else {
+ $processed = &$this->_processedTemplateDir;
+ $dir = &$this->template_dir;
+ $this->_templateDirNormalized = false;
+ }
+ if (is_array($template_dir)) {
+ foreach ($template_dir as $k => $v) {
+ if (is_int($k)) {
+ // indexes are not merged but appended
+ $dir[] = $v;
+ } else {
+ // string indexes are overridden
+ $dir[ $k ] = $v;
+ unset($processed[ $key ]);
+ }
+ }
+ } else {
+ if ($key !== null) {
+ // override directory at specified index
+ $dir[ $key ] = $template_dir;
+ unset($processed[ $key ]);
+ } else {
+ // append new directory
+ $dir[] = $template_dir;
+ }
+ }
+ return $this;
+ }
+
+ /**
+ * Get template directories
+ *
+ * @param mixed $index index of directory to get, null to get all
+ * @param bool $isConfig true for config_dir
+ *
+ * @return array|string list of template directories, or directory of $index
+ */
+ public function getTemplateDir($index = null, $isConfig = false)
+ {
+ if ($isConfig) {
+ $dir = &$this->config_dir;
+ } else {
+ $dir = &$this->template_dir;
+ }
+ if ($isConfig ? !$this->_configDirNormalized : !$this->_templateDirNormalized) {
+ $this->_normalizeTemplateConfig($isConfig);
+ }
+ if ($index !== null) {
+ return isset($dir[ $index ]) ? $dir[ $index ] : null;
+ }
+ return $dir;
+ }
+
+ /**
+ * Set template directory
+ *
+ * @param string|array $template_dir directory(s) of template sources
+ * @param bool $isConfig true for config_dir
+ *
+ * @return \Smarty current Smarty instance for chaining
+ */
+ public function setTemplateDir($template_dir, $isConfig = false)
+ {
+ if ($isConfig) {
+ $this->config_dir = array();
+ $this->_processedConfigDir = array();
+ } else {
+ $this->template_dir = array();
+ $this->_processedTemplateDir = array();
+ }
+ $this->addTemplateDir($template_dir, null, $isConfig);
+ return $this;
+ }
+
+ /**
+ * Add config directory(s)
+ *
+ * @param string|array $config_dir directory(s) of config sources
+ * @param mixed $key key of the array element to assign the config dir to
+ *
+ * @return Smarty current Smarty instance for chaining
+ */
+ public function addConfigDir($config_dir, $key = null)
+ {
+ return $this->addTemplateDir($config_dir, $key, true);
+ }
+
+ /**
+ * Get config directory
+ *
+ * @param mixed $index index of directory to get, null to get all
+ *
+ * @return array configuration directory
+ */
+ public function getConfigDir($index = null)
+ {
+ return $this->getTemplateDir($index, true);
+ }
+
+ /**
+ * Set config directory
+ *
+ * @param $config_dir
+ *
+ * @return Smarty current Smarty instance for chaining
+ */
+ public function setConfigDir($config_dir)
+ {
+ return $this->setTemplateDir($config_dir, true);
+ }
+
+ /**
+ * Adds directory of plugin files
+ *
+ * @param null|array|string $plugins_dir
+ *
+ * @return Smarty current Smarty instance for chaining
+ */
+ public function addPluginsDir($plugins_dir)
+ {
+ if (empty($this->plugins_dir)) {
+ $this->plugins_dir[] = SMARTY_PLUGINS_DIR;
+ }
+ $this->plugins_dir = array_merge($this->plugins_dir, (array)$plugins_dir);
+ $this->_pluginsDirNormalized = false;
+ return $this;
+ }
+
+ /**
+ * Get plugin directories
+ *
+ * @return array list of plugin directories
+ */
+ public function getPluginsDir()
+ {
+ if (empty($this->plugins_dir)) {
+ $this->plugins_dir[] = SMARTY_PLUGINS_DIR;
+ $this->_pluginsDirNormalized = false;
+ }
+ if (!$this->_pluginsDirNormalized) {
+ if (!is_array($this->plugins_dir)) {
+ $this->plugins_dir = (array)$this->plugins_dir;
+ }
+ foreach ($this->plugins_dir as $k => $v) {
+ $this->plugins_dir[ $k ] = $this->_realpath(rtrim($v ?? '', '/\\') . DIRECTORY_SEPARATOR, true);
+ }
+ $this->_cache[ 'plugin_files' ] = array();
+ $this->_pluginsDirNormalized = true;
+ }
+ return $this->plugins_dir;
+ }
+
+ /**
+ * Set plugins directory
+ *
+ * @param string|array $plugins_dir directory(s) of plugins
+ *
+ * @return Smarty current Smarty instance for chaining
+ */
+ public function setPluginsDir($plugins_dir)
+ {
+ $this->plugins_dir = (array)$plugins_dir;
+ $this->_pluginsDirNormalized = false;
+ return $this;
+ }
+
+ /**
+ * Get compiled directory
+ *
+ * @return string path to compiled templates
+ */
+ public function getCompileDir()
+ {
+ if (!$this->_compileDirNormalized) {
+ $this->_normalizeDir('compile_dir', $this->compile_dir);
+ $this->_compileDirNormalized = true;
+ }
+ return $this->compile_dir;
+ }
+
+ /**
+ *
+ * @param string $compile_dir directory to store compiled templates in
+ *
+ * @return Smarty current Smarty instance for chaining
+ */
+ public function setCompileDir($compile_dir)
+ {
+ $this->_normalizeDir('compile_dir', $compile_dir);
+ $this->_compileDirNormalized = true;
+ return $this;
+ }
+
+ /**
+ * Get cache directory
+ *
+ * @return string path of cache directory
+ */
+ public function getCacheDir()
+ {
+ if (!$this->_cacheDirNormalized) {
+ $this->_normalizeDir('cache_dir', $this->cache_dir);
+ $this->_cacheDirNormalized = true;
+ }
+ return $this->cache_dir;
+ }
+
+ /**
+ * Set cache directory
+ *
+ * @param string $cache_dir directory to store cached templates in
+ *
+ * @return Smarty current Smarty instance for chaining
+ */
+ public function setCacheDir($cache_dir)
+ {
+ $this->_normalizeDir('cache_dir', $cache_dir);
+ $this->_cacheDirNormalized = true;
+ return $this;
+ }
+
+ /**
+ * creates a template object
+ *
+ * @param string $template the resource handle of the template file
+ * @param mixed $cache_id cache id to be used with this template
+ * @param mixed $compile_id compile id to be used with this template
+ * @param object $parent next higher level of Smarty variables
+ * @param boolean $do_clone flag is Smarty object shall be cloned
+ *
+ * @return \Smarty_Internal_Template template object
+ * @throws \SmartyException
+ */
+ public function createTemplate($template, $cache_id = null, $compile_id = null, $parent = null, $do_clone = true)
+ {
+ if ($cache_id !== null && (is_object($cache_id) || is_array($cache_id))) {
+ $parent = $cache_id;
+ $cache_id = null;
+ }
+ if ($parent !== null && is_array($parent)) {
+ $data = $parent;
+ $parent = null;
+ } else {
+ $data = null;
+ }
+ if (!$this->_templateDirNormalized) {
+ $this->_normalizeTemplateConfig(false);
+ }
+ $_templateId = $this->_getTemplateId($template, $cache_id, $compile_id);
+ $tpl = null;
+ if ($this->caching && isset(Smarty_Internal_Template::$isCacheTplObj[ $_templateId ])) {
+ $tpl = $do_clone ? clone Smarty_Internal_Template::$isCacheTplObj[ $_templateId ] :
+ Smarty_Internal_Template::$isCacheTplObj[ $_templateId ];
+ $tpl->inheritance = null;
+ $tpl->tpl_vars = $tpl->config_vars = array();
+ } elseif (!$do_clone && isset(Smarty_Internal_Template::$tplObjCache[ $_templateId ])) {
+ $tpl = clone Smarty_Internal_Template::$tplObjCache[ $_templateId ];
+ $tpl->inheritance = null;
+ $tpl->tpl_vars = $tpl->config_vars = array();
+ } else {
+ /* @var Smarty_Internal_Template $tpl */
+ $tpl = new $this->template_class($template, $this, null, $cache_id, $compile_id, null, null);
+ $tpl->templateId = $_templateId;
+ }
+ if ($do_clone) {
+ $tpl->smarty = clone $tpl->smarty;
+ }
+ $tpl->parent = $parent ? $parent : $this;
+ // fill data if present
+ if (!empty($data) && is_array($data)) {
+ // set up variable values
+ foreach ($data as $_key => $_val) {
+ $tpl->tpl_vars[ $_key ] = new Smarty_Variable($_val);
+ }
+ }
+ if ($this->debugging || $this->debugging_ctrl === 'URL') {
+ $tpl->smarty->_debug = new Smarty_Internal_Debug();
+ // check URL debugging control
+ if (!$this->debugging && $this->debugging_ctrl === 'URL') {
+ $tpl->smarty->_debug->debugUrl($tpl->smarty);
+ }
+ }
+ return $tpl;
+ }
+
+ /**
+ * Takes unknown classes and loads plugin files for them
+ * class name format: Smarty_PluginType_PluginName
+ * plugin filename format: plugintype.pluginname.php
+ *
+ * @param string $plugin_name class plugin name to load
+ * @param bool $check check if already loaded
+ *
+ * @return string |boolean filepath of loaded file or false
+ * @throws \SmartyException
+ */
+ public function loadPlugin($plugin_name, $check = true)
+ {
+ return $this->ext->loadPlugin->loadPlugin($this, $plugin_name, $check);
+ }
+
+ /**
+ * Get unique template id
+ *
+ * @param string $template_name
+ * @param null|mixed $cache_id
+ * @param null|mixed $compile_id
+ * @param null $caching
+ * @param \Smarty_Internal_Template $template
+ *
+ * @return string
+ * @throws \SmartyException
+ */
+ public function _getTemplateId(
+ $template_name,
+ $cache_id = null,
+ $compile_id = null,
+ $caching = null,
+ Smarty_Internal_Template $template = null
+ ) {
+ $template_name = (strpos($template_name, ':') === false) ? "{$this->default_resource_type}:{$template_name}" :
+ $template_name;
+ $cache_id = $cache_id === null ? $this->cache_id : $cache_id;
+ $compile_id = $compile_id === null ? $this->compile_id : $compile_id;
+ $caching = (int)($caching === null ? $this->caching : $caching);
+ if ((isset($template) && strpos($template_name, ':.') !== false) || $this->allow_ambiguous_resources) {
+ $_templateId =
+ Smarty_Resource::getUniqueTemplateName((isset($template) ? $template : $this), $template_name) .
+ "#{$cache_id}#{$compile_id}#{$caching}";
+ } else {
+ $_templateId = $this->_joined_template_dir . "#{$template_name}#{$cache_id}#{$compile_id}#{$caching}";
+ }
+ if (isset($_templateId[ 150 ])) {
+ $_templateId = sha1($_templateId);
+ }
+ return $_templateId;
+ }
+
+ /**
+ * Normalize path
+ * - remove /./ and /../
+ * - make it absolute if required
+ *
+ * @param string $path file path
+ * @param bool $realpath if true - convert to absolute
+ * false - convert to relative
+ * null - keep as it is but
+ * remove /./ /../
+ *
+ * @return string
+ */
+ public function _realpath($path, $realpath = null)
+ {
+ $nds = array('/' => '\\', '\\' => '/');
+ preg_match(
+ '%^(?(?:[[:alpha:]]:[\\\\/]|/|[\\\\]{2}[[:alpha:]]+|[[:print:]]{2,}:[/]{2}|[\\\\])?)(?(.*))$%u',
+ $path,
+ $parts
+ );
+ $path = $parts[ 'path' ];
+ if ($parts[ 'root' ] === '\\') {
+ $parts[ 'root' ] = substr(getcwd(), 0, 2) . $parts[ 'root' ];
+ } else {
+ if ($realpath !== null && !$parts[ 'root' ]) {
+ $path = getcwd() . DIRECTORY_SEPARATOR . $path;
+ }
+ }
+ // normalize DIRECTORY_SEPARATOR
+ $path = str_replace($nds[ DIRECTORY_SEPARATOR ], DIRECTORY_SEPARATOR, $path);
+ $parts[ 'root' ] = str_replace($nds[ DIRECTORY_SEPARATOR ], DIRECTORY_SEPARATOR, $parts[ 'root' ]);
+ do {
+ $path = preg_replace(
+ array('#[\\\\/]{2}#', '#[\\\\/][.][\\\\/]#', '#[\\\\/]([^\\\\/.]+)[\\\\/][.][.][\\\\/]#'),
+ DIRECTORY_SEPARATOR,
+ $path,
+ -1,
+ $count
+ );
+ } while ($count > 0);
+ return $realpath !== false ? $parts[ 'root' ] . $path : str_ireplace(getcwd(), '.', $parts[ 'root' ] . $path);
+ }
+
+ /**
+ * Empty template objects cache
+ */
+ public function _clearTemplateCache()
+ {
+ Smarty_Internal_Template::$isCacheTplObj = array();
+ Smarty_Internal_Template::$tplObjCache = array();
+ }
+
+ /**
+ * @param boolean $use_sub_dirs
+ */
+ public function setUseSubDirs($use_sub_dirs)
+ {
+ $this->use_sub_dirs = $use_sub_dirs;
+ }
+
+ /**
+ * @param int $error_reporting
+ */
+ public function setErrorReporting($error_reporting)
+ {
+ $this->error_reporting = $error_reporting;
+ }
+
+ /**
+ * @param boolean $escape_html
+ */
+ public function setEscapeHtml($escape_html)
+ {
+ $this->escape_html = $escape_html;
+ }
+
+ /**
+ * Return auto_literal flag
+ *
+ * @return boolean
+ */
+ public function getAutoLiteral()
+ {
+ return $this->auto_literal;
+ }
+
+ /**
+ * Set auto_literal flag
+ *
+ * @param boolean $auto_literal
+ */
+ public function setAutoLiteral($auto_literal = true)
+ {
+ $this->auto_literal = $auto_literal;
+ }
+
+ /**
+ * @param boolean $force_compile
+ */
+ public function setForceCompile($force_compile)
+ {
+ $this->force_compile = $force_compile;
+ }
+
+ /**
+ * @param boolean $merge_compiled_includes
+ */
+ public function setMergeCompiledIncludes($merge_compiled_includes)
+ {
+ $this->merge_compiled_includes = $merge_compiled_includes;
+ }
+
+ /**
+ * Get left delimiter
+ *
+ * @return string
+ */
+ public function getLeftDelimiter()
+ {
+ return $this->left_delimiter;
+ }
+
+ /**
+ * Set left delimiter
+ *
+ * @param string $left_delimiter
+ */
+ public function setLeftDelimiter($left_delimiter)
+ {
+ $this->left_delimiter = $left_delimiter;
+ }
+
+ /**
+ * Get right delimiter
+ *
+ * @return string $right_delimiter
+ */
+ public function getRightDelimiter()
+ {
+ return $this->right_delimiter;
+ }
+
+ /**
+ * Set right delimiter
+ *
+ * @param string
+ */
+ public function setRightDelimiter($right_delimiter)
+ {
+ $this->right_delimiter = $right_delimiter;
+ }
+
+ /**
+ * @param boolean $debugging
+ */
+ public function setDebugging($debugging)
+ {
+ $this->debugging = $debugging;
+ }
+
+ /**
+ * @param boolean $config_overwrite
+ */
+ public function setConfigOverwrite($config_overwrite)
+ {
+ $this->config_overwrite = $config_overwrite;
+ }
+
+ /**
+ * @param boolean $config_booleanize
+ */
+ public function setConfigBooleanize($config_booleanize)
+ {
+ $this->config_booleanize = $config_booleanize;
+ }
+
+ /**
+ * @param boolean $config_read_hidden
+ */
+ public function setConfigReadHidden($config_read_hidden)
+ {
+ $this->config_read_hidden = $config_read_hidden;
+ }
+
+ /**
+ * @param boolean $compile_locking
+ */
+ public function setCompileLocking($compile_locking)
+ {
+ $this->compile_locking = $compile_locking;
+ }
+
+ /**
+ * @param string $default_resource_type
+ */
+ public function setDefaultResourceType($default_resource_type)
+ {
+ $this->default_resource_type = $default_resource_type;
+ }
+
+ /**
+ * @param string $caching_type
+ */
+ public function setCachingType($caching_type)
+ {
+ $this->caching_type = $caching_type;
+ }
+
+ /**
+ * Test install
+ *
+ * @param null $errors
+ */
+ public function testInstall(&$errors = null)
+ {
+ Smarty_Internal_TestInstall::testInstall($this, $errors);
+ }
+
+ /**
+ * Get Smarty object
+ *
+ * @return Smarty
+ */
+ public function _getSmartyObj()
+ {
+ return $this;
+ }
+
+ /**
+ * <> Generic getter.
+ * Calls the appropriate getter function.
+ * Issues an E_USER_NOTICE if no valid getter is found.
+ *
+ * @param string $name property name
+ *
+ * @return mixed
+ */
+ public function __get($name)
+ {
+ if (isset($this->accessMap[ $name ])) {
+ $method = 'get' . $this->accessMap[ $name ];
+ return $this->{$method}();
+ } elseif (isset($this->_cache[ $name ])) {
+ return $this->_cache[ $name ];
+ } elseif (in_array($name, $this->obsoleteProperties)) {
+ return null;
+ } else {
+ trigger_error('Undefined property: ' . get_class($this) . '::$' . $name, E_USER_NOTICE);
+ }
+ return null;
+ }
+
+ /**
+ * <> Generic setter.
+ * Calls the appropriate setter function.
+ * Issues an E_USER_NOTICE if no valid setter is found.
+ *
+ * @param string $name property name
+ * @param mixed $value parameter passed to setter
+ *
+ */
+ public function __set($name, $value)
+ {
+ if (isset($this->accessMap[ $name ])) {
+ $method = 'set' . $this->accessMap[ $name ];
+ $this->{$method}($value);
+ } elseif (in_array($name, $this->obsoleteProperties)) {
+ return;
+ } elseif (is_object($value) && method_exists($value, $name)) {
+ $this->$name = $value;
+ } else {
+ trigger_error('Undefined property: ' . get_class($this) . '::$' . $name, E_USER_NOTICE);
+ }
+ }
+
+ /**
+ * Normalize and set directory string
+ *
+ * @param string $dirName cache_dir or compile_dir
+ * @param string $dir filepath of folder
+ */
+ private function _normalizeDir($dirName, $dir)
+ {
+ $this->{$dirName} = $this->_realpath(rtrim($dir ?? '', "/\\") . DIRECTORY_SEPARATOR, true);
+ }
+
+ /**
+ * Normalize template_dir or config_dir
+ *
+ * @param bool $isConfig true for config_dir
+ */
+ private function _normalizeTemplateConfig($isConfig)
+ {
+ if ($isConfig) {
+ $processed = &$this->_processedConfigDir;
+ $dir = &$this->config_dir;
+ } else {
+ $processed = &$this->_processedTemplateDir;
+ $dir = &$this->template_dir;
+ }
+ if (!is_array($dir)) {
+ $dir = (array)$dir;
+ }
+ foreach ($dir as $k => $v) {
+ if (!isset($processed[ $k ])) {
+ $dir[ $k ] = $v = $this->_realpath(rtrim($v ?? '', "/\\") . DIRECTORY_SEPARATOR, true);
+ $processed[ $k ] = true;
+ }
+ }
+ $isConfig ? $this->_configDirNormalized = true : $this->_templateDirNormalized = true;
+ $isConfig ? $this->_joined_config_dir = join('#', $this->config_dir) :
+ $this->_joined_template_dir = join('#', $this->template_dir);
+ }
+
+ /**
+ * Mutes errors for "undefined index", "undefined array key" and "trying to read property of null".
+ *
+ * @void
+ */
+ public function muteUndefinedOrNullWarnings(): void {
+ $this->isMutingUndefinedOrNullWarnings = true;
+ }
+
+ /**
+ * Indicates if Smarty will mute errors for "undefined index", "undefined array key" and "trying to read property of null".
+ * @bool
+ */
+ public function isMutingUndefinedOrNullWarnings(): bool {
+ return $this->isMutingUndefinedOrNullWarnings;
+ }
+
+}
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/bootstrap.php b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/bootstrap.php
new file mode 100644
index 000000000..a226ac04e
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/bootstrap.php
@@ -0,0 +1,16 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+/**
+ * Load and register Smarty Autoloader
+ */
+if (!class_exists('Smarty_Autoloader')) {
+ include __DIR__ . '/Autoloader.php';
+}
+Smarty_Autoloader::register(true);
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/debug.tpl b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/debug.tpl
new file mode 100644
index 000000000..cd9325668
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/debug.tpl
@@ -0,0 +1,173 @@
+{capture name='_smarty_debug' assign=debug_output}
+
+
+
+ Smarty Debug Console
+
+
+
+
+ Smarty {Smarty::SMARTY_VERSION} Debug Console
+ - {if isset($template_name)}{$template_name|debug_print_var nofilter} {/if}{if !empty($template_data)}Total Time {$execution_time|string_format:"%.5f"}{/if}
+
+ {if !empty($template_data)}
+ included templates & config files (load time in seconds)
+
+ {foreach $template_data as $template}
+ {$template.name}
+
+ (compile {$template['compile_time']|string_format:"%.5f"}) (render {$template['render_time']|string_format:"%.5f"}) (cache {$template['cache_time']|string_format:"%.5f"})
+
+
+ {/foreach}
+
+ {/if}
+
+ assigned template variables
+
+
+ {foreach $assigned_vars as $vars}
+
+
+ ${$vars@key}
+ {if isset($vars['nocache'])}Nocache {/if}
+ {if isset($vars['scope'])}Origin: {$vars['scope']|debug_print_var nofilter}{/if}
+
+
+ Value
+ {$vars['value']|debug_print_var:10:80 nofilter}
+
+
+ {if isset($vars['attributes'])}
+ Attributes
+ {$vars['attributes']|debug_print_var nofilter}
+ {/if}
+
+ {/foreach}
+
+
+ assigned config file variables
+
+
+ {foreach $config_vars as $vars}
+
+
+ #{$vars@key}#
+ {if isset($vars['scope'])}Origin: {$vars['scope']|debug_print_var nofilter}{/if}
+
+
+ {$vars['value']|debug_print_var:10:80 nofilter}
+
+
+ {/foreach}
+
+
+
+
+{/capture}
+
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/functions.php b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/functions.php
new file mode 100644
index 000000000..bac00e521
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/functions.php
@@ -0,0 +1,51 @@
+
+ * @throws \SmartyException
+ */
+function smarty_block_textformat($params, $content, Smarty_Internal_Template $template, &$repeat)
+{
+ if (is_null($content)) {
+ return;
+ }
+ if (Smarty::$_MBSTRING) {
+ $template->_checkPlugins(
+ array(
+ array(
+ 'function' => 'smarty_modifier_mb_wordwrap',
+ 'file' => SMARTY_PLUGINS_DIR . 'modifier.mb_wordwrap.php'
+ )
+ )
+ );
+ }
+ $style = null;
+ $indent = 0;
+ $indent_first = 0;
+ $indent_char = ' ';
+ $wrap = 80;
+ $wrap_char = "\n";
+ $wrap_cut = false;
+ $assign = null;
+ foreach ($params as $_key => $_val) {
+ switch ($_key) {
+ case 'style':
+ case 'indent_char':
+ case 'wrap_char':
+ case 'assign':
+ $$_key = (string)$_val;
+ break;
+ case 'indent':
+ case 'indent_first':
+ case 'wrap':
+ $$_key = (int)$_val;
+ break;
+ case 'wrap_cut':
+ $$_key = (bool)$_val;
+ break;
+ default:
+ trigger_error("textformat: unknown attribute '{$_key}'");
+ }
+ }
+ if ($style === 'email') {
+ $wrap = 72;
+ }
+ // split into paragraphs
+ $_paragraphs = preg_split('![\r\n]{2}!', $content);
+ foreach ($_paragraphs as &$_paragraph) {
+ if (!$_paragraph) {
+ continue;
+ }
+ // convert mult. spaces & special chars to single space
+ $_paragraph =
+ preg_replace(
+ array(
+ '!\s+!' . Smarty::$_UTF8_MODIFIER,
+ '!(^\s+)|(\s+$)!' . Smarty::$_UTF8_MODIFIER
+ ),
+ array(
+ ' ',
+ ''
+ ),
+ $_paragraph
+ );
+ // indent first line
+ if ($indent_first > 0) {
+ $_paragraph = str_repeat($indent_char, $indent_first) . $_paragraph;
+ }
+ // wordwrap sentences
+ if (Smarty::$_MBSTRING) {
+ $_paragraph = smarty_modifier_mb_wordwrap($_paragraph, $wrap - $indent, $wrap_char, $wrap_cut);
+ } else {
+ $_paragraph = wordwrap($_paragraph, $wrap - $indent, $wrap_char, $wrap_cut);
+ }
+ // indent lines
+ if ($indent > 0) {
+ $_paragraph = preg_replace('!^!m', str_repeat($indent_char, $indent), $_paragraph);
+ }
+ }
+ $_output = implode($wrap_char . $wrap_char, $_paragraphs);
+ if ($assign) {
+ $template->assign($assign, $_output);
+ } else {
+ return $_output;
+ }
+}
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/plugins/function.counter.php b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/plugins/function.counter.php
new file mode 100644
index 000000000..54795459c
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/plugins/function.counter.php
@@ -0,0 +1,62 @@
+
+ * @link https://www.smarty.net/manual/en/language.function.counter.php {counter}
+ * (Smarty online manual)
+ *
+ * @param array $params parameters
+ * @param Smarty_Internal_Template $template template object
+ *
+ * @return string|null
+ */
+function smarty_function_counter($params, $template)
+{
+ static $counters = array();
+ $name = (isset($params[ 'name' ])) ? $params[ 'name' ] : 'default';
+ if (!isset($counters[ $name ])) {
+ $counters[ $name ] = array('start' => 1, 'skip' => 1, 'direction' => 'up', 'count' => 1);
+ }
+ $counter =& $counters[ $name ];
+ if (isset($params[ 'start' ])) {
+ $counter[ 'start' ] = $counter[ 'count' ] = (int)$params[ 'start' ];
+ }
+ if (!empty($params[ 'assign' ])) {
+ $counter[ 'assign' ] = $params[ 'assign' ];
+ }
+ if (isset($counter[ 'assign' ])) {
+ $template->assign($counter[ 'assign' ], $counter[ 'count' ]);
+ }
+ if (isset($params[ 'print' ])) {
+ $print = (bool)$params[ 'print' ];
+ } else {
+ $print = empty($counter[ 'assign' ]);
+ }
+ if ($print) {
+ $retval = $counter[ 'count' ];
+ } else {
+ $retval = null;
+ }
+ if (isset($params[ 'skip' ])) {
+ $counter[ 'skip' ] = $params[ 'skip' ];
+ }
+ if (isset($params[ 'direction' ])) {
+ $counter[ 'direction' ] = $params[ 'direction' ];
+ }
+ if ($counter[ 'direction' ] === 'down') {
+ $counter[ 'count' ] -= $counter[ 'skip' ];
+ } else {
+ $counter[ 'count' ] += $counter[ 'skip' ];
+ }
+ return $retval;
+}
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/plugins/function.cycle.php b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/plugins/function.cycle.php
new file mode 100644
index 000000000..793569991
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/plugins/function.cycle.php
@@ -0,0 +1,92 @@
+
+ * @author credit to Mark Priatel
+ * @author credit to Gerard
+ * @author credit to Jason Sweat
+ * @version 1.3
+ *
+ * @param array $params parameters
+ * @param Smarty_Internal_Template $template template object
+ *
+ * @return string|null
+ */
+function smarty_function_cycle($params, $template)
+{
+ static $cycle_vars;
+ $name = (empty($params[ 'name' ])) ? 'default' : $params[ 'name' ];
+ $print = (isset($params[ 'print' ])) ? (bool)$params[ 'print' ] : true;
+ $advance = (isset($params[ 'advance' ])) ? (bool)$params[ 'advance' ] : true;
+ $reset = (isset($params[ 'reset' ])) ? (bool)$params[ 'reset' ] : false;
+ if (!isset($params[ 'values' ])) {
+ if (!isset($cycle_vars[ $name ][ 'values' ])) {
+ trigger_error('cycle: missing \'values\' parameter');
+ return;
+ }
+ } else {
+ if (isset($cycle_vars[ $name ][ 'values' ]) && $cycle_vars[ $name ][ 'values' ] !== $params[ 'values' ]) {
+ $cycle_vars[ $name ][ 'index' ] = 0;
+ }
+ $cycle_vars[ $name ][ 'values' ] = $params[ 'values' ];
+ }
+ if (isset($params[ 'delimiter' ])) {
+ $cycle_vars[ $name ][ 'delimiter' ] = $params[ 'delimiter' ];
+ } elseif (!isset($cycle_vars[ $name ][ 'delimiter' ])) {
+ $cycle_vars[ $name ][ 'delimiter' ] = ',';
+ }
+ if (is_array($cycle_vars[ $name ][ 'values' ])) {
+ $cycle_array = $cycle_vars[ $name ][ 'values' ];
+ } else {
+ $cycle_array = explode($cycle_vars[ $name ][ 'delimiter' ], $cycle_vars[ $name ][ 'values' ]);
+ }
+ if (!isset($cycle_vars[ $name ][ 'index' ]) || $reset) {
+ $cycle_vars[ $name ][ 'index' ] = 0;
+ }
+ if (isset($params[ 'assign' ])) {
+ $print = false;
+ $template->assign($params[ 'assign' ], $cycle_array[ $cycle_vars[ $name ][ 'index' ] ]);
+ }
+ if ($print) {
+ $retval = $cycle_array[ $cycle_vars[ $name ][ 'index' ] ];
+ } else {
+ $retval = null;
+ }
+ if ($advance) {
+ if ($cycle_vars[ $name ][ 'index' ] >= count($cycle_array) - 1) {
+ $cycle_vars[ $name ][ 'index' ] = 0;
+ } else {
+ $cycle_vars[ $name ][ 'index' ]++;
+ }
+ }
+ return $retval;
+}
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/plugins/function.fetch.php b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/plugins/function.fetch.php
new file mode 100644
index 000000000..4a3e88196
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/plugins/function.fetch.php
@@ -0,0 +1,204 @@
+
+ *
+ * @param array $params parameters
+ * @param Smarty_Internal_Template $template template object
+ *
+ * @throws SmartyException
+ * @return string|null if the assign parameter is passed, Smarty assigns the result to a template variable
+ */
+function smarty_function_fetch($params, $template)
+{
+ if (empty($params[ 'file' ])) {
+ trigger_error('[plugin] fetch parameter \'file\' cannot be empty', E_USER_NOTICE);
+ return;
+ }
+ // strip file protocol
+ if (stripos($params[ 'file' ], 'file://') === 0) {
+ $params[ 'file' ] = substr($params[ 'file' ], 7);
+ }
+ $protocol = strpos($params[ 'file' ], '://');
+ if ($protocol !== false) {
+ $protocol = strtolower(substr($params[ 'file' ], 0, $protocol));
+ }
+ if (isset($template->smarty->security_policy)) {
+ if ($protocol) {
+ // remote resource (or php stream, …)
+ if (!$template->smarty->security_policy->isTrustedUri($params[ 'file' ])) {
+ return;
+ }
+ } else {
+ // local file
+ if (!$template->smarty->security_policy->isTrustedResourceDir($params[ 'file' ])) {
+ return;
+ }
+ }
+ }
+ $content = '';
+ if ($protocol === 'http') {
+ // http fetch
+ if ($uri_parts = parse_url($params[ 'file' ])) {
+ // set defaults
+ $host = $server_name = $uri_parts[ 'host' ];
+ $timeout = 30;
+ $accept = 'image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*';
+ $agent = 'Smarty Template Engine ' . Smarty::SMARTY_VERSION;
+ $referer = '';
+ $uri = !empty($uri_parts[ 'path' ]) ? $uri_parts[ 'path' ] : '/';
+ $uri .= !empty($uri_parts[ 'query' ]) ? '?' . $uri_parts[ 'query' ] : '';
+ $_is_proxy = false;
+ if (empty($uri_parts[ 'port' ])) {
+ $port = 80;
+ } else {
+ $port = $uri_parts[ 'port' ];
+ }
+ if (!empty($uri_parts[ 'user' ])) {
+ $user = $uri_parts[ 'user' ];
+ }
+ if (!empty($uri_parts[ 'pass' ])) {
+ $pass = $uri_parts[ 'pass' ];
+ }
+ // loop through parameters, setup headers
+ foreach ($params as $param_key => $param_value) {
+ switch ($param_key) {
+ case 'file':
+ case 'assign':
+ case 'assign_headers':
+ break;
+ case 'user':
+ if (!empty($param_value)) {
+ $user = $param_value;
+ }
+ break;
+ case 'pass':
+ if (!empty($param_value)) {
+ $pass = $param_value;
+ }
+ break;
+ case 'accept':
+ if (!empty($param_value)) {
+ $accept = $param_value;
+ }
+ break;
+ case 'header':
+ if (!empty($param_value)) {
+ if (!preg_match('![\w\d-]+: .+!', $param_value)) {
+ trigger_error("[plugin] invalid header format '{$param_value}'", E_USER_NOTICE);
+ return;
+ } else {
+ $extra_headers[] = $param_value;
+ }
+ }
+ break;
+ case 'proxy_host':
+ if (!empty($param_value)) {
+ $proxy_host = $param_value;
+ }
+ break;
+ case 'proxy_port':
+ if (!preg_match('!\D!', $param_value)) {
+ $proxy_port = (int)$param_value;
+ } else {
+ trigger_error("[plugin] invalid value for attribute '{$param_key }'", E_USER_NOTICE);
+ return;
+ }
+ break;
+ case 'agent':
+ if (!empty($param_value)) {
+ $agent = $param_value;
+ }
+ break;
+ case 'referer':
+ if (!empty($param_value)) {
+ $referer = $param_value;
+ }
+ break;
+ case 'timeout':
+ if (!preg_match('!\D!', $param_value)) {
+ $timeout = (int)$param_value;
+ } else {
+ trigger_error("[plugin] invalid value for attribute '{$param_key}'", E_USER_NOTICE);
+ return;
+ }
+ break;
+ default:
+ trigger_error("[plugin] unrecognized attribute '{$param_key}'", E_USER_NOTICE);
+ return;
+ }
+ }
+ if (!empty($proxy_host) && !empty($proxy_port)) {
+ $_is_proxy = true;
+ $fp = fsockopen($proxy_host, $proxy_port, $errno, $errstr, $timeout);
+ } else {
+ $fp = fsockopen($server_name, $port, $errno, $errstr, $timeout);
+ }
+ if (!$fp) {
+ trigger_error("[plugin] unable to fetch: $errstr ($errno)", E_USER_NOTICE);
+ return;
+ } else {
+ if ($_is_proxy) {
+ fputs($fp, 'GET ' . $params[ 'file' ] . " HTTP/1.0\r\n");
+ } else {
+ fputs($fp, "GET $uri HTTP/1.0\r\n");
+ }
+ if (!empty($host)) {
+ fputs($fp, "Host: $host\r\n");
+ }
+ if (!empty($accept)) {
+ fputs($fp, "Accept: $accept\r\n");
+ }
+ if (!empty($agent)) {
+ fputs($fp, "User-Agent: $agent\r\n");
+ }
+ if (!empty($referer)) {
+ fputs($fp, "Referer: $referer\r\n");
+ }
+ if (isset($extra_headers) && is_array($extra_headers)) {
+ foreach ($extra_headers as $curr_header) {
+ fputs($fp, $curr_header . "\r\n");
+ }
+ }
+ if (!empty($user) && !empty($pass)) {
+ fputs($fp, 'Authorization: BASIC ' . base64_encode("$user:$pass") . "\r\n");
+ }
+ fputs($fp, "\r\n");
+ while (!feof($fp)) {
+ $content .= fgets($fp, 4096);
+ }
+ fclose($fp);
+ $csplit = preg_split("!\r\n\r\n!", $content, 2);
+ $content = $csplit[ 1 ];
+ if (!empty($params[ 'assign_headers' ])) {
+ $template->assign($params[ 'assign_headers' ], preg_split("!\r\n!", $csplit[ 0 ]));
+ }
+ }
+ } else {
+ trigger_error("[plugin fetch] unable to parse URL, check syntax", E_USER_NOTICE);
+ return;
+ }
+ } else {
+ $content = @file_get_contents($params[ 'file' ]);
+ if ($content === false) {
+ throw new SmartyException("{fetch} cannot read resource '" . $params[ 'file' ] . "'");
+ }
+ }
+ if (!empty($params[ 'assign' ])) {
+ $template->assign($params[ 'assign' ], $content);
+ } else {
+ return $content;
+ }
+}
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/plugins/function.html_checkboxes.php b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/plugins/function.html_checkboxes.php
new file mode 100644
index 000000000..a8e7a07d8
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/plugins/function.html_checkboxes.php
@@ -0,0 +1,286 @@
+' output=$names}
+ * {html_checkboxes values=$ids checked=$checked separator=' ' output=$names}
+ *
+ * Params:
+ *
+ * - name (optional) - string default "checkbox"
+ * - values (required) - array
+ * - options (optional) - associative array
+ * - checked (optional) - array default not set
+ * - separator (optional) - ie or
+ * - output (optional) - the output next to each checkbox
+ * - assign (optional) - assign the output as an array to this variable
+ * - escape (optional) - escape the content (not value), defaults to true
+ *
+ * @link https://www.smarty.net/manual/en/language.function.html.checkboxes.php {html_checkboxes}
+ * (Smarty online manual)
+ * @author Christopher Kvarme
+ * @author credits to Monte Ohrt
+ * @version 1.0
+ *
+ * @param array $params parameters
+ * @param Smarty_Internal_Template $template template object
+ *
+ * @return string
+ * @uses smarty_function_escape_special_chars()
+ * @throws \SmartyException
+ */
+function smarty_function_html_checkboxes($params, Smarty_Internal_Template $template)
+{
+ $template->_checkPlugins(
+ array(
+ array(
+ 'function' => 'smarty_function_escape_special_chars',
+ 'file' => SMARTY_PLUGINS_DIR . 'shared.escape_special_chars.php'
+ )
+ )
+ );
+ $name = 'checkbox';
+ $values = null;
+ $options = null;
+ $selected = array();
+ $separator = '';
+ $escape = true;
+ $labels = true;
+ $label_ids = false;
+ $output = null;
+ $extra = '';
+ foreach ($params as $_key => $_val) {
+ switch ($_key) {
+ case 'name':
+ case 'separator':
+ $$_key = (string)$_val;
+ break;
+ case 'escape':
+ case 'labels':
+ case 'label_ids':
+ $$_key = (bool)$_val;
+ break;
+ case 'options':
+ $$_key = (array)$_val;
+ break;
+ case 'values':
+ case 'output':
+ $$_key = array_values((array)$_val);
+ break;
+ case 'checked':
+ case 'selected':
+ if (is_array($_val)) {
+ $selected = array();
+ foreach ($_val as $_sel) {
+ if (is_object($_sel)) {
+ if (method_exists($_sel, '__toString')) {
+ $_sel = smarty_function_escape_special_chars((string)$_sel->__toString());
+ } else {
+ trigger_error(
+ 'html_checkboxes: selected attribute contains an object of class \'' .
+ get_class($_sel) . '\' without __toString() method',
+ E_USER_NOTICE
+ );
+ continue;
+ }
+ } else {
+ $_sel = smarty_function_escape_special_chars((string)$_sel);
+ }
+ $selected[ $_sel ] = true;
+ }
+ } elseif (is_object($_val)) {
+ if (method_exists($_val, '__toString')) {
+ $selected = smarty_function_escape_special_chars((string)$_val->__toString());
+ } else {
+ trigger_error(
+ 'html_checkboxes: selected attribute is an object of class \'' . get_class($_val) .
+ '\' without __toString() method',
+ E_USER_NOTICE
+ );
+ }
+ } else {
+ $selected = smarty_function_escape_special_chars((string)$_val);
+ }
+ break;
+ case 'checkboxes':
+ trigger_error(
+ 'html_checkboxes: the use of the "checkboxes" attribute is deprecated, use "options" instead',
+ E_USER_WARNING
+ );
+ $options = (array)$_val;
+ break;
+ case 'assign':
+ break;
+ case 'strict':
+ break;
+ case 'disabled':
+ case 'readonly':
+ if (!empty($params[ 'strict' ])) {
+ if (!is_scalar($_val)) {
+ trigger_error(
+ "html_options: {$_key} attribute must be a scalar, only boolean true or string '{$_key}' will actually add the attribute",
+ E_USER_NOTICE
+ );
+ }
+ if ($_val === true || $_val === $_key) {
+ $extra .= ' ' . $_key . '="' . smarty_function_escape_special_chars($_key) . '"';
+ }
+ break;
+ }
+ // omit break; to fall through!
+ // no break
+ default:
+ if (!is_array($_val)) {
+ $extra .= ' ' . $_key . '="' . smarty_function_escape_special_chars($_val) . '"';
+ } else {
+ trigger_error("html_checkboxes: extra attribute '{$_key}' cannot be an array", E_USER_NOTICE);
+ }
+ break;
+ }
+ }
+ if (!isset($options) && !isset($values)) {
+ return '';
+ } /* raise error here? */
+ $_html_result = array();
+ if (isset($options)) {
+ foreach ($options as $_key => $_val) {
+ $_html_result[] =
+ smarty_function_html_checkboxes_output(
+ $name,
+ $_key,
+ $_val,
+ $selected,
+ $extra,
+ $separator,
+ $labels,
+ $label_ids,
+ $escape
+ );
+ }
+ } else {
+ foreach ($values as $_i => $_key) {
+ $_val = isset($output[ $_i ]) ? $output[ $_i ] : '';
+ $_html_result[] =
+ smarty_function_html_checkboxes_output(
+ $name,
+ $_key,
+ $_val,
+ $selected,
+ $extra,
+ $separator,
+ $labels,
+ $label_ids,
+ $escape
+ );
+ }
+ }
+ if (!empty($params[ 'assign' ])) {
+ $template->assign($params[ 'assign' ], $_html_result);
+ } else {
+ return implode("\n", $_html_result);
+ }
+}
+
+/**
+ * @param $name
+ * @param $value
+ * @param $output
+ * @param $selected
+ * @param $extra
+ * @param $separator
+ * @param $labels
+ * @param $label_ids
+ * @param bool $escape
+ *
+ * @return string
+ */
+function smarty_function_html_checkboxes_output(
+ $name,
+ $value,
+ $output,
+ $selected,
+ $extra,
+ $separator,
+ $labels,
+ $label_ids,
+ $escape = true
+) {
+ $_output = '';
+ if (is_object($value)) {
+ if (method_exists($value, '__toString')) {
+ $value = (string)$value->__toString();
+ } else {
+ trigger_error(
+ 'html_options: value is an object of class \'' . get_class($value) .
+ '\' without __toString() method',
+ E_USER_NOTICE
+ );
+ return '';
+ }
+ } else {
+ $value = (string)$value;
+ }
+ if (is_object($output)) {
+ if (method_exists($output, '__toString')) {
+ $output = (string)$output->__toString();
+ } else {
+ trigger_error(
+ 'html_options: output is an object of class \'' . get_class($output) .
+ '\' without __toString() method',
+ E_USER_NOTICE
+ );
+ return '';
+ }
+ } else {
+ $output = (string)$output;
+ }
+ if ($labels) {
+ if ($label_ids) {
+ $_id = smarty_function_escape_special_chars(
+ preg_replace(
+ '![^\w\-\.]!' . Smarty::$_UTF8_MODIFIER,
+ '_',
+ $name . '_' . $value
+ )
+ );
+ $_output .= '';
+ } else {
+ $_output .= '';
+ }
+ }
+ $name = smarty_function_escape_special_chars($name);
+ $value = smarty_function_escape_special_chars($value);
+ if ($escape) {
+ $output = smarty_function_escape_special_chars($output);
+ }
+ $_output .= ' ' . $output;
+ if ($labels) {
+ $_output .= ' ';
+ }
+ $_output .= $separator;
+ return $_output;
+}
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/plugins/function.html_image.php b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/plugins/function.html_image.php
new file mode 100644
index 000000000..71bc63864
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/plugins/function.html_image.php
@@ -0,0 +1,158 @@
+
+ * Params:
+ *
+ * - file - (required) - file (and path) of image
+ * - height - (optional) - image height (default actual height)
+ * - width - (optional) - image width (default actual width)
+ * - basedir - (optional) - base directory for absolute paths, default is environment variable DOCUMENT_ROOT
+ * - path_prefix - prefix for path output (optional, default empty)
+ *
+ * @link https://www.smarty.net/manual/en/language.function.html.image.php {html_image}
+ * (Smarty online manual)
+ * @author Monte Ohrt
+ * @author credits to Duda
+ * @version 1.0
+ *
+ * @param array $params parameters
+ * @param Smarty_Internal_Template $template template object
+ *
+ * @throws SmartyException
+ * @return string
+ * @uses smarty_function_escape_special_chars()
+ */
+function smarty_function_html_image($params, Smarty_Internal_Template $template)
+{
+ $template->_checkPlugins(
+ array(
+ array(
+ 'function' => 'smarty_function_escape_special_chars',
+ 'file' => SMARTY_PLUGINS_DIR . 'shared.escape_special_chars.php'
+ )
+ )
+ );
+ $alt = '';
+ $file = '';
+ $height = '';
+ $width = '';
+ $extra = '';
+ $prefix = '';
+ $suffix = '';
+ $path_prefix = '';
+ $basedir = isset($_SERVER[ 'DOCUMENT_ROOT' ]) ? $_SERVER[ 'DOCUMENT_ROOT' ] : '';
+ foreach ($params as $_key => $_val) {
+ switch ($_key) {
+ case 'file':
+ case 'height':
+ case 'width':
+ case 'dpi':
+ case 'path_prefix':
+ case 'basedir':
+ $$_key = $_val;
+ break;
+ case 'alt':
+ if (!is_array($_val)) {
+ $$_key = smarty_function_escape_special_chars($_val);
+ } else {
+ throw new SmartyException(
+ "html_image: extra attribute '{$_key}' cannot be an array",
+ E_USER_NOTICE
+ );
+ }
+ break;
+ case 'link':
+ case 'href':
+ $prefix = '';
+ $suffix = ' ';
+ break;
+ default:
+ if (!is_array($_val)) {
+ $extra .= ' ' . $_key . '="' . smarty_function_escape_special_chars($_val) . '"';
+ } else {
+ throw new SmartyException(
+ "html_image: extra attribute '{$_key}' cannot be an array",
+ E_USER_NOTICE
+ );
+ }
+ break;
+ }
+ }
+ if (empty($file)) {
+ trigger_error('html_image: missing \'file\' parameter', E_USER_NOTICE);
+ return;
+ }
+ if ($file[ 0 ] === '/') {
+ $_image_path = $basedir . $file;
+ } else {
+ $_image_path = $file;
+ }
+ // strip file protocol
+ if (stripos($params[ 'file' ], 'file://') === 0) {
+ $params[ 'file' ] = substr($params[ 'file' ], 7);
+ }
+ $protocol = strpos($params[ 'file' ], '://');
+ if ($protocol !== false) {
+ $protocol = strtolower(substr($params[ 'file' ], 0, $protocol));
+ }
+ if (isset($template->smarty->security_policy)) {
+ if ($protocol) {
+ // remote resource (or php stream, …)
+ if (!$template->smarty->security_policy->isTrustedUri($params[ 'file' ])) {
+ return;
+ }
+ } else {
+ // local file
+ if (!$template->smarty->security_policy->isTrustedResourceDir($_image_path)) {
+ return;
+ }
+ }
+ }
+ if (!isset($params[ 'width' ]) || !isset($params[ 'height' ])) {
+ // FIXME: (rodneyrehm) getimagesize() loads the complete file off a remote resource, use custom [jpg,png,gif]header reader!
+ if (!$_image_data = @getimagesize($_image_path)) {
+ if (!file_exists($_image_path)) {
+ trigger_error("html_image: unable to find '{$_image_path}'", E_USER_NOTICE);
+ return;
+ } elseif (!is_readable($_image_path)) {
+ trigger_error("html_image: unable to read '{$_image_path}'", E_USER_NOTICE);
+ return;
+ } else {
+ trigger_error("html_image: '{$_image_path}' is not a valid image file", E_USER_NOTICE);
+ return;
+ }
+ }
+ if (!isset($params[ 'width' ])) {
+ $width = $_image_data[ 0 ];
+ }
+ if (!isset($params[ 'height' ])) {
+ $height = $_image_data[ 1 ];
+ }
+ }
+ if (isset($params[ 'dpi' ])) {
+ if (strstr($_SERVER[ 'HTTP_USER_AGENT' ], 'Mac')) {
+ // FIXME: (rodneyrehm) wrong dpi assumption
+ // don't know who thought this up… even if it was true in 1998, it's definitely wrong in 2011.
+ $dpi_default = 72;
+ } else {
+ $dpi_default = 96;
+ }
+ $_resize = $dpi_default / $params[ 'dpi' ];
+ $width = round($width * $_resize);
+ $height = round($height * $_resize);
+ }
+ return $prefix . ' ' . $suffix;
+}
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/plugins/function.html_options.php b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/plugins/function.html_options.php
new file mode 100644
index 000000000..3e4335340
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/plugins/function.html_options.php
@@ -0,0 +1,230 @@
+ tags generated from
+ * the passed parameters
+ * Params:
+ *
+ * - name (optional) - string default "select"
+ * - values (required) - if no options supplied) - array
+ * - options (required) - if no values supplied) - associative array
+ * - selected (optional) - string default not set
+ * - output (required) - if not options supplied) - array
+ * - id (optional) - string default not set
+ * - class (optional) - string default not set
+ *
+ * @link https://www.smarty.net/manual/en/language.function.html.options.php {html_image}
+ * (Smarty online manual)
+ * @author Monte Ohrt
+ * @author Ralf Strehle (minor optimization)
+ *
+ * @param array $params parameters
+ *
+ * @param \Smarty_Internal_Template $template
+ *
+ * @return string
+ * @uses smarty_function_escape_special_chars()
+ * @throws \SmartyException
+ */
+function smarty_function_html_options($params, Smarty_Internal_Template $template)
+{
+ $template->_checkPlugins(
+ array(
+ array(
+ 'function' => 'smarty_function_escape_special_chars',
+ 'file' => SMARTY_PLUGINS_DIR . 'shared.escape_special_chars.php'
+ )
+ )
+ );
+ $name = null;
+ $values = null;
+ $options = null;
+ $selected = null;
+ $output = null;
+ $id = null;
+ $class = null;
+ $extra = '';
+ foreach ($params as $_key => $_val) {
+ switch ($_key) {
+ case 'name':
+ case 'class':
+ case 'id':
+ $$_key = (string)$_val;
+ break;
+ case 'options':
+ $options = (array)$_val;
+ break;
+ case 'values':
+ case 'output':
+ $$_key = array_values((array)$_val);
+ break;
+ case 'selected':
+ if (is_array($_val)) {
+ $selected = array();
+ foreach ($_val as $_sel) {
+ if (is_object($_sel)) {
+ if (method_exists($_sel, '__toString')) {
+ $_sel = smarty_function_escape_special_chars((string)$_sel->__toString());
+ } else {
+ trigger_error(
+ 'html_options: selected attribute contains an object of class \'' .
+ get_class($_sel) . '\' without __toString() method',
+ E_USER_NOTICE
+ );
+ continue;
+ }
+ } else {
+ $_sel = smarty_function_escape_special_chars((string)$_sel);
+ }
+ $selected[ $_sel ] = true;
+ }
+ } elseif (is_object($_val)) {
+ if (method_exists($_val, '__toString')) {
+ $selected = smarty_function_escape_special_chars((string)$_val->__toString());
+ } else {
+ trigger_error(
+ 'html_options: selected attribute is an object of class \'' . get_class($_val) .
+ '\' without __toString() method',
+ E_USER_NOTICE
+ );
+ }
+ } else {
+ $selected = smarty_function_escape_special_chars((string)$_val);
+ }
+ break;
+ case 'strict':
+ break;
+ case 'disabled':
+ case 'readonly':
+ if (!empty($params[ 'strict' ])) {
+ if (!is_scalar($_val)) {
+ trigger_error(
+ "html_options: {$_key} attribute must be a scalar, only boolean true or string '{$_key}' will actually add the attribute",
+ E_USER_NOTICE
+ );
+ }
+ if ($_val === true || $_val === $_key) {
+ $extra .= ' ' . $_key . '="' . smarty_function_escape_special_chars($_key) . '"';
+ }
+ break;
+ }
+ // omit break; to fall through!
+ // no break
+ default:
+ if (!is_array($_val)) {
+ $extra .= ' ' . $_key . '="' . smarty_function_escape_special_chars($_val) . '"';
+ } else {
+ trigger_error("html_options: extra attribute '{$_key}' cannot be an array", E_USER_NOTICE);
+ }
+ break;
+ }
+ }
+ if (!isset($options) && !isset($values)) {
+ /* raise error here? */
+ return '';
+ }
+ $_html_result = '';
+ $_idx = 0;
+ if (isset($options)) {
+ foreach ($options as $_key => $_val) {
+ $_html_result .= smarty_function_html_options_optoutput($_key, $_val, $selected, $id, $class, $_idx);
+ }
+ } else {
+ foreach ($values as $_i => $_key) {
+ $_val = isset($output[ $_i ]) ? $output[ $_i ] : '';
+ $_html_result .= smarty_function_html_options_optoutput($_key, $_val, $selected, $id, $class, $_idx);
+ }
+ }
+ if (!empty($name)) {
+ $_html_class = !empty($class) ? ' class="' . $class . '"' : '';
+ $_html_id = !empty($id) ? ' id="' . $id . '"' : '';
+ $_html_result =
+ '' . "\n" . $_html_result .
+ ' ' . "\n";
+ }
+ return $_html_result;
+}
+
+/**
+ * @param $key
+ * @param $value
+ * @param $selected
+ * @param $id
+ * @param $class
+ * @param $idx
+ *
+ * @return string
+ */
+function smarty_function_html_options_optoutput($key, $value, $selected, $id, $class, &$idx)
+{
+ if (!is_array($value)) {
+ $_key = smarty_function_escape_special_chars($key);
+ $_html_result = '__toString());
+ } else {
+ trigger_error(
+ 'html_options: value is an object of class \'' . get_class($value) .
+ '\' without __toString() method',
+ E_USER_NOTICE
+ );
+ return '';
+ }
+ } else {
+ $value = smarty_function_escape_special_chars((string)$value);
+ }
+ $_html_result .= $_html_class . $_html_id . '>' . $value . ' ' . "\n";
+ $idx++;
+ } else {
+ $_idx = 0;
+ $_html_result =
+ smarty_function_html_options_optgroup(
+ $key,
+ $value,
+ $selected,
+ !empty($id) ? ($id . '-' . $idx) : null,
+ $class,
+ $_idx
+ );
+ $idx++;
+ }
+ return $_html_result;
+}
+
+/**
+ * @param $key
+ * @param $values
+ * @param $selected
+ * @param $id
+ * @param $class
+ * @param $idx
+ *
+ * @return string
+ */
+function smarty_function_html_options_optgroup($key, $values, $selected, $id, $class, &$idx)
+{
+ $optgroup_html = '' . "\n";
+ foreach ($values as $key => $value) {
+ $optgroup_html .= smarty_function_html_options_optoutput($key, $value, $selected, $id, $class, $idx);
+ }
+ $optgroup_html .= " \n";
+ return $optgroup_html;
+}
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/plugins/function.html_radios.php b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/plugins/function.html_radios.php
new file mode 100644
index 000000000..2223ff7ee
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/plugins/function.html_radios.php
@@ -0,0 +1,266 @@
+ or
+ * - output (optional) - the output next to each radio button
+ * - assign (optional) - assign the output as an array to this variable
+ * - escape (optional) - escape the content (not value), defaults to true
+ *
+ * Examples:
+ *
+ * {html_radios values=$ids output=$names}
+ * {html_radios values=$ids name='box' separator=' ' output=$names}
+ * {html_radios values=$ids checked=$checked separator=' ' output=$names}
+ *
+ * @link https://www.smarty.net/manual/en/language.function.html.radios.php {html_radios}
+ * (Smarty online manual)
+ * @author Christopher Kvarme
+ * @author credits to Monte Ohrt
+ * @version 1.0
+ *
+ * @param array $params parameters
+ * @param Smarty_Internal_Template $template template object
+ *
+ * @return string
+ * @uses smarty_function_escape_special_chars()
+ * @throws \SmartyException
+ */
+function smarty_function_html_radios($params, Smarty_Internal_Template $template)
+{
+ $template->_checkPlugins(
+ array(
+ array(
+ 'function' => 'smarty_function_escape_special_chars',
+ 'file' => SMARTY_PLUGINS_DIR . 'shared.escape_special_chars.php'
+ )
+ )
+ );
+ $name = 'radio';
+ $values = null;
+ $options = null;
+ $selected = null;
+ $separator = '';
+ $escape = true;
+ $labels = true;
+ $label_ids = false;
+ $output = null;
+ $extra = '';
+ foreach ($params as $_key => $_val) {
+ switch ($_key) {
+ case 'name':
+ case 'separator':
+ $$_key = (string)$_val;
+ break;
+ case 'checked':
+ case 'selected':
+ if (is_array($_val)) {
+ trigger_error('html_radios: the "' . $_key . '" attribute cannot be an array', E_USER_WARNING);
+ } elseif (is_object($_val)) {
+ if (method_exists($_val, '__toString')) {
+ $selected = smarty_function_escape_special_chars((string)$_val->__toString());
+ } else {
+ trigger_error(
+ 'html_radios: selected attribute is an object of class \'' . get_class($_val) .
+ '\' without __toString() method',
+ E_USER_NOTICE
+ );
+ }
+ } else {
+ $selected = (string)$_val;
+ }
+ break;
+ case 'escape':
+ case 'labels':
+ case 'label_ids':
+ $$_key = (bool)$_val;
+ break;
+ case 'options':
+ $$_key = (array)$_val;
+ break;
+ case 'values':
+ case 'output':
+ $$_key = array_values((array)$_val);
+ break;
+ case 'radios':
+ trigger_error(
+ 'html_radios: the use of the "radios" attribute is deprecated, use "options" instead',
+ E_USER_WARNING
+ );
+ $options = (array)$_val;
+ break;
+ case 'assign':
+ break;
+ case 'strict':
+ break;
+ case 'disabled':
+ case 'readonly':
+ if (!empty($params[ 'strict' ])) {
+ if (!is_scalar($_val)) {
+ trigger_error(
+ "html_options: {$_key} attribute must be a scalar, only boolean true or string '$_key' will actually add the attribute",
+ E_USER_NOTICE
+ );
+ }
+ if ($_val === true || $_val === $_key) {
+ $extra .= ' ' . $_key . '="' . smarty_function_escape_special_chars($_key) . '"';
+ }
+ break;
+ }
+ // omit break; to fall through!
+ // no break
+ default:
+ if (!is_array($_val)) {
+ $extra .= ' ' . $_key . '="' . smarty_function_escape_special_chars($_val) . '"';
+ } else {
+ trigger_error("html_radios: extra attribute '{$_key}' cannot be an array", E_USER_NOTICE);
+ }
+ break;
+ }
+ }
+ if (!isset($options) && !isset($values)) {
+ /* raise error here? */
+ return '';
+ }
+ $_html_result = array();
+ if (isset($options)) {
+ foreach ($options as $_key => $_val) {
+ $_html_result[] =
+ smarty_function_html_radios_output(
+ $name,
+ $_key,
+ $_val,
+ $selected,
+ $extra,
+ $separator,
+ $labels,
+ $label_ids,
+ $escape
+ );
+ }
+ } else {
+ foreach ($values as $_i => $_key) {
+ $_val = isset($output[ $_i ]) ? $output[ $_i ] : '';
+ $_html_result[] =
+ smarty_function_html_radios_output(
+ $name,
+ $_key,
+ $_val,
+ $selected,
+ $extra,
+ $separator,
+ $labels,
+ $label_ids,
+ $escape
+ );
+ }
+ }
+ if (!empty($params[ 'assign' ])) {
+ $template->assign($params[ 'assign' ], $_html_result);
+ } else {
+ return implode("\n", $_html_result);
+ }
+}
+
+/**
+ * @param $name
+ * @param $value
+ * @param $output
+ * @param $selected
+ * @param $extra
+ * @param $separator
+ * @param $labels
+ * @param $label_ids
+ * @param $escape
+ *
+ * @return string
+ */
+function smarty_function_html_radios_output(
+ $name,
+ $value,
+ $output,
+ $selected,
+ $extra,
+ $separator,
+ $labels,
+ $label_ids,
+ $escape
+) {
+ $_output = '';
+ if (is_object($value)) {
+ if (method_exists($value, '__toString')) {
+ $value = (string)$value->__toString();
+ } else {
+ trigger_error(
+ 'html_options: value is an object of class \'' . get_class($value) .
+ '\' without __toString() method',
+ E_USER_NOTICE
+ );
+ return '';
+ }
+ } else {
+ $value = (string)$value;
+ }
+ if (is_object($output)) {
+ if (method_exists($output, '__toString')) {
+ $output = (string)$output->__toString();
+ } else {
+ trigger_error(
+ 'html_options: output is an object of class \'' . get_class($output) .
+ '\' without __toString() method',
+ E_USER_NOTICE
+ );
+ return '';
+ }
+ } else {
+ $output = (string)$output;
+ }
+ if ($labels) {
+ if ($label_ids) {
+ $_id = smarty_function_escape_special_chars(
+ preg_replace(
+ '![^\w\-\.]!' . Smarty::$_UTF8_MODIFIER,
+ '_',
+ $name . '_' . $value
+ )
+ );
+ $_output .= '';
+ } else {
+ $_output .= '';
+ }
+ }
+ $name = smarty_function_escape_special_chars($name);
+ $value = smarty_function_escape_special_chars($value);
+ if ($escape) {
+ $output = smarty_function_escape_special_chars($output);
+ }
+ $_output .= ' ' . $output;
+ if ($labels) {
+ $_output .= ' ';
+ }
+ $_output .= $separator;
+ return $_output;
+}
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/plugins/function.html_select_date.php b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/plugins/function.html_select_date.php
new file mode 100644
index 000000000..d9c571976
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/plugins/function.html_select_date.php
@@ -0,0 +1,395 @@
+
+ * @author Rodney Rehm
+ *
+ * @param array $params parameters
+ *
+ * @param \Smarty_Internal_Template $template
+ *
+ * @return string
+ * @throws \SmartyException
+ */
+function smarty_function_html_select_date($params, Smarty_Internal_Template $template)
+{
+ $template->_checkPlugins(
+ array(
+ array(
+ 'function' => 'smarty_function_escape_special_chars',
+ 'file' => SMARTY_PLUGINS_DIR . 'shared.escape_special_chars.php'
+ )
+ )
+ );
+ // generate timestamps used for month names only
+ static $_month_timestamps = null;
+ static $_current_year = null;
+ if ($_month_timestamps === null) {
+ $_current_year = date('Y');
+ $_month_timestamps = array();
+ for ($i = 1; $i <= 12; $i++) {
+ $_month_timestamps[ $i ] = mktime(0, 0, 0, $i, 1, 2000);
+ }
+ }
+ /* Default values. */
+ $prefix = 'Date_';
+ $start_year = null;
+ $end_year = null;
+ $display_days = true;
+ $display_months = true;
+ $display_years = true;
+ $month_format = '%B';
+ /* Write months as numbers by default GL */
+ $month_value_format = '%m';
+ $day_format = '%02d';
+ /* Write day values using this format MB */
+ $day_value_format = '%d';
+ $year_as_text = false;
+ /* Display years in reverse order? Ie. 2000,1999,.... */
+ $reverse_years = false;
+ /* Should the select boxes be part of an array when returned from PHP?
+ e.g. setting it to "birthday", would create "birthday[Day]",
+ "birthday[Month]" & "birthday[Year]". Can be combined with prefix */
+ $field_array = null;
+ /* 's of the different tags.
+ If not set, uses default dropdown. */
+ $day_size = null;
+ $month_size = null;
+ $year_size = null;
+ /* Unparsed attributes common to *ALL* the / tags.
+ An example might be in the template: all_extra ='class ="foo"'. */
+ $all_extra = null;
+ /* Separate attributes for the tags. */
+ $day_extra = null;
+ $month_extra = null;
+ $year_extra = null;
+ /* Order in which to display the fields.
+ "D" -> day, "M" -> month, "Y" -> year. */
+ $field_order = 'MDY';
+ /* String printed between the different fields. */
+ $field_separator = "\n";
+ $option_separator = "\n";
+ $time = null;
+
+ // $all_empty = null;
+ // $day_empty = null;
+ // $month_empty = null;
+ // $year_empty = null;
+ $extra_attrs = '';
+ $all_id = null;
+ $day_id = null;
+ $month_id = null;
+ $year_id = null;
+ foreach ($params as $_key => $_value) {
+ switch ($_key) {
+ case 'time':
+ $$_key = $_value; // we'll handle conversion below
+ break;
+ case 'month_names':
+ if (is_array($_value) && count($_value) === 12) {
+ $$_key = $_value;
+ } else {
+ trigger_error('html_select_date: month_names must be an array of 12 strings', E_USER_NOTICE);
+ }
+ break;
+ case 'prefix':
+ case 'field_array':
+ case 'start_year':
+ case 'end_year':
+ case 'day_format':
+ case 'day_value_format':
+ case 'month_format':
+ case 'month_value_format':
+ case 'day_size':
+ case 'month_size':
+ case 'year_size':
+ case 'all_extra':
+ case 'day_extra':
+ case 'month_extra':
+ case 'year_extra':
+ case 'field_order':
+ case 'field_separator':
+ case 'option_separator':
+ case 'all_empty':
+ case 'month_empty':
+ case 'day_empty':
+ case 'year_empty':
+ case 'all_id':
+ case 'month_id':
+ case 'day_id':
+ case 'year_id':
+ $$_key = (string)$_value;
+ break;
+ case 'display_days':
+ case 'display_months':
+ case 'display_years':
+ case 'year_as_text':
+ case 'reverse_years':
+ $$_key = (bool)$_value;
+ break;
+ default:
+ if (!is_array($_value)) {
+ $extra_attrs .= ' ' . $_key . '="' . smarty_function_escape_special_chars($_value) . '"';
+ } else {
+ trigger_error("html_select_date: extra attribute '{$_key}' cannot be an array", E_USER_NOTICE);
+ }
+ break;
+ }
+ }
+ // Note: date() is faster than strftime()
+ // Note: explode(date()) is faster than date() date() date()
+
+ if (isset($time) && is_array($time)) {
+ if (isset($time[$prefix . 'Year'])) {
+ // $_REQUEST[$field_array] given
+ foreach ([
+ 'Y' => 'Year',
+ 'm' => 'Month',
+ 'd' => 'Day'
+ ] as $_elementKey => $_elementName) {
+ $_variableName = '_' . strtolower($_elementName);
+ $$_variableName =
+ isset($time[$prefix . $_elementName]) ? $time[$prefix . $_elementName] :
+ date($_elementKey);
+ }
+ } elseif (isset($time[$field_array][$prefix . 'Year'])) {
+ // $_REQUEST given
+ foreach ([
+ 'Y' => 'Year',
+ 'm' => 'Month',
+ 'd' => 'Day'
+ ] as $_elementKey => $_elementName) {
+ $_variableName = '_' . strtolower($_elementName);
+ $$_variableName = isset($time[$field_array][$prefix . $_elementName]) ?
+ $time[$field_array][$prefix . $_elementName] : date($_elementKey);
+ }
+ } else {
+ // no date found, use NOW
+ [$_year, $_month, $_day] = explode('-', date('Y-m-d'));
+ }
+ } elseif (isset($time) && preg_match("/(\d*)-(\d*)-(\d*)/", $time, $matches)) {
+ $_year = $_month = $_day = null;
+ if ($matches[1] > '') $_year = (int) $matches[1];
+ if ($matches[2] > '') $_month = (int) $matches[2];
+ if ($matches[3] > '') $_day = (int) $matches[3];
+ } elseif ($time === null) {
+ if (array_key_exists('time', $params)) {
+ $_year = $_month = $_day = null;
+ } else {
+ [$_year, $_month, $_day] = explode('-', date('Y-m-d'));
+ }
+ } else {
+ $template->_checkPlugins(
+ array(
+ array(
+ 'function' => 'smarty_make_timestamp',
+ 'file' => SMARTY_PLUGINS_DIR . 'shared.make_timestamp.php'
+ )
+ )
+ );
+ $time = smarty_make_timestamp($time);
+ [$_year, $_month, $_day] = explode('-', date('Y-m-d', $time));
+ }
+
+ // make syntax "+N" or "-N" work with $start_year and $end_year
+ // Note preg_match('!^(\+|\-)\s*(\d+)$!', $end_year, $match) is slower than trim+substr
+ foreach (array(
+ 'start',
+ 'end'
+ ) as $key) {
+ $key .= '_year';
+ $t = $$key;
+ if ($t === null) {
+ $$key = (int)$_current_year;
+ } elseif ($t[ 0 ] === '+') {
+ $$key = (int)($_current_year + (int)trim(substr($t, 1)));
+ } elseif ($t[ 0 ] === '-') {
+ $$key = (int)($_current_year - (int)trim(substr($t, 1)));
+ } else {
+ $$key = (int)$$key;
+ }
+ }
+ // flip for ascending or descending
+ if (($start_year > $end_year && !$reverse_years) || ($start_year < $end_year && $reverse_years)) {
+ $t = $end_year;
+ $end_year = $start_year;
+ $start_year = $t;
+ }
+ // generate year or
+ if ($display_years) {
+ $_extra = '';
+ $_name = $field_array ? ($field_array . '[' . $prefix . 'Year]') : ($prefix . 'Year');
+ if ($all_extra) {
+ $_extra .= ' ' . $all_extra;
+ }
+ if ($year_extra) {
+ $_extra .= ' ' . $year_extra;
+ }
+ if ($year_as_text) {
+ $_html_years =
+ ' ';
+ } else {
+ $_html_years = '' . $option_separator;
+ if (isset($year_empty) || isset($all_empty)) {
+ $_html_years .= '' . (isset($year_empty) ? $year_empty : $all_empty) . ' ' .
+ $option_separator;
+ }
+ $op = $start_year > $end_year ? -1 : 1;
+ for ($i = $start_year; $op > 0 ? $i <= $end_year : $i >= $end_year; $i += $op) {
+ $_html_years .= '' . $i .
+ ' ' . $option_separator;
+ }
+ $_html_years .= ' ';
+ }
+ }
+ // generate month or
+ if ($display_months) {
+ $_extra = '';
+ $_name = $field_array ? ($field_array . '[' . $prefix . 'Month]') : ($prefix . 'Month');
+ if ($all_extra) {
+ $_extra .= ' ' . $all_extra;
+ }
+ if ($month_extra) {
+ $_extra .= ' ' . $month_extra;
+ }
+ $_html_months = '' . $option_separator;
+ if (isset($month_empty) || isset($all_empty)) {
+ $_html_months .= '' . (isset($month_empty) ? $month_empty : $all_empty) . ' ' .
+ $option_separator;
+ }
+ for ($i = 1; $i <= 12; $i++) {
+ $_val = sprintf('%02d', $i);
+ $_text = isset($month_names) ? smarty_function_escape_special_chars($month_names[ $i ]) :
+ ($month_format === '%m' ? $_val : @strftime($month_format, $_month_timestamps[ $i ]));
+ $_value = $month_value_format === '%m' ? $_val : @strftime($month_value_format, $_month_timestamps[ $i ]);
+ $_html_months .= '' . $_text . ' ' . $option_separator;
+ }
+ $_html_months .= ' ';
+ }
+ // generate day or
+ if ($display_days) {
+ $_extra = '';
+ $_name = $field_array ? ($field_array . '[' . $prefix . 'Day]') : ($prefix . 'Day');
+ if ($all_extra) {
+ $_extra .= ' ' . $all_extra;
+ }
+ if ($day_extra) {
+ $_extra .= ' ' . $day_extra;
+ }
+ $_html_days = '' . $option_separator;
+ if (isset($day_empty) || isset($all_empty)) {
+ $_html_days .= '' . (isset($day_empty) ? $day_empty : $all_empty) . ' ' .
+ $option_separator;
+ }
+ for ($i = 1; $i <= 31; $i++) {
+ $_val = sprintf('%02d', $i);
+ $_text = $day_format === '%02d' ? $_val : sprintf($day_format, $i);
+ $_value = $day_value_format === '%02d' ? $_val : sprintf($day_value_format, $i);
+ $_html_days .= '' .
+ $_text . ' ' . $option_separator;
+ }
+ $_html_days .= ' ';
+ }
+ // order the fields for output
+ $_html = '';
+ for ($i = 0; $i <= 2; $i++) {
+ switch ($field_order[ $i ]) {
+ case 'Y':
+ case 'y':
+ if (isset($_html_years)) {
+ if ($_html) {
+ $_html .= $field_separator;
+ }
+ $_html .= $_html_years;
+ }
+ break;
+ case 'm':
+ case 'M':
+ if (isset($_html_months)) {
+ if ($_html) {
+ $_html .= $field_separator;
+ }
+ $_html .= $_html_months;
+ }
+ break;
+ case 'd':
+ case 'D':
+ if (isset($_html_days)) {
+ if ($_html) {
+ $_html .= $field_separator;
+ }
+ $_html .= $_html_days;
+ }
+ break;
+ }
+ }
+ return $_html;
+}
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/plugins/function.html_select_time.php b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/plugins/function.html_select_time.php
new file mode 100644
index 000000000..256b56b1c
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/plugins/function.html_select_time.php
@@ -0,0 +1,354 @@
+
+ * @author Monte Ohrt
+ *
+ * @param array $params parameters
+ *
+ * @param \Smarty_Internal_Template $template
+ *
+ * @return string
+ * @uses smarty_make_timestamp()
+ * @throws \SmartyException
+ */
+function smarty_function_html_select_time($params, Smarty_Internal_Template $template)
+{
+ $template->_checkPlugins(
+ array(
+ array(
+ 'function' => 'smarty_function_escape_special_chars',
+ 'file' => SMARTY_PLUGINS_DIR . 'shared.escape_special_chars.php'
+ )
+ )
+ );
+ $prefix = 'Time_';
+ $field_array = null;
+ $field_separator = "\n";
+ $option_separator = "\n";
+ $time = null;
+ $display_hours = true;
+ $display_minutes = true;
+ $display_seconds = true;
+ $display_meridian = true;
+ $hour_format = '%02d';
+ $hour_value_format = '%02d';
+ $minute_format = '%02d';
+ $minute_value_format = '%02d';
+ $second_format = '%02d';
+ $second_value_format = '%02d';
+ $hour_size = null;
+ $minute_size = null;
+ $second_size = null;
+ $meridian_size = null;
+ $all_empty = null;
+ $hour_empty = null;
+ $minute_empty = null;
+ $second_empty = null;
+ $meridian_empty = null;
+ $all_id = null;
+ $hour_id = null;
+ $minute_id = null;
+ $second_id = null;
+ $meridian_id = null;
+ $use_24_hours = true;
+ $minute_interval = 1;
+ $second_interval = 1;
+ $extra_attrs = '';
+ $all_extra = null;
+ $hour_extra = null;
+ $minute_extra = null;
+ $second_extra = null;
+ $meridian_extra = null;
+ foreach ($params as $_key => $_value) {
+ switch ($_key) {
+ case 'time':
+ if (!is_array($_value) && $_value !== null) {
+ $template->_checkPlugins(
+ array(
+ array(
+ 'function' => 'smarty_make_timestamp',
+ 'file' => SMARTY_PLUGINS_DIR . 'shared.make_timestamp.php'
+ )
+ )
+ );
+ $time = smarty_make_timestamp($_value);
+ }
+ break;
+ case 'prefix':
+ case 'field_array':
+ case 'field_separator':
+ case 'option_separator':
+ case 'all_extra':
+ case 'hour_extra':
+ case 'minute_extra':
+ case 'second_extra':
+ case 'meridian_extra':
+ case 'all_empty':
+ case 'hour_empty':
+ case 'minute_empty':
+ case 'second_empty':
+ case 'meridian_empty':
+ case 'all_id':
+ case 'hour_id':
+ case 'minute_id':
+ case 'second_id':
+ case 'meridian_id':
+ case 'hour_format':
+ case 'hour_value_format':
+ case 'minute_format':
+ case 'minute_value_format':
+ case 'second_format':
+ case 'second_value_format':
+ $$_key = (string)$_value;
+ break;
+ case 'display_hours':
+ case 'display_minutes':
+ case 'display_seconds':
+ case 'display_meridian':
+ case 'use_24_hours':
+ $$_key = (bool)$_value;
+ break;
+ case 'minute_interval':
+ case 'second_interval':
+ case 'hour_size':
+ case 'minute_size':
+ case 'second_size':
+ case 'meridian_size':
+ $$_key = (int)$_value;
+ break;
+ default:
+ if (!is_array($_value)) {
+ $extra_attrs .= ' ' . $_key . '="' . smarty_function_escape_special_chars($_value) . '"';
+ } else {
+ trigger_error("html_select_date: extra attribute '{$_key}' cannot be an array", E_USER_NOTICE);
+ }
+ break;
+ }
+ }
+ if (isset($params[ 'time' ]) && is_array($params[ 'time' ])) {
+ if (isset($params[ 'time' ][ $prefix . 'Hour' ])) {
+ // $_REQUEST[$field_array] given
+ foreach (array(
+ 'H' => 'Hour',
+ 'i' => 'Minute',
+ 's' => 'Second'
+ ) as $_elementKey => $_elementName) {
+ $_variableName = '_' . strtolower($_elementName);
+ $$_variableName =
+ isset($params[ 'time' ][ $prefix . $_elementName ]) ? $params[ 'time' ][ $prefix . $_elementName ] :
+ date($_elementKey);
+ }
+ $_meridian =
+ isset($params[ 'time' ][ $prefix . 'Meridian' ]) ? (' ' . $params[ 'time' ][ $prefix . 'Meridian' ]) :
+ '';
+ $time = strtotime($_hour . ':' . $_minute . ':' . $_second . $_meridian);
+ list($_hour, $_minute, $_second) = $time = explode('-', date('H-i-s', $time));
+ } elseif (isset($params[ 'time' ][ $field_array ][ $prefix . 'Hour' ])) {
+ // $_REQUEST given
+ foreach (array(
+ 'H' => 'Hour',
+ 'i' => 'Minute',
+ 's' => 'Second'
+ ) as $_elementKey => $_elementName) {
+ $_variableName = '_' . strtolower($_elementName);
+ $$_variableName = isset($params[ 'time' ][ $field_array ][ $prefix . $_elementName ]) ?
+ $params[ 'time' ][ $field_array ][ $prefix . $_elementName ] : date($_elementKey);
+ }
+ $_meridian = isset($params[ 'time' ][ $field_array ][ $prefix . 'Meridian' ]) ?
+ (' ' . $params[ 'time' ][ $field_array ][ $prefix . 'Meridian' ]) : '';
+ $time = strtotime($_hour . ':' . $_minute . ':' . $_second . $_meridian);
+ list($_hour, $_minute, $_second) = $time = explode('-', date('H-i-s', $time));
+ } else {
+ // no date found, use NOW
+ list($_year, $_month, $_day) = $time = explode('-', date('Y-m-d'));
+ }
+ } elseif ($time === null) {
+ if (array_key_exists('time', $params)) {
+ $_hour = $_minute = $_second = $time = null;
+ } else {
+ list($_hour, $_minute, $_second) = $time = explode('-', date('H-i-s'));
+ }
+ } else {
+ list($_hour, $_minute, $_second) = $time = explode('-', date('H-i-s', $time));
+ }
+ // generate hour
+ if ($display_hours) {
+ $_html_hours = '';
+ $_extra = '';
+ $_name = $field_array ? ($field_array . '[' . $prefix . 'Hour]') : ($prefix . 'Hour');
+ if ($all_extra) {
+ $_extra .= ' ' . $all_extra;
+ }
+ if ($hour_extra) {
+ $_extra .= ' ' . $hour_extra;
+ }
+ $_html_hours = '' . $option_separator;
+ if (isset($hour_empty) || isset($all_empty)) {
+ $_html_hours .= '' . (isset($hour_empty) ? $hour_empty : $all_empty) . ' ' .
+ $option_separator;
+ }
+ $start = $use_24_hours ? 0 : 1;
+ $end = $use_24_hours ? 23 : 12;
+ for ($i = $start; $i <= $end; $i++) {
+ $_val = sprintf('%02d', $i);
+ $_text = $hour_format === '%02d' ? $_val : sprintf($hour_format, $i);
+ $_value = $hour_value_format === '%02d' ? $_val : sprintf($hour_value_format, $i);
+ if (!$use_24_hours) {
+ $_hour12 = $_hour == 0 ? 12 : ($_hour <= 12 ? $_hour : $_hour - 12);
+ }
+ $selected = $_hour !== null ? ($use_24_hours ? $_hour == $_val : $_hour12 == $_val) : null;
+ $_html_hours .= '' .
+ $_text . ' ' . $option_separator;
+ }
+ $_html_hours .= ' ';
+ }
+ // generate minute
+ if ($display_minutes) {
+ $_html_minutes = '';
+ $_extra = '';
+ $_name = $field_array ? ($field_array . '[' . $prefix . 'Minute]') : ($prefix . 'Minute');
+ if ($all_extra) {
+ $_extra .= ' ' . $all_extra;
+ }
+ if ($minute_extra) {
+ $_extra .= ' ' . $minute_extra;
+ }
+ $_html_minutes = '' . $option_separator;
+ if (isset($minute_empty) || isset($all_empty)) {
+ $_html_minutes .= '' . (isset($minute_empty) ? $minute_empty : $all_empty) . ' ' .
+ $option_separator;
+ }
+ $selected = $_minute !== null ? ($_minute - $_minute % $minute_interval) : null;
+ for ($i = 0; $i <= 59; $i += $minute_interval) {
+ $_val = sprintf('%02d', $i);
+ $_text = $minute_format === '%02d' ? $_val : sprintf($minute_format, $i);
+ $_value = $minute_value_format === '%02d' ? $_val : sprintf($minute_value_format, $i);
+ $_html_minutes .= '' . $_text . ' ' . $option_separator;
+ }
+ $_html_minutes .= ' ';
+ }
+ // generate second
+ if ($display_seconds) {
+ $_html_seconds = '';
+ $_extra = '';
+ $_name = $field_array ? ($field_array . '[' . $prefix . 'Second]') : ($prefix . 'Second');
+ if ($all_extra) {
+ $_extra .= ' ' . $all_extra;
+ }
+ if ($second_extra) {
+ $_extra .= ' ' . $second_extra;
+ }
+ $_html_seconds = '' . $option_separator;
+ if (isset($second_empty) || isset($all_empty)) {
+ $_html_seconds .= '' . (isset($second_empty) ? $second_empty : $all_empty) . ' ' .
+ $option_separator;
+ }
+ $selected = $_second !== null ? ($_second - $_second % $second_interval) : null;
+ for ($i = 0; $i <= 59; $i += $second_interval) {
+ $_val = sprintf('%02d', $i);
+ $_text = $second_format === '%02d' ? $_val : sprintf($second_format, $i);
+ $_value = $second_value_format === '%02d' ? $_val : sprintf($second_value_format, $i);
+ $_html_seconds .= '' . $_text . ' ' . $option_separator;
+ }
+ $_html_seconds .= ' ';
+ }
+ // generate meridian
+ if ($display_meridian && !$use_24_hours) {
+ $_html_meridian = '';
+ $_extra = '';
+ $_name = $field_array ? ($field_array . '[' . $prefix . 'Meridian]') : ($prefix . 'Meridian');
+ if ($all_extra) {
+ $_extra .= ' ' . $all_extra;
+ }
+ if ($meridian_extra) {
+ $_extra .= ' ' . $meridian_extra;
+ }
+ $_html_meridian = '' . $option_separator;
+ if (isset($meridian_empty) || isset($all_empty)) {
+ $_html_meridian .= '' . (isset($meridian_empty) ? $meridian_empty : $all_empty) .
+ ' ' . $option_separator;
+ }
+ $_html_meridian .= ' 0 && $_hour < 12 ? ' selected="selected"' : '') .
+ '>AM ' . $option_separator . 'PM ' . $option_separator .
+ ' ';
+ }
+ $_html = '';
+ foreach (array(
+ '_html_hours',
+ '_html_minutes',
+ '_html_seconds',
+ '_html_meridian'
+ ) as $k) {
+ if (isset($$k)) {
+ if ($_html) {
+ $_html .= $field_separator;
+ }
+ $_html .= $$k;
+ }
+ }
+ return $_html;
+}
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/plugins/function.html_table.php b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/plugins/function.html_table.php
new file mode 100644
index 000000000..17b0586e2
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/plugins/function.html_table.php
@@ -0,0 +1,164 @@
+
+ * @author credit to Messju Mohr
+ * @author credit to boots
+ * @version 1.1
+ * @link https://www.smarty.net/manual/en/language.function.html.table.php {html_table}
+ * (Smarty online manual)
+ *
+ * @param array $params parameters
+ *
+ * @return string
+ */
+function smarty_function_html_table($params)
+{
+ $table_attr = 'border="1"';
+ $tr_attr = '';
+ $th_attr = '';
+ $td_attr = '';
+ $cols = $cols_count = 3;
+ $rows = 3;
+ $trailpad = ' ';
+ $vdir = 'down';
+ $hdir = 'right';
+ $inner = 'cols';
+ $caption = '';
+ $loop = null;
+ if (!isset($params[ 'loop' ])) {
+ trigger_error("html_table: missing 'loop' parameter", E_USER_WARNING);
+ return;
+ }
+ foreach ($params as $_key => $_value) {
+ switch ($_key) {
+ case 'loop':
+ $$_key = (array)$_value;
+ break;
+ case 'cols':
+ if (is_array($_value) && !empty($_value)) {
+ $cols = $_value;
+ $cols_count = count($_value);
+ } elseif (!is_numeric($_value) && is_string($_value) && !empty($_value)) {
+ $cols = explode(',', $_value);
+ $cols_count = count($cols);
+ } elseif (!empty($_value)) {
+ $cols_count = (int)$_value;
+ } else {
+ $cols_count = $cols;
+ }
+ break;
+ case 'rows':
+ $$_key = (int)$_value;
+ break;
+ case 'table_attr':
+ case 'trailpad':
+ case 'hdir':
+ case 'vdir':
+ case 'inner':
+ case 'caption':
+ $$_key = (string)$_value;
+ break;
+ case 'tr_attr':
+ case 'td_attr':
+ case 'th_attr':
+ $$_key = $_value;
+ break;
+ }
+ }
+ $loop_count = count($loop);
+ if (empty($params[ 'rows' ])) {
+ /* no rows specified */
+ $rows = ceil($loop_count / $cols_count);
+ } elseif (empty($params[ 'cols' ])) {
+ if (!empty($params[ 'rows' ])) {
+ /* no cols specified, but rows */
+ $cols_count = ceil($loop_count / $rows);
+ }
+ }
+ $output = "\n";
+ if (!empty($caption)) {
+ $output .= '' . $caption . " \n";
+ }
+ if (is_array($cols)) {
+ $cols = ($hdir === 'right') ? $cols : array_reverse($cols);
+ $output .= "\n";
+ for ($r = 0; $r < $cols_count; $r++) {
+ $output .= '';
+ $output .= $cols[ $r ];
+ $output .= " \n";
+ }
+ $output .= " \n";
+ }
+ $output .= "\n";
+ for ($r = 0; $r < $rows; $r++) {
+ $output .= "\n";
+ $rx = ($vdir === 'down') ? $r * $cols_count : ($rows - 1 - $r) * $cols_count;
+ for ($c = 0; $c < $cols_count; $c++) {
+ $x = ($hdir === 'right') ? $rx + $c : $rx + $cols_count - 1 - $c;
+ if ($inner !== 'cols') {
+ /* shuffle x to loop over rows*/
+ $x = floor($x / $cols_count) + ($x % $cols_count) * $rows;
+ }
+ if ($x < $loop_count) {
+ $output .= "" . $loop[ $x ] . " \n";
+ } else {
+ $output .= "$trailpad \n";
+ }
+ }
+ $output .= " \n";
+ }
+ $output .= " \n";
+ $output .= "
\n";
+ return $output;
+}
+
+/**
+ * @param $name
+ * @param $var
+ * @param $no
+ *
+ * @return string
+ */
+function smarty_function_html_table_cycle($name, $var, $no)
+{
+ if (!is_array($var)) {
+ $ret = $var;
+ } else {
+ $ret = $var[ $no % count($var) ];
+ }
+ return ($ret) ? ' ' . $ret : '';
+}
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/plugins/function.mailto.php b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/plugins/function.mailto.php
new file mode 100644
index 000000000..671ac0694
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/plugins/function.mailto.php
@@ -0,0 +1,142 @@
+
+ * @author credits to Jason Sweat (added cc, bcc and subject functionality)
+ *
+ * @param array $params parameters
+ *
+ * @return string
+ */
+function smarty_function_mailto($params)
+{
+ static $_allowed_encoding = [
+ 'javascript' => true,
+ 'javascript_charcode' => true,
+ 'hex' => true,
+ 'none' => true
+ ];
+
+ $extra = '';
+ if (empty($params[ 'address' ])) {
+ trigger_error("mailto: missing 'address' parameter", E_USER_WARNING);
+ return;
+ } else {
+ $address = $params[ 'address' ];
+ }
+
+ $text = $address;
+
+ // netscape and mozilla do not decode %40 (@) in BCC field (bug?)
+ // so, don't encode it.
+ $mail_parms = [];
+ foreach ($params as $var => $value) {
+ switch ($var) {
+ case 'cc':
+ case 'bcc':
+ case 'followupto':
+ if (!empty($value)) {
+ $mail_parms[] = $var . '=' . str_replace(['%40', '%2C'], ['@', ','], rawurlencode($value));
+ }
+ break;
+ case 'subject':
+ case 'newsgroups':
+ $mail_parms[] = $var . '=' . rawurlencode($value);
+ break;
+ case 'extra':
+ case 'text':
+ $$var = $value;
+ // no break
+ default:
+ }
+ }
+
+ if ($mail_parms) {
+ $address .= '?' . join('&', $mail_parms);
+ }
+ $encode = (empty($params[ 'encode' ])) ? 'none' : $params[ 'encode' ];
+ if (!isset($_allowed_encoding[ $encode ])) {
+ trigger_error(
+ "mailto: 'encode' parameter must be none, javascript, javascript_charcode or hex",
+ E_USER_WARNING
+ );
+ return;
+ }
+
+ $string = '' . htmlspecialchars($text, ENT_QUOTES | ENT_SUBSTITUTE | ENT_HTML401, Smarty::$_CHARSET) . ' ';
+
+ if ($encode === 'javascript') {
+ $js_encode = '';
+ for ($x = 0, $_length = strlen($string); $x < $_length; $x++) {
+ $js_encode .= '%' . bin2hex($string[ $x ]);
+ }
+ return '';
+ } elseif ($encode === 'javascript_charcode') {
+ for ($x = 0, $_length = strlen($string); $x < $_length; $x++) {
+ $ord[] = ord($string[ $x ]);
+ }
+ return '';
+ } elseif ($encode === 'hex') {
+ preg_match('!^(.*)(\?.*)$!', $address, $match);
+ if (!empty($match[ 2 ])) {
+ trigger_error("mailto: hex encoding does not work with extra attributes. Try javascript.", E_USER_WARNING);
+ return;
+ }
+ $address_encode = '';
+ for ($x = 0, $_length = strlen($address); $x < $_length; $x++) {
+ if (preg_match('!\w!' . Smarty::$_UTF8_MODIFIER, $address[ $x ])) {
+ $address_encode .= '%' . bin2hex($address[ $x ]);
+ } else {
+ $address_encode .= $address[ $x ];
+ }
+ }
+ $text_encode = '';
+ for ($x = 0, $_length = strlen($text); $x < $_length; $x++) {
+ $text_encode .= '' . bin2hex($text[ $x ]) . ';';
+ }
+ $mailto = "mailto:";
+ return '' . $text_encode . ' ';
+ } else {
+ // no encoding
+ return $string;
+ }
+}
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/plugins/function.math.php b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/plugins/function.math.php
new file mode 100644
index 000000000..34912d239
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/plugins/function.math.php
@@ -0,0 +1,142 @@
+
+ *
+ * @param array $params parameters
+ * @param Smarty_Internal_Template $template template object
+ *
+ * @return string|null
+ */
+function smarty_function_math($params, $template)
+{
+ static $_allowed_funcs =
+ array(
+ 'int' => true,
+ 'abs' => true,
+ 'ceil' => true,
+ 'acos' => true,
+ 'acosh' => true,
+ 'cos' => true,
+ 'cosh' => true,
+ 'deg2rad' => true,
+ 'rad2deg' => true,
+ 'exp' => true,
+ 'floor' => true,
+ 'log' => true,
+ 'log10' => true,
+ 'max' => true,
+ 'min' => true,
+ 'pi' => true,
+ 'pow' => true,
+ 'rand' => true,
+ 'round' => true,
+ 'asin' => true,
+ 'asinh' => true,
+ 'sin' => true,
+ 'sinh' => true,
+ 'sqrt' => true,
+ 'srand' => true,
+ 'atan' => true,
+ 'atanh' => true,
+ 'tan' => true,
+ 'tanh' => true
+ );
+
+ // be sure equation parameter is present
+ if (empty($params[ 'equation' ])) {
+ trigger_error("math: missing equation parameter", E_USER_WARNING);
+ return;
+ }
+ $equation = $params[ 'equation' ];
+
+ // Remove whitespaces
+ $equation = preg_replace('/\s+/', '', $equation);
+
+ // Adapted from https://www.php.net/manual/en/function.eval.php#107377
+ $number = '-?(?:\d+(?:[,.]\d+)?|pi|Ï€)'; // What is a number
+ $functionsOrVars = '((?:0x[a-fA-F0-9]+)|([a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*))';
+ $operators = '[,+\/*\^%-]'; // Allowed math operators
+ $regexp = '/^(('.$number.'|'.$functionsOrVars.'|('.$functionsOrVars.'\s*\((?1)*\)|\((?1)*\)))(?:'.$operators.'(?1))?)+$/';
+
+ if (!preg_match($regexp, $equation)) {
+ trigger_error("math: illegal characters", E_USER_WARNING);
+ return;
+ }
+
+ // make sure parenthesis are balanced
+ if (substr_count($equation, '(') !== substr_count($equation, ')')) {
+ trigger_error("math: unbalanced parenthesis", E_USER_WARNING);
+ return;
+ }
+
+ // disallow backticks
+ if (strpos($equation, '`') !== false) {
+ trigger_error("math: backtick character not allowed in equation", E_USER_WARNING);
+ return;
+ }
+
+ // also disallow dollar signs
+ if (strpos($equation, '$') !== false) {
+ trigger_error("math: dollar signs not allowed in equation", E_USER_WARNING);
+ return;
+ }
+ foreach ($params as $key => $val) {
+ if ($key !== 'equation' && $key !== 'format' && $key !== 'assign') {
+ // make sure value is not empty
+ if (strlen($val) === 0) {
+ trigger_error("math: parameter '{$key}' is empty", E_USER_WARNING);
+ return;
+ }
+ if (!is_numeric($val)) {
+ trigger_error("math: parameter '{$key}' is not numeric", E_USER_WARNING);
+ return;
+ }
+ }
+ }
+ // match all vars in equation, make sure all are passed
+ preg_match_all('!(?:0x[a-fA-F0-9]+)|([a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*)!', $equation, $match);
+ foreach ($match[ 1 ] as $curr_var) {
+ if ($curr_var && !isset($params[ $curr_var ]) && !isset($_allowed_funcs[ $curr_var ])) {
+ trigger_error(
+ "math: function call '{$curr_var}' not allowed, or missing parameter '{$curr_var}'",
+ E_USER_WARNING
+ );
+ return;
+ }
+ }
+ foreach ($params as $key => $val) {
+ if ($key !== 'equation' && $key !== 'format' && $key !== 'assign') {
+ $equation = preg_replace("/\b$key\b/", " \$params['$key'] ", $equation);
+ }
+ }
+ $smarty_math_result = null;
+ eval("\$smarty_math_result = " . $equation . ";");
+
+ if (empty($params[ 'format' ])) {
+ if (empty($params[ 'assign' ])) {
+ return $smarty_math_result;
+ } else {
+ $template->assign($params[ 'assign' ], $smarty_math_result);
+ }
+ } else {
+ if (empty($params[ 'assign' ])) {
+ printf($params[ 'format' ], $smarty_math_result);
+ } else {
+ $template->assign($params[ 'assign' ], sprintf($params[ 'format' ], $smarty_math_result));
+ }
+ }
+}
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/plugins/modifier.capitalize.php b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/plugins/modifier.capitalize.php
new file mode 100644
index 000000000..2903d61d7
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/plugins/modifier.capitalize.php
@@ -0,0 +1,147 @@
+
+ * @author Rodney Rehm
+ */
+function smarty_modifier_capitalize($string, $uc_digits = false, $lc_rest = false)
+{
+ $string = (string) $string;
+
+ if (Smarty::$_MBSTRING) {
+ if ($lc_rest) {
+ // uppercase (including hyphenated words)
+ $upper_string = mb_convert_case($string, MB_CASE_TITLE, Smarty::$_CHARSET);
+ } else {
+ // uppercase word breaks
+ $upper_string = preg_replace_callback(
+ "!(^|[^\p{L}'])([\p{Ll}])!S" . Smarty::$_UTF8_MODIFIER,
+ 'smarty_mod_cap_mbconvert_cb',
+ $string
+ );
+ }
+ // check uc_digits case
+ if (!$uc_digits) {
+ if (preg_match_all(
+ "!\b([\p{L}]*[\p{N}]+[\p{L}]*)\b!" . Smarty::$_UTF8_MODIFIER,
+ $string,
+ $matches,
+ PREG_OFFSET_CAPTURE
+ )
+ ) {
+ foreach ($matches[ 1 ] as $match) {
+ $upper_string =
+ substr_replace(
+ $upper_string,
+ mb_strtolower($match[ 0 ], Smarty::$_CHARSET),
+ $match[ 1 ],
+ strlen($match[ 0 ])
+ );
+ }
+ }
+ }
+ $upper_string =
+ preg_replace_callback(
+ "!((^|\s)['\"])(\w)!" . Smarty::$_UTF8_MODIFIER,
+ 'smarty_mod_cap_mbconvert2_cb',
+ $upper_string
+ );
+ return $upper_string;
+ }
+ // lowercase first
+ if ($lc_rest) {
+ $string = strtolower($string);
+ }
+ // uppercase (including hyphenated words)
+ $upper_string =
+ preg_replace_callback(
+ "!(^|[^\p{L}'])([\p{Ll}])!S" . Smarty::$_UTF8_MODIFIER,
+ 'smarty_mod_cap_ucfirst_cb',
+ $string
+ );
+ // check uc_digits case
+ if (!$uc_digits) {
+ if (preg_match_all(
+ "!\b([\p{L}]*[\p{N}]+[\p{L}]*)\b!" . Smarty::$_UTF8_MODIFIER,
+ $string,
+ $matches,
+ PREG_OFFSET_CAPTURE
+ )
+ ) {
+ foreach ($matches[ 1 ] as $match) {
+ $upper_string =
+ substr_replace($upper_string, strtolower($match[ 0 ]), $match[ 1 ], strlen($match[ 0 ]));
+ }
+ }
+ }
+ $upper_string = preg_replace_callback(
+ "!((^|\s)['\"])(\w)!" . Smarty::$_UTF8_MODIFIER,
+ 'smarty_mod_cap_ucfirst2_cb',
+ $upper_string
+ );
+ return $upper_string;
+}
+
+/**
+ *
+ * Bug: create_function() use exhausts memory when used in long loops
+ * Fix: use declared functions for callbacks instead of using create_function()
+ * Note: This can be fixed using anonymous functions instead, but that requires PHP >= 5.3
+ *
+ * @author Kyle Renfrow
+ */
+/**
+ * @param $matches
+ *
+ * @return string
+ */
+function smarty_mod_cap_mbconvert_cb($matches)
+{
+ return stripslashes($matches[ 1 ]) . mb_convert_case(stripslashes($matches[ 2 ]), MB_CASE_UPPER, Smarty::$_CHARSET);
+}
+
+/**
+ * @param $matches
+ *
+ * @return string
+ */
+function smarty_mod_cap_mbconvert2_cb($matches)
+{
+ return stripslashes($matches[ 1 ]) . mb_convert_case(stripslashes($matches[ 3 ]), MB_CASE_UPPER, Smarty::$_CHARSET);
+}
+
+/**
+ * @param $matches
+ *
+ * @return string
+ */
+function smarty_mod_cap_ucfirst_cb($matches)
+{
+ return stripslashes($matches[ 1 ]) . ucfirst(stripslashes($matches[ 2 ]));
+}
+
+/**
+ * @param $matches
+ *
+ * @return string
+ */
+function smarty_mod_cap_ucfirst2_cb($matches)
+{
+ return stripslashes($matches[ 1 ]) . ucfirst(stripslashes($matches[ 3 ]));
+}
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/plugins/modifier.count.php b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/plugins/modifier.count.php
new file mode 100644
index 000000000..ca35fc115
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/plugins/modifier.count.php
@@ -0,0 +1,36 @@
+ Prior to PHP 8.0.0, if the parameter was neither an array nor an object that implements the Countable interface,
+ * > 1 would be returned, unless value was null, in which case 0 would be returned.
+ */
+
+ if ($arrayOrObject instanceof Countable || is_array($arrayOrObject)) {
+ return count($arrayOrObject, (int) $mode);
+ } elseif ($arrayOrObject === null) {
+ return 0;
+ }
+ return 1;
+}
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/plugins/modifier.date_format.php b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/plugins/modifier.date_format.php
new file mode 100644
index 000000000..e3589fd07
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/plugins/modifier.date_format.php
@@ -0,0 +1,86 @@
+
+ *
+ * @param string $string input date string
+ * @param string $format strftime format for output
+ * @param string $default_date default date if $string is empty
+ * @param string $formatter either 'strftime' or 'auto'
+ *
+ * @return string |void
+ * @uses smarty_make_timestamp()
+ */
+function smarty_modifier_date_format($string, $format = null, $default_date = '', $formatter = 'auto')
+{
+ if ($format === null) {
+ $format = Smarty::$_DATE_FORMAT;
+ }
+ /**
+ * require_once the {@link shared.make_timestamp.php} plugin
+ */
+ static $is_loaded = false;
+ if (!$is_loaded) {
+ if (!is_callable('smarty_make_timestamp')) {
+ include_once SMARTY_PLUGINS_DIR . 'shared.make_timestamp.php';
+ }
+ $is_loaded = true;
+ }
+ if (!empty($string) && $string !== '0000-00-00' && $string !== '0000-00-00 00:00:00') {
+ $timestamp = smarty_make_timestamp($string);
+ } elseif (!empty($default_date)) {
+ $timestamp = smarty_make_timestamp($default_date);
+ } else {
+ return;
+ }
+ if ($formatter === 'strftime' || ($formatter === 'auto' && strpos($format, '%') !== false)) {
+ if (Smarty::$_IS_WINDOWS) {
+ $_win_from = array(
+ '%D',
+ '%h',
+ '%n',
+ '%r',
+ '%R',
+ '%t',
+ '%T'
+ );
+ $_win_to = array(
+ '%m/%d/%y',
+ '%b',
+ "\n",
+ '%I:%M:%S %p',
+ '%H:%M',
+ "\t",
+ '%H:%M:%S'
+ );
+ if (strpos($format, '%e') !== false) {
+ $_win_from[] = '%e';
+ $_win_to[] = sprintf('%\' 2d', date('j', $timestamp));
+ }
+ if (strpos($format, '%l') !== false) {
+ $_win_from[] = '%l';
+ $_win_to[] = sprintf('%\' 2d', date('h', $timestamp));
+ }
+ $format = str_replace($_win_from, $_win_to, $format);
+ }
+ // @ to suppress deprecation errors when running in PHP8.1 or higher.
+ return @strftime($format, $timestamp);
+ } else {
+ return date($format, $timestamp);
+ }
+}
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/plugins/modifier.debug_print_var.php b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/plugins/modifier.debug_print_var.php
new file mode 100644
index 000000000..78397d017
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/plugins/modifier.debug_print_var.php
@@ -0,0 +1,103 @@
+
+ *
+ * @param array|object $var variable to be formatted
+ * @param int $max maximum recursion depth if $var is an array or object
+ * @param int $length maximum string length if $var is a string
+ * @param int $depth actual recursion depth
+ * @param array $objects processed objects in actual depth to prevent recursive object processing
+ *
+ * @return string
+ */
+function smarty_modifier_debug_print_var($var, $max = 10, $length = 40, $depth = 0, $objects = array())
+{
+ $_replace = array("\n" => '\n', "\r" => '\r', "\t" => '\t');
+ switch (gettype($var)) {
+ case 'array':
+ $results = 'Array (' . count($var) . ') ';
+ if ($depth === $max) {
+ break;
+ }
+ foreach ($var as $curr_key => $curr_val) {
+ $results .= ' ' . str_repeat(' ', $depth * 2) . '' . strtr($curr_key, $_replace) .
+ ' => ' .
+ smarty_modifier_debug_print_var($curr_val, $max, $length, ++$depth, $objects);
+ $depth--;
+ }
+ break;
+ case 'object':
+ $object_vars = get_object_vars($var);
+ $results = '' . get_class($var) . ' Object (' . count($object_vars) . ') ';
+ if (in_array($var, $objects)) {
+ $results .= ' called recursive';
+ break;
+ }
+ if ($depth === $max) {
+ break;
+ }
+ $objects[] = $var;
+ foreach ($object_vars as $curr_key => $curr_val) {
+ $results .= ' ' . str_repeat(' ', $depth * 2) . ' ->' . strtr($curr_key, $_replace) .
+ ' = ' . smarty_modifier_debug_print_var($curr_val, $max, $length, ++$depth, $objects);
+ $depth--;
+ }
+ break;
+ case 'boolean':
+ case 'NULL':
+ case 'resource':
+ if (true === $var) {
+ $results = 'true';
+ } elseif (false === $var) {
+ $results = 'false';
+ } elseif (null === $var) {
+ $results = 'null';
+ } else {
+ $results = htmlspecialchars((string)$var);
+ }
+ $results = '' . $results . ' ';
+ break;
+ case 'integer':
+ case 'float':
+ $results = htmlspecialchars((string)$var);
+ break;
+ case 'string':
+ $results = strtr($var, $_replace);
+ if (Smarty::$_MBSTRING) {
+ if (mb_strlen($var, Smarty::$_CHARSET) > $length) {
+ $results = mb_substr($var, 0, $length - 3, Smarty::$_CHARSET) . '...';
+ }
+ } else {
+ if (isset($var[ $length ])) {
+ $results = substr($var, 0, $length - 3) . '...';
+ }
+ }
+ $results = htmlspecialchars('"' . $results . '"', ENT_QUOTES, Smarty::$_CHARSET);
+ break;
+ case 'unknown type':
+ default:
+ $results = strtr((string)$var, $_replace);
+ if (Smarty::$_MBSTRING) {
+ if (mb_strlen($results, Smarty::$_CHARSET) > $length) {
+ $results = mb_substr($results, 0, $length - 3, Smarty::$_CHARSET) . '...';
+ }
+ } else {
+ if (strlen($results) > $length) {
+ $results = substr($results, 0, $length - 3) . '...';
+ }
+ }
+ $results = htmlspecialchars($results, ENT_QUOTES, Smarty::$_CHARSET);
+ }
+ return $results;
+}
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/plugins/modifier.escape.php b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/plugins/modifier.escape.php
new file mode 100644
index 000000000..e168679c3
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/plugins/modifier.escape.php
@@ -0,0 +1,189 @@
+
+ *
+ * @param string $string input string
+ * @param string $esc_type escape type
+ * @param string $char_set character set, used for htmlspecialchars() or htmlentities()
+ * @param boolean $double_encode encode already encoded entitites again, used for htmlspecialchars() or htmlentities()
+ *
+ * @return string escaped input string
+ */
+function smarty_modifier_escape($string, $esc_type = 'html', $char_set = null, $double_encode = true)
+{
+ static $is_loaded_1 = false;
+ static $is_loaded_2 = false;
+ if (!$char_set) {
+ $char_set = Smarty::$_CHARSET;
+ }
+
+ $string = (string)$string;
+
+ switch ($esc_type) {
+ case 'html':
+ return htmlspecialchars($string, ENT_QUOTES, $char_set, $double_encode);
+ // no break
+ case 'htmlall':
+ if (Smarty::$_MBSTRING) {
+ $string = mb_convert_encoding($string, 'UTF-8', $char_set);
+ return htmlentities($string, ENT_QUOTES, 'UTF-8', $double_encode);
+ }
+ // no MBString fallback
+ return htmlentities($string, ENT_QUOTES, $char_set, $double_encode);
+ // no break
+ case 'url':
+ return rawurlencode($string);
+ case 'urlpathinfo':
+ return str_replace('%2F', '/', rawurlencode($string));
+ case 'quotes':
+ // escape unescaped single quotes
+ return preg_replace("%(? '\\\\',
+ "'" => "\\'",
+ '"' => '\\"',
+ "\r" => '\\r',
+ "\n" => '\\n',
+ '' => '<\/',
+ // see https://html.spec.whatwg.org/multipage/scripting.html#restrictions-for-contents-of-script-elements
+ '#is',
+ $source,
+ $matches,
+ PREG_OFFSET_CAPTURE | PREG_SET_ORDER
+ )
+ ) {
+ foreach ($matches as $match) {
+ $store[] = $match[ 0 ][ 0 ];
+ $_length = strlen($match[ 0 ][ 0 ]);
+ $replace = '@!@SMARTY:' . $_store . ':SMARTY@!@';
+ $source = substr_replace($source, $replace, $match[ 0 ][ 1 ] - $_offset, $_length);
+ $_offset += $_length - strlen($replace);
+ $_store++;
+ }
+ }
+ // Strip all HTML-Comments
+ // yes, even the ones in ]*>)|(]*>)|(]*>.*? ]*>)#is',
+ $source,
+ $matches,
+ PREG_OFFSET_CAPTURE | PREG_SET_ORDER
+ )
+ ) {
+ foreach ($matches as $match) {
+ $store[] = $match[ 0 ][ 0 ];
+ $_length = strlen($match[ 0 ][ 0 ]);
+ $replace = '@!@SMARTY:' . $_store . ':SMARTY@!@';
+ $source = substr_replace($source, $replace, $match[ 0 ][ 1 ] - $_offset, $_length);
+ $_offset += $_length - strlen($replace);
+ $_store++;
+ }
+ }
+ $expressions = array(// replace multiple spaces between tags by a single space
+ // can't remove them entirely, because that might break poorly implemented CSS display:inline-block elements
+ '#(:SMARTY@!@|>)\s+(?=@!@SMARTY:|<)#s' => '\1 \2',
+ // remove spaces between attributes (but not in attribute values!)
+ '#(([a-z0-9]\s*=\s*("[^"]*?")|(\'[^\']*?\'))|<[a-z0-9_]+)\s+([a-z/>])#is' => '\1 \5',
+ // note: for some very weird reason trim() seems to remove spaces inside attributes.
+ // maybe a \0 byte or something is interfering?
+ '#^\s+<#Ss' => '<',
+ '#>\s+$#Ss' => '>',
+ );
+ $source = preg_replace(array_keys($expressions), array_values($expressions), $source);
+ // note: for some very weird reason trim() seems to remove spaces inside attributes.
+ // maybe a \0 byte or something is interfering?
+ // $source = trim( $source );
+ $_offset = 0;
+ if (preg_match_all('#@!@SMARTY:([0-9]+):SMARTY@!@#is', $source, $matches, PREG_OFFSET_CAPTURE | PREG_SET_ORDER)) {
+ foreach ($matches as $match) {
+ $_length = strlen($match[ 0 ][ 0 ]);
+ $replace = $store[ $match[ 1 ][ 0 ] ];
+ $source = substr_replace($source, $replace, $match[ 0 ][ 1 ] + $_offset, $_length);
+ $_offset += strlen($replace) - $_length;
+ $_store++;
+ }
+ }
+ return $source;
+}
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/plugins/shared.escape_special_chars.php b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/plugins/shared.escape_special_chars.php
new file mode 100644
index 000000000..355b02b57
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/plugins/shared.escape_special_chars.php
@@ -0,0 +1,26 @@
+
+ *
+ * @param string $string text that should by escaped
+ *
+ * @return string
+ */
+function smarty_function_escape_special_chars($string)
+{
+ if (!is_array($string)) {
+ $string = htmlspecialchars((string) $string, ENT_COMPAT, Smarty::$_CHARSET, false);
+ }
+ return $string;
+}
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/plugins/shared.literal_compiler_param.php b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/plugins/shared.literal_compiler_param.php
new file mode 100644
index 000000000..65caf03c8
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/plugins/shared.literal_compiler_param.php
@@ -0,0 +1,35 @@
+
+ *
+ * @param DateTime|int|string $string date object, timestamp or string that can be converted using strtotime()
+ *
+ * @return int
+ */
+function smarty_make_timestamp($string)
+{
+ if (empty($string)) {
+ // use "now":
+ return time();
+ } elseif ($string instanceof DateTime
+ || (interface_exists('DateTimeInterface', false) && $string instanceof DateTimeInterface)
+ ) {
+ return (int)$string->format('U'); // PHP 5.2 BC
+ } elseif (strlen($string) === 14 && ctype_digit($string)) {
+ // it is mysql timestamp format of YYYYMMDDHHMMSS?
+ return mktime(
+ substr($string, 8, 2),
+ substr($string, 10, 2),
+ substr($string, 12, 2),
+ substr($string, 4, 2),
+ substr($string, 6, 2),
+ substr($string, 0, 4)
+ );
+ } elseif (is_numeric($string)) {
+ // it is a numeric string, we handle it as timestamp
+ return (int)$string;
+ } else {
+ // strtotime should handle it
+ $time = strtotime($string);
+ if ($time === -1 || $time === false) {
+ // strtotime() was not able to parse $string, use "now":
+ return time();
+ }
+ return $time;
+ }
+}
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/plugins/shared.mb_str_replace.php b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/plugins/shared.mb_str_replace.php
new file mode 100644
index 000000000..7e85f7aae
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/plugins/shared.mb_str_replace.php
@@ -0,0 +1,87 @@
+ 'smarty_internal_cacheresource_file.php',);
+
+ /**
+ * populate Cached Object with meta data from Resource
+ *
+ * @param \Smarty_Template_Cached $cached cached object
+ * @param Smarty_Internal_Template $_template template object
+ *
+ * @return void
+ */
+ abstract public function populate(\Smarty_Template_Cached $cached, Smarty_Internal_Template $_template);
+
+ /**
+ * populate Cached Object with timestamp and exists from Resource
+ *
+ * @param Smarty_Template_Cached $cached
+ *
+ * @return void
+ */
+ abstract public function populateTimestamp(Smarty_Template_Cached $cached);
+
+ /**
+ * Read the cached template and process header
+ *
+ * @param Smarty_Internal_Template $_template template object
+ * @param Smarty_Template_Cached $cached cached object
+ * @param boolean $update flag if called because cache update
+ *
+ * @return boolean true or false if the cached content does not exist
+ */
+ abstract public function process(
+ Smarty_Internal_Template $_template,
+ Smarty_Template_Cached $cached = null,
+ $update = false
+ );
+
+ /**
+ * Write the rendered template output to cache
+ *
+ * @param Smarty_Internal_Template $_template template object
+ * @param string $content content to cache
+ *
+ * @return boolean success
+ */
+ abstract public function writeCachedContent(Smarty_Internal_Template $_template, $content);
+
+ /**
+ * Read cached template from cache
+ *
+ * @param Smarty_Internal_Template $_template template object
+ *
+ * @return string content
+ */
+ abstract public function readCachedContent(Smarty_Internal_Template $_template);
+
+ /**
+ * Return cached content
+ *
+ * @param Smarty_Internal_Template $_template template object
+ *
+ * @return null|string
+ */
+ public function getCachedContent(Smarty_Internal_Template $_template)
+ {
+ if ($_template->cached->handler->process($_template)) {
+ ob_start();
+ $unifunc = $_template->cached->unifunc;
+ $unifunc($_template);
+ return ob_get_clean();
+ }
+ return null;
+ }
+
+ /**
+ * Empty cache
+ *
+ * @param Smarty $smarty Smarty object
+ * @param integer $exp_time expiration time (number of seconds, not timestamp)
+ *
+ * @return integer number of cache files deleted
+ */
+ abstract public function clearAll(Smarty $smarty, $exp_time = null);
+
+ /**
+ * Empty cache for a specific template
+ *
+ * @param Smarty $smarty Smarty object
+ * @param string $resource_name template name
+ * @param string $cache_id cache id
+ * @param string $compile_id compile id
+ * @param integer $exp_time expiration time (number of seconds, not timestamp)
+ *
+ * @return integer number of cache files deleted
+ */
+ abstract public function clear(Smarty $smarty, $resource_name, $cache_id, $compile_id, $exp_time);
+
+ /**
+ * @param Smarty $smarty
+ * @param Smarty_Template_Cached $cached
+ *
+ * @return bool|null
+ */
+ public function locked(Smarty $smarty, Smarty_Template_Cached $cached)
+ {
+ // theoretically locking_timeout should be checked against time_limit (max_execution_time)
+ $start = microtime(true);
+ $hadLock = null;
+ while ($this->hasLock($smarty, $cached)) {
+ $hadLock = true;
+ if (microtime(true) - $start > $smarty->locking_timeout) {
+ // abort waiting for lock release
+ return false;
+ }
+ sleep(1);
+ }
+ return $hadLock;
+ }
+
+ /**
+ * Check is cache is locked for this template
+ *
+ * @param Smarty $smarty
+ * @param Smarty_Template_Cached $cached
+ *
+ * @return bool
+ */
+ public function hasLock(Smarty $smarty, Smarty_Template_Cached $cached)
+ {
+ // check if lock exists
+ return false;
+ }
+
+ /**
+ * Lock cache for this template
+ *
+ * @param Smarty $smarty
+ * @param Smarty_Template_Cached $cached
+ *
+ * @return bool
+ */
+ public function acquireLock(Smarty $smarty, Smarty_Template_Cached $cached)
+ {
+ // create lock
+ return true;
+ }
+
+ /**
+ * Unlock cache for this template
+ *
+ * @param Smarty $smarty
+ * @param Smarty_Template_Cached $cached
+ *
+ * @return bool
+ */
+ public function releaseLock(Smarty $smarty, Smarty_Template_Cached $cached)
+ {
+ // release lock
+ return true;
+ }
+
+ /**
+ * Load Cache Resource Handler
+ *
+ * @param Smarty $smarty Smarty object
+ * @param string $type name of the cache resource
+ *
+ * @throws SmartyException
+ * @return Smarty_CacheResource Cache Resource Handler
+ */
+ public static function load(Smarty $smarty, $type = null)
+ {
+ if (!isset($type)) {
+ $type = $smarty->caching_type;
+ }
+ // try smarty's cache
+ if (isset($smarty->_cache[ 'cacheresource_handlers' ][ $type ])) {
+ return $smarty->_cache[ 'cacheresource_handlers' ][ $type ];
+ }
+ // try registered resource
+ if (isset($smarty->registered_cache_resources[ $type ])) {
+ // do not cache these instances as they may vary from instance to instance
+ return $smarty->_cache[ 'cacheresource_handlers' ][ $type ] = $smarty->registered_cache_resources[ $type ];
+ }
+ // try sysplugins dir
+ if (isset(self::$sysplugins[ $type ])) {
+ $cache_resource_class = 'Smarty_Internal_CacheResource_' . smarty_ucfirst_ascii($type);
+ return $smarty->_cache[ 'cacheresource_handlers' ][ $type ] = new $cache_resource_class();
+ }
+ // try plugins dir
+ $cache_resource_class = 'Smarty_CacheResource_' . smarty_ucfirst_ascii($type);
+ if ($smarty->loadPlugin($cache_resource_class)) {
+ return $smarty->_cache[ 'cacheresource_handlers' ][ $type ] = new $cache_resource_class();
+ }
+ // give up
+ throw new SmartyException("Unable to load cache resource '{$type}'");
+ }
+}
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_cacheresource_custom.php b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_cacheresource_custom.php
new file mode 100644
index 000000000..68ad11289
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_cacheresource_custom.php
@@ -0,0 +1,297 @@
+cache_id) ? preg_replace('![^\w\|]+!', '_', $cached->cache_id) : null;
+ $_compile_id = isset($cached->compile_id) ? preg_replace('![^\w]+!', '_', $cached->compile_id) : null;
+ $path = $cached->source->uid . $_cache_id . $_compile_id;
+ $cached->filepath = sha1($path);
+ if ($_template->smarty->cache_locking) {
+ $cached->lock_id = sha1('lock.' . $path);
+ }
+ $this->populateTimestamp($cached);
+ }
+
+ /**
+ * populate Cached Object with timestamp and exists from Resource
+ *
+ * @param Smarty_Template_Cached $cached
+ *
+ * @return void
+ */
+ public function populateTimestamp(Smarty_Template_Cached $cached)
+ {
+ $mtime =
+ $this->fetchTimestamp($cached->filepath, $cached->source->name, $cached->cache_id, $cached->compile_id);
+ if ($mtime !== null) {
+ $cached->timestamp = $mtime;
+ $cached->exists = !!$cached->timestamp;
+ return;
+ }
+ $timestamp = null;
+ $this->fetch(
+ $cached->filepath,
+ $cached->source->name,
+ $cached->cache_id,
+ $cached->compile_id,
+ $cached->content,
+ $timestamp
+ );
+ $cached->timestamp = isset($timestamp) ? $timestamp : false;
+ $cached->exists = !!$cached->timestamp;
+ }
+
+ /**
+ * Read the cached template and process the header
+ *
+ * @param \Smarty_Internal_Template $_smarty_tpl do not change variable name, is used by compiled template
+ * @param Smarty_Template_Cached $cached cached object
+ * @param boolean $update flag if called because cache update
+ *
+ * @return boolean true or false if the cached content does not exist
+ */
+ public function process(
+ Smarty_Internal_Template $_smarty_tpl,
+ Smarty_Template_Cached $cached = null,
+ $update = false
+ ) {
+ if (!$cached) {
+ $cached = $_smarty_tpl->cached;
+ }
+ $content = $cached->content ? $cached->content : null;
+ $timestamp = $cached->timestamp ? $cached->timestamp : null;
+ if ($content === null || !$timestamp) {
+ $this->fetch(
+ $_smarty_tpl->cached->filepath,
+ $_smarty_tpl->source->name,
+ $_smarty_tpl->cache_id,
+ $_smarty_tpl->compile_id,
+ $content,
+ $timestamp
+ );
+ }
+ if (isset($content)) {
+ eval('?>' . $content);
+ $cached->content = null;
+ return true;
+ }
+ return false;
+ }
+
+ /**
+ * Write the rendered template output to cache
+ *
+ * @param Smarty_Internal_Template $_template template object
+ * @param string $content content to cache
+ *
+ * @return boolean success
+ */
+ public function writeCachedContent(Smarty_Internal_Template $_template, $content)
+ {
+ return $this->save(
+ $_template->cached->filepath,
+ $_template->source->name,
+ $_template->cache_id,
+ $_template->compile_id,
+ $_template->cache_lifetime,
+ $content
+ );
+ }
+
+ /**
+ * Read cached template from cache
+ *
+ * @param Smarty_Internal_Template $_template template object
+ *
+ * @return string|boolean content
+ */
+ public function readCachedContent(Smarty_Internal_Template $_template)
+ {
+ $content = $_template->cached->content ? $_template->cached->content : null;
+ $timestamp = null;
+ if ($content === null) {
+ $timestamp = null;
+ $this->fetch(
+ $_template->cached->filepath,
+ $_template->source->name,
+ $_template->cache_id,
+ $_template->compile_id,
+ $content,
+ $timestamp
+ );
+ }
+ if (isset($content)) {
+ return $content;
+ }
+ return false;
+ }
+
+ /**
+ * Empty cache
+ *
+ * @param Smarty $smarty Smarty object
+ * @param integer $exp_time expiration time (number of seconds, not timestamp)
+ *
+ * @return integer number of cache files deleted
+ */
+ public function clearAll(Smarty $smarty, $exp_time = null)
+ {
+ return $this->delete(null, null, null, $exp_time);
+ }
+
+ /**
+ * Empty cache for a specific template
+ *
+ * @param Smarty $smarty Smarty object
+ * @param string $resource_name template name
+ * @param string $cache_id cache id
+ * @param string $compile_id compile id
+ * @param integer $exp_time expiration time (number of seconds, not timestamp)
+ *
+ * @return int number of cache files deleted
+ * @throws \SmartyException
+ */
+ public function clear(Smarty $smarty, $resource_name, $cache_id, $compile_id, $exp_time)
+ {
+ $cache_name = null;
+ if (isset($resource_name)) {
+ $source = Smarty_Template_Source::load(null, $smarty, $resource_name);
+ if ($source->exists) {
+ $cache_name = $source->name;
+ } else {
+ return 0;
+ }
+ }
+ return $this->delete($cache_name, $cache_id, $compile_id, $exp_time);
+ }
+
+ /**
+ * Check is cache is locked for this template
+ *
+ * @param Smarty $smarty Smarty object
+ * @param Smarty_Template_Cached $cached cached object
+ *
+ * @return boolean true or false if cache is locked
+ */
+ public function hasLock(Smarty $smarty, Smarty_Template_Cached $cached)
+ {
+ $id = $cached->lock_id;
+ $name = $cached->source->name . '.lock';
+ $mtime = $this->fetchTimestamp($id, $name, $cached->cache_id, $cached->compile_id);
+ if ($mtime === null) {
+ $this->fetch($id, $name, $cached->cache_id, $cached->compile_id, $content, $mtime);
+ }
+ return $mtime && ($t = time()) - $mtime < $smarty->locking_timeout;
+ }
+
+ /**
+ * Lock cache for this template
+ *
+ * @param Smarty $smarty Smarty object
+ * @param Smarty_Template_Cached $cached cached object
+ *
+ * @return bool|void
+ */
+ public function acquireLock(Smarty $smarty, Smarty_Template_Cached $cached)
+ {
+ $cached->is_locked = true;
+ $id = $cached->lock_id;
+ $name = $cached->source->name . '.lock';
+ $this->save($id, $name, $cached->cache_id, $cached->compile_id, $smarty->locking_timeout, '');
+ }
+
+ /**
+ * Unlock cache for this template
+ *
+ * @param Smarty $smarty Smarty object
+ * @param Smarty_Template_Cached $cached cached object
+ *
+ * @return bool|void
+ */
+ public function releaseLock(Smarty $smarty, Smarty_Template_Cached $cached)
+ {
+ $cached->is_locked = false;
+ $name = $cached->source->name . '.lock';
+ $this->delete($name, $cached->cache_id, $cached->compile_id, null);
+ }
+}
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_cacheresource_keyvaluestore.php b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_cacheresource_keyvaluestore.php
new file mode 100644
index 000000000..4b1c0f6d8
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_cacheresource_keyvaluestore.php
@@ -0,0 +1,538 @@
+filepath = $_template->source->uid . '#' . $this->sanitize($cached->source->resource) . '#' .
+ $this->sanitize($cached->cache_id) . '#' . $this->sanitize($cached->compile_id);
+ $this->populateTimestamp($cached);
+ }
+
+ /**
+ * populate Cached Object with timestamp and exists from Resource
+ *
+ * @param Smarty_Template_Cached $cached cached object
+ *
+ * @return void
+ */
+ public function populateTimestamp(Smarty_Template_Cached $cached)
+ {
+ if (!$this->fetch(
+ $cached->filepath,
+ $cached->source->name,
+ $cached->cache_id,
+ $cached->compile_id,
+ $content,
+ $timestamp,
+ $cached->source->uid
+ )
+ ) {
+ return;
+ }
+ $cached->content = $content;
+ $cached->timestamp = (int)$timestamp;
+ $cached->exists = !!$cached->timestamp;
+ }
+
+ /**
+ * Read the cached template and process the header
+ *
+ * @param \Smarty_Internal_Template $_smarty_tpl do not change variable name, is used by compiled template
+ * @param Smarty_Template_Cached $cached cached object
+ * @param boolean $update flag if called because cache update
+ *
+ * @return boolean true or false if the cached content does not exist
+ */
+ public function process(
+ Smarty_Internal_Template $_smarty_tpl,
+ Smarty_Template_Cached $cached = null,
+ $update = false
+ ) {
+ if (!$cached) {
+ $cached = $_smarty_tpl->cached;
+ }
+ $content = $cached->content ? $cached->content : null;
+ $timestamp = $cached->timestamp ? $cached->timestamp : null;
+ if ($content === null || !$timestamp) {
+ if (!$this->fetch(
+ $_smarty_tpl->cached->filepath,
+ $_smarty_tpl->source->name,
+ $_smarty_tpl->cache_id,
+ $_smarty_tpl->compile_id,
+ $content,
+ $timestamp,
+ $_smarty_tpl->source->uid
+ )
+ ) {
+ return false;
+ }
+ }
+ if (isset($content)) {
+ eval('?>' . $content);
+ return true;
+ }
+ return false;
+ }
+
+ /**
+ * Write the rendered template output to cache
+ *
+ * @param Smarty_Internal_Template $_template template object
+ * @param string $content content to cache
+ *
+ * @return boolean success
+ */
+ public function writeCachedContent(Smarty_Internal_Template $_template, $content)
+ {
+ $this->addMetaTimestamp($content);
+ return $this->write(array($_template->cached->filepath => $content), $_template->cache_lifetime);
+ }
+
+ /**
+ * Read cached template from cache
+ *
+ * @param Smarty_Internal_Template $_template template object
+ *
+ * @return string|false content
+ */
+ public function readCachedContent(Smarty_Internal_Template $_template)
+ {
+ $content = $_template->cached->content ? $_template->cached->content : null;
+ $timestamp = null;
+ if ($content === null) {
+ if (!$this->fetch(
+ $_template->cached->filepath,
+ $_template->source->name,
+ $_template->cache_id,
+ $_template->compile_id,
+ $content,
+ $timestamp,
+ $_template->source->uid
+ )
+ ) {
+ return false;
+ }
+ }
+ if (isset($content)) {
+ return $content;
+ }
+ return false;
+ }
+
+ /**
+ * Empty cache
+ * {@internal the $exp_time argument is ignored altogether }}
+ *
+ * @param Smarty $smarty Smarty object
+ * @param integer $exp_time expiration time [being ignored]
+ *
+ * @return integer number of cache files deleted [always -1]
+ * @uses purge() to clear the whole store
+ * @uses invalidate() to mark everything outdated if purge() is inapplicable
+ */
+ public function clearAll(Smarty $smarty, $exp_time = null)
+ {
+ if (!$this->purge()) {
+ $this->invalidate(null);
+ }
+ return -1;
+ }
+
+ /**
+ * Empty cache for a specific template
+ * {@internal the $exp_time argument is ignored altogether}}
+ *
+ * @param Smarty $smarty Smarty object
+ * @param string $resource_name template name
+ * @param string $cache_id cache id
+ * @param string $compile_id compile id
+ * @param integer $exp_time expiration time [being ignored]
+ *
+ * @return int number of cache files deleted [always -1]
+ * @throws \SmartyException
+ * @uses buildCachedFilepath() to generate the CacheID
+ * @uses invalidate() to mark CacheIDs parent chain as outdated
+ * @uses delete() to remove CacheID from cache
+ */
+ public function clear(Smarty $smarty, $resource_name, $cache_id, $compile_id, $exp_time)
+ {
+ $uid = $this->getTemplateUid($smarty, $resource_name);
+ $cid = $uid . '#' . $this->sanitize($resource_name) . '#' . $this->sanitize($cache_id) . '#' .
+ $this->sanitize($compile_id);
+ $this->delete(array($cid));
+ $this->invalidate($cid, $resource_name, $cache_id, $compile_id, $uid);
+ return -1;
+ }
+
+ /**
+ * Get template's unique ID
+ *
+ * @param Smarty $smarty Smarty object
+ * @param string $resource_name template name
+ *
+ * @return string filepath of cache file
+ * @throws \SmartyException
+ */
+ protected function getTemplateUid(Smarty $smarty, $resource_name)
+ {
+ if (isset($resource_name)) {
+ $source = Smarty_Template_Source::load(null, $smarty, $resource_name);
+ if ($source->exists) {
+ return $source->uid;
+ }
+ }
+ return '';
+ }
+
+ /**
+ * Sanitize CacheID components
+ *
+ * @param string $string CacheID component to sanitize
+ *
+ * @return string sanitized CacheID component
+ */
+ protected function sanitize($string)
+ {
+ $string = trim((string)$string, '|');
+ if (!$string) {
+ return '';
+ }
+ return preg_replace('#[^\w\|]+#S', '_', $string);
+ }
+
+ /**
+ * Fetch and prepare a cache object.
+ *
+ * @param string $cid CacheID to fetch
+ * @param string $resource_name template name
+ * @param string $cache_id cache id
+ * @param string $compile_id compile id
+ * @param string $content cached content
+ * @param integer &$timestamp cached timestamp (epoch)
+ * @param string $resource_uid resource's uid
+ *
+ * @return boolean success
+ */
+ protected function fetch(
+ $cid,
+ $resource_name = null,
+ $cache_id = null,
+ $compile_id = null,
+ &$content = null,
+ &$timestamp = null,
+ $resource_uid = null
+ ) {
+ $t = $this->read(array($cid));
+ $content = !empty($t[ $cid ]) ? $t[ $cid ] : null;
+ $timestamp = null;
+ if ($content && ($timestamp = $this->getMetaTimestamp($content))) {
+ $invalidated =
+ $this->getLatestInvalidationTimestamp($cid, $resource_name, $cache_id, $compile_id, $resource_uid);
+ if ($invalidated > $timestamp) {
+ $timestamp = null;
+ $content = null;
+ }
+ }
+ return !!$content;
+ }
+
+ /**
+ * Add current microtime to the beginning of $cache_content
+ * {@internal the header uses 8 Bytes, the first 4 Bytes are the seconds, the second 4 Bytes are the microseconds}}
+ *
+ * @param string &$content the content to be cached
+ */
+ protected function addMetaTimestamp(&$content)
+ {
+ $mt = explode(' ', microtime());
+ $ts = pack('NN', $mt[ 1 ], (int)($mt[ 0 ] * 100000000));
+ $content = $ts . $content;
+ }
+
+ /**
+ * Extract the timestamp the $content was cached
+ *
+ * @param string &$content the cached content
+ *
+ * @return float the microtime the content was cached
+ */
+ protected function getMetaTimestamp(&$content)
+ {
+ extract(unpack('N1s/N1m/a*content', $content));
+ /**
+ * @var int $s
+ * @var int $m
+ */
+ return $s + ($m / 100000000);
+ }
+
+ /**
+ * Invalidate CacheID
+ *
+ * @param string $cid CacheID
+ * @param string $resource_name template name
+ * @param string $cache_id cache id
+ * @param string $compile_id compile id
+ * @param string $resource_uid source's uid
+ *
+ * @return void
+ */
+ protected function invalidate(
+ $cid = null,
+ $resource_name = null,
+ $cache_id = null,
+ $compile_id = null,
+ $resource_uid = null
+ ) {
+ $now = microtime(true);
+ $key = null;
+ // invalidate everything
+ if (!$resource_name && !$cache_id && !$compile_id) {
+ $key = 'IVK#ALL';
+ } // invalidate all caches by template
+ else {
+ if ($resource_name && !$cache_id && !$compile_id) {
+ $key = 'IVK#TEMPLATE#' . $resource_uid . '#' . $this->sanitize($resource_name);
+ } // invalidate all caches by cache group
+ else {
+ if (!$resource_name && $cache_id && !$compile_id) {
+ $key = 'IVK#CACHE#' . $this->sanitize($cache_id);
+ } // invalidate all caches by compile id
+ else {
+ if (!$resource_name && !$cache_id && $compile_id) {
+ $key = 'IVK#COMPILE#' . $this->sanitize($compile_id);
+ } // invalidate by combination
+ else {
+ $key = 'IVK#CID#' . $cid;
+ }
+ }
+ }
+ }
+ $this->write(array($key => $now));
+ }
+
+ /**
+ * Determine the latest timestamp known to the invalidation chain
+ *
+ * @param string $cid CacheID to determine latest invalidation timestamp of
+ * @param string $resource_name template name
+ * @param string $cache_id cache id
+ * @param string $compile_id compile id
+ * @param string $resource_uid source's filepath
+ *
+ * @return float the microtime the CacheID was invalidated
+ */
+ protected function getLatestInvalidationTimestamp(
+ $cid,
+ $resource_name = null,
+ $cache_id = null,
+ $compile_id = null,
+ $resource_uid = null
+ ) {
+ // abort if there is no CacheID
+ if (false && !$cid) {
+ return 0;
+ }
+ // abort if there are no InvalidationKeys to check
+ if (!($_cid = $this->listInvalidationKeys($cid, $resource_name, $cache_id, $compile_id, $resource_uid))) {
+ return 0;
+ }
+ // there are no InValidationKeys
+ if (!($values = $this->read($_cid))) {
+ return 0;
+ }
+ // make sure we're dealing with floats
+ $values = array_map('floatval', $values);
+ return max($values);
+ }
+
+ /**
+ * Translate a CacheID into the list of applicable InvalidationKeys.
+ * Splits 'some|chain|into|an|array' into array( '#clearAll#', 'some', 'some|chain', 'some|chain|into', ... )
+ *
+ * @param string $cid CacheID to translate
+ * @param string $resource_name template name
+ * @param string $cache_id cache id
+ * @param string $compile_id compile id
+ * @param string $resource_uid source's filepath
+ *
+ * @return array list of InvalidationKeys
+ * @uses $invalidationKeyPrefix to prepend to each InvalidationKey
+ */
+ protected function listInvalidationKeys(
+ $cid,
+ $resource_name = null,
+ $cache_id = null,
+ $compile_id = null,
+ $resource_uid = null
+ ) {
+ $t = array('IVK#ALL');
+ $_name = $_compile = '#';
+ if ($resource_name) {
+ $_name .= $resource_uid . '#' . $this->sanitize($resource_name);
+ $t[] = 'IVK#TEMPLATE' . $_name;
+ }
+ if ($compile_id) {
+ $_compile .= $this->sanitize($compile_id);
+ $t[] = 'IVK#COMPILE' . $_compile;
+ }
+ $_name .= '#';
+ $cid = trim((string)$cache_id, '|');
+ if (!$cid) {
+ return $t;
+ }
+ $i = 0;
+ while (true) {
+ // determine next delimiter position
+ $i = strpos($cid, '|', $i);
+ // add complete CacheID if there are no more delimiters
+ if ($i === false) {
+ $t[] = 'IVK#CACHE#' . $cid;
+ $t[] = 'IVK#CID' . $_name . $cid . $_compile;
+ $t[] = 'IVK#CID' . $_name . $_compile;
+ break;
+ }
+ $part = substr($cid, 0, $i);
+ // add slice to list
+ $t[] = 'IVK#CACHE#' . $part;
+ $t[] = 'IVK#CID' . $_name . $part . $_compile;
+ // skip past delimiter position
+ $i++;
+ }
+ return $t;
+ }
+
+ /**
+ * Check is cache is locked for this template
+ *
+ * @param Smarty $smarty Smarty object
+ * @param Smarty_Template_Cached $cached cached object
+ *
+ * @return boolean true or false if cache is locked
+ */
+ public function hasLock(Smarty $smarty, Smarty_Template_Cached $cached)
+ {
+ $key = 'LOCK#' . $cached->filepath;
+ $data = $this->read(array($key));
+ return $data && time() - $data[ $key ] < $smarty->locking_timeout;
+ }
+
+ /**
+ * Lock cache for this template
+ *
+ * @param Smarty $smarty Smarty object
+ * @param Smarty_Template_Cached $cached cached object
+ *
+ * @return bool|void
+ */
+ public function acquireLock(Smarty $smarty, Smarty_Template_Cached $cached)
+ {
+ $cached->is_locked = true;
+ $key = 'LOCK#' . $cached->filepath;
+ $this->write(array($key => time()), $smarty->locking_timeout);
+ }
+
+ /**
+ * Unlock cache for this template
+ *
+ * @param Smarty $smarty Smarty object
+ * @param Smarty_Template_Cached $cached cached object
+ *
+ * @return bool|void
+ */
+ public function releaseLock(Smarty $smarty, Smarty_Template_Cached $cached)
+ {
+ $cached->is_locked = false;
+ $key = 'LOCK#' . $cached->filepath;
+ $this->delete(array($key));
+ }
+
+ /**
+ * Read values for a set of keys from cache
+ *
+ * @param array $keys list of keys to fetch
+ *
+ * @return array list of values with the given keys used as indexes
+ */
+ abstract protected function read(array $keys);
+
+ /**
+ * Save values for a set of keys to cache
+ *
+ * @param array $keys list of values to save
+ * @param int $expire expiration time
+ *
+ * @return boolean true on success, false on failure
+ */
+ abstract protected function write(array $keys, $expire = null);
+
+ /**
+ * Remove values from cache
+ *
+ * @param array $keys list of keys to delete
+ *
+ * @return boolean true on success, false on failure
+ */
+ abstract protected function delete(array $keys);
+
+ /**
+ * Remove *all* values from cache
+ *
+ * @return boolean true on success, false on failure
+ */
+ protected function purge()
+ {
+ return false;
+ }
+}
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_data.php b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_data.php
new file mode 100644
index 000000000..2545ed3a8
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_data.php
@@ -0,0 +1,68 @@
+dataObjectName = 'Data_object ' . (isset($name) ? "'{$name}'" : self::$count);
+ $this->smarty = $smarty;
+ if (is_object($_parent)) {
+ // when object set up back pointer
+ $this->parent = $_parent;
+ } elseif (is_array($_parent)) {
+ // set up variable values
+ foreach ($_parent as $_key => $_val) {
+ $this->tpl_vars[ $_key ] = new Smarty_Variable($_val);
+ }
+ } elseif ($_parent !== null) {
+ throw new SmartyException('Wrong type for template variables');
+ }
+ }
+}
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_block.php b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_block.php
new file mode 100644
index 000000000..9956d642b
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_block.php
@@ -0,0 +1,90 @@
+name = $name;
+ $this->tplIndex = $tplIndex;
+ }
+
+ /**
+ * Compiled block code overloaded by {block} class
+ *
+ * @param \Smarty_Internal_Template $tpl
+ */
+ public function callBlock(Smarty_Internal_Template $tpl)
+ {
+ }
+}
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_cacheresource_file.php b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_cacheresource_file.php
new file mode 100644
index 000000000..c77ae9e17
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_cacheresource_file.php
@@ -0,0 +1,235 @@
+source;
+ $smarty = &$_template->smarty;
+ $_compile_dir_sep = $smarty->use_sub_dirs ? DIRECTORY_SEPARATOR : '^';
+ $_filepath = sha1($source->uid . $smarty->_joined_template_dir);
+ $cached->filepath = $smarty->getCacheDir();
+ if (isset($_template->cache_id)) {
+ $cached->filepath .= preg_replace(
+ array(
+ '![^\w|]+!',
+ '![|]+!'
+ ),
+ array(
+ '_',
+ $_compile_dir_sep
+ ),
+ $_template->cache_id
+ ) . $_compile_dir_sep;
+ }
+ if (isset($_template->compile_id)) {
+ $cached->filepath .= preg_replace('![^\w]+!', '_', $_template->compile_id) . $_compile_dir_sep;
+ }
+ // if use_sub_dirs, break file into directories
+ if ($smarty->use_sub_dirs) {
+ $cached->filepath .= $_filepath[ 0 ] . $_filepath[ 1 ] . DIRECTORY_SEPARATOR . $_filepath[ 2 ] .
+ $_filepath[ 3 ] .
+ DIRECTORY_SEPARATOR .
+ $_filepath[ 4 ] . $_filepath[ 5 ] . DIRECTORY_SEPARATOR;
+ }
+ $cached->filepath .= $_filepath;
+ $basename = $source->handler->getBasename($source);
+ if (!empty($basename)) {
+ $cached->filepath .= '.' . $basename;
+ }
+ if ($smarty->cache_locking) {
+ $cached->lock_id = $cached->filepath . '.lock';
+ }
+ $cached->filepath .= '.php';
+ $cached->timestamp = $cached->exists = is_file($cached->filepath);
+ if ($cached->exists) {
+ $cached->timestamp = filemtime($cached->filepath);
+ }
+ }
+
+ /**
+ * populate Cached Object with timestamp and exists from Resource
+ *
+ * @param Smarty_Template_Cached $cached cached object
+ *
+ * @return void
+ */
+ public function populateTimestamp(Smarty_Template_Cached $cached)
+ {
+ $cached->timestamp = $cached->exists = is_file($cached->filepath);
+ if ($cached->exists) {
+ $cached->timestamp = filemtime($cached->filepath);
+ }
+ }
+
+ /**
+ * Read the cached template and process its header
+ *
+ * @param \Smarty_Internal_Template $_smarty_tpl do not change variable name, is used by compiled template
+ * @param Smarty_Template_Cached $cached cached object
+ * @param bool $update flag if called because cache update
+ *
+ * @return boolean true or false if the cached content does not exist
+ */
+ public function process(
+ Smarty_Internal_Template $_smarty_tpl,
+ Smarty_Template_Cached $cached = null,
+ $update = false
+ ) {
+ $_smarty_tpl->cached->valid = false;
+ if ($update && defined('HHVM_VERSION')) {
+ eval('?>' . file_get_contents($_smarty_tpl->cached->filepath));
+ return true;
+ } else {
+ return @include $_smarty_tpl->cached->filepath;
+ }
+ }
+
+ /**
+ * Write the rendered template output to cache
+ *
+ * @param Smarty_Internal_Template $_template template object
+ * @param string $content content to cache
+ *
+ * @return bool success
+ * @throws \SmartyException
+ */
+ public function writeCachedContent(Smarty_Internal_Template $_template, $content)
+ {
+ if ($_template->smarty->ext->_writeFile->writeFile(
+ $_template->cached->filepath,
+ $content,
+ $_template->smarty
+ ) === true
+ ) {
+ if (function_exists('opcache_invalidate')
+ && (!function_exists('ini_get') || strlen(ini_get('opcache.restrict_api'))) < 1
+ ) {
+ opcache_invalidate($_template->cached->filepath, true);
+ } elseif (function_exists('apc_compile_file')) {
+ apc_compile_file($_template->cached->filepath);
+ }
+ $cached = $_template->cached;
+ $cached->timestamp = $cached->exists = is_file($cached->filepath);
+ if ($cached->exists) {
+ $cached->timestamp = filemtime($cached->filepath);
+ return true;
+ }
+ }
+ return false;
+ }
+
+ /**
+ * Read cached template from cache
+ *
+ * @param Smarty_Internal_Template $_template template object
+ *
+ * @return string content
+ */
+ public function readCachedContent(Smarty_Internal_Template $_template)
+ {
+ if (is_file($_template->cached->filepath)) {
+ return file_get_contents($_template->cached->filepath);
+ }
+ return false;
+ }
+
+ /**
+ * Empty cache
+ *
+ * @param Smarty $smarty
+ * @param integer $exp_time expiration time (number of seconds, not timestamp)
+ *
+ * @return integer number of cache files deleted
+ */
+ public function clearAll(Smarty $smarty, $exp_time = null)
+ {
+ return $smarty->ext->_cacheResourceFile->clear($smarty, null, null, null, $exp_time);
+ }
+
+ /**
+ * Empty cache for a specific template
+ *
+ * @param Smarty $smarty
+ * @param string $resource_name template name
+ * @param string $cache_id cache id
+ * @param string $compile_id compile id
+ * @param integer $exp_time expiration time (number of seconds, not timestamp)
+ *
+ * @return integer number of cache files deleted
+ */
+ public function clear(Smarty $smarty, $resource_name, $cache_id, $compile_id, $exp_time)
+ {
+ return $smarty->ext->_cacheResourceFile->clear($smarty, $resource_name, $cache_id, $compile_id, $exp_time);
+ }
+
+ /**
+ * Check is cache is locked for this template
+ *
+ * @param Smarty $smarty Smarty object
+ * @param Smarty_Template_Cached $cached cached object
+ *
+ * @return boolean true or false if cache is locked
+ */
+ public function hasLock(Smarty $smarty, Smarty_Template_Cached $cached)
+ {
+ clearstatcache(true, $cached->lock_id ?? '');
+ if (null !== $cached->lock_id && is_file($cached->lock_id)) {
+ $t = filemtime($cached->lock_id);
+ return $t && (time() - $t < $smarty->locking_timeout);
+ } else {
+ return false;
+ }
+ }
+
+ /**
+ * Lock cache for this template
+ *
+ * @param Smarty $smarty Smarty object
+ * @param Smarty_Template_Cached $cached cached object
+ *
+ * @return bool|void
+ */
+ public function acquireLock(Smarty $smarty, Smarty_Template_Cached $cached)
+ {
+ $cached->is_locked = true;
+ touch($cached->lock_id);
+ }
+
+ /**
+ * Unlock cache for this template
+ *
+ * @param Smarty $smarty Smarty object
+ * @param Smarty_Template_Cached $cached cached object
+ *
+ * @return bool|void
+ */
+ public function releaseLock(Smarty $smarty, Smarty_Template_Cached $cached)
+ {
+ $cached->is_locked = false;
+ @unlink($cached->lock_id);
+ }
+}
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_append.php b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_append.php
new file mode 100644
index 000000000..1a9befbf6
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_append.php
@@ -0,0 +1,52 @@
+required_attributes = array('var', 'value');
+ $this->shorttag_order = array('var', 'value');
+ $this->optional_attributes = array('scope', 'index');
+ $this->mapCache = array();
+ // check and get attributes
+ $_attr = $this->getAttributes($compiler, $args);
+ // map to compile assign attributes
+ if (isset($_attr[ 'index' ])) {
+ $_params[ 'smarty_internal_index' ] = '[' . $_attr[ 'index' ] . ']';
+ unset($_attr[ 'index' ]);
+ } else {
+ $_params[ 'smarty_internal_index' ] = '[]';
+ }
+ $_new_attr = array();
+ foreach ($_attr as $key => $value) {
+ $_new_attr[] = array($key => $value);
+ }
+ // call compile assign
+ return parent::compile($_new_attr, $compiler, $_params);
+ }
+}
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_assign.php b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_assign.php
new file mode 100644
index 000000000..1f0ab9b7d
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_assign.php
@@ -0,0 +1,96 @@
+ Smarty::SCOPE_LOCAL, 'parent' => Smarty::SCOPE_PARENT,
+ 'root' => Smarty::SCOPE_ROOT, 'global' => Smarty::SCOPE_GLOBAL,
+ 'tpl_root' => Smarty::SCOPE_TPL_ROOT, 'smarty' => Smarty::SCOPE_SMARTY
+ );
+
+ /**
+ * Compiles code for the {assign} tag
+ *
+ * @param array $args array with attributes from parser
+ * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
+ * @param array $parameter array with compilation parameter
+ *
+ * @return string compiled code
+ * @throws \SmartyCompilerException
+ */
+ public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler, $parameter)
+ {
+ // the following must be assigned at runtime because it will be overwritten in Smarty_Internal_Compile_Append
+ $this->required_attributes = array('var', 'value');
+ $this->shorttag_order = array('var', 'value');
+ $this->optional_attributes = array('scope');
+ $this->mapCache = array();
+ $_nocache = false;
+ // check and get attributes
+ $_attr = $this->getAttributes($compiler, $args);
+ // nocache ?
+ if ($_var = $compiler->getId($_attr[ 'var' ])) {
+ $_var = "'{$_var}'";
+ } else {
+ $_var = $_attr[ 'var' ];
+ }
+ if ($compiler->tag_nocache || $compiler->nocache) {
+ $_nocache = true;
+ // create nocache var to make it know for further compiling
+ $compiler->setNocacheInVariable($_attr[ 'var' ]);
+ }
+ // scope setup
+ if ($_attr[ 'noscope' ]) {
+ $_scope = -1;
+ } else {
+ $_scope = $compiler->convertScope($_attr, $this->valid_scopes);
+ }
+ // optional parameter
+ $_params = '';
+ if ($_nocache || $_scope) {
+ $_params .= ' ,' . var_export($_nocache, true);
+ }
+ if ($_scope) {
+ $_params .= ' ,' . $_scope;
+ }
+ if (isset($parameter[ 'smarty_internal_index' ])) {
+ $output =
+ "tpl_vars[{$_var}]) ? \$_smarty_tpl->tpl_vars[{$_var}]->value : array();\n";
+ $output .= "if (!(is_array(\$_tmp_array) || \$_tmp_array instanceof ArrayAccess)) {\n";
+ $output .= "settype(\$_tmp_array, 'array');\n";
+ $output .= "}\n";
+ $output .= "\$_tmp_array{$parameter['smarty_internal_index']} = {$_attr['value']};\n";
+ $output .= "\$_smarty_tpl->_assignInScope({$_var}, \$_tmp_array{$_params});?>";
+ } else {
+ $output = "_assignInScope({$_var}, {$_attr['value']}{$_params});?>";
+ }
+ return $output;
+ }
+}
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_block.php b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_block.php
new file mode 100644
index 000000000..cbaccd2b3
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_block.php
@@ -0,0 +1,189 @@
+
+ */
+class Smarty_Internal_Compile_Block extends Smarty_Internal_Compile_Shared_Inheritance
+{
+ /**
+ * Attribute definition: Overwrites base class.
+ *
+ * @var array
+ * @see Smarty_Internal_CompileBase
+ */
+ public $required_attributes = array('name');
+
+ /**
+ * Attribute definition: Overwrites base class.
+ *
+ * @var array
+ * @see Smarty_Internal_CompileBase
+ */
+ public $shorttag_order = array('name');
+
+ /**
+ * Attribute definition: Overwrites base class.
+ *
+ * @var array
+ * @see Smarty_Internal_CompileBase
+ */
+ public $option_flags = array('hide', 'nocache');
+
+ /**
+ * Attribute definition: Overwrites base class.
+ *
+ * @var array
+ * @see Smarty_Internal_CompileBase
+ */
+ public $optional_attributes = array('assign');
+
+ /**
+ * Compiles code for the {block} tag
+ *
+ * @param array $args array with attributes from parser
+ * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
+ * @param array $parameter array with compilation parameter
+ */
+ public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler, $parameter)
+ {
+ if (!isset($compiler->_cache[ 'blockNesting' ])) {
+ $compiler->_cache[ 'blockNesting' ] = 0;
+ }
+ if ($compiler->_cache[ 'blockNesting' ] === 0) {
+ // make sure that inheritance gets initialized in template code
+ $this->registerInit($compiler);
+ $this->option_flags = array('hide', 'nocache', 'append', 'prepend');
+ } else {
+ $this->option_flags = array('hide', 'nocache');
+ }
+ // check and get attributes
+ $_attr = $this->getAttributes($compiler, $args);
+ ++$compiler->_cache[ 'blockNesting' ];
+ $_className = 'Block_' . preg_replace('![^\w]+!', '_', uniqid(mt_rand(), true));
+ $compiler->_cache[ 'blockName' ][ $compiler->_cache[ 'blockNesting' ] ] = $_attr[ 'name' ];
+ $compiler->_cache[ 'blockClass' ][ $compiler->_cache[ 'blockNesting' ] ] = $_className;
+ $compiler->_cache[ 'blockParams' ][ $compiler->_cache[ 'blockNesting' ] ] = array();
+ $compiler->_cache[ 'blockParams' ][ 1 ][ 'subBlocks' ][ trim($_attr[ 'name' ], '"\'') ][] = $_className;
+ $this->openTag(
+ $compiler,
+ 'block',
+ array(
+ $_attr, $compiler->nocache, $compiler->parser->current_buffer,
+ $compiler->template->compiled->has_nocache_code,
+ $compiler->template->caching
+ )
+ );
+ $compiler->saveRequiredPlugins(true);
+ $compiler->nocache = $compiler->nocache | $compiler->tag_nocache;
+ $compiler->parser->current_buffer = new Smarty_Internal_ParseTree_Template();
+ $compiler->template->compiled->has_nocache_code = false;
+ $compiler->suppressNocacheProcessing = true;
+ }
+}
+
+/**
+ * Smarty Internal Plugin Compile BlockClose Class
+ */
+class Smarty_Internal_Compile_Blockclose extends Smarty_Internal_Compile_Shared_Inheritance
+{
+ /**
+ * Compiles code for the {/block} tag
+ *
+ * @param array $args array with attributes from parser
+ * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
+ * @param array $parameter array with compilation parameter
+ *
+ * @return bool true
+ */
+ public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler, $parameter)
+ {
+ list($_attr, $_nocache, $_buffer, $_has_nocache_code, $_caching) = $this->closeTag($compiler, array('block'));
+ // init block parameter
+ $_block = $compiler->_cache[ 'blockParams' ][ $compiler->_cache[ 'blockNesting' ] ];
+ unset($compiler->_cache[ 'blockParams' ][ $compiler->_cache[ 'blockNesting' ] ]);
+ $_name = $_attr[ 'name' ];
+ $_assign = isset($_attr[ 'assign' ]) ? $_attr[ 'assign' ] : null;
+ unset($_attr[ 'assign' ], $_attr[ 'name' ]);
+ foreach ($_attr as $name => $stat) {
+ if ((is_bool($stat) && $stat !== false) || (!is_bool($stat) && $stat !== 'false')) {
+ $_block[ $name ] = 'true';
+ }
+ }
+ $_className = $compiler->_cache[ 'blockClass' ][ $compiler->_cache[ 'blockNesting' ] ];
+ // get compiled block code
+ $_functionCode = $compiler->parser->current_buffer;
+ // setup buffer for template function code
+ $compiler->parser->current_buffer = new Smarty_Internal_ParseTree_Template();
+ $output = "cStyleComment(" {block {$_name}} ") . "\n";
+ $output .= "class {$_className} extends Smarty_Internal_Block\n";
+ $output .= "{\n";
+ foreach ($_block as $property => $value) {
+ $output .= "public \${$property} = " . var_export($value, true) . ";\n";
+ }
+ $output .= "public function callBlock(Smarty_Internal_Template \$_smarty_tpl) {\n";
+ $output .= $compiler->compileRequiredPlugins();
+ $compiler->restoreRequiredPlugins();
+ if ($compiler->template->compiled->has_nocache_code) {
+ $output .= "\$_smarty_tpl->cached->hashes['{$compiler->template->compiled->nocache_hash}'] = true;\n";
+ }
+ if (isset($_assign)) {
+ $output .= "ob_start();\n";
+ }
+ $output .= "?>\n";
+ $compiler->parser->current_buffer->append_subtree(
+ $compiler->parser,
+ new Smarty_Internal_ParseTree_Tag(
+ $compiler->parser,
+ $output
+ )
+ );
+ $compiler->parser->current_buffer->append_subtree($compiler->parser, $_functionCode);
+ $output = "assign({$_assign}, ob_get_clean());\n";
+ }
+ $output .= "}\n";
+ $output .= "}\n";
+ $output .= $compiler->cStyleComment(" {/block {$_name}} ") . "\n\n";
+ $output .= "?>\n";
+ $compiler->parser->current_buffer->append_subtree(
+ $compiler->parser,
+ new Smarty_Internal_ParseTree_Tag(
+ $compiler->parser,
+ $output
+ )
+ );
+ $compiler->blockOrFunctionCode .= $compiler->parser->current_buffer->to_smarty_php($compiler->parser);
+ $compiler->parser->current_buffer = new Smarty_Internal_ParseTree_Template();
+ // restore old status
+ $compiler->template->compiled->has_nocache_code = $_has_nocache_code;
+ $compiler->tag_nocache = $compiler->nocache;
+ $compiler->nocache = $_nocache;
+ $compiler->parser->current_buffer = $_buffer;
+ $output = "_cache[ 'blockNesting' ] === 1) {
+ $output .= "\$_smarty_tpl->inheritance->instanceBlock(\$_smarty_tpl, '$_className', $_name);\n";
+ } else {
+ $output .= "\$_smarty_tpl->inheritance->instanceBlock(\$_smarty_tpl, '$_className', $_name, \$this->tplIndex);\n";
+ }
+ $output .= "?>\n";
+ --$compiler->_cache[ 'blockNesting' ];
+ if ($compiler->_cache[ 'blockNesting' ] === 0) {
+ unset($compiler->_cache[ 'blockNesting' ]);
+ }
+ $compiler->has_code = true;
+ $compiler->suppressNocacheProcessing = true;
+ return $output;
+ }
+}
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_block_child.php b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_block_child.php
new file mode 100644
index 000000000..588d18628
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_block_child.php
@@ -0,0 +1,24 @@
+
+ */
+class Smarty_Internal_Compile_Block_Child extends Smarty_Internal_Compile_Child
+{
+ /**
+ * Tag name
+ *
+ * @var string
+ */
+ public $tag = 'block_child';
+}
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_block_parent.php b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_block_parent.php
new file mode 100644
index 000000000..97f11ca43
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_block_parent.php
@@ -0,0 +1,31 @@
+
+ */
+class Smarty_Internal_Compile_Block_Parent extends Smarty_Internal_Compile_Child
+{
+ /**
+ * Tag name
+ *
+ * @var string
+ */
+ public $tag = 'block_parent';
+
+ /**
+ * Block type
+ *
+ * @var string
+ */
+ public $blockType = 'Parent';
+}
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_break.php b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_break.php
new file mode 100644
index 000000000..1ee8d75d7
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_break.php
@@ -0,0 +1,117 @@
+checkLevels($args, $compiler);
+ $output = " 0 && $this->tag === 'continue') {
+ $foreachLevels--;
+ }
+ if ($foreachLevels > 0) {
+ /* @var Smarty_Internal_Compile_Foreach $foreachCompiler */
+ $foreachCompiler = $compiler->getTagCompiler('foreach');
+ $output .= $foreachCompiler->compileRestore($foreachLevels);
+ }
+ $output .= "{$this->tag} {$levels};?>";
+ return $output;
+ }
+
+ /**
+ * check attributes and return array of break and foreach levels
+ *
+ * @param array $args array with attributes from parser
+ * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
+ *
+ * @return array
+ * @throws \SmartyCompilerException
+ */
+ public function checkLevels($args, Smarty_Internal_TemplateCompilerBase $compiler)
+ {
+ static $_is_loopy = array('for' => true, 'foreach' => true, 'while' => true, 'section' => true);
+ // check and get attributes
+ $_attr = $this->getAttributes($compiler, $args);
+ if ($_attr[ 'nocache' ] === true) {
+ $compiler->trigger_template_error('nocache option not allowed', null, true);
+ }
+ if (isset($_attr[ 'levels' ])) {
+ if (!is_numeric($_attr[ 'levels' ])) {
+ $compiler->trigger_template_error('level attribute must be a numeric constant', null, true);
+ }
+ $levels = $_attr[ 'levels' ];
+ } else {
+ $levels = 1;
+ }
+ $level_count = $levels;
+ $stack_count = count($compiler->_tag_stack) - 1;
+ $foreachLevels = 0;
+ $lastTag = '';
+ while ($level_count > 0 && $stack_count >= 0) {
+ if (isset($_is_loopy[ $compiler->_tag_stack[ $stack_count ][ 0 ] ])) {
+ $lastTag = $compiler->_tag_stack[ $stack_count ][ 0 ];
+ if ($level_count === 0) {
+ break;
+ }
+ $level_count--;
+ if ($compiler->_tag_stack[ $stack_count ][ 0 ] === 'foreach') {
+ $foreachLevels++;
+ }
+ }
+ $stack_count--;
+ }
+ if ($level_count !== 0) {
+ $compiler->trigger_template_error("cannot {$this->tag} {$levels} level(s)", null, true);
+ }
+ if ($lastTag === 'foreach' && $this->tag === 'break' && $foreachLevels > 0) {
+ $foreachLevels--;
+ }
+ return array($levels, $foreachLevels);
+ }
+}
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_call.php b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_call.php
new file mode 100644
index 000000000..445cabc60
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_call.php
@@ -0,0 +1,89 @@
+getAttributes($compiler, $args);
+ // save possible attributes
+ if (isset($_attr[ 'assign' ])) {
+ // output will be stored in a smarty variable instead of being displayed
+ $_assign = $_attr[ 'assign' ];
+ }
+ //$_name = trim($_attr['name'], "''");
+ $_name = $_attr[ 'name' ];
+ unset($_attr[ 'name' ], $_attr[ 'assign' ], $_attr[ 'nocache' ]);
+ // set flag (compiled code of {function} must be included in cache file
+ if (!$compiler->template->caching || $compiler->nocache || $compiler->tag_nocache) {
+ $_nocache = 'true';
+ } else {
+ $_nocache = 'false';
+ }
+ $_paramsArray = array();
+ foreach ($_attr as $_key => $_value) {
+ if (is_int($_key)) {
+ $_paramsArray[] = "$_key=>$_value";
+ } else {
+ $_paramsArray[] = "'$_key'=>$_value";
+ }
+ }
+ $_params = 'array(' . implode(',', $_paramsArray) . ')';
+ //$compiler->suppressNocacheProcessing = true;
+ // was there an assign attribute
+ if (isset($_assign)) {
+ $_output =
+ "smarty->ext->_tplFunction->callTemplateFunction(\$_smarty_tpl, {$_name}, {$_params}, {$_nocache});\n\$_smarty_tpl->assign({$_assign}, ob_get_clean());?>\n";
+ } else {
+ $_output =
+ "smarty->ext->_tplFunction->callTemplateFunction(\$_smarty_tpl, {$_name}, {$_params}, {$_nocache});?>\n";
+ }
+ return $_output;
+ }
+}
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_capture.php b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_capture.php
new file mode 100644
index 000000000..a4ffbc9ea
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_capture.php
@@ -0,0 +1,105 @@
+smarty->ext->_capture->getBuffer($_smarty_tpl' .
+ (isset($parameter[ 1 ]) ? ", {$parameter[ 1 ]})" : ')');
+ }
+
+ /**
+ * Compiles code for the {capture} tag
+ *
+ * @param array $args array with attributes from parser
+ * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
+ * @param null $parameter
+ *
+ * @return string compiled code
+ */
+ public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler, $parameter = null)
+ {
+ // check and get attributes
+ $_attr = $this->getAttributes($compiler, $args, $parameter, 'capture');
+ $buffer = isset($_attr[ 'name' ]) ? $_attr[ 'name' ] : "'default'";
+ $assign = isset($_attr[ 'assign' ]) ? $_attr[ 'assign' ] : 'null';
+ $append = isset($_attr[ 'append' ]) ? $_attr[ 'append' ] : 'null';
+ $compiler->_cache[ 'capture_stack' ][] = array($compiler->nocache);
+ // maybe nocache because of nocache variables
+ $compiler->nocache = $compiler->nocache | $compiler->tag_nocache;
+ $_output = "smarty->ext->_capture->open(\$_smarty_tpl, $buffer, $assign, $append);?>";
+ return $_output;
+ }
+}
+
+/**
+ * Smarty Internal Plugin Compile Captureclose Class
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ */
+class Smarty_Internal_Compile_CaptureClose extends Smarty_Internal_CompileBase
+{
+ /**
+ * Compiles code for the {/capture} tag
+ *
+ * @param array $args array with attributes from parser
+ * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
+ * @param null $parameter
+ *
+ * @return string compiled code
+ */
+ public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler, $parameter)
+ {
+ // check and get attributes
+ $_attr = $this->getAttributes($compiler, $args, $parameter, '/capture');
+ // must endblock be nocache?
+ if ($compiler->nocache) {
+ $compiler->tag_nocache = true;
+ }
+ list($compiler->nocache) = array_pop($compiler->_cache[ 'capture_stack' ]);
+ return "smarty->ext->_capture->close(\$_smarty_tpl);?>";
+ }
+}
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_child.php b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_child.php
new file mode 100644
index 000000000..f728c18bf
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_child.php
@@ -0,0 +1,79 @@
+
+ */
+class Smarty_Internal_Compile_Child extends Smarty_Internal_CompileBase
+{
+ /**
+ * Attribute definition: Overwrites base class.
+ *
+ * @var array
+ * @see Smarty_Internal_CompileBase
+ */
+ public $optional_attributes = array('assign');
+
+ /**
+ * Tag name
+ *
+ * @var string
+ */
+ public $tag = 'child';
+
+ /**
+ * Block type
+ *
+ * @var string
+ */
+ public $blockType = 'Child';
+
+ /**
+ * Compiles code for the {child} tag
+ *
+ * @param array $args array with attributes from parser
+ * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
+ * @param array $parameter array with compilation parameter
+ *
+ * @return string compiled code
+ * @throws \SmartyCompilerException
+ */
+ public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler, $parameter)
+ {
+ // check and get attributes
+ $_attr = $this->getAttributes($compiler, $args);
+ $tag = isset($parameter[ 0 ]) ? "'{$parameter[0]}'" : "'{{$this->tag}}'";
+ if (!isset($compiler->_cache[ 'blockNesting' ])) {
+ $compiler->trigger_template_error(
+ "{$tag} used outside {block} tags ",
+ $compiler->parser->lex->taglineno
+ );
+ }
+ $compiler->has_code = true;
+ $compiler->suppressNocacheProcessing = true;
+ if ($this->blockType === 'Child') {
+ $compiler->_cache[ 'blockParams' ][ $compiler->_cache[ 'blockNesting' ] ][ 'callsChild' ] = 'true';
+ }
+ $_assign = isset($_attr[ 'assign' ]) ? $_attr[ 'assign' ] : null;
+ $output = "inheritance->call' . $this->blockType . '($_smarty_tpl, $this' .
+ ($this->blockType === 'Child' ? '' : ", {$tag}") . ");\n";
+ if (isset($_assign)) {
+ $output .= "\$_smarty_tpl->assign({$_assign}, ob_get_clean());\n";
+ }
+ $output .= "?>\n";
+ return $output;
+ }
+}
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_config_load.php b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_config_load.php
new file mode 100644
index 000000000..8fe64ee10
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_config_load.php
@@ -0,0 +1,96 @@
+ Smarty::SCOPE_LOCAL, 'parent' => Smarty::SCOPE_PARENT,
+ 'root' => Smarty::SCOPE_ROOT, 'tpl_root' => Smarty::SCOPE_TPL_ROOT,
+ 'smarty' => Smarty::SCOPE_SMARTY, 'global' => Smarty::SCOPE_SMARTY
+ );
+
+ /**
+ * Compiles code for the {config_load} tag
+ *
+ * @param array $args array with attributes from parser
+ * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
+ *
+ * @return string compiled code
+ * @throws \SmartyCompilerException
+ */
+ public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler)
+ {
+ // check and get attributes
+ $_attr = $this->getAttributes($compiler, $args);
+ if ($_attr[ 'nocache' ] === true) {
+ $compiler->trigger_template_error('nocache option not allowed', null, true);
+ }
+ // save possible attributes
+ $conf_file = $_attr[ 'file' ];
+ if (isset($_attr[ 'section' ])) {
+ $section = $_attr[ 'section' ];
+ } else {
+ $section = 'null';
+ }
+ // scope setup
+ if ($_attr[ 'noscope' ]) {
+ $_scope = -1;
+ } else {
+ $_scope = $compiler->convertScope($_attr, $this->valid_scopes);
+ }
+ // create config object
+ $_output =
+ "smarty->ext->configLoad->_loadConfigFile(\$_smarty_tpl, {$conf_file}, {$section}, {$_scope});\n?>\n";
+ return $_output;
+ }
+}
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_continue.php b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_continue.php
new file mode 100644
index 000000000..e545728ee
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_continue.php
@@ -0,0 +1,25 @@
+getAttributes($compiler, $args);
+ // compile always as nocache
+ $compiler->tag_nocache = true;
+ // display debug template
+ $_output =
+ "display_debug(\$_smarty_tpl);\n";
+ $_output .= "unset(\$_smarty_debug);\n?>";
+ return $_output;
+ }
+}
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_eval.php b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_eval.php
new file mode 100644
index 000000000..8e0174e3e
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_eval.php
@@ -0,0 +1,70 @@
+getAttributes($compiler, $args);
+ if (isset($_attr[ 'assign' ])) {
+ // output will be stored in a smarty variable instead of being displayed
+ $_assign = $_attr[ 'assign' ];
+ }
+ // create template object
+ $_output =
+ "\$_template = new {$compiler->smarty->template_class}('eval:'.{$_attr[ 'var' ]}, \$_smarty_tpl->smarty, \$_smarty_tpl);";
+ //was there an assign attribute?
+ if (isset($_assign)) {
+ $_output .= "\$_smarty_tpl->assign($_assign,\$_template->fetch());";
+ } else {
+ $_output .= 'echo $_template->fetch();';
+ }
+ return "";
+ }
+}
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_extends.php b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_extends.php
new file mode 100644
index 000000000..69a7b5521
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_extends.php
@@ -0,0 +1,96 @@
+getAttributes($compiler, $args);
+ if ($_attr[ 'nocache' ] === true) {
+ $compiler->trigger_template_error('nocache option not allowed', $compiler->parser->lex->line - 1);
+ }
+ if (strpos($_attr[ 'file' ], '$_tmp') !== false) {
+ $compiler->trigger_template_error('illegal value for file attribute', $compiler->parser->lex->line - 1);
+ }
+ // add code to initialize inheritance
+ $this->registerInit($compiler, true);
+ $this->compileEndChild($compiler, $_attr[ 'file' ]);
+ $compiler->has_code = false;
+ return '';
+ }
+
+ /**
+ * Add code for inheritance endChild() method to end of template
+ *
+ * @param \Smarty_Internal_TemplateCompilerBase $compiler
+ * @param null|string $template optional inheritance parent template
+ *
+ * @throws \SmartyCompilerException
+ * @throws \SmartyException
+ */
+ private function compileEndChild(Smarty_Internal_TemplateCompilerBase $compiler, $template = null)
+ {
+ $inlineUids = '';
+ if (isset($template) && $compiler->smarty->merge_compiled_includes) {
+ $code = $compiler->compileTag('include', array($template, array('scope' => 'parent')));
+ if (preg_match('/([,][\s]*[\'][a-z0-9]+[\'][,][\s]*[\']content.*[\'])[)]/', $code, $match)) {
+ $inlineUids = $match[ 1 ];
+ }
+ }
+ $compiler->parser->template_postfix[] = new Smarty_Internal_ParseTree_Tag(
+ $compiler->parser,
+ 'inheritance->endChild($_smarty_tpl' .
+ (isset($template) ?
+ ", {$template}{$inlineUids}" :
+ '') . ");\n?>"
+ );
+ }
+}
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_for.php b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_for.php
new file mode 100644
index 000000000..969e22c1a
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_for.php
@@ -0,0 +1,164 @@
+loopNesting++;
+ if ($parameter === 0) {
+ $this->required_attributes = array('start', 'to');
+ $this->optional_attributes = array('max', 'step');
+ } else {
+ $this->required_attributes = array('start', 'ifexp', 'var', 'step');
+ $this->optional_attributes = array();
+ }
+ $this->mapCache = array();
+ // check and get attributes
+ $_attr = $this->getAttributes($compiler, $args);
+ $output = "tpl_vars[$var] = new Smarty_Variable(null, \$_smarty_tpl->isRenderingCache);\n";
+ $output .= "\$_smarty_tpl->tpl_vars[$var]->value{$index} = {$_statement['value']};\n";
+ }
+ if (is_array($_attr[ 'var' ])) {
+ $var = $_attr[ 'var' ][ 'var' ];
+ $index = $_attr[ 'var' ][ 'smarty_internal_index' ];
+ } else {
+ $var = $_attr[ 'var' ];
+ $index = '';
+ }
+ $output .= "if ($_attr[ifexp]) {\nfor (\$_foo=true;$_attr[ifexp]; \$_smarty_tpl->tpl_vars[$var]->value{$index}$_attr[step]) {\n";
+ } else {
+ $_statement = $_attr[ 'start' ];
+ if (is_array($_statement[ 'var' ])) {
+ $var = $_statement[ 'var' ][ 'var' ];
+ $index = $_statement[ 'var' ][ 'smarty_internal_index' ];
+ } else {
+ $var = $_statement[ 'var' ];
+ $index = '';
+ }
+ $output .= "\$_smarty_tpl->tpl_vars[$var] = new Smarty_Variable(null, \$_smarty_tpl->isRenderingCache);";
+ if (isset($_attr[ 'step' ])) {
+ $output .= "\$_smarty_tpl->tpl_vars[$var]->step = $_attr[step];";
+ } else {
+ $output .= "\$_smarty_tpl->tpl_vars[$var]->step = 1;";
+ }
+ if (isset($_attr[ 'max' ])) {
+ $output .= "\$_smarty_tpl->tpl_vars[$var]->total = (int) min(ceil((\$_smarty_tpl->tpl_vars[$var]->step > 0 ? $_attr[to]+1 - ($_statement[value]) : $_statement[value]-($_attr[to])+1)/abs(\$_smarty_tpl->tpl_vars[$var]->step)),$_attr[max]);\n";
+ } else {
+ $output .= "\$_smarty_tpl->tpl_vars[$var]->total = (int) ceil((\$_smarty_tpl->tpl_vars[$var]->step > 0 ? $_attr[to]+1 - ($_statement[value]) : $_statement[value]-($_attr[to])+1)/abs(\$_smarty_tpl->tpl_vars[$var]->step));\n";
+ }
+ $output .= "if (\$_smarty_tpl->tpl_vars[$var]->total > 0) {\n";
+ $output .= "for (\$_smarty_tpl->tpl_vars[$var]->value{$index} = $_statement[value], \$_smarty_tpl->tpl_vars[$var]->iteration = 1;\$_smarty_tpl->tpl_vars[$var]->iteration <= \$_smarty_tpl->tpl_vars[$var]->total;\$_smarty_tpl->tpl_vars[$var]->value{$index} += \$_smarty_tpl->tpl_vars[$var]->step, \$_smarty_tpl->tpl_vars[$var]->iteration++) {\n";
+ $output .= "\$_smarty_tpl->tpl_vars[$var]->first = \$_smarty_tpl->tpl_vars[$var]->iteration === 1;";
+ $output .= "\$_smarty_tpl->tpl_vars[$var]->last = \$_smarty_tpl->tpl_vars[$var]->iteration === \$_smarty_tpl->tpl_vars[$var]->total;";
+ }
+ $output .= '?>';
+ $this->openTag($compiler, 'for', array('for', $compiler->nocache));
+ // maybe nocache because of nocache variables
+ $compiler->nocache = $compiler->nocache | $compiler->tag_nocache;
+ // return compiled code
+ return $output;
+ }
+}
+
+/**
+ * Smarty Internal Plugin Compile Forelse Class
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ */
+class Smarty_Internal_Compile_Forelse extends Smarty_Internal_CompileBase
+{
+ /**
+ * Compiles code for the {forelse} tag
+ *
+ * @param array $args array with attributes from parser
+ * @param object $compiler compiler object
+ * @param array $parameter array with compilation parameter
+ *
+ * @return string compiled code
+ */
+ public function compile($args, $compiler, $parameter)
+ {
+ // check and get attributes
+ $_attr = $this->getAttributes($compiler, $args);
+ list($openTag, $nocache) = $this->closeTag($compiler, array('for'));
+ $this->openTag($compiler, 'forelse', array('forelse', $nocache));
+ return "";
+ }
+}
+
+/**
+ * Smarty Internal Plugin Compile Forclose Class
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ */
+class Smarty_Internal_Compile_Forclose extends Smarty_Internal_CompileBase
+{
+ /**
+ * Compiles code for the {/for} tag
+ *
+ * @param array $args array with attributes from parser
+ * @param object $compiler compiler object
+ * @param array $parameter array with compilation parameter
+ *
+ * @return string compiled code
+ */
+ public function compile($args, $compiler, $parameter)
+ {
+ $compiler->loopNesting--;
+ // check and get attributes
+ $_attr = $this->getAttributes($compiler, $args);
+ // must endblock be nocache?
+ if ($compiler->nocache) {
+ $compiler->tag_nocache = true;
+ }
+ list($openTag, $compiler->nocache) = $this->closeTag($compiler, array('for', 'forelse'));
+ $output = "";
+ return $output;
+ }
+}
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_foreach.php b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_foreach.php
new file mode 100644
index 000000000..edfe358be
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_foreach.php
@@ -0,0 +1,343 @@
+loopNesting++;
+ // init
+ $this->isNamed = false;
+ // check and get attributes
+ $_attr = $this->getAttributes($compiler, $args);
+ $from = $_attr[ 'from' ];
+ $item = $compiler->getId($_attr[ 'item' ]);
+ if ($item === false) {
+ $item = $compiler->getVariableName($_attr[ 'item' ]);
+ }
+ $key = $name = null;
+ $attributes = array('item' => $item);
+ if (isset($_attr[ 'key' ])) {
+ $key = $compiler->getId($_attr[ 'key' ]);
+ if ($key === false) {
+ $key = $compiler->getVariableName($_attr[ 'key' ]);
+ }
+ $attributes[ 'key' ] = $key;
+ }
+ if (isset($_attr[ 'name' ])) {
+ $this->isNamed = true;
+ $name = $attributes[ 'name' ] = $compiler->getId($_attr[ 'name' ]);
+ }
+ foreach ($attributes as $a => $v) {
+ if ($v === false) {
+ $compiler->trigger_template_error("'{$a}' attribute/variable has illegal value", null, true);
+ }
+ }
+ $fromName = $compiler->getVariableName($_attr[ 'from' ]);
+ if ($fromName) {
+ foreach (array('item', 'key') as $a) {
+ if (isset($attributes[ $a ]) && $attributes[ $a ] === $fromName) {
+ $compiler->trigger_template_error(
+ "'{$a}' and 'from' may not have same variable name '{$fromName}'",
+ null,
+ true
+ );
+ }
+ }
+ }
+ $itemVar = "\$_smarty_tpl->tpl_vars['{$item}']";
+ $local = '$__foreach_' . $attributes[ 'item' ] . '_' . $this->counter++ . '_';
+ // search for used tag attributes
+ $itemAttr = array();
+ $namedAttr = array();
+ $this->scanForProperties($attributes, $compiler);
+ if (!empty($this->matchResults[ 'item' ])) {
+ $itemAttr = $this->matchResults[ 'item' ];
+ }
+ if (!empty($this->matchResults[ 'named' ])) {
+ $namedAttr = $this->matchResults[ 'named' ];
+ }
+ if (isset($_attr[ 'properties' ]) && preg_match_all('/[\'](.*?)[\']/', $_attr[ 'properties' ], $match)) {
+ foreach ($match[ 1 ] as $prop) {
+ if (in_array($prop, $this->itemProperties)) {
+ $itemAttr[ $prop ] = true;
+ } else {
+ $compiler->trigger_template_error("Invalid property '{$prop}'", null, true);
+ }
+ }
+ if ($this->isNamed) {
+ foreach ($match[ 1 ] as $prop) {
+ if (in_array($prop, $this->nameProperties)) {
+ $nameAttr[ $prop ] = true;
+ } else {
+ $compiler->trigger_template_error("Invalid property '{$prop}'", null, true);
+ }
+ }
+ }
+ }
+ if (isset($itemAttr[ 'first' ])) {
+ $itemAttr[ 'index' ] = true;
+ }
+ if (isset($namedAttr[ 'first' ])) {
+ $namedAttr[ 'index' ] = true;
+ }
+ if (isset($namedAttr[ 'last' ])) {
+ $namedAttr[ 'iteration' ] = true;
+ $namedAttr[ 'total' ] = true;
+ }
+ if (isset($itemAttr[ 'last' ])) {
+ $itemAttr[ 'iteration' ] = true;
+ $itemAttr[ 'total' ] = true;
+ }
+ if (isset($namedAttr[ 'show' ])) {
+ $namedAttr[ 'total' ] = true;
+ }
+ if (isset($itemAttr[ 'show' ])) {
+ $itemAttr[ 'total' ] = true;
+ }
+ $keyTerm = '';
+ if (isset($attributes[ 'key' ])) {
+ $keyTerm = "\$_smarty_tpl->tpl_vars['{$key}']->value => ";
+ }
+ if (isset($itemAttr[ 'key' ])) {
+ $keyTerm = "{$itemVar}->key => ";
+ }
+ if ($this->isNamed) {
+ $foreachVar = "\$_smarty_tpl->tpl_vars['__smarty_foreach_{$attributes['name']}']";
+ }
+ $needTotal = isset($itemAttr[ 'total' ]);
+ // Register tag
+ $this->openTag(
+ $compiler,
+ 'foreach',
+ array('foreach', $compiler->nocache, $local, $itemVar, empty($itemAttr) ? 1 : 2)
+ );
+ // maybe nocache because of nocache variables
+ $compiler->nocache = $compiler->nocache | $compiler->tag_nocache;
+ // generate output code
+ $output = "smarty->ext->_foreach->init(\$_smarty_tpl, $from, " .
+ var_export($item, true);
+ if ($name || $needTotal || $key) {
+ $output .= ', ' . var_export($needTotal, true);
+ }
+ if ($name || $key) {
+ $output .= ', ' . var_export($key, true);
+ }
+ if ($name) {
+ $output .= ', ' . var_export($name, true) . ', ' . var_export($namedAttr, true);
+ }
+ $output .= ");\n";
+ if (isset($itemAttr[ 'show' ])) {
+ $output .= "{$itemVar}->show = ({$itemVar}->total > 0);\n";
+ }
+ if (isset($itemAttr[ 'iteration' ])) {
+ $output .= "{$itemVar}->iteration = 0;\n";
+ }
+ if (isset($itemAttr[ 'index' ])) {
+ $output .= "{$itemVar}->index = -1;\n";
+ }
+ $output .= "{$itemVar}->do_else = true;\n";
+ $output .= "if (\$_from !== null) foreach (\$_from as {$keyTerm}{$itemVar}->value) {\n";
+ $output .= "{$itemVar}->do_else = false;\n";
+ if (isset($attributes[ 'key' ]) && isset($itemAttr[ 'key' ])) {
+ $output .= "\$_smarty_tpl->tpl_vars['{$key}']->value = {$itemVar}->key;\n";
+ }
+ if (isset($itemAttr[ 'iteration' ])) {
+ $output .= "{$itemVar}->iteration++;\n";
+ }
+ if (isset($itemAttr[ 'index' ])) {
+ $output .= "{$itemVar}->index++;\n";
+ }
+ if (isset($itemAttr[ 'first' ])) {
+ $output .= "{$itemVar}->first = !{$itemVar}->index;\n";
+ }
+ if (isset($itemAttr[ 'last' ])) {
+ $output .= "{$itemVar}->last = {$itemVar}->iteration === {$itemVar}->total;\n";
+ }
+ if (isset($foreachVar)) {
+ if (isset($namedAttr[ 'iteration' ])) {
+ $output .= "{$foreachVar}->value['iteration']++;\n";
+ }
+ if (isset($namedAttr[ 'index' ])) {
+ $output .= "{$foreachVar}->value['index']++;\n";
+ }
+ if (isset($namedAttr[ 'first' ])) {
+ $output .= "{$foreachVar}->value['first'] = !{$foreachVar}->value['index'];\n";
+ }
+ if (isset($namedAttr[ 'last' ])) {
+ $output .= "{$foreachVar}->value['last'] = {$foreachVar}->value['iteration'] === {$foreachVar}->value['total'];\n";
+ }
+ }
+ if (!empty($itemAttr)) {
+ $output .= "{$local}saved = {$itemVar};\n";
+ }
+ $output .= '?>';
+ return $output;
+ }
+
+ /**
+ * Compiles code for to restore saved template variables
+ *
+ * @param int $levels number of levels to restore
+ *
+ * @return string compiled code
+ */
+ public function compileRestore($levels)
+ {
+ return "\$_smarty_tpl->smarty->ext->_foreach->restore(\$_smarty_tpl, {$levels});";
+ }
+}
+
+/**
+ * Smarty Internal Plugin Compile Foreachelse Class
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ */
+class Smarty_Internal_Compile_Foreachelse extends Smarty_Internal_CompileBase
+{
+ /**
+ * Compiles code for the {foreachelse} tag
+ *
+ * @param array $args array with attributes from parser
+ * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
+ *
+ * @return string compiled code
+ */
+ public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler)
+ {
+ // check and get attributes
+ $_attr = $this->getAttributes($compiler, $args);
+ list($openTag, $nocache, $local, $itemVar, $restore) = $this->closeTag($compiler, array('foreach'));
+ $this->openTag($compiler, 'foreachelse', array('foreachelse', $nocache, $local, $itemVar, 0));
+ $output = "do_else) {\n?>";
+ return $output;
+ }
+}
+
+/**
+ * Smarty Internal Plugin Compile Foreachclose Class
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ */
+class Smarty_Internal_Compile_Foreachclose extends Smarty_Internal_CompileBase
+{
+ /**
+ * Compiles code for the {/foreach} tag
+ *
+ * @param array $args array with attributes from parser
+ * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
+ *
+ * @return string compiled code
+ * @throws \SmartyCompilerException
+ */
+ public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler)
+ {
+ $compiler->loopNesting--;
+ // must endblock be nocache?
+ if ($compiler->nocache) {
+ $compiler->tag_nocache = true;
+ }
+ list(
+ $openTag, $compiler->nocache, $local, $itemVar, $restore
+ ) = $this->closeTag($compiler, array('foreach', 'foreachelse'));
+ $output = "getTagCompiler('foreach');
+ $output .= $foreachCompiler->compileRestore(1);
+ $output .= "?>";
+ return $output;
+ }
+}
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_function.php b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_function.php
new file mode 100644
index 000000000..b05a82b74
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_function.php
@@ -0,0 +1,236 @@
+getAttributes($compiler, $args);
+ if ($_attr[ 'nocache' ] === true) {
+ $compiler->trigger_template_error('nocache option not allowed', null, true);
+ }
+ unset($_attr[ 'nocache' ]);
+ $_name = trim($_attr[ 'name' ], '\'"');
+
+ if (!preg_match('/^[a-zA-Z0-9_\x80-\xff]+$/', $_name)) {
+ $compiler->trigger_template_error("Function name contains invalid characters: {$_name}", null, true);
+ }
+
+ $compiler->parent_compiler->tpl_function[ $_name ] = array();
+ $save = array(
+ $_attr, $compiler->parser->current_buffer, $compiler->template->compiled->has_nocache_code,
+ $compiler->template->caching
+ );
+ $this->openTag($compiler, 'function', $save);
+ // Init temporary context
+ $compiler->parser->current_buffer = new Smarty_Internal_ParseTree_Template();
+ $compiler->template->compiled->has_nocache_code = false;
+ $compiler->saveRequiredPlugins(true);
+ return true;
+ }
+}
+
+/**
+ * Smarty Internal Plugin Compile Functionclose Class
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ */
+class Smarty_Internal_Compile_Functionclose extends Smarty_Internal_CompileBase
+{
+ /**
+ * Compiler object
+ *
+ * @var object
+ */
+ private $compiler = null;
+
+ /**
+ * Compiles code for the {/function} tag
+ *
+ * @param array $args array with attributes from parser
+ * @param object|\Smarty_Internal_TemplateCompilerBase $compiler compiler object
+ *
+ * @return bool true
+ */
+ public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler)
+ {
+ $this->compiler = $compiler;
+ $saved_data = $this->closeTag($compiler, array('function'));
+ $_attr = $saved_data[ 0 ];
+ $_name = trim($_attr[ 'name' ], '\'"');
+ $compiler->parent_compiler->tpl_function[ $_name ][ 'compiled_filepath' ] =
+ $compiler->parent_compiler->template->compiled->filepath;
+ $compiler->parent_compiler->tpl_function[ $_name ][ 'uid' ] = $compiler->template->source->uid;
+ $_parameter = $_attr;
+ unset($_parameter[ 'name' ]);
+ // default parameter
+ $_paramsArray = array();
+ foreach ($_parameter as $_key => $_value) {
+ if (is_int($_key)) {
+ $_paramsArray[] = "$_key=>$_value";
+ } else {
+ $_paramsArray[] = "'$_key'=>$_value";
+ }
+ }
+ if (!empty($_paramsArray)) {
+ $_params = 'array(' . implode(',', $_paramsArray) . ')';
+ $_paramsCode = "\$params = array_merge($_params, \$params);\n";
+ } else {
+ $_paramsCode = '';
+ }
+ $_functionCode = $compiler->parser->current_buffer;
+ // setup buffer for template function code
+ $compiler->parser->current_buffer = new Smarty_Internal_ParseTree_Template();
+ $_funcName = "smarty_template_function_{$_name}_{$compiler->template->compiled->nocache_hash}";
+ $_funcNameCaching = $_funcName . '_nocache';
+ if ($compiler->template->compiled->has_nocache_code) {
+ $compiler->parent_compiler->tpl_function[ $_name ][ 'call_name_caching' ] = $_funcNameCaching;
+ $output = "cStyleComment(" {$_funcNameCaching} ") . "\n";
+ $output .= "if (!function_exists('{$_funcNameCaching}')) {\n";
+ $output .= "function {$_funcNameCaching} (Smarty_Internal_Template \$_smarty_tpl,\$params) {\n";
+ $output .= "ob_start();\n";
+ $output .= $compiler->compileRequiredPlugins();
+ $output .= "\$_smarty_tpl->compiled->has_nocache_code = true;\n";
+ $output .= $_paramsCode;
+ $output .= "foreach (\$params as \$key => \$value) {\n\$_smarty_tpl->tpl_vars[\$key] = new Smarty_Variable(\$value, \$_smarty_tpl->isRenderingCache);\n}\n";
+ $output .= "\$params = var_export(\$params, true);\n";
+ $output .= "echo \"/*%%SmartyNocache:{$compiler->template->compiled->nocache_hash}%%*/smarty->ext->_tplFunction->saveTemplateVariables(\\\$_smarty_tpl, '{$_name}');\nforeach (\$params as \\\$key => \\\$value) {\n\\\$_smarty_tpl->tpl_vars[\\\$key] = new Smarty_Variable(\\\$value, \\\$_smarty_tpl->isRenderingCache);\n}\n?>";
+ $output .= "/*/%%SmartyNocache:{$compiler->template->compiled->nocache_hash}%%*/\";?>";
+ $compiler->parser->current_buffer->append_subtree(
+ $compiler->parser,
+ new Smarty_Internal_ParseTree_Tag(
+ $compiler->parser,
+ $output
+ )
+ );
+ $compiler->parser->current_buffer->append_subtree($compiler->parser, $_functionCode);
+ $output = "template->compiled->nocache_hash}%%*/smarty->ext->_tplFunction->restoreTemplateVariables(\\\$_smarty_tpl, '{$_name}');?>\n";
+ $output .= "/*/%%SmartyNocache:{$compiler->template->compiled->nocache_hash}%%*/\";\n?>";
+ $output .= "template->compiled->nocache_hash}', \$_smarty_tpl->compiled->nocache_hash ?? '', ob_get_clean());\n";
+ $output .= "}\n}\n";
+ $output .= $compiler->cStyleComment("/ {$_funcName}_nocache ") . "\n\n";
+ $output .= "?>\n";
+ $compiler->parser->current_buffer->append_subtree(
+ $compiler->parser,
+ new Smarty_Internal_ParseTree_Tag(
+ $compiler->parser,
+ $output
+ )
+ );
+ $_functionCode = new Smarty_Internal_ParseTree_Tag(
+ $compiler->parser,
+ preg_replace_callback(
+ "/((<\?php )?echo '\/\*%%SmartyNocache:{$compiler->template->compiled->nocache_hash}%%\*\/([\S\s]*?)\/\*\/%%SmartyNocache:{$compiler->template->compiled->nocache_hash}%%\*\/';(\?>\n)?)/",
+ array($this, 'removeNocache'),
+ $_functionCode->to_smarty_php($compiler->parser)
+ )
+ );
+ }
+ $compiler->parent_compiler->tpl_function[ $_name ][ 'call_name' ] = $_funcName;
+ $output = "cStyleComment(" {$_funcName} ") . "\n";
+ $output .= "if (!function_exists('{$_funcName}')) {\n";
+ $output .= "function {$_funcName}(Smarty_Internal_Template \$_smarty_tpl,\$params) {\n";
+ $output .= $_paramsCode;
+ $output .= "foreach (\$params as \$key => \$value) {\n\$_smarty_tpl->tpl_vars[\$key] = new Smarty_Variable(\$value, \$_smarty_tpl->isRenderingCache);\n}\n";
+ $output .= $compiler->compileCheckPlugins(array_merge($compiler->required_plugins[ 'compiled' ],
+ $compiler->required_plugins[ 'nocache' ]));
+ $output .= "?>\n";
+ $compiler->parser->current_buffer->append_subtree(
+ $compiler->parser,
+ new Smarty_Internal_ParseTree_Tag(
+ $compiler->parser,
+ $output
+ )
+ );
+ $compiler->parser->current_buffer->append_subtree($compiler->parser, $_functionCode);
+ $output = "cStyleComment("/ {$_funcName} ") . "\n\n";
+ $output .= "?>\n";
+ $compiler->parser->current_buffer->append_subtree(
+ $compiler->parser,
+ new Smarty_Internal_ParseTree_Tag(
+ $compiler->parser,
+ $output
+ )
+ );
+ $compiler->parent_compiler->blockOrFunctionCode .= $compiler->parser->current_buffer->to_smarty_php($compiler->parser);
+ // restore old buffer
+ $compiler->parser->current_buffer = $saved_data[ 1 ];
+ // restore old status
+ $compiler->restoreRequiredPlugins();
+ $compiler->template->compiled->has_nocache_code = $saved_data[ 2 ];
+ $compiler->template->caching = $saved_data[ 3 ];
+ return true;
+ }
+
+ /**
+ * Remove nocache code
+ *
+ * @param $match
+ *
+ * @return string
+ */
+ public function removeNocache($match)
+ {
+ $code =
+ preg_replace(
+ "/((<\?php )?echo '\/\*%%SmartyNocache:{$this->compiler->template->compiled->nocache_hash}%%\*\/)|(\/\*\/%%SmartyNocache:{$this->compiler->template->compiled->nocache_hash}%%\*\/';(\?>\n)?)/",
+ '',
+ $match[ 0 ]
+ );
+ $code = str_replace(array('\\\'', '\\\\\''), array('\'', '\\\''), $code);
+ return $code;
+ }
+}
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_if.php b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_if.php
new file mode 100644
index 000000000..df3dc3fad
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_if.php
@@ -0,0 +1,207 @@
+getAttributes($compiler, $args);
+ $this->openTag($compiler, 'if', array(1, $compiler->nocache));
+ // must whole block be nocache ?
+ $compiler->nocache = $compiler->nocache | $compiler->tag_nocache;
+ if (!isset($parameter[ 'if condition' ])) {
+ $compiler->trigger_template_error('missing if condition', null, true);
+ }
+ if (is_array($parameter[ 'if condition' ])) {
+ if (is_array($parameter[ 'if condition' ][ 'var' ])) {
+ $var = $parameter[ 'if condition' ][ 'var' ][ 'var' ];
+ } else {
+ $var = $parameter[ 'if condition' ][ 'var' ];
+ }
+ if ($compiler->nocache) {
+ // create nocache var to make it know for further compiling
+ $compiler->setNocacheInVariable($var);
+ }
+ $prefixVar = $compiler->getNewPrefixVariable();
+ $_output = "\n";
+ $assignAttr = array();
+ $assignAttr[][ 'value' ] = $prefixVar;
+ $assignCompiler = new Smarty_Internal_Compile_Assign();
+ if (is_array($parameter[ 'if condition' ][ 'var' ])) {
+ $assignAttr[][ 'var' ] = $parameter[ 'if condition' ][ 'var' ][ 'var' ];
+ $_output .= $assignCompiler->compile(
+ $assignAttr,
+ $compiler,
+ array('smarty_internal_index' => $parameter[ 'if condition' ][ 'var' ][ 'smarty_internal_index' ])
+ );
+ } else {
+ $assignAttr[][ 'var' ] = $parameter[ 'if condition' ][ 'var' ];
+ $_output .= $assignCompiler->compile($assignAttr, $compiler, array());
+ }
+ $_output .= "";
+ return $_output;
+ } else {
+ return "";
+ }
+ }
+}
+
+/**
+ * Smarty Internal Plugin Compile Else Class
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ */
+class Smarty_Internal_Compile_Else extends Smarty_Internal_CompileBase
+{
+ /**
+ * Compiles code for the {else} tag
+ *
+ * @param array $args array with attributes from parser
+ * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
+ *
+ * @return string compiled code
+ */
+ public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler)
+ {
+ list($nesting, $compiler->tag_nocache) = $this->closeTag($compiler, array('if', 'elseif'));
+ $this->openTag($compiler, 'else', array($nesting, $compiler->tag_nocache));
+ return '';
+ }
+}
+
+/**
+ * Smarty Internal Plugin Compile ElseIf Class
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ */
+class Smarty_Internal_Compile_Elseif extends Smarty_Internal_CompileBase
+{
+ /**
+ * Compiles code for the {elseif} tag
+ *
+ * @param array $args array with attributes from parser
+ * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
+ * @param array $parameter array with compilation parameter
+ *
+ * @return string compiled code
+ * @throws \SmartyCompilerException
+ */
+ public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler, $parameter)
+ {
+ // check and get attributes
+ $_attr = $this->getAttributes($compiler, $args);
+ list($nesting, $compiler->tag_nocache) = $this->closeTag($compiler, array('if', 'elseif'));
+ if (!isset($parameter[ 'if condition' ])) {
+ $compiler->trigger_template_error('missing elseif condition', null, true);
+ }
+ $assignCode = '';
+ $var = '';
+ if (is_array($parameter[ 'if condition' ])) {
+ $condition_by_assign = true;
+ if (is_array($parameter[ 'if condition' ][ 'var' ])) {
+ $var = $parameter[ 'if condition' ][ 'var' ][ 'var' ];
+ } else {
+ $var = $parameter[ 'if condition' ][ 'var' ];
+ }
+ if ($compiler->nocache) {
+ // create nocache var to make it know for further compiling
+ $compiler->setNocacheInVariable($var);
+ }
+ $prefixVar = $compiler->getNewPrefixVariable();
+ $assignCode = "\n";
+ $assignCompiler = new Smarty_Internal_Compile_Assign();
+ $assignAttr = array();
+ $assignAttr[][ 'value' ] = $prefixVar;
+ if (is_array($parameter[ 'if condition' ][ 'var' ])) {
+ $assignAttr[][ 'var' ] = $parameter[ 'if condition' ][ 'var' ][ 'var' ];
+ $assignCode .= $assignCompiler->compile(
+ $assignAttr,
+ $compiler,
+ array('smarty_internal_index' => $parameter[ 'if condition' ][ 'var' ][ 'smarty_internal_index' ])
+ );
+ } else {
+ $assignAttr[][ 'var' ] = $parameter[ 'if condition' ][ 'var' ];
+ $assignCode .= $assignCompiler->compile($assignAttr, $compiler, array());
+ }
+ } else {
+ $condition_by_assign = false;
+ }
+ $prefixCode = $compiler->getPrefixCode();
+ if (empty($prefixCode)) {
+ if ($condition_by_assign) {
+ $this->openTag($compiler, 'elseif', array($nesting + 1, $compiler->tag_nocache));
+ $_output = $compiler->appendCode("", $assignCode);
+ return $compiler->appendCode($_output, "");
+ } else {
+ $this->openTag($compiler, 'elseif', array($nesting, $compiler->tag_nocache));
+ return "";
+ }
+ } else {
+ $_output = $compiler->appendCode("", $prefixCode);
+ $this->openTag($compiler, 'elseif', array($nesting + 1, $compiler->tag_nocache));
+ if ($condition_by_assign) {
+ $_output = $compiler->appendCode($_output, $assignCode);
+ return $compiler->appendCode($_output, "");
+ } else {
+ return $compiler->appendCode($_output, "");
+ }
+ }
+ }
+}
+
+/**
+ * Smarty Internal Plugin Compile Ifclose Class
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ */
+class Smarty_Internal_Compile_Ifclose extends Smarty_Internal_CompileBase
+{
+ /**
+ * Compiles code for the {/if} tag
+ *
+ * @param array $args array with attributes from parser
+ * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
+ *
+ * @return string compiled code
+ */
+ public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler)
+ {
+ // must endblock be nocache?
+ if ($compiler->nocache) {
+ $compiler->tag_nocache = true;
+ }
+ list($nesting, $compiler->nocache) = $this->closeTag($compiler, array('if', 'else', 'elseif'));
+ $tmp = '';
+ for ($i = 0; $i < $nesting; $i++) {
+ $tmp .= '}';
+ }
+ return "";
+ }
+}
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_include.php b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_include.php
new file mode 100644
index 000000000..bf62461bc
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_include.php
@@ -0,0 +1,347 @@
+ Smarty::SCOPE_PARENT, 'root' => Smarty::SCOPE_ROOT,
+ 'global' => Smarty::SCOPE_GLOBAL, 'tpl_root' => Smarty::SCOPE_TPL_ROOT,
+ 'smarty' => Smarty::SCOPE_SMARTY
+ );
+
+ /**
+ * Compiles code for the {include} tag
+ *
+ * @param array $args array with attributes from parser
+ * @param Smarty_Internal_SmartyTemplateCompiler $compiler compiler object
+ *
+ * @return string
+ * @throws \Exception
+ * @throws \SmartyCompilerException
+ * @throws \SmartyException
+ */
+ public function compile($args, Smarty_Internal_SmartyTemplateCompiler $compiler)
+ {
+ $uid = $t_hash = null;
+ // check and get attributes
+ $_attr = $this->getAttributes($compiler, $args);
+ $fullResourceName = $source_resource = $_attr[ 'file' ];
+ $variable_template = false;
+ $cache_tpl = false;
+ // parse resource_name
+ if (preg_match('/^([\'"])(([A-Za-z0-9_\-]{2,})[:])?(([^$()]+)|(.+))\1$/', $source_resource, $match)) {
+ $type = !empty($match[ 3 ]) ? $match[ 3 ] : $compiler->template->smarty->default_resource_type;
+ $name = !empty($match[ 5 ]) ? $match[ 5 ] : $match[ 6 ];
+ $handler = Smarty_Resource::load($compiler->smarty, $type);
+ if ($handler->recompiled || $handler->uncompiled) {
+ $variable_template = true;
+ }
+ if (!$variable_template) {
+ if ($type !== 'string') {
+ $fullResourceName = "{$type}:{$name}";
+ $compiled = $compiler->parent_compiler->template->compiled;
+ if (isset($compiled->includes[ $fullResourceName ])) {
+ $compiled->includes[ $fullResourceName ]++;
+ $cache_tpl = true;
+ } else {
+ if ("{$compiler->template->source->type}:{$compiler->template->source->name}" ==
+ $fullResourceName
+ ) {
+ // recursive call of current template
+ $compiled->includes[ $fullResourceName ] = 2;
+ $cache_tpl = true;
+ } else {
+ $compiled->includes[ $fullResourceName ] = 1;
+ }
+ }
+ $fullResourceName = $match[ 1 ] . $fullResourceName . $match[ 1 ];
+ }
+ }
+ if (empty($match[ 5 ])) {
+ $variable_template = true;
+ }
+ } else {
+ $variable_template = true;
+ }
+ // scope setup
+ $_scope = $compiler->convertScope($_attr, $this->valid_scopes);
+ // set flag to cache subtemplate object when called within loop or template name is variable.
+ if ($cache_tpl || $variable_template || $compiler->loopNesting > 0) {
+ $_cache_tpl = 'true';
+ } else {
+ $_cache_tpl = 'false';
+ }
+ // assume caching is off
+ $_caching = Smarty::CACHING_OFF;
+ $call_nocache = $compiler->tag_nocache || $compiler->nocache;
+ // caching was on and {include} is not in nocache mode
+ if ($compiler->template->caching && !$compiler->nocache && !$compiler->tag_nocache) {
+ $_caching = self::CACHING_NOCACHE_CODE;
+ }
+ // flag if included template code should be merged into caller
+ $merge_compiled_includes = ($compiler->smarty->merge_compiled_includes || $_attr[ 'inline' ] === true) &&
+ !$compiler->template->source->handler->recompiled;
+ if ($merge_compiled_includes) {
+ // variable template name ?
+ if ($variable_template) {
+ $merge_compiled_includes = false;
+ }
+ // variable compile_id?
+ if (isset($_attr[ 'compile_id' ]) && $compiler->isVariable($_attr[ 'compile_id' ])) {
+ $merge_compiled_includes = false;
+ }
+ }
+ /*
+ * if the {include} tag provides individual parameter for caching or compile_id
+ * the subtemplate must not be included into the common cache file and is treated like
+ * a call in nocache mode.
+ *
+ */
+ if ($_attr[ 'nocache' ] !== true && $_attr[ 'caching' ]) {
+ $_caching = $_new_caching = (int)$_attr[ 'caching' ];
+ $call_nocache = true;
+ } else {
+ $_new_caching = Smarty::CACHING_LIFETIME_CURRENT;
+ }
+ if (isset($_attr[ 'cache_lifetime' ])) {
+ $_cache_lifetime = $_attr[ 'cache_lifetime' ];
+ $call_nocache = true;
+ $_caching = $_new_caching;
+ } else {
+ $_cache_lifetime = '$_smarty_tpl->cache_lifetime';
+ }
+ if (isset($_attr[ 'cache_id' ])) {
+ $_cache_id = $_attr[ 'cache_id' ];
+ $call_nocache = true;
+ $_caching = $_new_caching;
+ } else {
+ $_cache_id = '$_smarty_tpl->cache_id';
+ }
+ if (isset($_attr[ 'compile_id' ])) {
+ $_compile_id = $_attr[ 'compile_id' ];
+ } else {
+ $_compile_id = '$_smarty_tpl->compile_id';
+ }
+ // if subtemplate will be called in nocache mode do not merge
+ if ($compiler->template->caching && $call_nocache) {
+ $merge_compiled_includes = false;
+ }
+ // assign attribute
+ if (isset($_attr[ 'assign' ])) {
+ // output will be stored in a smarty variable instead of being displayed
+ if ($_assign = $compiler->getId($_attr[ 'assign' ])) {
+ $_assign = "'{$_assign}'";
+ if ($compiler->tag_nocache || $compiler->nocache || $call_nocache) {
+ // create nocache var to make it know for further compiling
+ $compiler->setNocacheInVariable($_attr[ 'assign' ]);
+ }
+ } else {
+ $_assign = $_attr[ 'assign' ];
+ }
+ }
+ $has_compiled_template = false;
+ if ($merge_compiled_includes) {
+ $c_id = isset($_attr[ 'compile_id' ]) ? $_attr[ 'compile_id' ] : $compiler->template->compile_id;
+ // we must observe different compile_id and caching
+ $t_hash = sha1($c_id . ($_caching ? '--caching' : '--nocaching'));
+ $compiler->smarty->allow_ambiguous_resources = true;
+ /* @var Smarty_Internal_Template $tpl */
+ $tpl = new $compiler->smarty->template_class(
+ trim($fullResourceName, '"\''),
+ $compiler->smarty,
+ $compiler->template,
+ $compiler->template->cache_id,
+ $c_id,
+ $_caching
+ );
+ $uid = $tpl->source->type . $tpl->source->uid;
+ if (!isset($compiler->parent_compiler->mergedSubTemplatesData[ $uid ][ $t_hash ])) {
+ $has_compiled_template = $this->compileInlineTemplate($compiler, $tpl, $t_hash);
+ } else {
+ $has_compiled_template = true;
+ }
+ unset($tpl);
+ }
+ // delete {include} standard attributes
+ unset($_attr[ 'file' ], $_attr[ 'assign' ], $_attr[ 'cache_id' ], $_attr[ 'compile_id' ], $_attr[ 'cache_lifetime' ], $_attr[ 'nocache' ], $_attr[ 'caching' ], $_attr[ 'scope' ], $_attr[ 'inline' ]);
+ // remaining attributes must be assigned as smarty variable
+ $_vars = 'array()';
+ if (!empty($_attr)) {
+ $_pairs = array();
+ // create variables
+ foreach ($_attr as $key => $value) {
+ $_pairs[] = "'$key'=>$value";
+ }
+ $_vars = 'array(' . join(',', $_pairs) . ')';
+ }
+ $update_compile_id = $compiler->template->caching && !$compiler->tag_nocache && !$compiler->nocache &&
+ $_compile_id !== '$_smarty_tpl->compile_id';
+ if ($has_compiled_template && !$call_nocache) {
+ $_output = "makeNocacheCode("\$_compile_id_save[] = \$_smarty_tpl->compile_id;\n\$_smarty_tpl->compile_id = {$_compile_id};\n");
+ }
+ if (!empty($_attr) && $_caching === 9999 && $compiler->template->caching) {
+ $_vars_nc = "foreach ($_vars as \$ik => \$iv) {\n";
+ $_vars_nc .= "\$_smarty_tpl->tpl_vars[\$ik] = new Smarty_Variable(\$iv);\n";
+ $_vars_nc .= "}\n";
+ $_output .= substr($compiler->processNocacheCode('\n", true), 6, -3);
+ }
+ if (isset($_assign)) {
+ $_output .= "ob_start();\n";
+ }
+ $_output .= "\$_smarty_tpl->_subTemplateRender({$fullResourceName}, {$_cache_id}, {$_compile_id}, {$_caching}, {$_cache_lifetime}, {$_vars}, {$_scope}, {$_cache_tpl}, '{$compiler->parent_compiler->mergedSubTemplatesData[$uid][$t_hash]['uid']}', '{$compiler->parent_compiler->mergedSubTemplatesData[$uid][$t_hash]['func']}');\n";
+ if (isset($_assign)) {
+ $_output .= "\$_smarty_tpl->assign({$_assign}, ob_get_clean());\n";
+ }
+ if ($update_compile_id) {
+ $_output .= $compiler->makeNocacheCode("\$_smarty_tpl->compile_id = array_pop(\$_compile_id_save);\n");
+ }
+ $_output .= "?>";
+ return $_output;
+ }
+ if ($call_nocache) {
+ $compiler->tag_nocache = true;
+ }
+ $_output = "compile_id;\n\$_smarty_tpl->compile_id = {$_compile_id};\n";
+ }
+ // was there an assign attribute
+ if (isset($_assign)) {
+ $_output .= "ob_start();\n";
+ }
+ $_output .= "\$_smarty_tpl->_subTemplateRender({$fullResourceName}, $_cache_id, $_compile_id, $_caching, $_cache_lifetime, $_vars, $_scope, {$_cache_tpl});\n";
+ if (isset($_assign)) {
+ $_output .= "\$_smarty_tpl->assign({$_assign}, ob_get_clean());\n";
+ }
+ if ($update_compile_id) {
+ $_output .= "\$_smarty_tpl->compile_id = array_pop(\$_compile_id_save);\n";
+ }
+ $_output .= "?>";
+ return $_output;
+ }
+
+ /**
+ * Compile inline sub template
+ *
+ * @param \Smarty_Internal_SmartyTemplateCompiler $compiler
+ * @param \Smarty_Internal_Template $tpl
+ * @param string $t_hash
+ *
+ * @return bool
+ * @throws \Exception
+ * @throws \SmartyException
+ */
+ public function compileInlineTemplate(
+ Smarty_Internal_SmartyTemplateCompiler $compiler,
+ Smarty_Internal_Template $tpl,
+ $t_hash
+ ) {
+ $uid = $tpl->source->type . $tpl->source->uid;
+ if (!($tpl->source->handler->uncompiled) && $tpl->source->exists) {
+ $compiler->parent_compiler->mergedSubTemplatesData[ $uid ][ $t_hash ][ 'uid' ] = $tpl->source->uid;
+ if (isset($compiler->template->inheritance)) {
+ $tpl->inheritance = clone $compiler->template->inheritance;
+ }
+ $tpl->compiled = new Smarty_Template_Compiled();
+ $tpl->compiled->nocache_hash = $compiler->parent_compiler->template->compiled->nocache_hash;
+ $tpl->loadCompiler();
+ // save unique function name
+ $compiler->parent_compiler->mergedSubTemplatesData[ $uid ][ $t_hash ][ 'func' ] =
+ $tpl->compiled->unifunc = 'content_' . str_replace(array('.', ','), '_', uniqid('', true));
+ // make sure whole chain gets compiled
+ $tpl->mustCompile = true;
+ $compiler->parent_compiler->mergedSubTemplatesData[ $uid ][ $t_hash ][ 'nocache_hash' ] =
+ $tpl->compiled->nocache_hash;
+ if ($tpl->source->type === 'file') {
+ $sourceInfo = $tpl->source->filepath;
+ } else {
+ $basename = $tpl->source->handler->getBasename($tpl->source);
+ $sourceInfo = $tpl->source->type . ':' .
+ ($basename ? $basename : $tpl->source->name);
+ }
+ // get compiled code
+ $compiled_code = "cStyleComment(" Start inline template \"{$sourceInfo}\" =============================") . "\n";
+ $compiled_code .= "function {$tpl->compiled->unifunc} (Smarty_Internal_Template \$_smarty_tpl) {\n";
+ $compiled_code .= "?>\n" . $tpl->compiler->compileTemplateSource($tpl, null, $compiler->parent_compiler);
+ $compiled_code .= "\n";
+ $compiled_code .= $tpl->compiler->postFilter($tpl->compiler->blockOrFunctionCode);
+ $compiled_code .= "cStyleComment(" End inline template \"{$sourceInfo}\" =============================") . "\n";
+ $compiled_code .= '?>';
+ unset($tpl->compiler);
+ if ($tpl->compiled->has_nocache_code) {
+ // replace nocache_hash
+ $compiled_code =
+ str_replace(
+ "{$tpl->compiled->nocache_hash}",
+ $compiler->template->compiled->nocache_hash,
+ $compiled_code
+ );
+ $compiler->template->compiled->has_nocache_code = true;
+ }
+ $compiler->parent_compiler->mergedSubTemplatesCode[ $tpl->compiled->unifunc ] = $compiled_code;
+ return true;
+ } else {
+ return false;
+ }
+ }
+}
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_insert.php b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_insert.php
new file mode 100644
index 000000000..29031d910
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_insert.php
@@ -0,0 +1,157 @@
+getAttributes($compiler, $args);
+ $nocacheParam = $compiler->template->caching && ($compiler->tag_nocache || $compiler->nocache);
+ if (!$nocacheParam) {
+ // do not compile as nocache code
+ $compiler->suppressNocacheProcessing = true;
+ }
+ $compiler->tag_nocache = true;
+ $_smarty_tpl = $compiler->template;
+ $_name = null;
+ $_script = null;
+ $_output = 'template->tpl_vars[ $var ])) {
+ $compiler->template->tpl_vars[ $var ]->nocache = true;
+ } else {
+ $compiler->template->tpl_vars[ $var ] = new Smarty_Variable(null, true);
+ }
+ }
+ if (isset($_attr[ 'script' ])) {
+ // script which must be included
+ $_function = "smarty_insert_{$_name}";
+ $_smarty_tpl = $compiler->template;
+ $_filepath = false;
+ eval('$_script = @' . $_attr[ 'script' ] . ';');
+ if (!isset($compiler->smarty->security_policy) && file_exists($_script)) {
+ $_filepath = $_script;
+ } else {
+ if (isset($compiler->smarty->security_policy)) {
+ $_dir = $compiler->smarty->security_policy->trusted_dir;
+ } else {
+ $_dir = null;
+ }
+ if (!empty($_dir)) {
+ foreach ((array)$_dir as $_script_dir) {
+ $_script_dir = rtrim($_script_dir ?? '', '/\\') . DIRECTORY_SEPARATOR;
+ if (file_exists($_script_dir . $_script)) {
+ $_filepath = $_script_dir . $_script;
+ break;
+ }
+ }
+ }
+ }
+ if ($_filepath === false) {
+ $compiler->trigger_template_error("{insert} missing script file '{$_script}'", null, true);
+ }
+ // code for script file loading
+ $_output .= "require_once '{$_filepath}' ;";
+ include_once $_filepath;
+ if (!is_callable($_function)) {
+ $compiler->trigger_template_error(
+ " {insert} function '{$_function}' is not callable in script file '{$_script}'",
+ null,
+ true
+ );
+ }
+ } else {
+ $_filepath = 'null';
+ $_function = "insert_{$_name}";
+ // function in PHP script ?
+ if (!is_callable($_function)) {
+ // try plugin
+ if (!$_function = $compiler->getPlugin($_name, 'insert')) {
+ $compiler->trigger_template_error(
+ "{insert} no function or plugin found for '{$_name}'",
+ null,
+ true
+ );
+ }
+ }
+ }
+ // delete {insert} standard attributes
+ unset($_attr[ 'name' ], $_attr[ 'assign' ], $_attr[ 'script' ], $_attr[ 'nocache' ]);
+ // convert attributes into parameter array string
+ $_paramsArray = array();
+ foreach ($_attr as $_key => $_value) {
+ $_paramsArray[] = "'$_key' => $_value";
+ }
+ $_params = 'array(' . implode(", ", $_paramsArray) . ')';
+ // call insert
+ if (isset($_assign)) {
+ if ($_smarty_tpl->caching && !$nocacheParam) {
+ $_output .= "echo Smarty_Internal_Nocache_Insert::compile ('{$_function}',{$_params}, \$_smarty_tpl, '{$_filepath}',{$_assign});?>";
+ } else {
+ $_output .= "\$_smarty_tpl->assign({$_assign} , {$_function} ({$_params},\$_smarty_tpl), true);?>";
+ }
+ } else {
+ if ($_smarty_tpl->caching && !$nocacheParam) {
+ $_output .= "echo Smarty_Internal_Nocache_Insert::compile ('{$_function}',{$_params}, \$_smarty_tpl, '{$_filepath}');?>";
+ } else {
+ $_output .= "echo {$_function}({$_params},\$_smarty_tpl);?>";
+ }
+ }
+ $compiler->template->compiled->has_nocache_code = true;
+ return $_output;
+ }
+}
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_ldelim.php b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_ldelim.php
new file mode 100644
index 000000000..5493d4ecc
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_ldelim.php
@@ -0,0 +1,37 @@
+getAttributes($compiler, $args);
+ if ($_attr[ 'nocache' ] === true) {
+ $compiler->trigger_template_error('nocache option not allowed', null, true);
+ }
+ return $compiler->smarty->left_delimiter;
+ }
+}
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_make_nocache.php b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_make_nocache.php
new file mode 100644
index 000000000..8a34ccd0a
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_make_nocache.php
@@ -0,0 +1,62 @@
+getAttributes($compiler, $args);
+ if ($compiler->template->caching) {
+ $output = "smarty->ext->_make_nocache->save(\$_smarty_tpl, {$_attr[ 'var' ]});\n?>\n";
+ $compiler->template->compiled->has_nocache_code = true;
+ $compiler->suppressNocacheProcessing = true;
+ return $output;
+ } else {
+ return true;
+ }
+ }
+}
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_nocache.php b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_nocache.php
new file mode 100644
index 000000000..12f64ed2e
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_nocache.php
@@ -0,0 +1,73 @@
+getAttributes($compiler, $args);
+ $this->openTag($compiler, 'nocache', array($compiler->nocache));
+ // enter nocache mode
+ $compiler->nocache = true;
+ // this tag does not return compiled code
+ $compiler->has_code = false;
+ return true;
+ }
+}
+
+/**
+ * Smarty Internal Plugin Compile Nocacheclose Class
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ */
+class Smarty_Internal_Compile_Nocacheclose extends Smarty_Internal_CompileBase
+{
+ /**
+ * Compiles code for the {/nocache} tag
+ * This tag does not generate compiled output. It only sets a compiler flag.
+ *
+ * @param array $args array with attributes from parser
+ * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
+ *
+ * @return bool
+ */
+ public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler)
+ {
+ $_attr = $this->getAttributes($compiler, $args);
+ // leave nocache mode
+ list($compiler->nocache) = $this->closeTag($compiler, array('nocache'));
+ // this tag does not return compiled code
+ $compiler->has_code = false;
+ return true;
+ }
+}
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_parent.php b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_parent.php
new file mode 100644
index 000000000..ff23edf73
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_parent.php
@@ -0,0 +1,31 @@
+
+ */
+class Smarty_Internal_Compile_Parent extends Smarty_Internal_Compile_Child
+{
+ /**
+ * Tag name
+ *
+ * @var string
+ */
+ public $tag = 'parent';
+
+ /**
+ * Block type
+ *
+ * @var string
+ */
+ public $blockType = 'Parent';
+}
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_block_plugin.php b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_block_plugin.php
new file mode 100644
index 000000000..199a296c8
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_block_plugin.php
@@ -0,0 +1,124 @@
+getAttributes($compiler, $args);
+ $this->nesting++;
+ unset($_attr[ 'nocache' ]);
+ list($callback, $_paramsArray, $callable) = $this->setup($compiler, $_attr, $tag, $function);
+ $_params = 'array(' . implode(',', $_paramsArray) . ')';
+ // compile code
+ $output = "nesting} = isset({$callback[0]}) ? {$callback[0]} : null;\n";
+ $callback = "\$_block_plugin{$this->nesting}{$callback[1]}";
+ }
+ if (isset($callable)) {
+ $output .= "if (!is_callable({$callable})) {\nthrow new SmartyException('block tag \'{$tag}\' not callable or registered');\n}\n";
+ }
+ $output .= "\$_smarty_tpl->smarty->_cache['_tag_stack'][] = array('{$tag}', {$_params});\n";
+ $output .= "\$_block_repeat=true;\necho {$callback}({$_params}, null, \$_smarty_tpl, \$_block_repeat);\nwhile (\$_block_repeat) {\nob_start();?>";
+ $this->openTag($compiler, $tag, array($_params, $compiler->nocache, $callback));
+ // maybe nocache because of nocache variables or nocache plugin
+ $compiler->nocache = $compiler->nocache | $compiler->tag_nocache;
+ } else {
+ // must endblock be nocache?
+ if ($compiler->nocache) {
+ $compiler->tag_nocache = true;
+ }
+ // closing tag of block plugin, restore nocache
+ list($_params, $compiler->nocache, $callback) = $this->closeTag($compiler, substr($tag, 0, -5));
+ // compile code
+ if (!isset($parameter[ 'modifier_list' ])) {
+ $mod_pre = $mod_post = $mod_content = '';
+ $mod_content2 = 'ob_get_clean()';
+ } else {
+ $mod_content2 = "\$_block_content{$this->nesting}";
+ $mod_content = "\$_block_content{$this->nesting} = ob_get_clean();\n";
+ $mod_pre = "ob_start();\n";
+ $mod_post = 'echo ' . $compiler->compileTag(
+ 'private_modifier',
+ array(),
+ array(
+ 'modifierlist' => $parameter[ 'modifier_list' ],
+ 'value' => 'ob_get_clean()'
+ )
+ ) . ";\n";
+ }
+ $output =
+ "smarty->_cache[\'_tag_stack\']);?>';
+ }
+ return $output;
+ }
+
+ /**
+ * Setup callback and parameter array
+ *
+ * @param \Smarty_Internal_TemplateCompilerBase $compiler
+ * @param array $_attr attributes
+ * @param string $tag
+ * @param string $function
+ *
+ * @return array
+ */
+ public function setup(Smarty_Internal_TemplateCompilerBase $compiler, $_attr, $tag, $function)
+ {
+ $_paramsArray = array();
+ foreach ($_attr as $_key => $_value) {
+ if (is_int($_key)) {
+ $_paramsArray[] = "$_key=>$_value";
+ } else {
+ $_paramsArray[] = "'$_key'=>$_value";
+ }
+ }
+ return array($function, $_paramsArray, null);
+ }
+}
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_foreachsection.php b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_foreachsection.php
new file mode 100644
index 000000000..246350dc8
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_foreachsection.php
@@ -0,0 +1,228 @@
+propertyPreg = '~(';
+ $this->startOffset = 1;
+ $this->resultOffsets = array();
+ $this->matchResults = array('named' => array(), 'item' => array());
+ if (isset($attributes[ 'name' ])) {
+ $this->buildPropertyPreg(true, $attributes);
+ }
+ if (isset($this->itemProperties)) {
+ if ($this->isNamed) {
+ $this->propertyPreg .= '|';
+ }
+ $this->buildPropertyPreg(false, $attributes);
+ }
+ $this->propertyPreg .= ')\W~i';
+ // Template source
+ $this->matchTemplateSource($compiler);
+ // Parent template source
+ $this->matchParentTemplateSource($compiler);
+ // {block} source
+ $this->matchBlockSource($compiler);
+ }
+
+ /**
+ * Build property preg string
+ *
+ * @param bool $named
+ * @param array $attributes
+ */
+ public function buildPropertyPreg($named, $attributes)
+ {
+ if ($named) {
+ $this->resultOffsets[ 'named' ] = $this->startOffset = $this->startOffset + 3;
+ $this->propertyPreg .= "(([\$]smarty[.]{$this->tagName}[.]" .
+ ($this->tagName === 'section' ? "|[\[]\s*" : '') .
+ "){$attributes['name']}[.](";
+ $properties = $this->nameProperties;
+ } else {
+ $this->resultOffsets[ 'item' ] = $this->startOffset = $this->startOffset + 2;
+ $this->propertyPreg .= "([\$]{$attributes['item']}[@](";
+ $properties = $this->itemProperties;
+ }
+ $propName = reset($properties);
+ while ($propName) {
+ $this->propertyPreg .= "{$propName}";
+ $propName = next($properties);
+ if ($propName) {
+ $this->propertyPreg .= '|';
+ }
+ }
+ $this->propertyPreg .= '))';
+ }
+
+ /**
+ * Find matches in source string
+ *
+ * @param string $source
+ */
+ public function matchProperty($source)
+ {
+ preg_match_all($this->propertyPreg, $source, $match);
+ foreach ($this->resultOffsets as $key => $offset) {
+ foreach ($match[ $offset ] as $m) {
+ if (!empty($m)) {
+ $this->matchResults[ $key ][ smarty_strtolower_ascii($m) ] = true;
+ }
+ }
+ }
+ }
+
+ /**
+ * Find matches in template source
+ *
+ * @param \Smarty_Internal_TemplateCompilerBase $compiler
+ */
+ public function matchTemplateSource(Smarty_Internal_TemplateCompilerBase $compiler)
+ {
+ $this->matchProperty($compiler->parser->lex->data);
+ }
+
+ /**
+ * Find matches in all parent template source
+ *
+ * @param \Smarty_Internal_TemplateCompilerBase $compiler
+ *
+ * @throws \SmartyException
+ */
+ public function matchParentTemplateSource(Smarty_Internal_TemplateCompilerBase $compiler)
+ {
+ // search parent compiler template source
+ $nextCompiler = $compiler;
+ while ($nextCompiler !== $nextCompiler->parent_compiler) {
+ $nextCompiler = $nextCompiler->parent_compiler;
+ if ($compiler !== $nextCompiler) {
+ // get template source
+ $_content = $nextCompiler->template->source->getContent();
+ if ($_content !== '') {
+ // run pre filter if required
+ if ((isset($nextCompiler->smarty->autoload_filters[ 'pre' ]) ||
+ isset($nextCompiler->smarty->registered_filters[ 'pre' ]))
+ ) {
+ $_content = $nextCompiler->smarty->ext->_filterHandler->runFilter(
+ 'pre',
+ $_content,
+ $nextCompiler->template
+ );
+ }
+ $this->matchProperty($_content);
+ }
+ }
+ }
+ }
+
+ /**
+ * Find matches in {block} tag source
+ *
+ * @param \Smarty_Internal_TemplateCompilerBase $compiler
+ */
+ public function matchBlockSource(Smarty_Internal_TemplateCompilerBase $compiler)
+ {
+ }
+
+ /**
+ * Compiles code for the {$smarty.foreach.xxx} or {$smarty.section.xxx}tag
+ *
+ * @param array $args array with attributes from parser
+ * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
+ * @param array $parameter array with compilation parameter
+ *
+ * @return string compiled code
+ * @throws \SmartyCompilerException
+ */
+ public function compileSpecialVariable($args, Smarty_Internal_TemplateCompilerBase $compiler, $parameter)
+ {
+ $tag = smarty_strtolower_ascii(trim($parameter[ 0 ], '"\''));
+ $name = isset($parameter[ 1 ]) ? $compiler->getId($parameter[ 1 ]) : false;
+ if (!$name) {
+ $compiler->trigger_template_error("missing or illegal \$smarty.{$tag} name attribute", null, true);
+ }
+ $property = isset($parameter[ 2 ]) ? smarty_strtolower_ascii($compiler->getId($parameter[ 2 ])) : false;
+ if (!$property || !in_array($property, $this->nameProperties)) {
+ $compiler->trigger_template_error("missing or illegal \$smarty.{$tag} property attribute", null, true);
+ }
+ $tagVar = "'__smarty_{$tag}_{$name}'";
+ return "(isset(\$_smarty_tpl->tpl_vars[{$tagVar}]->value['{$property}']) ? \$_smarty_tpl->tpl_vars[{$tagVar}]->value['{$property}'] : null)";
+ }
+}
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_function_plugin.php b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_function_plugin.php
new file mode 100644
index 000000000..055823423
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_function_plugin.php
@@ -0,0 +1,78 @@
+getAttributes($compiler, $args);
+ unset($_attr[ 'nocache' ]);
+ // convert attributes into parameter array string
+ $_paramsArray = array();
+ foreach ($_attr as $_key => $_value) {
+ if (is_int($_key)) {
+ $_paramsArray[] = "$_key=>$_value";
+ } else {
+ $_paramsArray[] = "'$_key'=>$_value";
+ }
+ }
+ $_params = 'array(' . implode(',', $_paramsArray) . ')';
+ // compile code
+ $output = "{$function}({$_params},\$_smarty_tpl)";
+ if (!empty($parameter[ 'modifierlist' ])) {
+ $output = $compiler->compileTag(
+ 'private_modifier',
+ array(),
+ array(
+ 'modifierlist' => $parameter[ 'modifierlist' ],
+ 'value' => $output
+ )
+ );
+ }
+ $output = "\n";
+ return $output;
+ }
+}
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_modifier.php b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_modifier.php
new file mode 100644
index 000000000..31fd6e1da
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_modifier.php
@@ -0,0 +1,163 @@
+getAttributes($compiler, $args);
+ $output = $parameter[ 'value' ];
+ // loop over list of modifiers
+ foreach ($parameter[ 'modifierlist' ] as $single_modifier) {
+ /* @var string $modifier */
+ $modifier = $single_modifier[ 0 ];
+ $single_modifier[ 0 ] = $output;
+ $params = implode(',', $single_modifier);
+ // check if we know already the type of modifier
+ if (isset($compiler->known_modifier_type[ $modifier ])) {
+ $modifier_types = array($compiler->known_modifier_type[ $modifier ]);
+ } else {
+ $modifier_types = array(1, 2, 3, 4, 5, 6);
+ }
+ foreach ($modifier_types as $type) {
+ switch ($type) {
+ case 1:
+ // registered modifier
+ if (isset($compiler->smarty->registered_plugins[ Smarty::PLUGIN_MODIFIER ][ $modifier ])) {
+ if (is_callable($compiler->smarty->registered_plugins[ Smarty::PLUGIN_MODIFIER ][ $modifier ][ 0 ])) {
+ $output =
+ sprintf(
+ 'call_user_func_array($_smarty_tpl->registered_plugins[ \'%s\' ][ %s ][ 0 ], array( %s ))',
+ Smarty::PLUGIN_MODIFIER,
+ var_export($modifier, true),
+ $params
+ );
+ $compiler->known_modifier_type[ $modifier ] = $type;
+ break 2;
+ }
+ }
+ break;
+ case 2:
+ // registered modifier compiler
+ if (isset($compiler->smarty->registered_plugins[ Smarty::PLUGIN_MODIFIERCOMPILER ][ $modifier ][ 0 ])) {
+ $output =
+ call_user_func(
+ $compiler->smarty->registered_plugins[ Smarty::PLUGIN_MODIFIERCOMPILER ][ $modifier ][ 0 ],
+ $single_modifier,
+ $compiler->smarty
+ );
+ $compiler->known_modifier_type[ $modifier ] = $type;
+ break 2;
+ }
+ break;
+ case 3:
+ // modifiercompiler plugin
+ if ($compiler->smarty->loadPlugin('smarty_modifiercompiler_' . $modifier)) {
+ // check if modifier allowed
+ if (!is_object($compiler->smarty->security_policy)
+ || $compiler->smarty->security_policy->isTrustedModifier($modifier, $compiler)
+ ) {
+ $plugin = 'smarty_modifiercompiler_' . $modifier;
+ $output = $plugin($single_modifier, $compiler);
+ }
+ $compiler->known_modifier_type[ $modifier ] = $type;
+ break 2;
+ }
+ break;
+ case 4:
+ // modifier plugin
+ if ($function = $compiler->getPlugin($modifier, Smarty::PLUGIN_MODIFIER)) {
+ // check if modifier allowed
+ if (!is_object($compiler->smarty->security_policy)
+ || $compiler->smarty->security_policy->isTrustedModifier($modifier, $compiler)
+ ) {
+ $output = "{$function}({$params})";
+ }
+ $compiler->known_modifier_type[ $modifier ] = $type;
+ break 2;
+ }
+ break;
+ case 5:
+ // PHP function
+ if (is_callable($modifier)) {
+ // check if modifier allowed
+ if (!is_object($compiler->smarty->security_policy)
+ || $compiler->smarty->security_policy->isTrustedPhpModifier($modifier, $compiler)
+ ) {
+ if (!in_array($modifier, ['time', 'join', 'is_array', 'in_array'])) {
+ trigger_error('Using unregistered function "' . $modifier . '" in a template is deprecated and will be ' .
+ 'removed in a future release. Use Smarty::registerPlugin to explicitly register ' .
+ 'a custom modifier.', E_USER_DEPRECATED);
+ }
+ $output = "{$modifier}({$params})";
+ }
+ $compiler->known_modifier_type[ $modifier ] = $type;
+ break 2;
+ }
+ break;
+ case 6:
+ // default plugin handler
+ if (isset($compiler->default_handler_plugins[ Smarty::PLUGIN_MODIFIER ][ $modifier ])
+ || (is_callable($compiler->smarty->default_plugin_handler_func)
+ && $compiler->getPluginFromDefaultHandler($modifier, Smarty::PLUGIN_MODIFIER))
+ ) {
+ $function = $compiler->default_handler_plugins[ Smarty::PLUGIN_MODIFIER ][ $modifier ][ 0 ];
+ // check if modifier allowed
+ if (!is_object($compiler->smarty->security_policy)
+ || $compiler->smarty->security_policy->isTrustedModifier($modifier, $compiler)
+ ) {
+ if (!is_array($function)) {
+ $output = "{$function}({$params})";
+ } else {
+ if (is_object($function[ 0 ])) {
+ $output = $function[ 0 ] . '->' . $function[ 1 ] . '(' . $params . ')';
+ } else {
+ $output = $function[ 0 ] . '::' . $function[ 1 ] . '(' . $params . ')';
+ }
+ }
+ }
+ if (isset($compiler->required_plugins[ 'nocache' ][ $modifier ][ Smarty::PLUGIN_MODIFIER ][ 'file' ])
+ ||
+ isset($compiler->required_plugins[ 'compiled' ][ $modifier ][ Smarty::PLUGIN_MODIFIER ][ 'file' ])
+ ) {
+ // was a plugin
+ $compiler->known_modifier_type[ $modifier ] = 4;
+ } else {
+ $compiler->known_modifier_type[ $modifier ] = $type;
+ }
+ break 2;
+ }
+ }
+ }
+ if (!isset($compiler->known_modifier_type[ $modifier ])) {
+ $compiler->trigger_template_error("unknown modifier '{$modifier}'", null, true);
+ }
+ }
+ return $output;
+ }
+}
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_object_block_function.php b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_object_block_function.php
new file mode 100644
index 000000000..baac51b28
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_object_block_function.php
@@ -0,0 +1,42 @@
+ $_value) {
+ if (is_int($_key)) {
+ $_paramsArray[] = "$_key=>$_value";
+ } else {
+ $_paramsArray[] = "'$_key'=>$_value";
+ }
+ }
+ $callback = array("\$_smarty_tpl->smarty->registered_objects['{$tag}'][0]", "->{$method}");
+ return array($callback, $_paramsArray, "array(\$_block_plugin{$this->nesting}, '{$method}')");
+ }
+}
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_object_function.php b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_object_function.php
new file mode 100644
index 000000000..2a763c6e3
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_object_function.php
@@ -0,0 +1,85 @@
+getAttributes($compiler, $args);
+ unset($_attr[ 'nocache' ]);
+ $_assign = null;
+ if (isset($_attr[ 'assign' ])) {
+ $_assign = $_attr[ 'assign' ];
+ unset($_attr[ 'assign' ]);
+ }
+ // method or property ?
+ if (is_callable(array($compiler->smarty->registered_objects[ $tag ][ 0 ], $method))) {
+ // convert attributes into parameter array string
+ if ($compiler->smarty->registered_objects[ $tag ][ 2 ]) {
+ $_paramsArray = array();
+ foreach ($_attr as $_key => $_value) {
+ if (is_int($_key)) {
+ $_paramsArray[] = "$_key=>$_value";
+ } else {
+ $_paramsArray[] = "'$_key'=>$_value";
+ }
+ }
+ $_params = 'array(' . implode(',', $_paramsArray) . ')';
+ $output = "\$_smarty_tpl->smarty->registered_objects['{$tag}'][0]->{$method}({$_params},\$_smarty_tpl)";
+ } else {
+ $_params = implode(',', $_attr);
+ $output = "\$_smarty_tpl->smarty->registered_objects['{$tag}'][0]->{$method}({$_params})";
+ }
+ } else {
+ // object property
+ $output = "\$_smarty_tpl->smarty->registered_objects['{$tag}'][0]->{$method}";
+ }
+ if (!empty($parameter[ 'modifierlist' ])) {
+ $output = $compiler->compileTag(
+ 'private_modifier',
+ array(),
+ array('modifierlist' => $parameter[ 'modifierlist' ], 'value' => $output)
+ );
+ }
+ if (empty($_assign)) {
+ return "\n";
+ } else {
+ return "assign({$_assign},{$output});?>\n";
+ }
+ }
+}
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_print_expression.php b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_print_expression.php
new file mode 100644
index 000000000..78f1c0763
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_print_expression.php
@@ -0,0 +1,161 @@
+getAttributes($compiler, $args);
+ $output = $parameter[ 'value' ];
+ // tag modifier
+ if (!empty($parameter[ 'modifierlist' ])) {
+ $output = $compiler->compileTag(
+ 'private_modifier',
+ array(),
+ array(
+ 'modifierlist' => $parameter[ 'modifierlist' ],
+ 'value' => $output
+ )
+ );
+ }
+ if (isset($_attr[ 'assign' ])) {
+ // assign output to variable
+ return "assign({$_attr['assign']},{$output});?>";
+ } else {
+ // display value
+ if (!$_attr[ 'nofilter' ]) {
+ // default modifier
+ if (!empty($compiler->smarty->default_modifiers)) {
+ if (empty($compiler->default_modifier_list)) {
+ $modifierlist = array();
+ foreach ($compiler->smarty->default_modifiers as $key => $single_default_modifier) {
+ preg_match_all(
+ '/(\'[^\'\\\\]*(?:\\\\.[^\'\\\\]*)*\'|"[^"\\\\]*(?:\\\\.[^"\\\\]*)*"|:|[^:]+)/',
+ $single_default_modifier,
+ $mod_array
+ );
+ for ($i = 0, $count = count($mod_array[ 0 ]); $i < $count; $i++) {
+ if ($mod_array[ 0 ][ $i ] !== ':') {
+ $modifierlist[ $key ][] = $mod_array[ 0 ][ $i ];
+ }
+ }
+ }
+ $compiler->default_modifier_list = $modifierlist;
+ }
+ $output = $compiler->compileTag(
+ 'private_modifier',
+ array(),
+ array(
+ 'modifierlist' => $compiler->default_modifier_list,
+ 'value' => $output
+ )
+ );
+ }
+ // autoescape html
+ if ($compiler->template->smarty->escape_html) {
+ $output = "htmlspecialchars((string) ({$output}), ENT_QUOTES, '" . addslashes(Smarty::$_CHARSET) . "')";
+ }
+ // loop over registered filters
+ if (!empty($compiler->template->smarty->registered_filters[ Smarty::FILTER_VARIABLE ])) {
+ foreach ($compiler->template->smarty->registered_filters[ Smarty::FILTER_VARIABLE ] as $key =>
+ $function) {
+ if (!is_array($function)) {
+ $output = "{$function}({$output},\$_smarty_tpl)";
+ } elseif (is_object($function[ 0 ])) {
+ $output =
+ "\$_smarty_tpl->smarty->registered_filters[Smarty::FILTER_VARIABLE]['{$key}'][0]->{$function[1]}({$output},\$_smarty_tpl)";
+ } else {
+ $output = "{$function[0]}::{$function[1]}({$output},\$_smarty_tpl)";
+ }
+ }
+ }
+ // auto loaded filters
+ if (isset($compiler->smarty->autoload_filters[ Smarty::FILTER_VARIABLE ])) {
+ foreach ((array)$compiler->template->smarty->autoload_filters[ Smarty::FILTER_VARIABLE ] as $name) {
+ $result = $this->compile_variable_filter($compiler, $name, $output);
+ if ($result !== false) {
+ $output = $result;
+ } else {
+ // not found, throw exception
+ throw new SmartyException("Unable to load variable filter '{$name}'");
+ }
+ }
+ }
+ foreach ($compiler->variable_filters as $filter) {
+ if (count($filter) === 1
+ && ($result = $this->compile_variable_filter($compiler, $filter[ 0 ], $output)) !== false
+ ) {
+ $output = $result;
+ } else {
+ $output = $compiler->compileTag(
+ 'private_modifier',
+ array(),
+ array('modifierlist' => array($filter), 'value' => $output)
+ );
+ }
+ }
+ }
+ $output = "\n";
+ }
+ return $output;
+ }
+
+ /**
+ * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
+ * @param string $name name of variable filter
+ * @param string $output embedded output
+ *
+ * @return string
+ * @throws \SmartyException
+ */
+ private function compile_variable_filter(Smarty_Internal_TemplateCompilerBase $compiler, $name, $output)
+ {
+ $function = $compiler->getPlugin($name, 'variablefilter');
+ if ($function) {
+ return "{$function}({$output},\$_smarty_tpl)";
+ } else {
+ // not found
+ return false;
+ }
+ }
+}
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_registered_block.php b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_registered_block.php
new file mode 100644
index 000000000..0f818d1b3
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_registered_block.php
@@ -0,0 +1,72 @@
+smarty->registered_plugins[ Smarty::PLUGIN_BLOCK ][ $tag ])) {
+ $tag_info = $compiler->smarty->registered_plugins[ Smarty::PLUGIN_BLOCK ][ $tag ];
+ $callback = $tag_info[ 0 ];
+ if (is_array($callback)) {
+ if (is_object($callback[ 0 ])) {
+ $callable = "array(\$_block_plugin{$this->nesting}, '{$callback[1]}')";
+ $callback =
+ array("\$_smarty_tpl->smarty->registered_plugins['block']['{$tag}'][0][0]", "->{$callback[1]}");
+ } else {
+ $callable = "array(\$_block_plugin{$this->nesting}, '{$callback[1]}')";
+ $callback =
+ array("\$_smarty_tpl->smarty->registered_plugins['block']['{$tag}'][0][0]", "::{$callback[1]}");
+ }
+ } else {
+ $callable = "\$_block_plugin{$this->nesting}";
+ $callback = array("\$_smarty_tpl->smarty->registered_plugins['block']['{$tag}'][0]", '');
+ }
+ } else {
+ $tag_info = $compiler->default_handler_plugins[ Smarty::PLUGIN_BLOCK ][ $tag ];
+ $callback = $tag_info[ 0 ];
+ if (is_array($callback)) {
+ $callable = "array('{$callback[0]}', '{$callback[1]}')";
+ $callback = "{$callback[1]}::{$callback[1]}";
+ } else {
+ $callable = null;
+ }
+ }
+ $compiler->tag_nocache = !$tag_info[ 1 ] | $compiler->tag_nocache;
+ $_paramsArray = array();
+ foreach ($_attr as $_key => $_value) {
+ if (is_int($_key)) {
+ $_paramsArray[] = "$_key=>$_value";
+ } elseif ($compiler->template->caching && in_array($_key, $tag_info[ 2 ])) {
+ $_value = str_replace('\'', "^#^", $_value);
+ $_paramsArray[] = "'$_key'=>^#^.var_export($_value,true).^#^";
+ } else {
+ $_paramsArray[] = "'$_key'=>$_value";
+ }
+ }
+ return array($callback, $_paramsArray, $callable);
+ }
+}
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_registered_function.php b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_registered_function.php
new file mode 100644
index 000000000..2591107d2
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_registered_function.php
@@ -0,0 +1,91 @@
+getAttributes($compiler, $args);
+ unset($_attr[ 'nocache' ]);
+ if (isset($compiler->smarty->registered_plugins[ Smarty::PLUGIN_FUNCTION ][ $tag ])) {
+ $tag_info = $compiler->smarty->registered_plugins[ Smarty::PLUGIN_FUNCTION ][ $tag ];
+ $is_registered = true;
+ } else {
+ $tag_info = $compiler->default_handler_plugins[ Smarty::PLUGIN_FUNCTION ][ $tag ];
+ $is_registered = false;
+ }
+ // not cacheable?
+ $compiler->tag_nocache = $compiler->tag_nocache || !$tag_info[ 1 ];
+ // convert attributes into parameter array string
+ $_paramsArray = array();
+ foreach ($_attr as $_key => $_value) {
+ if (is_int($_key)) {
+ $_paramsArray[] = "$_key=>$_value";
+ } elseif ($compiler->template->caching && in_array($_key, $tag_info[ 2 ])) {
+ $_value = str_replace('\'', "^#^", $_value);
+ $_paramsArray[] = "'$_key'=>^#^.var_export($_value,true).^#^";
+ } else {
+ $_paramsArray[] = "'$_key'=>$_value";
+ }
+ }
+ $_params = 'array(' . implode(',', $_paramsArray) . ')';
+ // compile code
+ if ($is_registered) {
+ $output =
+ "call_user_func_array( \$_smarty_tpl->smarty->registered_plugins[Smarty::PLUGIN_FUNCTION]['{$tag}'][0], array( {$_params},\$_smarty_tpl ) )";
+ } else {
+ $function = $tag_info[ 0 ];
+ if (!is_array($function)) {
+ $output = "{$function}({$_params},\$_smarty_tpl)";
+ } else {
+ $output = "{$function[0]}::{$function[1]}({$_params},\$_smarty_tpl)";
+ }
+ }
+ if (!empty($parameter[ 'modifierlist' ])) {
+ $output = $compiler->compileTag(
+ 'private_modifier',
+ array(),
+ array(
+ 'modifierlist' => $parameter[ 'modifierlist' ],
+ 'value' => $output
+ )
+ );
+ }
+ $output = "\n";
+ return $output;
+ }
+}
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_special_variable.php b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_special_variable.php
new file mode 100644
index 000000000..590cba5af
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_special_variable.php
@@ -0,0 +1,130 @@
+getId($_index[ 0 ]));
+ if ($variable === false) {
+ $compiler->trigger_template_error("special \$Smarty variable name index can not be variable", null, true);
+ }
+ if (!isset($compiler->smarty->security_policy)
+ || $compiler->smarty->security_policy->isTrustedSpecialSmartyVar($variable, $compiler)
+ ) {
+ switch ($variable) {
+ case 'foreach':
+ case 'section':
+ if (!isset(Smarty_Internal_TemplateCompilerBase::$_tag_objects[ $variable ])) {
+ $class = 'Smarty_Internal_Compile_' . smarty_ucfirst_ascii($variable);
+ Smarty_Internal_TemplateCompilerBase::$_tag_objects[ $variable ] = new $class;
+ }
+ return Smarty_Internal_TemplateCompilerBase::$_tag_objects[ $variable ]->compileSpecialVariable(
+ array(),
+ $compiler,
+ $_index
+ );
+ case 'capture':
+ if (class_exists('Smarty_Internal_Compile_Capture')) {
+ return Smarty_Internal_Compile_Capture::compileSpecialVariable(array(), $compiler, $_index);
+ }
+ return '';
+ case 'now':
+ return 'time()';
+ case 'cookies':
+ if (isset($compiler->smarty->security_policy)
+ && !$compiler->smarty->security_policy->allow_super_globals
+ ) {
+ $compiler->trigger_template_error("(secure mode) super globals not permitted");
+ break;
+ }
+ $compiled_ref = '$_COOKIE';
+ break;
+ case 'get':
+ case 'post':
+ case 'env':
+ case 'server':
+ case 'session':
+ case 'request':
+ if (isset($compiler->smarty->security_policy)
+ && !$compiler->smarty->security_policy->allow_super_globals
+ ) {
+ $compiler->trigger_template_error("(secure mode) super globals not permitted");
+ break;
+ }
+ $compiled_ref = '$_' . smarty_strtoupper_ascii($variable);
+ break;
+ case 'template':
+ return 'basename($_smarty_tpl->source->filepath)';
+ case 'template_object':
+ if (isset($compiler->smarty->security_policy)) {
+ $compiler->trigger_template_error("(secure mode) template_object not permitted");
+ break;
+ }
+ return '$_smarty_tpl';
+ case 'current_dir':
+ return 'dirname($_smarty_tpl->source->filepath)';
+ case 'version':
+ return "Smarty::SMARTY_VERSION";
+ case 'const':
+ if (isset($compiler->smarty->security_policy)
+ && !$compiler->smarty->security_policy->allow_constants
+ ) {
+ $compiler->trigger_template_error("(secure mode) constants not permitted");
+ break;
+ }
+ if (strpos($_index[ 1 ], '$') === false && strpos($_index[ 1 ], '\'') === false) {
+ return "(defined('{$_index[1]}') ? constant('{$_index[1]}') : null)";
+ } else {
+ return "(defined({$_index[1]}) ? constant({$_index[1]}) : null)";
+ }
+ // no break
+ case 'config':
+ if (isset($_index[ 2 ])) {
+ return "(is_array(\$tmp = \$_smarty_tpl->smarty->ext->configload->_getConfigVariable(\$_smarty_tpl, $_index[1])) ? \$tmp[$_index[2]] : null)";
+ } else {
+ return "\$_smarty_tpl->smarty->ext->configload->_getConfigVariable(\$_smarty_tpl, $_index[1])";
+ }
+ // no break
+ case 'ldelim':
+ return "\$_smarty_tpl->smarty->left_delimiter";
+ case 'rdelim':
+ return "\$_smarty_tpl->smarty->right_delimiter";
+ default:
+ $compiler->trigger_template_error('$smarty.' . trim($_index[ 0 ], "'") . ' is not defined');
+ break;
+ }
+ if (isset($_index[ 1 ])) {
+ array_shift($_index);
+ foreach ($_index as $_ind) {
+ $compiled_ref = $compiled_ref . "[$_ind]";
+ }
+ }
+ return $compiled_ref;
+ }
+ }
+}
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_rdelim.php b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_rdelim.php
new file mode 100644
index 000000000..1cc340c18
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_rdelim.php
@@ -0,0 +1,34 @@
+smarty->right_delimiter;
+ }
+}
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_section.php b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_section.php
new file mode 100644
index 000000000..0dee20820
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_section.php
@@ -0,0 +1,462 @@
+loopNesting++;
+ // check and get attributes
+ $_attr = $this->getAttributes($compiler, $args);
+ $attributes = array('name' => $compiler->getId($_attr[ 'name' ]));
+ unset($_attr[ 'name' ]);
+ foreach ($attributes as $a => $v) {
+ if ($v === false) {
+ $compiler->trigger_template_error("'{$a}' attribute/variable has illegal value", null, true);
+ }
+ }
+ $local = "\$__section_{$attributes['name']}_" . $this->counter++ . '_';
+ $sectionVar = "\$_smarty_tpl->tpl_vars['__smarty_section_{$attributes['name']}']";
+ $this->openTag($compiler, 'section', array('section', $compiler->nocache, $local, $sectionVar));
+ // maybe nocache because of nocache variables
+ $compiler->nocache = $compiler->nocache | $compiler->tag_nocache;
+ $initLocal = array();
+ $initNamedProperty = array();
+ $initFor = array();
+ $incFor = array();
+ $cmpFor = array();
+ $propValue = array(
+ 'index' => "{$sectionVar}->value['index']", 'show' => 'true', 'step' => 1,
+ 'iteration' => "{$local}iteration",
+ );
+ $propType = array('index' => 2, 'iteration' => 2, 'show' => 0, 'step' => 0,);
+ // search for used tag attributes
+ $this->scanForProperties($attributes, $compiler);
+ if (!empty($this->matchResults[ 'named' ])) {
+ $namedAttr = $this->matchResults[ 'named' ];
+ }
+ if (isset($_attr[ 'properties' ]) && preg_match_all("/['](.*?)[']/", $_attr[ 'properties' ], $match)) {
+ foreach ($match[ 1 ] as $prop) {
+ if (in_array($prop, $this->nameProperties)) {
+ $namedAttr[ $prop ] = true;
+ } else {
+ $compiler->trigger_template_error("Invalid property '{$prop}'", null, true);
+ }
+ }
+ }
+ $namedAttr[ 'index' ] = true;
+ $output = " $attr_value) {
+ switch ($attr_name) {
+ case 'loop':
+ if (is_numeric($attr_value)) {
+ $v = (int)$attr_value;
+ $t = 0;
+ } else {
+ $v = "(is_array(@\$_loop=$attr_value) ? count(\$_loop) : max(0, (int) \$_loop))";
+ $t = 1;
+ }
+ if ($t === 1) {
+ $initLocal[ 'loop' ] = $v;
+ $v = "{$local}loop";
+ }
+ break;
+ case 'show':
+ if (is_bool($attr_value)) {
+ $v = $attr_value ? 'true' : 'false';
+ $t = 0;
+ } else {
+ $v = "(bool) $attr_value";
+ $t = 3;
+ }
+ break;
+ case 'step':
+ if (is_numeric($attr_value)) {
+ $v = (int)$attr_value;
+ $v = ($v === 0) ? 1 : $v;
+ $t = 0;
+ break;
+ }
+ $initLocal[ 'step' ] = "((int)@$attr_value) === 0 ? 1 : (int)@$attr_value";
+ $v = "{$local}step";
+ $t = 2;
+ break;
+ case 'max':
+ case 'start':
+ if (is_numeric($attr_value)) {
+ $v = (int)$attr_value;
+ $t = 0;
+ break;
+ }
+ $v = "(int)@$attr_value";
+ $t = 3;
+ break;
+ }
+ if ($t === 3 && $compiler->getId($attr_value)) {
+ $t = 1;
+ }
+ $propValue[ $attr_name ] = $v;
+ $propType[ $attr_name ] = $t;
+ }
+ if (isset($namedAttr[ 'step' ])) {
+ $initNamedProperty[ 'step' ] = $propValue[ 'step' ];
+ }
+ if (isset($namedAttr[ 'iteration' ])) {
+ $propValue[ 'iteration' ] = "{$sectionVar}->value['iteration']";
+ }
+ $incFor[ 'iteration' ] = "{$propValue['iteration']}++";
+ $initFor[ 'iteration' ] = "{$propValue['iteration']} = 1";
+ if ($propType[ 'step' ] === 0) {
+ if ($propValue[ 'step' ] === 1) {
+ $incFor[ 'index' ] = "{$sectionVar}->value['index']++";
+ } elseif ($propValue[ 'step' ] > 1) {
+ $incFor[ 'index' ] = "{$sectionVar}->value['index'] += {$propValue['step']}";
+ } else {
+ $incFor[ 'index' ] = "{$sectionVar}->value['index'] -= " . -$propValue[ 'step' ];
+ }
+ } else {
+ $incFor[ 'index' ] = "{$sectionVar}->value['index'] += {$propValue['step']}";
+ }
+ if (!isset($propValue[ 'max' ])) {
+ $propValue[ 'max' ] = $propValue[ 'loop' ];
+ $propType[ 'max' ] = $propType[ 'loop' ];
+ } elseif ($propType[ 'max' ] !== 0) {
+ $propValue[ 'max' ] = "{$propValue['max']} < 0 ? {$propValue['loop']} : {$propValue['max']}";
+ $propType[ 'max' ] = 1;
+ } else {
+ if ($propValue[ 'max' ] < 0) {
+ $propValue[ 'max' ] = $propValue[ 'loop' ];
+ $propType[ 'max' ] = $propType[ 'loop' ];
+ }
+ }
+ if (!isset($propValue[ 'start' ])) {
+ $start_code =
+ array(1 => "{$propValue['step']} > 0 ? ", 2 => '0', 3 => ' : ', 4 => $propValue[ 'loop' ], 5 => ' - 1');
+ if ($propType[ 'loop' ] === 0) {
+ $start_code[ 5 ] = '';
+ $start_code[ 4 ] = $propValue[ 'loop' ] - 1;
+ }
+ if ($propType[ 'step' ] === 0) {
+ if ($propValue[ 'step' ] > 0) {
+ $start_code = array(1 => '0');
+ $propType[ 'start' ] = 0;
+ } else {
+ $start_code[ 1 ] = $start_code[ 2 ] = $start_code[ 3 ] = '';
+ $propType[ 'start' ] = $propType[ 'loop' ];
+ }
+ } else {
+ $propType[ 'start' ] = 1;
+ }
+ $propValue[ 'start' ] = join('', $start_code);
+ } else {
+ $start_code =
+ array(
+ 1 => "{$propValue['start']} < 0 ? ", 2 => 'max(', 3 => "{$propValue['step']} > 0 ? ", 4 => '0',
+ 5 => ' : ', 6 => '-1', 7 => ', ', 8 => "{$propValue['start']} + {$propValue['loop']}", 10 => ')',
+ 11 => ' : ', 12 => 'min(', 13 => $propValue[ 'start' ], 14 => ', ',
+ 15 => "{$propValue['step']} > 0 ? ", 16 => $propValue[ 'loop' ], 17 => ' : ',
+ 18 => $propType[ 'loop' ] === 0 ? $propValue[ 'loop' ] - 1 : "{$propValue['loop']} - 1",
+ 19 => ')'
+ );
+ if ($propType[ 'step' ] === 0) {
+ $start_code[ 3 ] = $start_code[ 5 ] = $start_code[ 15 ] = $start_code[ 17 ] = '';
+ if ($propValue[ 'step' ] > 0) {
+ $start_code[ 6 ] = $start_code[ 18 ] = '';
+ } else {
+ $start_code[ 4 ] = $start_code[ 16 ] = '';
+ }
+ }
+ if ($propType[ 'start' ] === 0) {
+ if ($propType[ 'loop' ] === 0) {
+ $start_code[ 8 ] = $propValue[ 'start' ] + $propValue[ 'loop' ];
+ }
+ $propType[ 'start' ] = $propType[ 'step' ] + $propType[ 'loop' ];
+ $start_code[ 1 ] = '';
+ if ($propValue[ 'start' ] < 0) {
+ for ($i = 11; $i <= 19; $i++) {
+ $start_code[ $i ] = '';
+ }
+ if ($propType[ 'start' ] === 0) {
+ $start_code = array(
+ max(
+ $propValue[ 'step' ] > 0 ? 0 : -1,
+ $propValue[ 'start' ] + $propValue[ 'loop' ]
+ )
+ );
+ }
+ } else {
+ for ($i = 1; $i <= 11; $i++) {
+ $start_code[ $i ] = '';
+ }
+ if ($propType[ 'start' ] === 0) {
+ $start_code =
+ array(
+ min(
+ $propValue[ 'step' ] > 0 ? $propValue[ 'loop' ] : $propValue[ 'loop' ] - 1,
+ $propValue[ 'start' ]
+ )
+ );
+ }
+ }
+ }
+ $propValue[ 'start' ] = join('', $start_code);
+ }
+ if ($propType[ 'start' ] !== 0) {
+ $initLocal[ 'start' ] = $propValue[ 'start' ];
+ $propValue[ 'start' ] = "{$local}start";
+ }
+ $initFor[ 'index' ] = "{$sectionVar}->value['index'] = {$propValue['start']}";
+ if (!isset($_attr[ 'start' ]) && !isset($_attr[ 'step' ]) && !isset($_attr[ 'max' ])) {
+ $propValue[ 'total' ] = $propValue[ 'loop' ];
+ $propType[ 'total' ] = $propType[ 'loop' ];
+ } else {
+ $propType[ 'total' ] =
+ $propType[ 'start' ] + $propType[ 'loop' ] + $propType[ 'step' ] + $propType[ 'max' ];
+ if ($propType[ 'total' ] === 0) {
+ $propValue[ 'total' ] =
+ min(
+ ceil(
+ ($propValue[ 'step' ] > 0 ? $propValue[ 'loop' ] - $propValue[ 'start' ] :
+ (int)$propValue[ 'start' ] + 1) / abs($propValue[ 'step' ])
+ ),
+ $propValue[ 'max' ]
+ );
+ } else {
+ $total_code = array(
+ 1 => 'min(', 2 => 'ceil(', 3 => '(', 4 => "{$propValue['step']} > 0 ? ",
+ 5 => $propValue[ 'loop' ], 6 => ' - ', 7 => $propValue[ 'start' ], 8 => ' : ',
+ 9 => $propValue[ 'start' ], 10 => '+ 1', 11 => ')', 12 => '/ ', 13 => 'abs(',
+ 14 => $propValue[ 'step' ], 15 => ')', 16 => ')', 17 => ", {$propValue['max']})",
+ );
+ if (!isset($propValue[ 'max' ])) {
+ $total_code[ 1 ] = $total_code[ 17 ] = '';
+ }
+ if ($propType[ 'loop' ] + $propType[ 'start' ] === 0) {
+ $total_code[ 5 ] = $propValue[ 'loop' ] - $propValue[ 'start' ];
+ $total_code[ 6 ] = $total_code[ 7 ] = '';
+ }
+ if ($propType[ 'start' ] === 0) {
+ $total_code[ 9 ] = (int)$propValue[ 'start' ] + 1;
+ $total_code[ 10 ] = '';
+ }
+ if ($propType[ 'step' ] === 0) {
+ $total_code[ 13 ] = $total_code[ 15 ] = '';
+ if ($propValue[ 'step' ] === 1 || $propValue[ 'step' ] === -1) {
+ $total_code[ 2 ] = $total_code[ 12 ] = $total_code[ 14 ] = $total_code[ 16 ] = '';
+ } elseif ($propValue[ 'step' ] < 0) {
+ $total_code[ 14 ] = -$propValue[ 'step' ];
+ }
+ $total_code[ 4 ] = '';
+ if ($propValue[ 'step' ] > 0) {
+ $total_code[ 8 ] = $total_code[ 9 ] = $total_code[ 10 ] = '';
+ } else {
+ $total_code[ 5 ] = $total_code[ 6 ] = $total_code[ 7 ] = $total_code[ 8 ] = '';
+ }
+ }
+ $propValue[ 'total' ] = join('', $total_code);
+ }
+ }
+ if (isset($namedAttr[ 'loop' ])) {
+ $initNamedProperty[ 'loop' ] = "'loop' => {$propValue['loop']}";
+ }
+ if (isset($namedAttr[ 'total' ])) {
+ $initNamedProperty[ 'total' ] = "'total' => {$propValue['total']}";
+ if ($propType[ 'total' ] > 0) {
+ $propValue[ 'total' ] = "{$sectionVar}->value['total']";
+ }
+ } elseif ($propType[ 'total' ] > 0) {
+ $initLocal[ 'total' ] = $propValue[ 'total' ];
+ $propValue[ 'total' ] = "{$local}total";
+ }
+ $cmpFor[ 'iteration' ] = "{$propValue['iteration']} <= {$propValue['total']}";
+ foreach ($initLocal as $key => $code) {
+ $output .= "{$local}{$key} = {$code};\n";
+ }
+ $_vars = 'array(' . join(', ', $initNamedProperty) . ')';
+ $output .= "{$sectionVar} = new Smarty_Variable({$_vars});\n";
+ $cond_code = "{$propValue['total']} !== 0";
+ if ($propType[ 'total' ] === 0) {
+ if ($propValue[ 'total' ] === 0) {
+ $cond_code = 'false';
+ } else {
+ $cond_code = 'true';
+ }
+ }
+ if ($propType[ 'show' ] > 0) {
+ $output .= "{$local}show = {$propValue['show']} ? {$cond_code} : false;\n";
+ $output .= "if ({$local}show) {\n";
+ } elseif ($propValue[ 'show' ] === 'true') {
+ $output .= "if ({$cond_code}) {\n";
+ } else {
+ $output .= "if (false) {\n";
+ }
+ $jinit = join(', ', $initFor);
+ $jcmp = join(', ', $cmpFor);
+ $jinc = join(', ', $incFor);
+ $output .= "for ({$jinit}; {$jcmp}; {$jinc}){\n";
+ if (isset($namedAttr[ 'rownum' ])) {
+ $output .= "{$sectionVar}->value['rownum'] = {$propValue['iteration']};\n";
+ }
+ if (isset($namedAttr[ 'index_prev' ])) {
+ $output .= "{$sectionVar}->value['index_prev'] = {$propValue['index']} - {$propValue['step']};\n";
+ }
+ if (isset($namedAttr[ 'index_next' ])) {
+ $output .= "{$sectionVar}->value['index_next'] = {$propValue['index']} + {$propValue['step']};\n";
+ }
+ if (isset($namedAttr[ 'first' ])) {
+ $output .= "{$sectionVar}->value['first'] = ({$propValue['iteration']} === 1);\n";
+ }
+ if (isset($namedAttr[ 'last' ])) {
+ $output .= "{$sectionVar}->value['last'] = ({$propValue['iteration']} === {$propValue['total']});\n";
+ }
+ $output .= '?>';
+ return $output;
+ }
+}
+
+/**
+ * Smarty Internal Plugin Compile Sectionelse Class
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ */
+class Smarty_Internal_Compile_Sectionelse extends Smarty_Internal_CompileBase
+{
+ /**
+ * Compiles code for the {sectionelse} tag
+ *
+ * @param array $args array with attributes from parser
+ * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
+ *
+ * @return string compiled code
+ */
+ public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler)
+ {
+ // check and get attributes
+ $_attr = $this->getAttributes($compiler, $args);
+ list($openTag, $nocache, $local, $sectionVar) = $this->closeTag($compiler, array('section'));
+ $this->openTag($compiler, 'sectionelse', array('sectionelse', $nocache, $local, $sectionVar));
+ return "";
+ }
+}
+
+/**
+ * Smarty Internal Plugin Compile Sectionclose Class
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ */
+class Smarty_Internal_Compile_Sectionclose extends Smarty_Internal_CompileBase
+{
+ /**
+ * Compiles code for the {/section} tag
+ *
+ * @param array $args array with attributes from parser
+ * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
+ *
+ * @return string compiled code
+ */
+ public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler)
+ {
+ $compiler->loopNesting--;
+ // must endblock be nocache?
+ if ($compiler->nocache) {
+ $compiler->tag_nocache = true;
+ }
+ list($openTag, $compiler->nocache, $local, $sectionVar) =
+ $this->closeTag($compiler, array('section', 'sectionelse'));
+ $output = "';
+ return $output;
+ }
+}
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_setfilter.php b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_setfilter.php
new file mode 100644
index 000000000..70e2e2f9f
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_setfilter.php
@@ -0,0 +1,68 @@
+variable_filter_stack[] = $compiler->variable_filters;
+ $compiler->variable_filters = $parameter[ 'modifier_list' ];
+ // this tag does not return compiled code
+ $compiler->has_code = false;
+ return true;
+ }
+}
+
+/**
+ * Smarty Internal Plugin Compile Setfilterclose Class
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ */
+class Smarty_Internal_Compile_Setfilterclose extends Smarty_Internal_CompileBase
+{
+ /**
+ * Compiles code for the {/setfilter} tag
+ * This tag does not generate compiled output. It resets variable filter.
+ *
+ * @param array $args array with attributes from parser
+ * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
+ *
+ * @return string compiled code
+ */
+ public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler)
+ {
+ $_attr = $this->getAttributes($compiler, $args);
+ // reset variable filter to previous state
+ if (count($compiler->variable_filter_stack)) {
+ $compiler->variable_filters = array_pop($compiler->variable_filter_stack);
+ } else {
+ $compiler->variable_filters = array();
+ }
+ // this tag does not return compiled code
+ $compiler->has_code = false;
+ return true;
+ }
+}
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_shared_inheritance.php b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_shared_inheritance.php
new file mode 100644
index 000000000..d90262e60
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_shared_inheritance.php
@@ -0,0 +1,49 @@
+prefixCompiledCode .= "_loadInheritance();\n\$_smarty_tpl->inheritance->init(\$_smarty_tpl, " .
+ var_export($initChildSequence, true) . ");\n?>\n";
+ }
+
+ /**
+ * Register post compile callback to compile inheritance initialization code
+ *
+ * @param \Smarty_Internal_TemplateCompilerBase $compiler
+ * @param bool|false $initChildSequence if true force child template
+ */
+ public function registerInit(Smarty_Internal_TemplateCompilerBase $compiler, $initChildSequence = false)
+ {
+ if ($initChildSequence || !isset($compiler->_cache[ 'inheritanceInit' ])) {
+ $compiler->registerPostCompileCallback(
+ array('Smarty_Internal_Compile_Shared_Inheritance', 'postCompile'),
+ array($initChildSequence),
+ 'inheritanceInit',
+ $initChildSequence
+ );
+ $compiler->_cache[ 'inheritanceInit' ] = true;
+ }
+ }
+}
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_while.php b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_while.php
new file mode 100644
index 000000000..5aa3a7330
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_while.php
@@ -0,0 +1,100 @@
+loopNesting++;
+ // check and get attributes
+ $_attr = $this->getAttributes($compiler, $args);
+ $this->openTag($compiler, 'while', $compiler->nocache);
+ if (!array_key_exists('if condition', $parameter)) {
+ $compiler->trigger_template_error('missing while condition', null, true);
+ }
+ // maybe nocache because of nocache variables
+ $compiler->nocache = $compiler->nocache | $compiler->tag_nocache;
+ if (is_array($parameter[ 'if condition' ])) {
+ if ($compiler->nocache) {
+ // create nocache var to make it know for further compiling
+ if (is_array($parameter[ 'if condition' ][ 'var' ])) {
+ $var = $parameter[ 'if condition' ][ 'var' ][ 'var' ];
+ } else {
+ $var = $parameter[ 'if condition' ][ 'var' ];
+ }
+ $compiler->setNocacheInVariable($var);
+ }
+ $prefixVar = $compiler->getNewPrefixVariable();
+ $assignCompiler = new Smarty_Internal_Compile_Assign();
+ $assignAttr = array();
+ $assignAttr[][ 'value' ] = $prefixVar;
+ if (is_array($parameter[ 'if condition' ][ 'var' ])) {
+ $assignAttr[][ 'var' ] = $parameter[ 'if condition' ][ 'var' ][ 'var' ];
+ $_output = "";
+ $_output .= $assignCompiler->compile(
+ $assignAttr,
+ $compiler,
+ array('smarty_internal_index' => $parameter[ 'if condition' ][ 'var' ][ 'smarty_internal_index' ])
+ );
+ } else {
+ $assignAttr[][ 'var' ] = $parameter[ 'if condition' ][ 'var' ];
+ $_output = "";
+ $_output .= $assignCompiler->compile($assignAttr, $compiler, array());
+ }
+ return $_output;
+ } else {
+ return "";
+ }
+ }
+}
+
+/**
+ * Smarty Internal Plugin Compile Whileclose Class
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ */
+class Smarty_Internal_Compile_Whileclose extends Smarty_Internal_CompileBase
+{
+ /**
+ * Compiles code for the {/while} tag
+ *
+ * @param array $args array with attributes from parser
+ * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
+ *
+ * @return string compiled code
+ */
+ public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler)
+ {
+ $compiler->loopNesting--;
+ // must endblock be nocache?
+ if ($compiler->nocache) {
+ $compiler->tag_nocache = true;
+ }
+ $compiler->nocache = $this->closeTag($compiler, array('while'));
+ return "\n";
+ }
+}
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compilebase.php b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compilebase.php
new file mode 100644
index 000000000..2a32e4373
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_compilebase.php
@@ -0,0 +1,203 @@
+ true, 0 => false, 'true' => true, 'false' => false);
+
+ /**
+ * Mapping array with attributes as key
+ *
+ * @var array
+ */
+ public $mapCache = array();
+
+ /**
+ * This function checks if the attributes passed are valid
+ * The attributes passed for the tag to compile are checked against the list of required and
+ * optional attributes. Required attributes must be present. Optional attributes are check against
+ * the corresponding list. The keyword '_any' specifies that any attribute will be accepted
+ * as valid
+ *
+ * @param object $compiler compiler object
+ * @param array $attributes attributes applied to the tag
+ *
+ * @return array of mapped attributes for further processing
+ */
+ public function getAttributes($compiler, $attributes)
+ {
+ $_indexed_attr = array();
+ if (!isset($this->mapCache[ 'option' ])) {
+ $this->mapCache[ 'option' ] = array_fill_keys($this->option_flags, true);
+ }
+ foreach ($attributes as $key => $mixed) {
+ // shorthand ?
+ if (!is_array($mixed)) {
+ // option flag ?
+ if (isset($this->mapCache[ 'option' ][ trim($mixed, '\'"') ])) {
+ $_indexed_attr[ trim($mixed, '\'"') ] = true;
+ // shorthand attribute ?
+ } elseif (isset($this->shorttag_order[ $key ])) {
+ $_indexed_attr[ $this->shorttag_order[ $key ] ] = $mixed;
+ } else {
+ // too many shorthands
+ $compiler->trigger_template_error('too many shorthand attributes', null, true);
+ }
+ // named attribute
+ } else {
+ foreach ($mixed as $k => $v) {
+ // option flag?
+ if (isset($this->mapCache[ 'option' ][ $k ])) {
+ if (is_bool($v)) {
+ $_indexed_attr[ $k ] = $v;
+ } else {
+ if (is_string($v)) {
+ $v = trim($v, '\'" ');
+ }
+ if (isset($this->optionMap[ $v ])) {
+ $_indexed_attr[ $k ] = $this->optionMap[ $v ];
+ } else {
+ $compiler->trigger_template_error(
+ "illegal value '" . var_export($v, true) .
+ "' for option flag '{$k}'",
+ null,
+ true
+ );
+ }
+ }
+ // must be named attribute
+ } else {
+ $_indexed_attr[ $k ] = $v;
+ }
+ }
+ }
+ }
+ // check if all required attributes present
+ foreach ($this->required_attributes as $attr) {
+ if (!isset($_indexed_attr[ $attr ])) {
+ $compiler->trigger_template_error("missing '{$attr}' attribute", null, true);
+ }
+ }
+ // check for not allowed attributes
+ if ($this->optional_attributes !== array('_any')) {
+ if (!isset($this->mapCache[ 'all' ])) {
+ $this->mapCache[ 'all' ] =
+ array_fill_keys(
+ array_merge(
+ $this->required_attributes,
+ $this->optional_attributes,
+ $this->option_flags
+ ),
+ true
+ );
+ }
+ foreach ($_indexed_attr as $key => $dummy) {
+ if (!isset($this->mapCache[ 'all' ][ $key ]) && $key !== 0) {
+ $compiler->trigger_template_error("unexpected '{$key}' attribute", null, true);
+ }
+ }
+ }
+ // default 'false' for all option flags not set
+ foreach ($this->option_flags as $flag) {
+ if (!isset($_indexed_attr[ $flag ])) {
+ $_indexed_attr[ $flag ] = false;
+ }
+ }
+ if (isset($_indexed_attr[ 'nocache' ]) && $_indexed_attr[ 'nocache' ]) {
+ $compiler->tag_nocache = true;
+ }
+ return $_indexed_attr;
+ }
+
+ /**
+ * Push opening tag name on stack
+ * Optionally additional data can be saved on stack
+ *
+ * @param object $compiler compiler object
+ * @param string $openTag the opening tag's name
+ * @param mixed $data optional data saved
+ */
+ public function openTag($compiler, $openTag, $data = null)
+ {
+ array_push($compiler->_tag_stack, array($openTag, $data));
+ }
+
+ /**
+ * Pop closing tag
+ * Raise an error if this stack-top doesn't match with expected opening tags
+ *
+ * @param object $compiler compiler object
+ * @param array|string $expectedTag the expected opening tag names
+ *
+ * @return mixed any type the opening tag's name or saved data
+ */
+ public function closeTag($compiler, $expectedTag)
+ {
+ if (count($compiler->_tag_stack) > 0) {
+ // get stacked info
+ list($_openTag, $_data) = array_pop($compiler->_tag_stack);
+ // open tag must match with the expected ones
+ if (in_array($_openTag, (array)$expectedTag)) {
+ if (is_null($_data)) {
+ // return opening tag
+ return $_openTag;
+ } else {
+ // return restored data
+ return $_data;
+ }
+ }
+ // wrong nesting of tags
+ $compiler->trigger_template_error("unclosed '{$compiler->smarty->left_delimiter}{$_openTag}{$compiler->smarty->right_delimiter}' tag");
+ return;
+ }
+ // wrong nesting of tags
+ $compiler->trigger_template_error('unexpected closing tag', null, true);
+ return;
+ }
+}
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_config_file_compiler.php b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_config_file_compiler.php
new file mode 100644
index 000000000..469b9667a
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_config_file_compiler.php
@@ -0,0 +1,211 @@
+smarty = $smarty;
+ // get required plugins
+ $this->lexer_class = $lexer_class;
+ $this->parser_class = $parser_class;
+ $this->smarty = $smarty;
+ $this->config_data[ 'sections' ] = array();
+ $this->config_data[ 'vars' ] = array();
+ }
+
+ /**
+ * Method to compile Smarty config source.
+ *
+ * @param Smarty_Internal_Template $template
+ *
+ * @return bool true if compiling succeeded, false if it failed
+ * @throws \SmartyException
+ */
+ public function compileTemplate(Smarty_Internal_Template $template)
+ {
+ $this->template = $template;
+ $this->template->compiled->file_dependency[ $this->template->source->uid ] =
+ array(
+ $this->template->source->filepath,
+ $this->template->source->getTimeStamp(),
+ $this->template->source->type
+ );
+ if ($this->smarty->debugging) {
+ if (!isset($this->smarty->_debug)) {
+ $this->smarty->_debug = new Smarty_Internal_Debug();
+ }
+ $this->smarty->_debug->start_compile($this->template);
+ }
+ // init the lexer/parser to compile the config file
+ /* @var Smarty_Internal_ConfigFileLexer $this->lex */
+ $this->lex = new $this->lexer_class(
+ str_replace(
+ array(
+ "\r\n",
+ "\r"
+ ),
+ "\n",
+ $template->source->getContent()
+ ) . "\n",
+ $this
+ );
+ /* @var Smarty_Internal_ConfigFileParser $this->parser */
+ $this->parser = new $this->parser_class($this->lex, $this);
+ if (function_exists('mb_internal_encoding')
+ && function_exists('ini_get')
+ && ((int)ini_get('mbstring.func_overload')) & 2
+ ) {
+ $mbEncoding = mb_internal_encoding();
+ mb_internal_encoding('ASCII');
+ } else {
+ $mbEncoding = null;
+ }
+ if ($this->smarty->_parserdebug) {
+ $this->parser->PrintTrace();
+ }
+ // get tokens from lexer and parse them
+ while ($this->lex->yylex()) {
+ if ($this->smarty->_parserdebug) {
+ echo " Parsing {$this->parser->yyTokenName[$this->lex->token]} Token {$this->lex->value} Line {$this->lex->line} \n";
+ }
+ $this->parser->doParse($this->lex->token, $this->lex->value);
+ }
+ // finish parsing process
+ $this->parser->doParse(0, 0);
+ if ($mbEncoding) {
+ mb_internal_encoding($mbEncoding);
+ }
+ if ($this->smarty->debugging) {
+ $this->smarty->_debug->end_compile($this->template);
+ }
+ // template header code
+ $template_header = sprintf(
+ "\n",
+ Smarty::SMARTY_VERSION,
+ date("Y-m-d H:i:s"),
+ str_replace('*/', '* /' , $this->template->source->filepath)
+ );
+ $code = 'smarty->ext->configLoad->_loadConfigVars($_smarty_tpl, ' .
+ var_export($this->config_data, true) . '); ?>';
+ return $template_header . $this->template->smarty->ext->_codeFrame->create($this->template, $code);
+ }
+
+ /**
+ * display compiler error messages without dying
+ * If parameter $args is empty it is a parser detected syntax error.
+ * In this case the parser is called to obtain information about expected tokens.
+ * If parameter $args contains a string this is used as error message
+ *
+ * @param string $args individual error message or null
+ *
+ * @throws SmartyCompilerException
+ */
+ public function trigger_config_file_error($args = null)
+ {
+ // get config source line which has error
+ $line = $this->lex->line;
+ if (isset($args)) {
+ // $line--;
+ }
+ $match = preg_split("/\n/", $this->lex->data);
+ $error_text =
+ "Syntax error in config file '{$this->template->source->filepath}' on line {$line} '{$match[$line - 1]}' ";
+ if (isset($args)) {
+ // individual error message
+ $error_text .= $args;
+ } else {
+ // expected token from parser
+ foreach ($this->parser->yy_get_expected_tokens($this->parser->yymajor) as $token) {
+ $exp_token = $this->parser->yyTokenName[ $token ];
+ if (isset($this->lex->smarty_token_names[ $exp_token ])) {
+ // token type from lexer
+ $expect[] = '"' . $this->lex->smarty_token_names[ $exp_token ] . '"';
+ } else {
+ // otherwise internal token name
+ $expect[] = $this->parser->yyTokenName[ $token ];
+ }
+ }
+ // output parser error message
+ $error_text .= ' - Unexpected "' . $this->lex->value . '", expected one of: ' . implode(' , ', $expect);
+ }
+ throw new SmartyCompilerException($error_text);
+ }
+}
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_configfilelexer.php b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_configfilelexer.php
new file mode 100644
index 000000000..afb3efcb0
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_configfilelexer.php
@@ -0,0 +1,739 @@
+ 'START', 2 => 'VALUE', 3 => 'NAKED_STRING_VALUE', 4 => 'COMMENT', 5 => 'SECTION', 6 => 'TRIPPLE'
+ );
+
+ /**
+ * token names
+ *
+ * @var array
+ */
+ public $smarty_token_names = array( // Text for parser error messages
+ );
+
+ /**
+ * compiler object
+ *
+ * @var Smarty_Internal_Config_File_Compiler
+ */
+ private $compiler = null;
+
+ /**
+ * copy of config_booleanize
+ *
+ * @var bool
+ */
+ private $configBooleanize = false;
+
+ /**
+ * storage for assembled token patterns
+ *
+ * @var string
+ */
+ private $yy_global_pattern1 = null;
+
+ private $yy_global_pattern2 = null;
+
+ private $yy_global_pattern3 = null;
+
+ private $yy_global_pattern4 = null;
+
+ private $yy_global_pattern5 = null;
+
+ private $yy_global_pattern6 = null;
+
+ private $_yy_state = 1;
+
+ private $_yy_stack = array();
+
+ /**
+ * constructor
+ *
+ * @param string $data template source
+ * @param Smarty_Internal_Config_File_Compiler $compiler
+ */
+ public function __construct($data, Smarty_Internal_Config_File_Compiler $compiler)
+ {
+ $this->data = $data . "\n"; //now all lines are \n-terminated
+ $this->dataLength = strlen($data);
+ $this->counter = 0;
+ if (preg_match('/^\xEF\xBB\xBF/', $this->data, $match)) {
+ $this->counter += strlen($match[ 0 ]);
+ }
+ $this->line = 1;
+ $this->compiler = $compiler;
+ $this->smarty = $compiler->smarty;
+ $this->configBooleanize = $this->smarty->config_booleanize;
+ }
+
+ public function replace($input)
+ {
+ return $input;
+ } // end function
+
+ public function PrintTrace()
+ {
+ $this->yyTraceFILE = fopen('php://output', 'w');
+ $this->yyTracePrompt = ' ';
+ }
+
+ public function yylex()
+ {
+ return $this->{'yylex' . $this->_yy_state}();
+ }
+
+ public function yypushstate($state)
+ {
+ if ($this->yyTraceFILE) {
+ fprintf(
+ $this->yyTraceFILE,
+ "%sState push %s\n",
+ $this->yyTracePrompt,
+ isset($this->state_name[ $this->_yy_state ]) ? $this->state_name[ $this->_yy_state ] : $this->_yy_state
+ );
+ }
+ array_push($this->_yy_stack, $this->_yy_state);
+ $this->_yy_state = $state;
+ if ($this->yyTraceFILE) {
+ fprintf(
+ $this->yyTraceFILE,
+ "%snew State %s\n",
+ $this->yyTracePrompt,
+ isset($this->state_name[ $this->_yy_state ]) ? $this->state_name[ $this->_yy_state ] : $this->_yy_state
+ );
+ }
+ }
+
+ public function yypopstate()
+ {
+ if ($this->yyTraceFILE) {
+ fprintf(
+ $this->yyTraceFILE,
+ "%sState pop %s\n",
+ $this->yyTracePrompt,
+ isset($this->state_name[ $this->_yy_state ]) ? $this->state_name[ $this->_yy_state ] : $this->_yy_state
+ );
+ }
+ $this->_yy_state = array_pop($this->_yy_stack);
+ if ($this->yyTraceFILE) {
+ fprintf(
+ $this->yyTraceFILE,
+ "%snew State %s\n",
+ $this->yyTracePrompt,
+ isset($this->state_name[ $this->_yy_state ]) ? $this->state_name[ $this->_yy_state ] : $this->_yy_state
+ );
+ }
+ }
+
+ public function yybegin($state)
+ {
+ $this->_yy_state = $state;
+ if ($this->yyTraceFILE) {
+ fprintf(
+ $this->yyTraceFILE,
+ "%sState set %s\n",
+ $this->yyTracePrompt,
+ isset($this->state_name[ $this->_yy_state ]) ? $this->state_name[ $this->_yy_state ] : $this->_yy_state
+ );
+ }
+ }
+
+ public function yylex1()
+ {
+ if (!isset($this->yy_global_pattern1)) {
+ $this->yy_global_pattern1 =
+ $this->replace("/\G(#|;)|\G(\\[)|\G(\\])|\G(=)|\G([ \t\r]+)|\G(\n)|\G([0-9]*[a-zA-Z_]\\w*)|\G([\S\s])/isS");
+ }
+ if (!isset($this->dataLength)) {
+ $this->dataLength = strlen($this->data);
+ }
+ if ($this->counter >= $this->dataLength) {
+ return false; // end of input
+ }
+ do {
+ if (preg_match($this->yy_global_pattern1, $this->data, $yymatches, 0, $this->counter)) {
+ if (!isset($yymatches[ 0 ][ 1 ])) {
+ $yymatches = preg_grep("/(.|\s)+/", $yymatches);
+ } else {
+ $yymatches = array_filter($yymatches);
+ }
+ if (empty($yymatches)) {
+ throw new Exception('Error: lexing failed because a rule matched' .
+ ' an empty string. Input "' . substr(
+ $this->data,
+ $this->counter,
+ 5
+ ) . '... state START');
+ }
+ next($yymatches); // skip global match
+ $this->token = key($yymatches); // token number
+ $this->value = current($yymatches); // token value
+ $r = $this->{'yy_r1_' . $this->token}();
+ if ($r === null) {
+ $this->counter += strlen($this->value);
+ $this->line += substr_count($this->value, "\n");
+ // accept this token
+ return true;
+ } elseif ($r === true) {
+ // we have changed state
+ // process this token in the new state
+ return $this->yylex();
+ } elseif ($r === false) {
+ $this->counter += strlen($this->value);
+ $this->line += substr_count($this->value, "\n");
+ if ($this->counter >= $this->dataLength) {
+ return false; // end of input
+ }
+ // skip this token
+ continue;
+ }
+ } else {
+ throw new Exception('Unexpected input at line' . $this->line .
+ ': ' . $this->data[ $this->counter ]);
+ }
+ break;
+ } while (true);
+ }
+
+ public function yy_r1_1()
+ {
+ $this->token = Smarty_Internal_Configfileparser::TPC_COMMENTSTART;
+ $this->yypushstate(self::COMMENT);
+ }
+
+ public function yy_r1_2()
+ {
+ $this->token = Smarty_Internal_Configfileparser::TPC_OPENB;
+ $this->yypushstate(self::SECTION);
+ }
+
+ public function yy_r1_3()
+ {
+ $this->token = Smarty_Internal_Configfileparser::TPC_CLOSEB;
+ }
+
+ public function yy_r1_4()
+ {
+ $this->token = Smarty_Internal_Configfileparser::TPC_EQUAL;
+ $this->yypushstate(self::VALUE);
+ } // end function
+
+ public function yy_r1_5()
+ {
+ return false;
+ }
+
+ public function yy_r1_6()
+ {
+ $this->token = Smarty_Internal_Configfileparser::TPC_NEWLINE;
+ }
+
+ public function yy_r1_7()
+ {
+ $this->token = Smarty_Internal_Configfileparser::TPC_ID;
+ }
+
+ public function yy_r1_8()
+ {
+ $this->token = Smarty_Internal_Configfileparser::TPC_OTHER;
+ }
+
+ public function yylex2()
+ {
+ if (!isset($this->yy_global_pattern2)) {
+ $this->yy_global_pattern2 =
+ $this->replace("/\G([ \t\r]+)|\G(\\d+\\.\\d+(?=[ \t\r]*[\n#;]))|\G(\\d+(?=[ \t\r]*[\n#;]))|\G(\"\"\")|\G('[^'\\\\]*(?:\\\\.[^'\\\\]*)*'(?=[ \t\r]*[\n#;]))|\G(\"[^\"\\\\]*(?:\\\\.[^\"\\\\]*)*\"(?=[ \t\r]*[\n#;]))|\G([a-zA-Z]+(?=[ \t\r]*[\n#;]))|\G([^\n]+?(?=[ \t\r]*\n))|\G(\n)/isS");
+ }
+ if (!isset($this->dataLength)) {
+ $this->dataLength = strlen($this->data);
+ }
+ if ($this->counter >= $this->dataLength) {
+ return false; // end of input
+ }
+ do {
+ if (preg_match($this->yy_global_pattern2, $this->data, $yymatches, 0, $this->counter)) {
+ if (!isset($yymatches[ 0 ][ 1 ])) {
+ $yymatches = preg_grep("/(.|\s)+/", $yymatches);
+ } else {
+ $yymatches = array_filter($yymatches);
+ }
+ if (empty($yymatches)) {
+ throw new Exception('Error: lexing failed because a rule matched' .
+ ' an empty string. Input "' . substr(
+ $this->data,
+ $this->counter,
+ 5
+ ) . '... state VALUE');
+ }
+ next($yymatches); // skip global match
+ $this->token = key($yymatches); // token number
+ $this->value = current($yymatches); // token value
+ $r = $this->{'yy_r2_' . $this->token}();
+ if ($r === null) {
+ $this->counter += strlen($this->value);
+ $this->line += substr_count($this->value, "\n");
+ // accept this token
+ return true;
+ } elseif ($r === true) {
+ // we have changed state
+ // process this token in the new state
+ return $this->yylex();
+ } elseif ($r === false) {
+ $this->counter += strlen($this->value);
+ $this->line += substr_count($this->value, "\n");
+ if ($this->counter >= $this->dataLength) {
+ return false; // end of input
+ }
+ // skip this token
+ continue;
+ }
+ } else {
+ throw new Exception('Unexpected input at line' . $this->line .
+ ': ' . $this->data[ $this->counter ]);
+ }
+ break;
+ } while (true);
+ }
+
+ public function yy_r2_1()
+ {
+ return false;
+ }
+
+ public function yy_r2_2()
+ {
+ $this->token = Smarty_Internal_Configfileparser::TPC_FLOAT;
+ $this->yypopstate();
+ }
+
+ public function yy_r2_3()
+ {
+ $this->token = Smarty_Internal_Configfileparser::TPC_INT;
+ $this->yypopstate();
+ }
+
+ public function yy_r2_4()
+ {
+ $this->token = Smarty_Internal_Configfileparser::TPC_TRIPPLE_QUOTES;
+ $this->yypushstate(self::TRIPPLE);
+ }
+
+ public function yy_r2_5()
+ {
+ $this->token = Smarty_Internal_Configfileparser::TPC_SINGLE_QUOTED_STRING;
+ $this->yypopstate();
+ }
+
+ public function yy_r2_6()
+ {
+ $this->token = Smarty_Internal_Configfileparser::TPC_DOUBLE_QUOTED_STRING;
+ $this->yypopstate();
+ } // end function
+
+ public function yy_r2_7()
+ {
+ if (!$this->configBooleanize ||
+ !in_array(strtolower($this->value), array('true', 'false', 'on', 'off', 'yes', 'no'))) {
+ $this->yypopstate();
+ $this->yypushstate(self::NAKED_STRING_VALUE);
+ return true; //reprocess in new state
+ } else {
+ $this->token = Smarty_Internal_Configfileparser::TPC_BOOL;
+ $this->yypopstate();
+ }
+ }
+
+ public function yy_r2_8()
+ {
+ $this->token = Smarty_Internal_Configfileparser::TPC_NAKED_STRING;
+ $this->yypopstate();
+ }
+
+ public function yy_r2_9()
+ {
+ $this->token = Smarty_Internal_Configfileparser::TPC_NAKED_STRING;
+ $this->value = '';
+ $this->yypopstate();
+ } // end function
+
+ public function yylex3()
+ {
+ if (!isset($this->yy_global_pattern3)) {
+ $this->yy_global_pattern3 = $this->replace("/\G([^\n]+?(?=[ \t\r]*\n))/isS");
+ }
+ if (!isset($this->dataLength)) {
+ $this->dataLength = strlen($this->data);
+ }
+ if ($this->counter >= $this->dataLength) {
+ return false; // end of input
+ }
+ do {
+ if (preg_match($this->yy_global_pattern3, $this->data, $yymatches, 0, $this->counter)) {
+ if (!isset($yymatches[ 0 ][ 1 ])) {
+ $yymatches = preg_grep("/(.|\s)+/", $yymatches);
+ } else {
+ $yymatches = array_filter($yymatches);
+ }
+ if (empty($yymatches)) {
+ throw new Exception('Error: lexing failed because a rule matched' .
+ ' an empty string. Input "' . substr(
+ $this->data,
+ $this->counter,
+ 5
+ ) . '... state NAKED_STRING_VALUE');
+ }
+ next($yymatches); // skip global match
+ $this->token = key($yymatches); // token number
+ $this->value = current($yymatches); // token value
+ $r = $this->{'yy_r3_' . $this->token}();
+ if ($r === null) {
+ $this->counter += strlen($this->value);
+ $this->line += substr_count($this->value, "\n");
+ // accept this token
+ return true;
+ } elseif ($r === true) {
+ // we have changed state
+ // process this token in the new state
+ return $this->yylex();
+ } elseif ($r === false) {
+ $this->counter += strlen($this->value);
+ $this->line += substr_count($this->value, "\n");
+ if ($this->counter >= $this->dataLength) {
+ return false; // end of input
+ }
+ // skip this token
+ continue;
+ }
+ } else {
+ throw new Exception('Unexpected input at line' . $this->line .
+ ': ' . $this->data[ $this->counter ]);
+ }
+ break;
+ } while (true);
+ }
+
+ public function yy_r3_1()
+ {
+ $this->token = Smarty_Internal_Configfileparser::TPC_NAKED_STRING;
+ $this->yypopstate();
+ }
+
+ public function yylex4()
+ {
+ if (!isset($this->yy_global_pattern4)) {
+ $this->yy_global_pattern4 = $this->replace("/\G([ \t\r]+)|\G([^\n]+?(?=[ \t\r]*\n))|\G(\n)/isS");
+ }
+ if (!isset($this->dataLength)) {
+ $this->dataLength = strlen($this->data);
+ }
+ if ($this->counter >= $this->dataLength) {
+ return false; // end of input
+ }
+ do {
+ if (preg_match($this->yy_global_pattern4, $this->data, $yymatches, 0, $this->counter)) {
+ if (!isset($yymatches[ 0 ][ 1 ])) {
+ $yymatches = preg_grep("/(.|\s)+/", $yymatches);
+ } else {
+ $yymatches = array_filter($yymatches);
+ }
+ if (empty($yymatches)) {
+ throw new Exception('Error: lexing failed because a rule matched' .
+ ' an empty string. Input "' . substr(
+ $this->data,
+ $this->counter,
+ 5
+ ) . '... state COMMENT');
+ }
+ next($yymatches); // skip global match
+ $this->token = key($yymatches); // token number
+ $this->value = current($yymatches); // token value
+ $r = $this->{'yy_r4_' . $this->token}();
+ if ($r === null) {
+ $this->counter += strlen($this->value);
+ $this->line += substr_count($this->value, "\n");
+ // accept this token
+ return true;
+ } elseif ($r === true) {
+ // we have changed state
+ // process this token in the new state
+ return $this->yylex();
+ } elseif ($r === false) {
+ $this->counter += strlen($this->value);
+ $this->line += substr_count($this->value, "\n");
+ if ($this->counter >= $this->dataLength) {
+ return false; // end of input
+ }
+ // skip this token
+ continue;
+ }
+ } else {
+ throw new Exception('Unexpected input at line' . $this->line .
+ ': ' . $this->data[ $this->counter ]);
+ }
+ break;
+ } while (true);
+ }
+
+ public function yy_r4_1()
+ {
+ return false;
+ }
+
+ public function yy_r4_2()
+ {
+ $this->token = Smarty_Internal_Configfileparser::TPC_NAKED_STRING;
+ } // end function
+
+ public function yy_r4_3()
+ {
+ $this->token = Smarty_Internal_Configfileparser::TPC_NEWLINE;
+ $this->yypopstate();
+ }
+
+ public function yylex5()
+ {
+ if (!isset($this->yy_global_pattern5)) {
+ $this->yy_global_pattern5 = $this->replace("/\G(\\.)|\G(.*?(?=[\.=[\]\r\n]))/isS");
+ }
+ if (!isset($this->dataLength)) {
+ $this->dataLength = strlen($this->data);
+ }
+ if ($this->counter >= $this->dataLength) {
+ return false; // end of input
+ }
+ do {
+ if (preg_match($this->yy_global_pattern5, $this->data, $yymatches, 0, $this->counter)) {
+ if (!isset($yymatches[ 0 ][ 1 ])) {
+ $yymatches = preg_grep("/(.|\s)+/", $yymatches);
+ } else {
+ $yymatches = array_filter($yymatches);
+ }
+ if (empty($yymatches)) {
+ throw new Exception('Error: lexing failed because a rule matched' .
+ ' an empty string. Input "' . substr(
+ $this->data,
+ $this->counter,
+ 5
+ ) . '... state SECTION');
+ }
+ next($yymatches); // skip global match
+ $this->token = key($yymatches); // token number
+ $this->value = current($yymatches); // token value
+ $r = $this->{'yy_r5_' . $this->token}();
+ if ($r === null) {
+ $this->counter += strlen($this->value);
+ $this->line += substr_count($this->value, "\n");
+ // accept this token
+ return true;
+ } elseif ($r === true) {
+ // we have changed state
+ // process this token in the new state
+ return $this->yylex();
+ } elseif ($r === false) {
+ $this->counter += strlen($this->value);
+ $this->line += substr_count($this->value, "\n");
+ if ($this->counter >= $this->dataLength) {
+ return false; // end of input
+ }
+ // skip this token
+ continue;
+ }
+ } else {
+ throw new Exception('Unexpected input at line' . $this->line .
+ ': ' . $this->data[ $this->counter ]);
+ }
+ break;
+ } while (true);
+ }
+
+ public function yy_r5_1()
+ {
+ $this->token = Smarty_Internal_Configfileparser::TPC_DOT;
+ }
+
+ public function yy_r5_2()
+ {
+ $this->token = Smarty_Internal_Configfileparser::TPC_SECTION;
+ $this->yypopstate();
+ } // end function
+
+ public function yylex6()
+ {
+ if (!isset($this->yy_global_pattern6)) {
+ $this->yy_global_pattern6 = $this->replace("/\G(\"\"\"(?=[ \t\r]*[\n#;]))|\G([\S\s])/isS");
+ }
+ if (!isset($this->dataLength)) {
+ $this->dataLength = strlen($this->data);
+ }
+ if ($this->counter >= $this->dataLength) {
+ return false; // end of input
+ }
+ do {
+ if (preg_match($this->yy_global_pattern6, $this->data, $yymatches, 0, $this->counter)) {
+ if (!isset($yymatches[ 0 ][ 1 ])) {
+ $yymatches = preg_grep("/(.|\s)+/", $yymatches);
+ } else {
+ $yymatches = array_filter($yymatches);
+ }
+ if (empty($yymatches)) {
+ throw new Exception('Error: lexing failed because a rule matched' .
+ ' an empty string. Input "' . substr(
+ $this->data,
+ $this->counter,
+ 5
+ ) . '... state TRIPPLE');
+ }
+ next($yymatches); // skip global match
+ $this->token = key($yymatches); // token number
+ $this->value = current($yymatches); // token value
+ $r = $this->{'yy_r6_' . $this->token}();
+ if ($r === null) {
+ $this->counter += strlen($this->value);
+ $this->line += substr_count($this->value, "\n");
+ // accept this token
+ return true;
+ } elseif ($r === true) {
+ // we have changed state
+ // process this token in the new state
+ return $this->yylex();
+ } elseif ($r === false) {
+ $this->counter += strlen($this->value);
+ $this->line += substr_count($this->value, "\n");
+ if ($this->counter >= $this->dataLength) {
+ return false; // end of input
+ }
+ // skip this token
+ continue;
+ }
+ } else {
+ throw new Exception('Unexpected input at line' . $this->line .
+ ': ' . $this->data[ $this->counter ]);
+ }
+ break;
+ } while (true);
+ }
+
+ public function yy_r6_1()
+ {
+ $this->token = Smarty_Internal_Configfileparser::TPC_TRIPPLE_QUOTES_END;
+ $this->yypopstate();
+ $this->yypushstate(self::START);
+ }
+
+ public function yy_r6_2()
+ {
+ $to = strlen($this->data);
+ preg_match("/\"\"\"[ \t\r]*[\n#;]/", $this->data, $match, PREG_OFFSET_CAPTURE, $this->counter);
+ if (isset($match[ 0 ][ 1 ])) {
+ $to = $match[ 0 ][ 1 ];
+ } else {
+ $this->compiler->trigger_config_file_error('missing or misspelled literal closing tag');
+ }
+ $this->value = substr($this->data, $this->counter, $to - $this->counter);
+ $this->token = Smarty_Internal_Configfileparser::TPC_TRIPPLE_TEXT;
+ }
+}
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_configfileparser.php b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_configfileparser.php
new file mode 100644
index 000000000..36fdb76ee
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_configfileparser.php
@@ -0,0 +1,1046 @@
+ 20, 1 => 2),
+ array(0 => 21, 1 => 1),
+ array(0 => 22, 1 => 2),
+ array(0 => 22, 1 => 0),
+ array(0 => 24, 1 => 5),
+ array(0 => 24, 1 => 6),
+ array(0 => 23, 1 => 2),
+ array(0 => 23, 1 => 2),
+ array(0 => 23, 1 => 0),
+ array(0 => 26, 1 => 3),
+ array(0 => 27, 1 => 1),
+ array(0 => 27, 1 => 1),
+ array(0 => 27, 1 => 1),
+ array(0 => 27, 1 => 1),
+ array(0 => 27, 1 => 1),
+ array(0 => 27, 1 => 3),
+ array(0 => 27, 1 => 2),
+ array(0 => 27, 1 => 1),
+ array(0 => 27, 1 => 1),
+ array(0 => 25, 1 => 1),
+ array(0 => 25, 1 => 2),
+ array(0 => 25, 1 => 3),
+ );
+
+ public static $yyReduceMap = array(
+ 0 => 0,
+ 2 => 0,
+ 3 => 0,
+ 19 => 0,
+ 20 => 0,
+ 21 => 0,
+ 1 => 1,
+ 4 => 4,
+ 5 => 5,
+ 6 => 6,
+ 7 => 7,
+ 8 => 8,
+ 9 => 9,
+ 10 => 10,
+ 11 => 11,
+ 12 => 12,
+ 13 => 13,
+ 14 => 14,
+ 15 => 15,
+ 16 => 16,
+ 17 => 17,
+ 18 => 17,
+ );
+
+ /**
+ * helper map
+ *
+ * @var array
+ */
+ private static $escapes_single = array(
+ '\\' => '\\',
+ '\'' => '\''
+ );
+
+ /**
+ * result status
+ *
+ * @var bool
+ */
+ public $successful = true;
+
+ /**
+ * return value
+ *
+ * @var mixed
+ */
+ public $retvalue = 0;
+
+ /**
+ * @var
+ */
+ public $yymajor;
+
+ /**
+ * compiler object
+ *
+ * @var Smarty_Internal_Config_File_Compiler
+ */
+ public $compiler = null;
+
+ /**
+ * smarty object
+ *
+ * @var Smarty
+ */
+ public $smarty = null;
+
+ public $yyTraceFILE;
+
+ public $yyTracePrompt;
+
+ public $yyidx;
+
+ public $yyerrcnt;
+
+ public $yystack = array();
+
+ public $yyTokenName = array(
+ '$', 'OPENB', 'SECTION', 'CLOSEB',
+ 'DOT', 'ID', 'EQUAL', 'FLOAT',
+ 'INT', 'BOOL', 'SINGLE_QUOTED_STRING', 'DOUBLE_QUOTED_STRING',
+ 'TRIPPLE_QUOTES', 'TRIPPLE_TEXT', 'TRIPPLE_QUOTES_END', 'NAKED_STRING',
+ 'OTHER', 'NEWLINE', 'COMMENTSTART', 'error',
+ 'start', 'global_vars', 'sections', 'var_list',
+ 'section', 'newline', 'var', 'value',
+ );
+
+ /**
+ * lexer object
+ *
+ * @var Smarty_Internal_Configfilelexer
+ */
+ private $lex;
+
+ /**
+ * internal error flag
+ *
+ * @var bool
+ */
+ private $internalError = false;
+
+ /**
+ * copy of config_overwrite property
+ *
+ * @var bool
+ */
+ private $configOverwrite = false;
+
+ /**
+ * copy of config_read_hidden property
+ *
+ * @var bool
+ */
+ private $configReadHidden = false;
+
+ private $_retvalue;
+
+ /**
+ * constructor
+ *
+ * @param Smarty_Internal_Configfilelexer $lex
+ * @param Smarty_Internal_Config_File_Compiler $compiler
+ */
+ public function __construct(Smarty_Internal_Configfilelexer $lex, Smarty_Internal_Config_File_Compiler $compiler)
+ {
+ $this->lex = $lex;
+ $this->smarty = $compiler->smarty;
+ $this->compiler = $compiler;
+ $this->configOverwrite = $this->smarty->config_overwrite;
+ $this->configReadHidden = $this->smarty->config_read_hidden;
+ }
+
+ public static function yy_destructor($yymajor, $yypminor)
+ {
+ switch ($yymajor) {
+ default:
+ break; /* If no destructor action specified: do nothing */
+ }
+ }
+
+ /**
+ * parse single quoted string
+ * remove outer quotes
+ * unescape inner quotes
+ *
+ * @param string $qstr
+ *
+ * @return string
+ */
+ private static function parse_single_quoted_string($qstr)
+ {
+ $escaped_string = substr($qstr, 1, strlen($qstr) - 2); //remove outer quotes
+ $ss = preg_split('/(\\\\.)/', $escaped_string, -1, PREG_SPLIT_DELIM_CAPTURE);
+ $str = '';
+ foreach ($ss as $s) {
+ if (strlen($s) === 2 && $s[ 0 ] === '\\') {
+ if (isset(self::$escapes_single[ $s[ 1 ] ])) {
+ $s = self::$escapes_single[ $s[ 1 ] ];
+ }
+ }
+ $str .= $s;
+ }
+ return $str;
+ } /* Index of top element in stack */
+ /**
+ * parse double quoted string
+ *
+ * @param string $qstr
+ *
+ * @return string
+ */
+ private static function parse_double_quoted_string($qstr)
+ {
+ $inner_str = substr($qstr, 1, strlen($qstr) - 2);
+ return stripcslashes($inner_str);
+ } /* Shifts left before out of the error */
+ /**
+ * parse triple quoted string
+ *
+ * @param string $qstr
+ *
+ * @return string
+ */
+ private static function parse_tripple_double_quoted_string($qstr)
+ {
+ return stripcslashes($qstr);
+ } /* The parser's stack */
+ public function Trace($TraceFILE, $zTracePrompt)
+ {
+ if (!$TraceFILE) {
+ $zTracePrompt = 0;
+ } elseif (!$zTracePrompt) {
+ $TraceFILE = 0;
+ }
+ $this->yyTraceFILE = $TraceFILE;
+ $this->yyTracePrompt = $zTracePrompt;
+ }
+
+ public function PrintTrace()
+ {
+ $this->yyTraceFILE = fopen('php://output', 'w');
+ $this->yyTracePrompt = ' ';
+ }
+
+ public function tokenName($tokenType)
+ {
+ if ($tokenType === 0) {
+ return 'End of Input';
+ }
+ if ($tokenType > 0 && $tokenType < count($this->yyTokenName)) {
+ return $this->yyTokenName[ $tokenType ];
+ } else {
+ return 'Unknown';
+ }
+ }
+
+ public function yy_pop_parser_stack()
+ {
+ if (empty($this->yystack)) {
+ return;
+ }
+ $yytos = array_pop($this->yystack);
+ if ($this->yyTraceFILE && $this->yyidx >= 0) {
+ fwrite(
+ $this->yyTraceFILE,
+ $this->yyTracePrompt . 'Popping ' . $this->yyTokenName[ $yytos->major ] .
+ "\n"
+ );
+ }
+ $yymajor = $yytos->major;
+ self::yy_destructor($yymajor, $yytos->minor);
+ $this->yyidx--;
+ return $yymajor;
+ }
+
+ public function __destruct()
+ {
+ while ($this->yystack !== array()) {
+ $this->yy_pop_parser_stack();
+ }
+ if (is_resource($this->yyTraceFILE)) {
+ fclose($this->yyTraceFILE);
+ }
+ }
+
+ public function yy_get_expected_tokens($token)
+ {
+ static $res3 = array();
+ static $res4 = array();
+ $state = $this->yystack[ $this->yyidx ]->stateno;
+ $expected = self::$yyExpectedTokens[ $state ];
+ if (isset($res3[ $state ][ $token ])) {
+ if ($res3[ $state ][ $token ]) {
+ return $expected;
+ }
+ } else {
+ if ($res3[ $state ][ $token ] = in_array($token, self::$yyExpectedTokens[ $state ], true)) {
+ return $expected;
+ }
+ }
+ $stack = $this->yystack;
+ $yyidx = $this->yyidx;
+ do {
+ $yyact = $this->yy_find_shift_action($token);
+ if ($yyact >= self::YYNSTATE && $yyact < self::YYNSTATE + self::YYNRULE) {
+ // reduce action
+ $done = 0;
+ do {
+ if ($done++ === 100) {
+ $this->yyidx = $yyidx;
+ $this->yystack = $stack;
+ // too much recursion prevents proper detection
+ // so give up
+ return array_unique($expected);
+ }
+ $yyruleno = $yyact - self::YYNSTATE;
+ $this->yyidx -= self::$yyRuleInfo[ $yyruleno ][ 1 ];
+ $nextstate = $this->yy_find_reduce_action(
+ $this->yystack[ $this->yyidx ]->stateno,
+ self::$yyRuleInfo[ $yyruleno ][ 0 ]
+ );
+ if (isset(self::$yyExpectedTokens[ $nextstate ])) {
+ $expected = array_merge($expected, self::$yyExpectedTokens[ $nextstate ]);
+ if (isset($res4[ $nextstate ][ $token ])) {
+ if ($res4[ $nextstate ][ $token ]) {
+ $this->yyidx = $yyidx;
+ $this->yystack = $stack;
+ return array_unique($expected);
+ }
+ } else {
+ if ($res4[ $nextstate ][ $token ] =
+ in_array($token, self::$yyExpectedTokens[ $nextstate ], true)) {
+ $this->yyidx = $yyidx;
+ $this->yystack = $stack;
+ return array_unique($expected);
+ }
+ }
+ }
+ if ($nextstate < self::YYNSTATE) {
+ // we need to shift a non-terminal
+ $this->yyidx++;
+ $x = new TPC_yyStackEntry;
+ $x->stateno = $nextstate;
+ $x->major = self::$yyRuleInfo[ $yyruleno ][ 0 ];
+ $this->yystack[ $this->yyidx ] = $x;
+ continue 2;
+ } elseif ($nextstate === self::YYNSTATE + self::YYNRULE + 1) {
+ $this->yyidx = $yyidx;
+ $this->yystack = $stack;
+ // the last token was just ignored, we can't accept
+ // by ignoring input, this is in essence ignoring a
+ // syntax error!
+ return array_unique($expected);
+ } elseif ($nextstate === self::YY_NO_ACTION) {
+ $this->yyidx = $yyidx;
+ $this->yystack = $stack;
+ // input accepted, but not shifted (I guess)
+ return $expected;
+ } else {
+ $yyact = $nextstate;
+ }
+ } while (true);
+ }
+ break;
+ } while (true);
+ $this->yyidx = $yyidx;
+ $this->yystack = $stack;
+ return array_unique($expected);
+ }
+
+ public function yy_is_expected_token($token)
+ {
+ static $res = array();
+ static $res2 = array();
+ if ($token === 0) {
+ return true; // 0 is not part of this
+ }
+ $state = $this->yystack[ $this->yyidx ]->stateno;
+ if (isset($res[ $state ][ $token ])) {
+ if ($res[ $state ][ $token ]) {
+ return true;
+ }
+ } else {
+ if ($res[ $state ][ $token ] = in_array($token, self::$yyExpectedTokens[ $state ], true)) {
+ return true;
+ }
+ }
+ $stack = $this->yystack;
+ $yyidx = $this->yyidx;
+ do {
+ $yyact = $this->yy_find_shift_action($token);
+ if ($yyact >= self::YYNSTATE && $yyact < self::YYNSTATE + self::YYNRULE) {
+ // reduce action
+ $done = 0;
+ do {
+ if ($done++ === 100) {
+ $this->yyidx = $yyidx;
+ $this->yystack = $stack;
+ // too much recursion prevents proper detection
+ // so give up
+ return true;
+ }
+ $yyruleno = $yyact - self::YYNSTATE;
+ $this->yyidx -= self::$yyRuleInfo[ $yyruleno ][ 1 ];
+ $nextstate = $this->yy_find_reduce_action(
+ $this->yystack[ $this->yyidx ]->stateno,
+ self::$yyRuleInfo[ $yyruleno ][ 0 ]
+ );
+ if (isset($res2[ $nextstate ][ $token ])) {
+ if ($res2[ $nextstate ][ $token ]) {
+ $this->yyidx = $yyidx;
+ $this->yystack = $stack;
+ return true;
+ }
+ } else {
+ if ($res2[ $nextstate ][ $token ] =
+ (isset(self::$yyExpectedTokens[ $nextstate ]) &&
+ in_array($token, self::$yyExpectedTokens[ $nextstate ], true))) {
+ $this->yyidx = $yyidx;
+ $this->yystack = $stack;
+ return true;
+ }
+ }
+ if ($nextstate < self::YYNSTATE) {
+ // we need to shift a non-terminal
+ $this->yyidx++;
+ $x = new TPC_yyStackEntry;
+ $x->stateno = $nextstate;
+ $x->major = self::$yyRuleInfo[ $yyruleno ][ 0 ];
+ $this->yystack[ $this->yyidx ] = $x;
+ continue 2;
+ } elseif ($nextstate === self::YYNSTATE + self::YYNRULE + 1) {
+ $this->yyidx = $yyidx;
+ $this->yystack = $stack;
+ if (!$token) {
+ // end of input: this is valid
+ return true;
+ }
+ // the last token was just ignored, we can't accept
+ // by ignoring input, this is in essence ignoring a
+ // syntax error!
+ return false;
+ } elseif ($nextstate === self::YY_NO_ACTION) {
+ $this->yyidx = $yyidx;
+ $this->yystack = $stack;
+ // input accepted, but not shifted (I guess)
+ return true;
+ } else {
+ $yyact = $nextstate;
+ }
+ } while (true);
+ }
+ break;
+ } while (true);
+ $this->yyidx = $yyidx;
+ $this->yystack = $stack;
+ return true;
+ }
+
+ public function yy_find_shift_action($iLookAhead)
+ {
+ $stateno = $this->yystack[ $this->yyidx ]->stateno;
+ /* if ($this->yyidx < 0) return self::YY_NO_ACTION; */
+ if (!isset(self::$yy_shift_ofst[ $stateno ])) {
+ // no shift actions
+ return self::$yy_default[ $stateno ];
+ }
+ $i = self::$yy_shift_ofst[ $stateno ];
+ if ($i === self::YY_SHIFT_USE_DFLT) {
+ return self::$yy_default[ $stateno ];
+ }
+ if ($iLookAhead === self::YYNOCODE) {
+ return self::YY_NO_ACTION;
+ }
+ $i += $iLookAhead;
+ if ($i < 0 || $i >= self::YY_SZ_ACTTAB ||
+ self::$yy_lookahead[ $i ] != $iLookAhead) {
+ if (count(self::$yyFallback) && $iLookAhead < count(self::$yyFallback)
+ && ($iFallback = self::$yyFallback[ $iLookAhead ]) != 0) {
+ if ($this->yyTraceFILE) {
+ fwrite($this->yyTraceFILE, $this->yyTracePrompt . 'FALLBACK ' .
+ $this->yyTokenName[ $iLookAhead ] . ' => ' .
+ $this->yyTokenName[ $iFallback ] . "\n");
+ }
+ return $this->yy_find_shift_action($iFallback);
+ }
+ return self::$yy_default[ $stateno ];
+ } else {
+ return self::$yy_action[ $i ];
+ }
+ }
+
+ public function yy_find_reduce_action($stateno, $iLookAhead)
+ {
+ /* $stateno = $this->yystack[$this->yyidx]->stateno; */
+ if (!isset(self::$yy_reduce_ofst[ $stateno ])) {
+ return self::$yy_default[ $stateno ];
+ }
+ $i = self::$yy_reduce_ofst[ $stateno ];
+ if ($i === self::YY_REDUCE_USE_DFLT) {
+ return self::$yy_default[ $stateno ];
+ }
+ if ($iLookAhead === self::YYNOCODE) {
+ return self::YY_NO_ACTION;
+ }
+ $i += $iLookAhead;
+ if ($i < 0 || $i >= self::YY_SZ_ACTTAB ||
+ self::$yy_lookahead[ $i ] != $iLookAhead) {
+ return self::$yy_default[ $stateno ];
+ } else {
+ return self::$yy_action[ $i ];
+ }
+ }
+
+ public function yy_shift($yyNewState, $yyMajor, $yypMinor)
+ {
+ $this->yyidx++;
+ if ($this->yyidx >= self::YYSTACKDEPTH) {
+ $this->yyidx--;
+ if ($this->yyTraceFILE) {
+ fprintf($this->yyTraceFILE, "%sStack Overflow!\n", $this->yyTracePrompt);
+ }
+ while ($this->yyidx >= 0) {
+ $this->yy_pop_parser_stack();
+ }
+ // line 239 "../smarty/lexer/smarty_internal_configfileparser.y"
+ $this->internalError = true;
+ $this->compiler->trigger_config_file_error('Stack overflow in configfile parser');
+ return;
+ }
+ $yytos = new TPC_yyStackEntry;
+ $yytos->stateno = $yyNewState;
+ $yytos->major = $yyMajor;
+ $yytos->minor = $yypMinor;
+ $this->yystack[] = $yytos;
+ if ($this->yyTraceFILE && $this->yyidx > 0) {
+ fprintf(
+ $this->yyTraceFILE,
+ "%sShift %d\n",
+ $this->yyTracePrompt,
+ $yyNewState
+ );
+ fprintf($this->yyTraceFILE, "%sStack:", $this->yyTracePrompt);
+ for ($i = 1; $i <= $this->yyidx; $i++) {
+ fprintf(
+ $this->yyTraceFILE,
+ " %s",
+ $this->yyTokenName[ $this->yystack[ $i ]->major ]
+ );
+ }
+ fwrite($this->yyTraceFILE, "\n");
+ }
+ }
+
+ public function yy_r0()
+ {
+ $this->_retvalue = null;
+ }
+
+ public function yy_r1()
+ {
+ $this->add_global_vars($this->yystack[ $this->yyidx + 0 ]->minor);
+ $this->_retvalue = null;
+ }
+
+ public function yy_r4()
+ {
+ $this->add_section_vars($this->yystack[ $this->yyidx + -3 ]->minor, $this->yystack[ $this->yyidx + 0 ]->minor);
+ $this->_retvalue = null;
+ }
+
+ // line 245 "../smarty/lexer/smarty_internal_configfileparser.y"
+ public function yy_r5()
+ {
+ if ($this->configReadHidden) {
+ $this->add_section_vars(
+ $this->yystack[ $this->yyidx + -3 ]->minor,
+ $this->yystack[ $this->yyidx + 0 ]->minor
+ );
+ }
+ $this->_retvalue = null;
+ }
+
+ // line 250 "../smarty/lexer/smarty_internal_configfileparser.y"
+ public function yy_r6()
+ {
+ $this->_retvalue = $this->yystack[ $this->yyidx + -1 ]->minor;
+ }
+
+ // line 264 "../smarty/lexer/smarty_internal_configfileparser.y"
+ public function yy_r7()
+ {
+ $this->_retvalue =
+ array_merge($this->yystack[ $this->yyidx + -1 ]->minor, array($this->yystack[ $this->yyidx + 0 ]->minor));
+ }
+
+ // line 269 "../smarty/lexer/smarty_internal_configfileparser.y"
+ public function yy_r8()
+ {
+ $this->_retvalue = array();
+ }
+
+ // line 277 "../smarty/lexer/smarty_internal_configfileparser.y"
+ public function yy_r9()
+ {
+ $this->_retvalue =
+ array(
+ 'key' => $this->yystack[ $this->yyidx + -2 ]->minor,
+ 'value' => $this->yystack[ $this->yyidx + 0 ]->minor
+ );
+ }
+
+ // line 281 "../smarty/lexer/smarty_internal_configfileparser.y"
+ public function yy_r10()
+ {
+ $this->_retvalue = (float)$this->yystack[ $this->yyidx + 0 ]->minor;
+ }
+
+ // line 285 "../smarty/lexer/smarty_internal_configfileparser.y"
+ public function yy_r11()
+ {
+ $this->_retvalue = (int)$this->yystack[ $this->yyidx + 0 ]->minor;
+ }
+
+ // line 291 "../smarty/lexer/smarty_internal_configfileparser.y"
+ public function yy_r12()
+ {
+ $this->_retvalue = $this->parse_bool($this->yystack[ $this->yyidx + 0 ]->minor);
+ }
+
+ // line 296 "../smarty/lexer/smarty_internal_configfileparser.y"
+ public function yy_r13()
+ {
+ $this->_retvalue = self::parse_single_quoted_string($this->yystack[ $this->yyidx + 0 ]->minor);
+ }
+
+ // line 300 "../smarty/lexer/smarty_internal_configfileparser.y"
+ public function yy_r14()
+ {
+ $this->_retvalue = self::parse_double_quoted_string($this->yystack[ $this->yyidx + 0 ]->minor);
+ }
+
+ // line 304 "../smarty/lexer/smarty_internal_configfileparser.y"
+ public function yy_r15()
+ {
+ $this->_retvalue = self::parse_tripple_double_quoted_string($this->yystack[ $this->yyidx + -1 ]->minor);
+ }
+
+ // line 308 "../smarty/lexer/smarty_internal_configfileparser.y"
+ public function yy_r16()
+ {
+ $this->_retvalue = '';
+ }
+
+ // line 312 "../smarty/lexer/smarty_internal_configfileparser.y"
+ public function yy_r17()
+ {
+ $this->_retvalue = $this->yystack[ $this->yyidx + 0 ]->minor;
+ }
+
+ // line 316 "../smarty/lexer/smarty_internal_configfileparser.y"
+ public function yy_reduce($yyruleno)
+ {
+ if ($this->yyTraceFILE && $yyruleno >= 0
+ && $yyruleno < count(self::$yyRuleName)) {
+ fprintf(
+ $this->yyTraceFILE,
+ "%sReduce (%d) [%s].\n",
+ $this->yyTracePrompt,
+ $yyruleno,
+ self::$yyRuleName[ $yyruleno ]
+ );
+ }
+ $this->_retvalue = $yy_lefthand_side = null;
+ if (isset(self::$yyReduceMap[ $yyruleno ])) {
+ // call the action
+ $this->_retvalue = null;
+ $this->{'yy_r' . self::$yyReduceMap[ $yyruleno ]}();
+ $yy_lefthand_side = $this->_retvalue;
+ }
+ $yygoto = self::$yyRuleInfo[ $yyruleno ][ 0 ];
+ $yysize = self::$yyRuleInfo[ $yyruleno ][ 1 ];
+ $this->yyidx -= $yysize;
+ for ($i = $yysize; $i; $i--) {
+ // pop all of the right-hand side parameters
+ array_pop($this->yystack);
+ }
+ $yyact = $this->yy_find_reduce_action($this->yystack[ $this->yyidx ]->stateno, $yygoto);
+ if ($yyact < self::YYNSTATE) {
+ if (!$this->yyTraceFILE && $yysize) {
+ $this->yyidx++;
+ $x = new TPC_yyStackEntry;
+ $x->stateno = $yyact;
+ $x->major = $yygoto;
+ $x->minor = $yy_lefthand_side;
+ $this->yystack[ $this->yyidx ] = $x;
+ } else {
+ $this->yy_shift($yyact, $yygoto, $yy_lefthand_side);
+ }
+ } elseif ($yyact === self::YYNSTATE + self::YYNRULE + 1) {
+ $this->yy_accept();
+ }
+ }
+
+ // line 320 "../smarty/lexer/smarty_internal_configfileparser.y"
+ public function yy_parse_failed()
+ {
+ if ($this->yyTraceFILE) {
+ fprintf($this->yyTraceFILE, "%sFail!\n", $this->yyTracePrompt);
+ }
+ while ($this->yyidx >= 0) {
+ $this->yy_pop_parser_stack();
+ }
+ }
+
+ // line 324 "../smarty/lexer/smarty_internal_configfileparser.y"
+ public function yy_syntax_error($yymajor, $TOKEN)
+ {
+ // line 232 "../smarty/lexer/smarty_internal_configfileparser.y"
+ $this->internalError = true;
+ $this->yymajor = $yymajor;
+ $this->compiler->trigger_config_file_error();
+ }
+
+ public function yy_accept()
+ {
+ if ($this->yyTraceFILE) {
+ fprintf($this->yyTraceFILE, "%sAccept!\n", $this->yyTracePrompt);
+ }
+ while ($this->yyidx >= 0) {
+ $this->yy_pop_parser_stack();
+ }
+ // line 225 "../smarty/lexer/smarty_internal_configfileparser.y"
+ $this->successful = !$this->internalError;
+ $this->internalError = false;
+ $this->retvalue = $this->_retvalue;
+ }
+
+ public function doParse($yymajor, $yytokenvalue)
+ {
+ $yyerrorhit = 0; /* True if yymajor has invoked an error */
+ if ($this->yyidx === null || $this->yyidx < 0) {
+ $this->yyidx = 0;
+ $this->yyerrcnt = -1;
+ $x = new TPC_yyStackEntry;
+ $x->stateno = 0;
+ $x->major = 0;
+ $this->yystack = array();
+ $this->yystack[] = $x;
+ }
+ $yyendofinput = ($yymajor == 0);
+ if ($this->yyTraceFILE) {
+ fprintf(
+ $this->yyTraceFILE,
+ "%sInput %s\n",
+ $this->yyTracePrompt,
+ $this->yyTokenName[ $yymajor ]
+ );
+ }
+ do {
+ $yyact = $this->yy_find_shift_action($yymajor);
+ if ($yymajor < self::YYERRORSYMBOL &&
+ !$this->yy_is_expected_token($yymajor)) {
+ // force a syntax error
+ $yyact = self::YY_ERROR_ACTION;
+ }
+ if ($yyact < self::YYNSTATE) {
+ $this->yy_shift($yyact, $yymajor, $yytokenvalue);
+ $this->yyerrcnt--;
+ if ($yyendofinput && $this->yyidx >= 0) {
+ $yymajor = 0;
+ } else {
+ $yymajor = self::YYNOCODE;
+ }
+ } elseif ($yyact < self::YYNSTATE + self::YYNRULE) {
+ $this->yy_reduce($yyact - self::YYNSTATE);
+ } elseif ($yyact === self::YY_ERROR_ACTION) {
+ if ($this->yyTraceFILE) {
+ fprintf(
+ $this->yyTraceFILE,
+ "%sSyntax Error!\n",
+ $this->yyTracePrompt
+ );
+ }
+ if (self::YYERRORSYMBOL) {
+ if ($this->yyerrcnt < 0) {
+ $this->yy_syntax_error($yymajor, $yytokenvalue);
+ }
+ $yymx = $this->yystack[ $this->yyidx ]->major;
+ if ($yymx === self::YYERRORSYMBOL || $yyerrorhit) {
+ if ($this->yyTraceFILE) {
+ fprintf(
+ $this->yyTraceFILE,
+ "%sDiscard input token %s\n",
+ $this->yyTracePrompt,
+ $this->yyTokenName[ $yymajor ]
+ );
+ }
+ $this->yy_destructor($yymajor, $yytokenvalue);
+ $yymajor = self::YYNOCODE;
+ } else {
+ while ($this->yyidx >= 0 &&
+ $yymx !== self::YYERRORSYMBOL &&
+ ($yyact = $this->yy_find_shift_action(self::YYERRORSYMBOL)) >= self::YYNSTATE
+ ) {
+ $this->yy_pop_parser_stack();
+ }
+ if ($this->yyidx < 0 || $yymajor == 0) {
+ $this->yy_destructor($yymajor, $yytokenvalue);
+ $this->yy_parse_failed();
+ $yymajor = self::YYNOCODE;
+ } elseif ($yymx !== self::YYERRORSYMBOL) {
+ $u2 = 0;
+ $this->yy_shift($yyact, self::YYERRORSYMBOL, $u2);
+ }
+ }
+ $this->yyerrcnt = 3;
+ $yyerrorhit = 1;
+ } else {
+ if ($this->yyerrcnt <= 0) {
+ $this->yy_syntax_error($yymajor, $yytokenvalue);
+ }
+ $this->yyerrcnt = 3;
+ $this->yy_destructor($yymajor, $yytokenvalue);
+ if ($yyendofinput) {
+ $this->yy_parse_failed();
+ }
+ $yymajor = self::YYNOCODE;
+ }
+ } else {
+ $this->yy_accept();
+ $yymajor = self::YYNOCODE;
+ }
+ } while ($yymajor !== self::YYNOCODE && $this->yyidx >= 0);
+ }
+
+ /**
+ * parse optional boolean keywords
+ *
+ * @param string $str
+ *
+ * @return bool
+ */
+ private function parse_bool($str)
+ {
+ $str = strtolower($str);
+ if (in_array($str, array('on', 'yes', 'true'))) {
+ $res = true;
+ } else {
+ $res = false;
+ }
+ return $res;
+ }
+
+ /**
+ * set a config variable in target array
+ *
+ * @param array $var
+ * @param array $target_array
+ */
+ private function set_var(array $var, array &$target_array)
+ {
+ $key = $var[ 'key' ];
+ $value = $var[ 'value' ];
+ if ($this->configOverwrite || !isset($target_array[ 'vars' ][ $key ])) {
+ $target_array[ 'vars' ][ $key ] = $value;
+ } else {
+ settype($target_array[ 'vars' ][ $key ], 'array');
+ $target_array[ 'vars' ][ $key ][] = $value;
+ }
+ }
+
+ /**
+ * add config variable to global vars
+ *
+ * @param array $vars
+ */
+ private function add_global_vars(array $vars)
+ {
+ if (!isset($this->compiler->config_data[ 'vars' ])) {
+ $this->compiler->config_data[ 'vars' ] = array();
+ }
+ foreach ($vars as $var) {
+ $this->set_var($var, $this->compiler->config_data);
+ }
+ }
+
+ /**
+ * add config variable to section
+ *
+ * @param string $section_name
+ * @param array $vars
+ */
+ private function add_section_vars($section_name, array $vars)
+ {
+ if (!isset($this->compiler->config_data[ 'sections' ][ $section_name ][ 'vars' ])) {
+ $this->compiler->config_data[ 'sections' ][ $section_name ][ 'vars' ] = array();
+ }
+ foreach ($vars as $var) {
+ $this->set_var($var, $this->compiler->config_data[ 'sections' ][ $section_name ]);
+ }
+ }
+}
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_data.php b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_data.php
new file mode 100644
index 000000000..1b64185b8
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_data.php
@@ -0,0 +1,272 @@
+ext = new Smarty_Internal_Extension_Handler();
+ $this->ext->objType = $this->_objType;
+ }
+
+ /**
+ * assigns a Smarty variable
+ *
+ * @param array|string $tpl_var the template variable name(s)
+ * @param mixed $value the value to assign
+ * @param boolean $nocache if true any output of this variable will be not cached
+ *
+ * @return Smarty_Internal_Data current Smarty_Internal_Data (or Smarty or Smarty_Internal_Template) instance for
+ * chaining
+ */
+ public function assign($tpl_var, $value = null, $nocache = false)
+ {
+ if (is_array($tpl_var)) {
+ foreach ($tpl_var as $_key => $_val) {
+ $this->assign($_key, $_val, $nocache);
+ }
+ } else {
+ if ($tpl_var !== '') {
+ if ($this->_objType === 2) {
+ /**
+ *
+ *
+ * @var Smarty_Internal_Template $this
+ */
+ $this->_assignInScope($tpl_var, $value, $nocache);
+ } else {
+ $this->tpl_vars[ $tpl_var ] = new Smarty_Variable($value, $nocache);
+ }
+ }
+ }
+ return $this;
+ }
+
+ /**
+ * appends values to template variables
+ *
+ * @api Smarty::append()
+ * @link https://www.smarty.net/docs/en/api.append.tpl
+ *
+ * @param array|string $tpl_var the template variable name(s)
+ * @param mixed $value the value to append
+ * @param bool $merge flag if array elements shall be merged
+ * @param bool $nocache if true any output of this variable will
+ * be not cached
+ *
+ * @return \Smarty_Internal_Data|\Smarty_Internal_Template|\Smarty
+ */
+ public function append($tpl_var, $value = null, $merge = false, $nocache = false)
+ {
+ return $this->ext->append->append($this, $tpl_var, $value, $merge, $nocache);
+ }
+
+ /**
+ * assigns a global Smarty variable
+ *
+ * @param string $varName the global variable name
+ * @param mixed $value the value to assign
+ * @param boolean $nocache if true any output of this variable will be not cached
+ *
+ * @return \Smarty_Internal_Data|\Smarty_Internal_Template|\Smarty
+ */
+ public function assignGlobal($varName, $value = null, $nocache = false)
+ {
+ return $this->ext->assignGlobal->assignGlobal($this, $varName, $value, $nocache);
+ }
+
+ /**
+ * appends values to template variables by reference
+ *
+ * @param string $tpl_var the template variable name
+ * @param mixed &$value the referenced value to append
+ * @param boolean $merge flag if array elements shall be merged
+ *
+ * @return \Smarty_Internal_Data|\Smarty_Internal_Template|\Smarty
+ */
+ public function appendByRef($tpl_var, &$value, $merge = false)
+ {
+ return $this->ext->appendByRef->appendByRef($this, $tpl_var, $value, $merge);
+ }
+
+ /**
+ * assigns values to template variables by reference
+ *
+ * @param string $tpl_var the template variable name
+ * @param $value
+ * @param boolean $nocache if true any output of this variable will be not cached
+ *
+ * @return \Smarty_Internal_Data|\Smarty_Internal_Template|\Smarty
+ */
+ public function assignByRef($tpl_var, &$value, $nocache = false)
+ {
+ return $this->ext->assignByRef->assignByRef($this, $tpl_var, $value, $nocache);
+ }
+
+ /**
+ * Returns a single or all template variables
+ *
+ * @api Smarty::getTemplateVars()
+ * @link https://www.smarty.net/docs/en/api.get.template.vars.tpl
+ *
+ * @param string $varName variable name or null
+ * @param \Smarty_Internal_Data|\Smarty_Internal_Template|\Smarty $_ptr optional pointer to data object
+ * @param bool $searchParents include parent templates?
+ *
+ * @return mixed variable value or or array of variables
+ */
+ public function getTemplateVars($varName = null, Smarty_Internal_Data $_ptr = null, $searchParents = true)
+ {
+ return $this->ext->getTemplateVars->getTemplateVars($this, $varName, $_ptr, $searchParents);
+ }
+
+ /**
+ * Follow the parent chain an merge template and config variables
+ *
+ * @param \Smarty_Internal_Data|null $data
+ */
+ public function _mergeVars(Smarty_Internal_Data $data = null)
+ {
+ if (isset($data)) {
+ if (!empty($this->tpl_vars)) {
+ $data->tpl_vars = array_merge($this->tpl_vars, $data->tpl_vars);
+ }
+ if (!empty($this->config_vars)) {
+ $data->config_vars = array_merge($this->config_vars, $data->config_vars);
+ }
+ } else {
+ $data = $this;
+ }
+ if (isset($this->parent)) {
+ $this->parent->_mergeVars($data);
+ }
+ }
+
+ /**
+ * Return true if this instance is a Data obj
+ *
+ * @return bool
+ */
+ public function _isDataObj()
+ {
+ return $this->_objType === 4;
+ }
+
+ /**
+ * Return true if this instance is a template obj
+ *
+ * @return bool
+ */
+ public function _isTplObj()
+ {
+ return $this->_objType === 2;
+ }
+
+ /**
+ * Return true if this instance is a Smarty obj
+ *
+ * @return bool
+ */
+ public function _isSmartyObj()
+ {
+ return $this->_objType === 1;
+ }
+
+ /**
+ * Get Smarty object
+ *
+ * @return Smarty
+ */
+ public function _getSmartyObj()
+ {
+ return $this->smarty;
+ }
+
+ /**
+ * Handle unknown class methods
+ *
+ * @param string $name unknown method-name
+ * @param array $args argument array
+ *
+ * @return mixed
+ */
+ public function __call($name, $args)
+ {
+ return $this->ext->_callExternalMethod($this, $name, $args);
+ }
+}
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_debug.php b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_debug.php
new file mode 100644
index 000000000..da67904c5
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_debug.php
@@ -0,0 +1,428 @@
+_isSubTpl()) {
+ $this->index++;
+ $this->offset++;
+ $this->template_data[ $this->index ] = null;
+ }
+ $key = $this->get_key($template);
+ $this->template_data[ $this->index ][ $key ][ 'start_template_time' ] = microtime(true);
+ }
+
+ /**
+ * End logging of cache time
+ *
+ * @param \Smarty_Internal_Template $template cached template
+ */
+ public function end_template(Smarty_Internal_Template $template)
+ {
+ $key = $this->get_key($template);
+ $this->template_data[ $this->index ][ $key ][ 'total_time' ] +=
+ microtime(true) - $this->template_data[ $this->index ][ $key ][ 'start_template_time' ];
+ //$this->template_data[$this->index][$key]['properties'] = $template->properties;
+ }
+
+ /**
+ * Start logging of compile time
+ *
+ * @param \Smarty_Internal_Template $template
+ */
+ public function start_compile(Smarty_Internal_Template $template)
+ {
+ static $_is_stringy = array('string' => true, 'eval' => true);
+ if (!empty($template->compiler->trace_uid)) {
+ $key = $template->compiler->trace_uid;
+ if (!isset($this->template_data[ $this->index ][ $key ])) {
+ if (isset($_is_stringy[ $template->source->type ])) {
+ $this->template_data[ $this->index ][ $key ][ 'name' ] =
+ '\'' . substr($template->source->name, 0, 25) . '...\'';
+ } else {
+ $this->template_data[ $this->index ][ $key ][ 'name' ] = $template->source->filepath;
+ }
+ $this->template_data[ $this->index ][ $key ][ 'compile_time' ] = 0;
+ $this->template_data[ $this->index ][ $key ][ 'render_time' ] = 0;
+ $this->template_data[ $this->index ][ $key ][ 'cache_time' ] = 0;
+ }
+ } else {
+ if (isset($this->ignore_uid[ $template->source->uid ])) {
+ return;
+ }
+ $key = $this->get_key($template);
+ }
+ $this->template_data[ $this->index ][ $key ][ 'start_time' ] = microtime(true);
+ }
+
+ /**
+ * End logging of compile time
+ *
+ * @param \Smarty_Internal_Template $template
+ */
+ public function end_compile(Smarty_Internal_Template $template)
+ {
+ if (!empty($template->compiler->trace_uid)) {
+ $key = $template->compiler->trace_uid;
+ } else {
+ if (isset($this->ignore_uid[ $template->source->uid ])) {
+ return;
+ }
+ $key = $this->get_key($template);
+ }
+ $this->template_data[ $this->index ][ $key ][ 'compile_time' ] +=
+ microtime(true) - $this->template_data[ $this->index ][ $key ][ 'start_time' ];
+ }
+
+ /**
+ * Start logging of render time
+ *
+ * @param \Smarty_Internal_Template $template
+ */
+ public function start_render(Smarty_Internal_Template $template)
+ {
+ $key = $this->get_key($template);
+ $this->template_data[ $this->index ][ $key ][ 'start_time' ] = microtime(true);
+ }
+
+ /**
+ * End logging of compile time
+ *
+ * @param \Smarty_Internal_Template $template
+ */
+ public function end_render(Smarty_Internal_Template $template)
+ {
+ $key = $this->get_key($template);
+ $this->template_data[ $this->index ][ $key ][ 'render_time' ] +=
+ microtime(true) - $this->template_data[ $this->index ][ $key ][ 'start_time' ];
+ }
+
+ /**
+ * Start logging of cache time
+ *
+ * @param \Smarty_Internal_Template $template cached template
+ */
+ public function start_cache(Smarty_Internal_Template $template)
+ {
+ $key = $this->get_key($template);
+ $this->template_data[ $this->index ][ $key ][ 'start_time' ] = microtime(true);
+ }
+
+ /**
+ * End logging of cache time
+ *
+ * @param \Smarty_Internal_Template $template cached template
+ */
+ public function end_cache(Smarty_Internal_Template $template)
+ {
+ $key = $this->get_key($template);
+ $this->template_data[ $this->index ][ $key ][ 'cache_time' ] +=
+ microtime(true) - $this->template_data[ $this->index ][ $key ][ 'start_time' ];
+ }
+
+ /**
+ * Register template object
+ *
+ * @param \Smarty_Internal_Template $template cached template
+ */
+ public function register_template(Smarty_Internal_Template $template)
+ {
+ }
+
+ /**
+ * Register data object
+ *
+ * @param \Smarty_Data $data data object
+ */
+ public static function register_data(Smarty_Data $data)
+ {
+ }
+
+ /**
+ * Opens a window for the Smarty Debugging Console and display the data
+ *
+ * @param Smarty_Internal_Template|Smarty $obj object to debug
+ * @param bool $full
+ *
+ * @throws \Exception
+ * @throws \SmartyException
+ */
+ public function display_debug($obj, $full = false)
+ {
+ if (!$full) {
+ $this->offset++;
+ $savedIndex = $this->index;
+ $this->index = 9999;
+ }
+ $smarty = $obj->_getSmartyObj();
+ // create fresh instance of smarty for displaying the debug console
+ // to avoid problems if the application did overload the Smarty class
+ $debObj = new Smarty();
+ // copy the working dirs from application
+ $debObj->setCompileDir($smarty->getCompileDir());
+ // init properties by hand as user may have edited the original Smarty class
+ $debObj->setPluginsDir(is_dir(__DIR__ . '/../plugins') ? __DIR__ .
+ '/../plugins' : $smarty->getPluginsDir());
+ $debObj->force_compile = false;
+ $debObj->compile_check = Smarty::COMPILECHECK_ON;
+ $debObj->left_delimiter = '{';
+ $debObj->right_delimiter = '}';
+ $debObj->security_policy = null;
+ $debObj->debugging = false;
+ $debObj->debugging_ctrl = 'NONE';
+ $debObj->error_reporting = E_ALL & ~E_NOTICE;
+ $debObj->debug_tpl =
+ isset($smarty->debug_tpl) ? $smarty->debug_tpl : 'file:' . __DIR__ . '/../debug.tpl';
+ $debObj->registered_plugins = array();
+ $debObj->registered_resources = array();
+ $debObj->registered_filters = array();
+ $debObj->autoload_filters = array();
+ $debObj->default_modifiers = array();
+ $debObj->escape_html = true;
+ $debObj->caching = Smarty::CACHING_OFF;
+ $debObj->compile_id = null;
+ $debObj->cache_id = null;
+ // prepare information of assigned variables
+ $ptr = $this->get_debug_vars($obj);
+ $_assigned_vars = $ptr->tpl_vars;
+ ksort($_assigned_vars);
+ $_config_vars = $ptr->config_vars;
+ ksort($_config_vars);
+ $debugging = $smarty->debugging;
+ $templateName = $obj->source->type . ':' . $obj->source->name;
+ $displayMode = $debugging === 2 || !$full;
+ $offset = $this->offset * 50;
+ $_template = new Smarty_Internal_Template($debObj->debug_tpl, $debObj);
+ if ($obj->_isTplObj()) {
+ $_template->assign('template_name', $templateName);
+ }
+ if ($obj->_objType === 1 || $full) {
+ $_template->assign('template_data', $this->template_data[ $this->index ]);
+ } else {
+ $_template->assign('template_data', null);
+ }
+ $_template->assign('assigned_vars', $_assigned_vars);
+ $_template->assign('config_vars', $_config_vars);
+ $_template->assign('execution_time', microtime(true) - $smarty->start_time);
+ $_template->assign('targetWindow', $displayMode ? md5("$offset$templateName") : '__Smarty__');
+ $_template->assign('offset', $offset);
+ echo $_template->fetch();
+ if (isset($full)) {
+ $this->index--;
+ }
+ if (!$full) {
+ $this->index = $savedIndex;
+ }
+ }
+
+ /**
+ * Recursively gets variables from all template/data scopes
+ *
+ * @param Smarty_Internal_Template|Smarty_Data $obj object to debug
+ *
+ * @return StdClass
+ */
+ public function get_debug_vars($obj)
+ {
+ $config_vars = array();
+ foreach ($obj->config_vars as $key => $var) {
+ $config_vars[ $key ][ 'value' ] = $var;
+ if ($obj->_isTplObj()) {
+ $config_vars[ $key ][ 'scope' ] = $obj->source->type . ':' . $obj->source->name;
+ } elseif ($obj->_isDataObj()) {
+ $tpl_vars[ $key ][ 'scope' ] = $obj->dataObjectName;
+ } else {
+ $config_vars[ $key ][ 'scope' ] = 'Smarty object';
+ }
+ }
+ $tpl_vars = array();
+ foreach ($obj->tpl_vars as $key => $var) {
+ foreach ($var as $varkey => $varvalue) {
+ if ($varkey === 'value') {
+ $tpl_vars[ $key ][ $varkey ] = $varvalue;
+ } else {
+ if ($varkey === 'nocache') {
+ if ($varvalue === true) {
+ $tpl_vars[ $key ][ $varkey ] = $varvalue;
+ }
+ } else {
+ if ($varkey !== 'scope' || $varvalue !== 0) {
+ $tpl_vars[ $key ][ 'attributes' ][ $varkey ] = $varvalue;
+ }
+ }
+ }
+ }
+ if ($obj->_isTplObj()) {
+ $tpl_vars[ $key ][ 'scope' ] = $obj->source->type . ':' . $obj->source->name;
+ } elseif ($obj->_isDataObj()) {
+ $tpl_vars[ $key ][ 'scope' ] = $obj->dataObjectName;
+ } else {
+ $tpl_vars[ $key ][ 'scope' ] = 'Smarty object';
+ }
+ }
+ if (isset($obj->parent)) {
+ $parent = $this->get_debug_vars($obj->parent);
+ foreach ($parent->tpl_vars as $name => $pvar) {
+ if (isset($tpl_vars[ $name ]) && $tpl_vars[ $name ][ 'value' ] === $pvar[ 'value' ]) {
+ $tpl_vars[ $name ][ 'scope' ] = $pvar[ 'scope' ];
+ }
+ }
+ $tpl_vars = array_merge($parent->tpl_vars, $tpl_vars);
+ foreach ($parent->config_vars as $name => $pvar) {
+ if (isset($config_vars[ $name ]) && $config_vars[ $name ][ 'value' ] === $pvar[ 'value' ]) {
+ $config_vars[ $name ][ 'scope' ] = $pvar[ 'scope' ];
+ }
+ }
+ $config_vars = array_merge($parent->config_vars, $config_vars);
+ } else {
+ foreach (Smarty::$global_tpl_vars as $key => $var) {
+ if (!array_key_exists($key, $tpl_vars)) {
+ foreach ($var as $varkey => $varvalue) {
+ if ($varkey === 'value') {
+ $tpl_vars[ $key ][ $varkey ] = $varvalue;
+ } else {
+ if ($varkey === 'nocache') {
+ if ($varvalue === true) {
+ $tpl_vars[ $key ][ $varkey ] = $varvalue;
+ }
+ } else {
+ if ($varkey !== 'scope' || $varvalue !== 0) {
+ $tpl_vars[ $key ][ 'attributes' ][ $varkey ] = $varvalue;
+ }
+ }
+ }
+ }
+ $tpl_vars[ $key ][ 'scope' ] = 'Global';
+ }
+ }
+ }
+ return (object)array('tpl_vars' => $tpl_vars, 'config_vars' => $config_vars);
+ }
+
+ /**
+ * Return key into $template_data for template
+ *
+ * @param \Smarty_Internal_Template $template template object
+ *
+ * @return string key into $template_data
+ */
+ private function get_key(Smarty_Internal_Template $template)
+ {
+ static $_is_stringy = array('string' => true, 'eval' => true);
+ // calculate Uid if not already done
+ if ($template->source->uid === '') {
+ $template->source->filepath;
+ }
+ $key = $template->source->uid;
+ if (isset($this->template_data[ $this->index ][ $key ])) {
+ return $key;
+ } else {
+ if (isset($_is_stringy[ $template->source->type ])) {
+ $this->template_data[ $this->index ][ $key ][ 'name' ] =
+ '\'' . substr($template->source->name, 0, 25) . '...\'';
+ } else {
+ $this->template_data[ $this->index ][ $key ][ 'name' ] = $template->source->filepath;
+ }
+ $this->template_data[ $this->index ][ $key ][ 'compile_time' ] = 0;
+ $this->template_data[ $this->index ][ $key ][ 'render_time' ] = 0;
+ $this->template_data[ $this->index ][ $key ][ 'cache_time' ] = 0;
+ $this->template_data[ $this->index ][ $key ][ 'total_time' ] = 0;
+ return $key;
+ }
+ }
+
+ /**
+ * Ignore template
+ *
+ * @param \Smarty_Internal_Template $template
+ */
+ public function ignore(Smarty_Internal_Template $template)
+ {
+ // calculate Uid if not already done
+ if ($template->source->uid === '') {
+ $template->source->filepath;
+ }
+ $this->ignore_uid[ $template->source->uid ] = true;
+ }
+
+ /**
+ * handle 'URL' debugging mode
+ *
+ * @param Smarty $smarty
+ */
+ public function debugUrl(Smarty $smarty)
+ {
+ if (isset($_SERVER[ 'QUERY_STRING' ])) {
+ $_query_string = $_SERVER[ 'QUERY_STRING' ];
+ } else {
+ $_query_string = '';
+ }
+ if (false !== strpos($_query_string, $smarty->smarty_debug_id)) {
+ if (false !== strpos($_query_string, $smarty->smarty_debug_id . '=on')) {
+ // enable debugging for this browser session
+ setcookie('SMARTY_DEBUG', true);
+ $smarty->debugging = true;
+ } elseif (false !== strpos($_query_string, $smarty->smarty_debug_id . '=off')) {
+ // disable debugging for this browser session
+ setcookie('SMARTY_DEBUG', false);
+ $smarty->debugging = false;
+ } else {
+ // enable debugging for this page
+ $smarty->debugging = true;
+ }
+ } else {
+ if (isset($_COOKIE[ 'SMARTY_DEBUG' ])) {
+ $smarty->debugging = true;
+ }
+ }
+ }
+}
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_errorhandler.php b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_errorhandler.php
new file mode 100644
index 000000000..4ddcfcd11
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_errorhandler.php
@@ -0,0 +1,114 @@
+propName} where propName is undefined.
+ * @var bool
+ */
+ public $allowUndefinedProperties = true;
+
+ /**
+ * Allows {$foo.bar} where bar is unset and {$foo.bar1.bar2} where either bar1 or bar2 is unset.
+ * @var bool
+ */
+ public $allowUndefinedArrayKeys = true;
+
+ /**
+ * Allows {$foo->bar} where bar is not an object (e.g. null or false).
+ * @var bool
+ */
+ public $allowDereferencingNonObjects = true;
+
+ private $previousErrorHandler = null;
+
+ /**
+ * Enable error handler to intercept errors
+ */
+ public function activate() {
+ /*
+ Error muting is done because some people implemented custom error_handlers using
+ https://php.net/set_error_handler and for some reason did not understand the following paragraph:
+
+ It is important to remember that the standard PHP error handler is completely bypassed for the
+ error types specified by error_types unless the callback function returns FALSE.
+ error_reporting() settings will have no effect and your error handler will be called regardless -
+ however you are still able to read the current value of error_reporting and act appropriately.
+ Of particular note is that this value will be 0 if the statement that caused the error was
+ prepended by the @ error-control operator.
+ */
+ $this->previousErrorHandler = set_error_handler([$this, 'handleError']);
+ }
+
+ /**
+ * Disable error handler
+ */
+ public function deactivate() {
+ restore_error_handler();
+ $this->previousErrorHandler = null;
+ }
+
+ /**
+ * Error Handler to mute expected messages
+ *
+ * @link https://php.net/set_error_handler
+ *
+ * @param integer $errno Error level
+ * @param $errstr
+ * @param $errfile
+ * @param $errline
+ * @param $errcontext
+ *
+ * @return bool
+ */
+ public function handleError($errno, $errstr, $errfile, $errline, $errcontext = [])
+ {
+
+ if ($this->allowUndefinedVars && preg_match(
+ '/^(Attempt to read property "value" on null|Trying to get property (\'value\' )?of non-object)/',
+ $errstr
+ )) {
+ return; // suppresses this error
+ }
+
+ if ($this->allowUndefinedProperties && preg_match(
+ '/^(Undefined property)/',
+ $errstr
+ )) {
+ return; // suppresses this error
+ }
+
+ if ($this->allowUndefinedArrayKeys && preg_match(
+ '/^(Undefined index|Undefined array key|Trying to access array offset on)/',
+ $errstr
+ )) {
+ return; // suppresses this error
+ }
+
+ if ($this->allowDereferencingNonObjects && preg_match(
+ '/^Attempt to read property ".+?" on/',
+ $errstr
+ )) {
+ return; // suppresses this error
+ }
+
+ // pass all other errors through to the previous error handler or to the default PHP error handler
+ return $this->previousErrorHandler ?
+ call_user_func($this->previousErrorHandler, $errno, $errstr, $errfile, $errline, $errcontext) : false;
+ }
+}
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_extension_handler.php b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_extension_handler.php
new file mode 100644
index 000000000..3ef040ab1
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_extension_handler.php
@@ -0,0 +1,197 @@
+ 0, 'DefaultModifiers' => 0, 'ConfigVars' => 0,
+ 'DebugTemplate' => 0, 'RegisteredObject' => 0, 'StreamVariable' => 0,
+ 'TemplateVars' => 0, 'Literals' => 'Literals',
+ );//
+
+ private $resolvedProperties = array();
+
+ /**
+ * Call external Method
+ *
+ * @param \Smarty_Internal_Data $data
+ * @param string $name external method names
+ * @param array $args argument array
+ *
+ * @return mixed
+ */
+ public function _callExternalMethod(Smarty_Internal_Data $data, $name, $args)
+ {
+ /* @var Smarty $data ->smarty */
+ $smarty = isset($data->smarty) ? $data->smarty : $data;
+ if (!isset($smarty->ext->$name)) {
+ if (preg_match('/^((set|get)|(.*?))([A-Z].*)$/', $name, $match)) {
+ $basename = $this->upperCase($match[ 4 ]);
+ if (!isset($smarty->ext->$basename) && isset($this->_property_info[ $basename ])
+ && is_string($this->_property_info[ $basename ])
+ ) {
+ $class = 'Smarty_Internal_Method_' . $this->_property_info[ $basename ];
+ if (class_exists($class)) {
+ $classObj = new $class();
+ $methodes = get_class_methods($classObj);
+ foreach ($methodes as $method) {
+ $smarty->ext->$method = $classObj;
+ }
+ }
+ }
+ if (!empty($match[ 2 ]) && !isset($smarty->ext->$name)) {
+ $class = 'Smarty_Internal_Method_' . $this->upperCase($name);
+ if (!class_exists($class)) {
+ $objType = $data->_objType;
+ $propertyType = false;
+ if (!isset($this->resolvedProperties[ $match[ 0 ] ][ $objType ])) {
+ $property = $this->resolvedProperties['property'][$basename] ??
+ $this->resolvedProperties['property'][$basename] = smarty_strtolower_ascii(
+ join(
+ '_',
+ preg_split(
+ '/([A-Z][^A-Z]*)/',
+ $basename,
+ -1,
+ PREG_SPLIT_NO_EMPTY |
+ PREG_SPLIT_DELIM_CAPTURE
+ )
+ )
+ );
+ if ($property !== false) {
+ if (property_exists($data, $property)) {
+ $propertyType = $this->resolvedProperties[ $match[ 0 ] ][ $objType ] = 1;
+ } elseif (property_exists($smarty, $property)) {
+ $propertyType = $this->resolvedProperties[ $match[ 0 ] ][ $objType ] = 2;
+ } else {
+ $this->resolvedProperties[ 'property' ][ $basename ] = $property = false;
+ }
+ }
+ } else {
+ $propertyType = $this->resolvedProperties[ $match[ 0 ] ][ $objType ];
+ $property = $this->resolvedProperties[ 'property' ][ $basename ];
+ }
+ if ($propertyType) {
+ $obj = $propertyType === 1 ? $data : $smarty;
+ if ($match[ 2 ] === 'get') {
+ return $obj->$property;
+ } elseif ($match[ 2 ] === 'set') {
+ return $obj->$property = $args[ 0 ];
+ }
+ }
+ }
+ }
+ }
+ }
+ $callback = array($smarty->ext->$name, $name);
+ array_unshift($args, $data);
+ if (isset($callback) && $callback[ 0 ]->objMap | $data->_objType) {
+ return call_user_func_array($callback, $args);
+ }
+ return call_user_func_array(array(new Smarty_Internal_Undefined(), $name), $args);
+ }
+
+ /**
+ * Make first character of name parts upper case
+ *
+ * @param string $name
+ *
+ * @return string
+ */
+ public function upperCase($name)
+ {
+ $_name = explode('_', $name);
+ $_name = array_map('smarty_ucfirst_ascii', $_name);
+ return implode('_', $_name);
+ }
+
+ /**
+ * get extension object
+ *
+ * @param string $property_name property name
+ *
+ * @return mixed|Smarty_Template_Cached
+ */
+ public function __get($property_name)
+ {
+ // object properties of runtime template extensions will start with '_'
+ if ($property_name[ 0 ] === '_') {
+ $class = 'Smarty_Internal_Runtime' . $this->upperCase($property_name);
+ } else {
+ $class = 'Smarty_Internal_Method_' . $this->upperCase($property_name);
+ }
+ if (!class_exists($class)) {
+ return $this->$property_name = new Smarty_Internal_Undefined($class);
+ }
+ return $this->$property_name = new $class();
+ }
+
+ /**
+ * set extension property
+ *
+ * @param string $property_name property name
+ * @param mixed $value value
+ *
+ */
+ public function __set($property_name, $value)
+ {
+ $this->$property_name = $value;
+ }
+
+ /**
+ * Call error handler for undefined method
+ *
+ * @param string $name unknown method-name
+ * @param array $args argument array
+ *
+ * @return mixed
+ */
+ public function __call($name, $args)
+ {
+ return call_user_func_array(array(new Smarty_Internal_Undefined(), $name), array($this));
+ }
+}
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_addautoloadfilters.php b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_addautoloadfilters.php
new file mode 100644
index 000000000..a05f55a82
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_addautoloadfilters.php
@@ -0,0 +1,53 @@
+_getSmartyObj();
+ if ($type !== null) {
+ $this->_checkFilterType($type);
+ if (!empty($smarty->autoload_filters[ $type ])) {
+ $smarty->autoload_filters[ $type ] = array_merge($smarty->autoload_filters[ $type ], (array)$filters);
+ } else {
+ $smarty->autoload_filters[ $type ] = (array)$filters;
+ }
+ } else {
+ foreach ((array)$filters as $type => $value) {
+ $this->_checkFilterType($type);
+ if (!empty($smarty->autoload_filters[ $type ])) {
+ $smarty->autoload_filters[ $type ] =
+ array_merge($smarty->autoload_filters[ $type ], (array)$value);
+ } else {
+ $smarty->autoload_filters[ $type ] = (array)$value;
+ }
+ }
+ }
+ return $obj;
+ }
+}
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_adddefaultmodifiers.php b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_adddefaultmodifiers.php
new file mode 100644
index 000000000..c3feb3d8b
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_adddefaultmodifiers.php
@@ -0,0 +1,42 @@
+_getSmartyObj();
+ if (is_array($modifiers)) {
+ $smarty->default_modifiers = array_merge($smarty->default_modifiers, $modifiers);
+ } else {
+ $smarty->default_modifiers[] = $modifiers;
+ }
+ return $obj;
+ }
+}
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_append.php b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_append.php
new file mode 100644
index 000000000..e207734e8
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_append.php
@@ -0,0 +1,74 @@
+ $_val) {
+ if ($_key !== '') {
+ $this->append($data, $_key, $_val, $merge, $nocache);
+ }
+ }
+ } else {
+ if ($tpl_var !== '' && isset($value)) {
+ if (!isset($data->tpl_vars[ $tpl_var ])) {
+ $tpl_var_inst = $data->ext->getTemplateVars->_getVariable($data, $tpl_var, null, true, false);
+ if ($tpl_var_inst instanceof Smarty_Undefined_Variable) {
+ $data->tpl_vars[ $tpl_var ] = new Smarty_Variable(null, $nocache);
+ } else {
+ $data->tpl_vars[ $tpl_var ] = clone $tpl_var_inst;
+ }
+ }
+ if (!(is_array($data->tpl_vars[ $tpl_var ]->value)
+ || $data->tpl_vars[ $tpl_var ]->value instanceof ArrayAccess)
+ ) {
+ settype($data->tpl_vars[ $tpl_var ]->value, 'array');
+ }
+ if ($merge && is_array($value)) {
+ foreach ($value as $_mkey => $_mval) {
+ $data->tpl_vars[ $tpl_var ]->value[ $_mkey ] = $_mval;
+ }
+ } else {
+ $data->tpl_vars[ $tpl_var ]->value[] = $value;
+ }
+ }
+ if ($data->_isTplObj() && $data->scope) {
+ $data->ext->_updateScope->_updateScope($data, $tpl_var);
+ }
+ }
+ return $data;
+ }
+}
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_appendbyref.php b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_appendbyref.php
new file mode 100644
index 000000000..b5be69b54
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_appendbyref.php
@@ -0,0 +1,49 @@
+tpl_vars[ $tpl_var ])) {
+ $data->tpl_vars[ $tpl_var ] = new Smarty_Variable();
+ }
+ if (!is_array($data->tpl_vars[ $tpl_var ]->value)) {
+ settype($data->tpl_vars[ $tpl_var ]->value, 'array');
+ }
+ if ($merge && is_array($value)) {
+ foreach ($value as $_key => $_val) {
+ $data->tpl_vars[ $tpl_var ]->value[ $_key ] = &$value[ $_key ];
+ }
+ } else {
+ $data->tpl_vars[ $tpl_var ]->value[] = &$value;
+ }
+ if ($data->_isTplObj() && $data->scope) {
+ $data->ext->_updateScope->_updateScope($data, $tpl_var);
+ }
+ }
+ return $data;
+ }
+}
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_assignbyref.php b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_assignbyref.php
new file mode 100644
index 000000000..fa705bb80
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_assignbyref.php
@@ -0,0 +1,36 @@
+tpl_vars[ $tpl_var ] = new Smarty_Variable(null, $nocache);
+ $data->tpl_vars[ $tpl_var ]->value = &$value;
+ if ($data->_isTplObj() && $data->scope) {
+ $data->ext->_updateScope->_updateScope($data, $tpl_var);
+ }
+ }
+ return $data;
+ }
+}
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_assignglobal.php b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_assignglobal.php
new file mode 100644
index 000000000..08cfa4693
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_assignglobal.php
@@ -0,0 +1,44 @@
+_isTplObj()) {
+ $ptr->tpl_vars[ $varName ] = clone Smarty::$global_tpl_vars[ $varName ];
+ $ptr = $ptr->parent;
+ }
+ }
+ return $data;
+ }
+}
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_clearallassign.php b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_clearallassign.php
new file mode 100644
index 000000000..6fb0c8f3d
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_clearallassign.php
@@ -0,0 +1,36 @@
+tpl_vars = array();
+ return $data;
+ }
+}
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_clearallcache.php b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_clearallcache.php
new file mode 100644
index 000000000..b74d30580
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_clearallcache.php
@@ -0,0 +1,41 @@
+_clearTemplateCache();
+ // load cache resource and call clearAll
+ $_cache_resource = Smarty_CacheResource::load($smarty, $type);
+ return $_cache_resource->clearAll($smarty, $exp_time);
+ }
+}
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_clearassign.php b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_clearassign.php
new file mode 100644
index 000000000..12b755c06
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_clearassign.php
@@ -0,0 +1,43 @@
+tpl_vars[ $curr_var ]);
+ }
+ } else {
+ unset($data->tpl_vars[ $tpl_var ]);
+ }
+ return $data;
+ }
+}
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_clearcache.php b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_clearcache.php
new file mode 100644
index 000000000..df766eee8
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_clearcache.php
@@ -0,0 +1,50 @@
+_clearTemplateCache();
+ // load cache resource and call clear
+ $_cache_resource = Smarty_CacheResource::load($smarty, $type);
+ return $_cache_resource->clear($smarty, $template_name, $cache_id, $compile_id, $exp_time);
+ }
+}
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_clearcompiledtemplate.php b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_clearcompiledtemplate.php
new file mode 100644
index 000000000..db0a49b00
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_clearcompiledtemplate.php
@@ -0,0 +1,131 @@
+_clearTemplateCache();
+ $_compile_dir = $smarty->getCompileDir();
+ if ($_compile_dir === '/') { //We should never want to delete this!
+ return 0;
+ }
+ $_compile_id = isset($compile_id) ? preg_replace('![^\w]+!', '_', $compile_id) : null;
+ $_dir_sep = $smarty->use_sub_dirs ? DIRECTORY_SEPARATOR : '^';
+ if (isset($resource_name)) {
+ $_save_stat = $smarty->caching;
+ $smarty->caching = Smarty::CACHING_OFF;
+ /* @var Smarty_Internal_Template $tpl */
+ $tpl = $smarty->createTemplate($resource_name);
+ $smarty->caching = $_save_stat;
+ if (!$tpl->source->handler->uncompiled && !$tpl->source->handler->recompiled && $tpl->source->exists) {
+ $_resource_part_1 = basename(str_replace('^', DIRECTORY_SEPARATOR, $tpl->compiled->filepath));
+ $_resource_part_1_length = strlen($_resource_part_1);
+ } else {
+ return 0;
+ }
+ $_resource_part_2 = str_replace('.php', '.cache.php', $_resource_part_1);
+ $_resource_part_2_length = strlen($_resource_part_2);
+ }
+ $_dir = $_compile_dir;
+ if ($smarty->use_sub_dirs && isset($_compile_id)) {
+ $_dir .= $_compile_id . $_dir_sep;
+ }
+ if (isset($_compile_id)) {
+ $_compile_id_part = $_compile_dir . $_compile_id . $_dir_sep;
+ $_compile_id_part_length = strlen($_compile_id_part);
+ }
+ $_count = 0;
+ try {
+ $_compileDirs = new RecursiveDirectoryIterator($_dir);
+ // NOTE: UnexpectedValueException thrown for PHP >= 5.3
+ } catch (Exception $e) {
+ return 0;
+ }
+ $_compile = new RecursiveIteratorIterator($_compileDirs, RecursiveIteratorIterator::CHILD_FIRST);
+ foreach ($_compile as $_file) {
+ if (substr(basename($_file->getPathname()), 0, 1) === '.') {
+ continue;
+ }
+ $_filepath = (string)$_file;
+ if ($_file->isDir()) {
+ if (!$_compile->isDot()) {
+ // delete folder if empty
+ @rmdir($_file->getPathname());
+ }
+ } else {
+ // delete only php files
+ if (substr($_filepath, -4) !== '.php') {
+ continue;
+ }
+ $unlink = false;
+ if ((!isset($_compile_id) ||
+ (isset($_filepath[ $_compile_id_part_length ]) &&
+ $a = !strncmp($_filepath, $_compile_id_part, $_compile_id_part_length)))
+ && (!isset($resource_name) || (isset($_filepath[ $_resource_part_1_length ])
+ && substr_compare(
+ $_filepath,
+ $_resource_part_1,
+ -$_resource_part_1_length,
+ $_resource_part_1_length
+ ) === 0) || (isset($_filepath[ $_resource_part_2_length ])
+ && substr_compare(
+ $_filepath,
+ $_resource_part_2,
+ -$_resource_part_2_length,
+ $_resource_part_2_length
+ ) === 0))
+ ) {
+ if (isset($exp_time)) {
+ if (is_file($_filepath) && time() - filemtime($_filepath) >= $exp_time) {
+ $unlink = true;
+ }
+ } else {
+ $unlink = true;
+ }
+ }
+ if ($unlink && is_file($_filepath) && @unlink($_filepath)) {
+ $_count++;
+ if (function_exists('opcache_invalidate')
+ && (!function_exists('ini_get') || strlen(ini_get('opcache.restrict_api')) < 1)
+ ) {
+ opcache_invalidate($_filepath, true);
+ } elseif (function_exists('apc_delete_file')) {
+ apc_delete_file($_filepath);
+ }
+ }
+ }
+ }
+ return $_count;
+ }
+}
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_clearconfig.php b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_clearconfig.php
new file mode 100644
index 000000000..d1b730322
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_clearconfig.php
@@ -0,0 +1,41 @@
+config_vars[ $name ]);
+ } else {
+ $data->config_vars = array();
+ }
+ return $data;
+ }
+}
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_compileallconfig.php b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_compileallconfig.php
new file mode 100644
index 000000000..3934ca042
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_compileallconfig.php
@@ -0,0 +1,36 @@
+compileAll($smarty, $extension, $force_compile, $time_limit, $max_errors, true);
+ }
+}
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_compilealltemplates.php b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_compilealltemplates.php
new file mode 100644
index 000000000..5c046da40
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_compilealltemplates.php
@@ -0,0 +1,130 @@
+compileAll($smarty, $extension, $force_compile, $time_limit, $max_errors);
+ }
+
+ /**
+ * Compile all template or config files
+ *
+ * @param \Smarty $smarty
+ * @param string $extension template file name extension
+ * @param bool $force_compile force all to recompile
+ * @param int $time_limit set maximum execution time
+ * @param int $max_errors set maximum allowed errors
+ * @param bool $isConfig flag true if called for config files
+ *
+ * @return int number of template files compiled
+ */
+ protected function compileAll(
+ Smarty $smarty,
+ $extension,
+ $force_compile,
+ $time_limit,
+ $max_errors,
+ $isConfig = false
+ ) {
+ // switch off time limit
+ if (function_exists('set_time_limit')) {
+ @set_time_limit($time_limit);
+ }
+ $_count = 0;
+ $_error_count = 0;
+ $sourceDir = $isConfig ? $smarty->getConfigDir() : $smarty->getTemplateDir();
+ // loop over array of source directories
+ foreach ($sourceDir as $_dir) {
+ $_dir_1 = new RecursiveDirectoryIterator(
+ $_dir,
+ defined('FilesystemIterator::FOLLOW_SYMLINKS') ?
+ FilesystemIterator::FOLLOW_SYMLINKS : 0
+ );
+ $_dir_2 = new RecursiveIteratorIterator($_dir_1);
+ foreach ($_dir_2 as $_fileinfo) {
+ $_file = $_fileinfo->getFilename();
+ if (substr(basename($_fileinfo->getPathname()), 0, 1) === '.' || strpos($_file, '.svn') !== false) {
+ continue;
+ }
+ if (substr_compare($_file, $extension, -strlen($extension)) !== 0) {
+ continue;
+ }
+ if ($_fileinfo->getPath() !== substr($_dir, 0, -1)) {
+ $_file = substr($_fileinfo->getPath(), strlen($_dir)) . DIRECTORY_SEPARATOR . $_file;
+ }
+ echo "\n ", $_dir, '---', $_file;
+ flush();
+ $_start_time = microtime(true);
+ $_smarty = clone $smarty;
+ //
+ $_smarty->_cache = array();
+ $_smarty->ext = new Smarty_Internal_Extension_Handler();
+ $_smarty->ext->objType = $_smarty->_objType;
+ $_smarty->force_compile = $force_compile;
+ try {
+ /* @var Smarty_Internal_Template $_tpl */
+ $_tpl = new $smarty->template_class($_file, $_smarty);
+ $_tpl->caching = Smarty::CACHING_OFF;
+ $_tpl->source =
+ $isConfig ? Smarty_Template_Config::load($_tpl) : Smarty_Template_Source::load($_tpl);
+ if ($_tpl->mustCompile()) {
+ $_tpl->compileTemplateSource();
+ $_count++;
+ echo ' compiled in ', microtime(true) - $_start_time, ' seconds';
+ flush();
+ } else {
+ echo ' is up to date';
+ flush();
+ }
+ } catch (Exception $e) {
+ echo "\n ------>Error: ", $e->getMessage(), " \n";
+ $_error_count++;
+ }
+ // free memory
+ unset($_tpl);
+ $_smarty->_clearTemplateCache();
+ if ($max_errors !== null && $_error_count === $max_errors) {
+ echo "\n too many errors\n";
+ exit(1);
+ }
+ }
+ }
+ echo "\n ";
+ return $_count;
+ }
+}
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_configload.php b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_configload.php
new file mode 100644
index 000000000..c3174d2d0
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_configload.php
@@ -0,0 +1,182 @@
+_loadConfigFile($data, $config_file, $sections, null);
+ return $data;
+ }
+
+ /**
+ * load a config file, optionally load just selected sections
+ *
+ * @api Smarty::configLoad()
+ * @link https://www.smarty.net/docs/en/api.config.load.tpl
+ *
+ * @param \Smarty|\Smarty_Internal_Data|\Smarty_Internal_Template $data
+ * @param string $config_file filename
+ * @param mixed $sections array of section names, single
+ * section or null
+ * @param int $scope scope into which config variables
+ * shall be loaded
+ *
+ * @throws \Exception
+ */
+ public function _loadConfigFile(Smarty_Internal_Data $data, $config_file, $sections = null, $scope = 0)
+ {
+ /* @var \Smarty $smarty */
+ $smarty = $data->_getSmartyObj();
+ /* @var \Smarty_Internal_Template $confObj */
+ $confObj = new Smarty_Internal_Template($config_file, $smarty, $data, null, null, null, null, true);
+ $confObj->caching = Smarty::CACHING_OFF;
+ $confObj->source->config_sections = $sections;
+ $confObj->source->scope = $scope;
+ $confObj->compiled = Smarty_Template_Compiled::load($confObj);
+ $confObj->compiled->render($confObj);
+ if ($data->_isTplObj()) {
+ $data->compiled->file_dependency[ $confObj->source->uid ] =
+ array($confObj->source->filepath, $confObj->source->getTimeStamp(), $confObj->source->type);
+ }
+ }
+
+ /**
+ * load config variables into template object
+ *
+ * @param \Smarty_Internal_Template $tpl
+ * @param array $new_config_vars
+ */
+ public function _loadConfigVars(Smarty_Internal_Template $tpl, $new_config_vars)
+ {
+ $this->_assignConfigVars($tpl->parent->config_vars, $tpl, $new_config_vars);
+ $tagScope = $tpl->source->scope;
+ if ($tagScope >= 0) {
+ if ($tagScope === Smarty::SCOPE_LOCAL) {
+ $this->_updateVarStack($tpl, $new_config_vars);
+ $tagScope = 0;
+ if (!$tpl->scope) {
+ return;
+ }
+ }
+ if ($tpl->parent->_isTplObj() && ($tagScope || $tpl->parent->scope)) {
+ $mergedScope = $tagScope | $tpl->scope;
+ if ($mergedScope) {
+ // update scopes
+ /* @var \Smarty_Internal_Template|\Smarty|\Smarty_Internal_Data $ptr */
+ foreach ($tpl->smarty->ext->_updateScope->_getAffectedScopes($tpl->parent, $mergedScope) as $ptr) {
+ $this->_assignConfigVars($ptr->config_vars, $tpl, $new_config_vars);
+ if ($tagScope && $ptr->_isTplObj() && isset($tpl->_cache[ 'varStack' ])) {
+ $this->_updateVarStack($tpl, $new_config_vars);
+ }
+ }
+ }
+ }
+ }
+ }
+
+ /**
+ * Assign all config variables in given scope
+ *
+ * @param array $config_vars config variables in scope
+ * @param \Smarty_Internal_Template $tpl
+ * @param array $new_config_vars loaded config variables
+ */
+ public function _assignConfigVars(&$config_vars, Smarty_Internal_Template $tpl, $new_config_vars)
+ {
+ // copy global config vars
+ foreach ($new_config_vars[ 'vars' ] as $variable => $value) {
+ if ($tpl->smarty->config_overwrite || !isset($config_vars[ $variable ])) {
+ $config_vars[ $variable ] = $value;
+ } else {
+ $config_vars[ $variable ] = array_merge((array)$config_vars[ $variable ], (array)$value);
+ }
+ }
+ // scan sections
+ $sections = $tpl->source->config_sections;
+ if (!empty($sections)) {
+ foreach ((array)$sections as $tpl_section) {
+ if (isset($new_config_vars[ 'sections' ][ $tpl_section ])) {
+ foreach ($new_config_vars[ 'sections' ][ $tpl_section ][ 'vars' ] as $variable => $value) {
+ if ($tpl->smarty->config_overwrite || !isset($config_vars[ $variable ])) {
+ $config_vars[ $variable ] = $value;
+ } else {
+ $config_vars[ $variable ] = array_merge((array)$config_vars[ $variable ], (array)$value);
+ }
+ }
+ }
+ }
+ }
+ }
+
+ /**
+ * Update config variables in template local variable stack
+ *
+ * @param \Smarty_Internal_Template $tpl
+ * @param array $config_vars
+ */
+ public function _updateVarStack(Smarty_Internal_Template $tpl, $config_vars)
+ {
+ $i = 0;
+ while (isset($tpl->_cache[ 'varStack' ][ $i ])) {
+ $this->_assignConfigVars($tpl->_cache[ 'varStack' ][ $i ][ 'config' ], $tpl, $config_vars);
+ $i++;
+ }
+ }
+
+ /**
+ * gets a config variable value
+ *
+ * @param \Smarty|\Smarty_Internal_Data|\Smarty_Internal_Template $data
+ * @param string $varName the name of the config variable
+ * @param bool $errorEnable
+ *
+ * @return null|string the value of the config variable
+ */
+ public function _getConfigVariable(Smarty_Internal_Data $data, $varName, $errorEnable = true)
+ {
+ $_ptr = $data;
+ while ($_ptr !== null) {
+ if (isset($_ptr->config_vars[ $varName ])) {
+ // found it, return it
+ return $_ptr->config_vars[ $varName ];
+ }
+ // not found, try at parent
+ $_ptr = $_ptr->parent;
+ }
+ if ($data->smarty->error_unassigned && $errorEnable) {
+ // force a notice
+ $x = $$varName;
+ }
+ return null;
+ }
+}
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_createdata.php b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_createdata.php
new file mode 100644
index 000000000..c684c0870
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_createdata.php
@@ -0,0 +1,44 @@
+_getSmartyObj();
+ $dataObj = new Smarty_Data($parent, $smarty, $name);
+ if ($smarty->debugging) {
+ Smarty_Internal_Debug::register_data($dataObj);
+ }
+ return $dataObj;
+ }
+}
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_getautoloadfilters.php b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_getautoloadfilters.php
new file mode 100644
index 000000000..4145db10b
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_getautoloadfilters.php
@@ -0,0 +1,37 @@
+ array( 'filter1', 'filter2', … ) ) or array( 'filter1', 'filter2', …) if $type
+ * was specified
+ * @throws \SmartyException
+ */
+ public function getAutoloadFilters(Smarty_Internal_TemplateBase $obj, $type = null)
+ {
+ $smarty = $obj->_getSmartyObj();
+ if ($type !== null) {
+ $this->_checkFilterType($type);
+ return isset($smarty->autoload_filters[ $type ]) ? $smarty->autoload_filters[ $type ] : array();
+ }
+ return $smarty->autoload_filters;
+ }
+}
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_getconfigvariable.php b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_getconfigvariable.php
new file mode 100644
index 000000000..b54815123
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_getconfigvariable.php
@@ -0,0 +1,34 @@
+ext->configLoad->_getConfigVariable($data, $varName, $errorEnable);
+ }
+}
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_getconfigvars.php b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_getconfigvars.php
new file mode 100644
index 000000000..763bdf989
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_getconfigvars.php
@@ -0,0 +1,58 @@
+config_vars[ $varname ])) {
+ return $_ptr->config_vars[ $varname ];
+ }
+ } else {
+ $var_array = array_merge($_ptr->config_vars, $var_array);
+ }
+ // not found, try at parent
+ if ($search_parents) {
+ $_ptr = $_ptr->parent;
+ } else {
+ $_ptr = null;
+ }
+ }
+ if (isset($varname)) {
+ return '';
+ } else {
+ return $var_array;
+ }
+ }
+}
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_getdebugtemplate.php b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_getdebugtemplate.php
new file mode 100644
index 000000000..77d908c15
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_getdebugtemplate.php
@@ -0,0 +1,35 @@
+_getSmartyObj();
+ return $smarty->debug_tpl;
+ }
+}
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_getdefaultmodifiers.php b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_getdefaultmodifiers.php
new file mode 100644
index 000000000..57da85c49
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_getdefaultmodifiers.php
@@ -0,0 +1,35 @@
+_getSmartyObj();
+ return $smarty->default_modifiers;
+ }
+}
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_getglobal.php b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_getglobal.php
new file mode 100644
index 000000000..2be11d7e8
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_getglobal.php
@@ -0,0 +1,47 @@
+value;
+ } else {
+ return '';
+ }
+ } else {
+ $_result = array();
+ foreach (Smarty::$global_tpl_vars as $key => $var) {
+ $_result[ $key ] = $var->value;
+ }
+ return $_result;
+ }
+ }
+}
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_getregisteredobject.php b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_getregisteredobject.php
new file mode 100644
index 000000000..0b3a071d3
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_getregisteredobject.php
@@ -0,0 +1,44 @@
+_getSmartyObj();
+ if (!isset($smarty->registered_objects[ $object_name ])) {
+ throw new SmartyException("'$object_name' is not a registered object");
+ }
+ if (!is_object($smarty->registered_objects[ $object_name ][ 0 ])) {
+ throw new SmartyException("registered '$object_name' is not an object");
+ }
+ return $smarty->registered_objects[ $object_name ][ 0 ];
+ }
+}
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_getstreamvariable.php b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_getstreamvariable.php
new file mode 100644
index 000000000..8db39c525
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_getstreamvariable.php
@@ -0,0 +1,50 @@
+smarty) ? $data->smarty : $data;
+ if ($smarty->error_unassigned) {
+ throw new SmartyException('Undefined stream variable "' . $variable . '"');
+ } else {
+ return null;
+ }
+ }
+}
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_gettags.php b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_gettags.php
new file mode 100644
index 000000000..0d1335a8d
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_gettags.php
@@ -0,0 +1,63 @@
+_getSmartyObj();
+ if ($obj->_isTplObj() && !isset($template)) {
+ $tpl = clone $obj;
+ } elseif (isset($template) && $template->_isTplObj()) {
+ $tpl = clone $template;
+ } elseif (isset($template) && is_string($template)) {
+ /* @var Smarty_Internal_Template $tpl */
+ $tpl = new $smarty->template_class($template, $smarty);
+ // checks if template exists
+ if (!$tpl->source->exists) {
+ throw new SmartyException("Unable to load template {$tpl->source->type} '{$tpl->source->name}'");
+ }
+ }
+ if (isset($tpl)) {
+ $tpl->smarty = clone $tpl->smarty;
+ $tpl->smarty->_cache[ 'get_used_tags' ] = true;
+ $tpl->_cache[ 'used_tags' ] = array();
+ $tpl->smarty->merge_compiled_includes = false;
+ $tpl->smarty->disableSecurity();
+ $tpl->caching = Smarty::CACHING_OFF;
+ $tpl->loadCompiler();
+ $tpl->compiler->compileTemplate($tpl);
+ return $tpl->_cache[ 'used_tags' ];
+ }
+ throw new SmartyException('Missing template specification');
+ }
+}
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_gettemplatevars.php b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_gettemplatevars.php
new file mode 100644
index 000000000..0470785b1
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_gettemplatevars.php
@@ -0,0 +1,119 @@
+_getVariable($data, $varName, $_ptr, $searchParents, false);
+ if (is_object($_var)) {
+ return $_var->value;
+ } else {
+ return null;
+ }
+ } else {
+ $_result = array();
+ if ($_ptr === null) {
+ $_ptr = $data;
+ }
+ while ($_ptr !== null) {
+ foreach ($_ptr->tpl_vars as $key => $var) {
+ if (!array_key_exists($key, $_result)) {
+ $_result[ $key ] = $var->value;
+ }
+ }
+ // not found, try at parent
+ if ($searchParents && isset($_ptr->parent)) {
+ $_ptr = $_ptr->parent;
+ } else {
+ $_ptr = null;
+ }
+ }
+ if ($searchParents && isset(Smarty::$global_tpl_vars)) {
+ foreach (Smarty::$global_tpl_vars as $key => $var) {
+ if (!array_key_exists($key, $_result)) {
+ $_result[ $key ] = $var->value;
+ }
+ }
+ }
+ return $_result;
+ }
+ }
+
+ /**
+ * gets the object of a Smarty variable
+ *
+ * @param \Smarty_Internal_Data|\Smarty_Internal_Template|\Smarty $data
+ * @param string $varName the name of the Smarty variable
+ * @param \Smarty_Internal_Data|\Smarty_Internal_Template|\Smarty $_ptr optional pointer to data object
+ * @param bool $searchParents search also in parent data
+ * @param bool $errorEnable
+ *
+ * @return \Smarty_Variable
+ */
+ public function _getVariable(
+ Smarty_Internal_Data $data,
+ $varName,
+ Smarty_Internal_Data $_ptr = null,
+ $searchParents = true,
+ $errorEnable = true
+ ) {
+ if ($_ptr === null) {
+ $_ptr = $data;
+ }
+ while ($_ptr !== null) {
+ if (isset($_ptr->tpl_vars[ $varName ])) {
+ // found it, return it
+ return $_ptr->tpl_vars[ $varName ];
+ }
+ // not found, try at parent
+ if ($searchParents && isset($_ptr->parent)) {
+ $_ptr = $_ptr->parent;
+ } else {
+ $_ptr = null;
+ }
+ }
+ if (isset(Smarty::$global_tpl_vars[ $varName ])) {
+ // found it, return it
+ return Smarty::$global_tpl_vars[ $varName ];
+ }
+ if ($errorEnable && $data->_getSmartyObj()->error_unassigned) {
+ // force a notice
+ $x = $$varName;
+ }
+ return new Smarty_Undefined_Variable;
+ }
+}
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_literals.php b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_literals.php
new file mode 100644
index 000000000..bfa3f58ec
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_literals.php
@@ -0,0 +1,100 @@
+_getSmartyObj();
+ return (array)$smarty->literals;
+ }
+
+ /**
+ * Add literals
+ *
+ * @api Smarty::addLiterals()
+ *
+ * @param \Smarty_Internal_TemplateBase|\Smarty_Internal_Template|\Smarty $obj
+ * @param array|string $literals literal or list of literals
+ * to addto add
+ *
+ * @return \Smarty|\Smarty_Internal_Template
+ * @throws \SmartyException
+ */
+ public function addLiterals(Smarty_Internal_TemplateBase $obj, $literals = null)
+ {
+ if (isset($literals)) {
+ $this->set($obj->_getSmartyObj(), (array)$literals);
+ }
+ return $obj;
+ }
+
+ /**
+ * Set literals
+ *
+ * @api Smarty::setLiterals()
+ *
+ * @param \Smarty_Internal_TemplateBase|\Smarty_Internal_Template|\Smarty $obj
+ * @param array|string $literals literal or list of literals
+ * to setto set
+ *
+ * @return \Smarty|\Smarty_Internal_Template
+ * @throws \SmartyException
+ */
+ public function setLiterals(Smarty_Internal_TemplateBase $obj, $literals = null)
+ {
+ $smarty = $obj->_getSmartyObj();
+ $smarty->literals = array();
+ if (!empty($literals)) {
+ $this->set($smarty, (array)$literals);
+ }
+ return $obj;
+ }
+
+ /**
+ * common setter for literals for easier handling of duplicates the
+ * Smarty::$literals array gets filled with identical key values
+ *
+ * @param \Smarty $smarty
+ * @param array $literals
+ *
+ * @throws \SmartyException
+ */
+ private function set(Smarty $smarty, $literals)
+ {
+ $literals = array_combine($literals, $literals);
+ $error = isset($literals[ $smarty->left_delimiter ]) ? array($smarty->left_delimiter) : array();
+ $error = isset($literals[ $smarty->right_delimiter ]) ? $error[] = $smarty->right_delimiter : $error;
+ if (!empty($error)) {
+ throw new SmartyException(
+ 'User defined literal(s) "' . $error .
+ '" may not be identical with left or right delimiter'
+ );
+ }
+ $smarty->literals = array_merge((array)$smarty->literals, (array)$literals);
+ }
+}
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_loadfilter.php b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_loadfilter.php
new file mode 100644
index 000000000..af788a24e
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_loadfilter.php
@@ -0,0 +1,77 @@
+ true, 'post' => true, 'output' => true, 'variable' => true);
+
+ /**
+ * load a filter of specified type and name
+ *
+ * @api Smarty::loadFilter()
+ *
+ * @link https://www.smarty.net/docs/en/api.load.filter.tpl
+ *
+ * @param \Smarty_Internal_TemplateBase|\Smarty_Internal_Template|\Smarty $obj
+ * @param string $type filter type
+ * @param string $name filter name
+ *
+ * @return bool
+ * @throws SmartyException if filter could not be loaded
+ */
+ public function loadFilter(Smarty_Internal_TemplateBase $obj, $type, $name)
+ {
+ $smarty = $obj->_getSmartyObj();
+ $this->_checkFilterType($type);
+ $_plugin = "smarty_{$type}filter_{$name}";
+ $_filter_name = $_plugin;
+ if (is_callable($_plugin)) {
+ $smarty->registered_filters[ $type ][ $_filter_name ] = $_plugin;
+ return true;
+ }
+ if ($smarty->loadPlugin($_plugin)) {
+ if (class_exists($_plugin, false)) {
+ $_plugin = array($_plugin, 'execute');
+ }
+ if (is_callable($_plugin)) {
+ $smarty->registered_filters[ $type ][ $_filter_name ] = $_plugin;
+ return true;
+ }
+ }
+ throw new SmartyException("{$type}filter '{$name}' not found or callable");
+ }
+
+ /**
+ * Check if filter type is valid
+ *
+ * @param string $type
+ *
+ * @throws \SmartyException
+ */
+ public function _checkFilterType($type)
+ {
+ if (!isset($this->filterTypes[ $type ])) {
+ throw new SmartyException("Illegal filter type '{$type}'");
+ }
+ }
+}
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_loadplugin.php b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_loadplugin.php
new file mode 100644
index 000000000..6ddcaec94
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_loadplugin.php
@@ -0,0 +1,111 @@
+loadPlugin() method
+ *
+ * @package Smarty
+ * @subpackage PluginsInternal
+ * @author Uwe Tews
+ */
+class Smarty_Internal_Method_LoadPlugin
+{
+ /**
+ * Cache of searched plugin files
+ *
+ * @var array
+ */
+ public $plugin_files = array();
+
+ /**
+ * Takes unknown classes and loads plugin files for them
+ * class name format: Smarty_PluginType_PluginName
+ * plugin filename format: plugintype.pluginname.php
+ *
+ * @param \Smarty $smarty
+ * @param string $plugin_name class plugin name to load
+ * @param bool $check check if already loaded
+ *
+ * @return bool|string
+ * @throws \SmartyException
+ */
+ public function loadPlugin(Smarty $smarty, $plugin_name, $check)
+ {
+ // if function or class exists, exit silently (already loaded)
+ if ($check && (is_callable($plugin_name) || class_exists($plugin_name, false))) {
+ return true;
+ }
+ if (!preg_match('#^smarty_((internal)|([^_]+))_(.+)$#i', $plugin_name, $match)) {
+ throw new SmartyException("plugin {$plugin_name} is not a valid name format");
+ }
+ if (!empty($match[ 2 ])) {
+ $file = SMARTY_SYSPLUGINS_DIR . smarty_strtolower_ascii($plugin_name) . '.php';
+ if (isset($this->plugin_files[ $file ])) {
+ if ($this->plugin_files[ $file ] !== false) {
+ return $this->plugin_files[ $file ];
+ } else {
+ return false;
+ }
+ } else {
+ if (is_file($file)) {
+ $this->plugin_files[ $file ] = $file;
+ include_once $file;
+ return $file;
+ } else {
+ $this->plugin_files[ $file ] = false;
+ return false;
+ }
+ }
+ }
+ // plugin filename is expected to be: [type].[name].php
+ $_plugin_filename = "{$match[1]}.{$match[4]}.php";
+ $_lower_filename = smarty_strtolower_ascii($_plugin_filename);
+ if (isset($this->plugin_files)) {
+ if (isset($this->plugin_files[ 'plugins_dir' ][ $_lower_filename ])) {
+ if (!$smarty->use_include_path || $this->plugin_files[ 'plugins_dir' ][ $_lower_filename ] !== false) {
+ return $this->plugin_files[ 'plugins_dir' ][ $_lower_filename ];
+ }
+ }
+ if (!$smarty->use_include_path || $smarty->ext->_getIncludePath->isNewIncludePath($smarty)) {
+ unset($this->plugin_files[ 'include_path' ]);
+ } else {
+ if (isset($this->plugin_files[ 'include_path' ][ $_lower_filename ])) {
+ return $this->plugin_files[ 'include_path' ][ $_lower_filename ];
+ }
+ }
+ }
+ $_file_names = array($_plugin_filename);
+ if ($_lower_filename !== $_plugin_filename) {
+ $_file_names[] = $_lower_filename;
+ }
+ $_p_dirs = $smarty->getPluginsDir();
+ if (!isset($this->plugin_files[ 'plugins_dir' ][ $_lower_filename ])) {
+ // loop through plugin dirs and find the plugin
+ foreach ($_p_dirs as $_plugin_dir) {
+ foreach ($_file_names as $name) {
+ $file = $_plugin_dir . $name;
+ if (is_file($file)) {
+ $this->plugin_files[ 'plugins_dir' ][ $_lower_filename ] = $file;
+ include_once $file;
+ return $file;
+ }
+ $this->plugin_files[ 'plugins_dir' ][ $_lower_filename ] = false;
+ }
+ }
+ }
+ if ($smarty->use_include_path) {
+ foreach ($_file_names as $_file_name) {
+ // try PHP include_path
+ $file = $smarty->ext->_getIncludePath->getIncludePath($_p_dirs, $_file_name, $smarty);
+ $this->plugin_files[ 'include_path' ][ $_lower_filename ] = $file;
+ if ($file !== false) {
+ include_once $file;
+ return $file;
+ }
+ }
+ }
+ // no plugin loaded
+ return false;
+ }
+}
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_mustcompile.php b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_mustcompile.php
new file mode 100644
index 000000000..381346c8f
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_mustcompile.php
@@ -0,0 +1,50 @@
+source->exists) {
+ if ($_template->_isSubTpl()) {
+ $parent_resource = " in '{$_template->parent->template_resource}'";
+ } else {
+ $parent_resource = '';
+ }
+ throw new SmartyException("Unable to load template {$_template->source->type} '{$_template->source->name}'{$parent_resource}");
+ }
+ if ($_template->mustCompile === null) {
+ $_template->mustCompile = (!$_template->source->handler->uncompiled &&
+ ($_template->smarty->force_compile || $_template->source->handler->recompiled ||
+ !$_template->compiled->exists || ($_template->compile_check &&
+ $_template->compiled->getTimeStamp() <
+ $_template->source->getTimeStamp())));
+ }
+ return $_template->mustCompile;
+ }
+}
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_registercacheresource.php b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_registercacheresource.php
new file mode 100644
index 000000000..5608b3fd0
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_registercacheresource.php
@@ -0,0 +1,42 @@
+_getSmartyObj();
+ $smarty->registered_cache_resources[ $name ] = $resource_handler;
+ return $obj;
+ }
+}
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_registerclass.php b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_registerclass.php
new file mode 100644
index 000000000..76a69c6e5
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_registerclass.php
@@ -0,0 +1,46 @@
+_getSmartyObj();
+ // test if exists
+ if (!class_exists($class_impl)) {
+ throw new SmartyException("Undefined class '$class_impl' in register template class");
+ }
+ // register the class
+ $smarty->registered_classes[ $class_name ] = $class_impl;
+ return $obj;
+ }
+}
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_registerdefaultconfighandler.php b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_registerdefaultconfighandler.php
new file mode 100644
index 000000000..b340f178d
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_registerdefaultconfighandler.php
@@ -0,0 +1,42 @@
+_getSmartyObj();
+ if (is_callable($callback)) {
+ $smarty->default_config_handler_func = $callback;
+ } else {
+ throw new SmartyException('Default config handler not callable');
+ }
+ return $obj;
+ }
+}
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_registerdefaultpluginhandler.php b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_registerdefaultpluginhandler.php
new file mode 100644
index 000000000..4cda5b056
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_registerdefaultpluginhandler.php
@@ -0,0 +1,43 @@
+_getSmartyObj();
+ if (is_callable($callback)) {
+ $smarty->default_plugin_handler_func = $callback;
+ } else {
+ throw new SmartyException("Default plugin handler '$callback' not callable");
+ }
+ return $obj;
+ }
+}
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_registerdefaulttemplatehandler.php b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_registerdefaulttemplatehandler.php
new file mode 100644
index 000000000..cbc133ccd
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_registerdefaulttemplatehandler.php
@@ -0,0 +1,88 @@
+_getSmartyObj();
+ if (is_callable($callback)) {
+ $smarty->default_template_handler_func = $callback;
+ } else {
+ throw new SmartyException('Default template handler not callable');
+ }
+ return $obj;
+ }
+
+ /**
+ * get default content from template or config resource handler
+ *
+ * @param Smarty_Template_Source $source
+ *
+ * @throws \SmartyException
+ */
+ public static function _getDefaultTemplate(Smarty_Template_Source $source)
+ {
+ if ($source->isConfig) {
+ $default_handler = $source->smarty->default_config_handler_func;
+ } else {
+ $default_handler = $source->smarty->default_template_handler_func;
+ }
+ $_content = $_timestamp = null;
+ $_return = call_user_func_array(
+ $default_handler,
+ array($source->type, $source->name, &$_content, &$_timestamp, $source->smarty)
+ );
+ if (is_string($_return)) {
+ $source->exists = is_file($_return);
+ if ($source->exists) {
+ $source->timestamp = filemtime($_return);
+ } else {
+ throw new SmartyException(
+ 'Default handler: Unable to load ' .
+ ($source->isConfig ? 'config' : 'template') .
+ " default file '{$_return}' for '{$source->type}:{$source->name}'"
+ );
+ }
+ $source->name = $source->filepath = $_return;
+ $source->uid = sha1($source->filepath);
+ } elseif ($_return === true) {
+ $source->content = $_content;
+ $source->exists = true;
+ $source->uid = $source->name = sha1($_content);
+ $source->handler = Smarty_Resource::load($source->smarty, 'eval');
+ } else {
+ $source->exists = false;
+ throw new SmartyException(
+ 'Default handler: No ' . ($source->isConfig ? 'config' : 'template') .
+ " default content for '{$source->type}:{$source->name}'"
+ );
+ }
+ }
+}
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_registerfilter.php b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_registerfilter.php
new file mode 100644
index 000000000..9719eb2b6
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_registerfilter.php
@@ -0,0 +1,87 @@
+ true, 'post' => true, 'output' => true, 'variable' => true);
+
+ /**
+ * Registers a filter function
+ *
+ * @api Smarty::registerFilter()
+ *
+ * @link https://www.smarty.net/docs/en/api.register.filter.tpl
+ *
+ * @param \Smarty_Internal_TemplateBase|\Smarty_Internal_Template|\Smarty $obj
+ * @param string $type filter type
+ * @param callback $callback
+ * @param string|null $name optional filter name
+ *
+ * @return \Smarty|\Smarty_Internal_Template
+ * @throws \SmartyException
+ */
+ public function registerFilter(Smarty_Internal_TemplateBase $obj, $type, $callback, $name = null)
+ {
+ $smarty = $obj->_getSmartyObj();
+ $this->_checkFilterType($type);
+ $name = isset($name) ? $name : $this->_getFilterName($callback);
+ if (!is_callable($callback)) {
+ throw new SmartyException("{$type}filter '{$name}' not callable");
+ }
+ $smarty->registered_filters[ $type ][ $name ] = $callback;
+ return $obj;
+ }
+
+ /**
+ * Return internal filter name
+ *
+ * @param callback $function_name
+ *
+ * @return string internal filter name
+ */
+ public function _getFilterName($function_name)
+ {
+ if (is_array($function_name)) {
+ $_class_name = (is_object($function_name[ 0 ]) ? get_class($function_name[ 0 ]) : $function_name[ 0 ]);
+ return $_class_name . '_' . $function_name[ 1 ];
+ } elseif (is_string($function_name)) {
+ return $function_name;
+ } else {
+ return 'closure';
+ }
+ }
+
+ /**
+ * Check if filter type is valid
+ *
+ * @param string $type
+ *
+ * @throws \SmartyException
+ */
+ public function _checkFilterType($type)
+ {
+ if (!isset($this->filterTypes[ $type ])) {
+ throw new SmartyException("Illegal filter type '{$type}'");
+ }
+ }
+}
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_registerobject.php b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_registerobject.php
new file mode 100644
index 000000000..8e6fe0521
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_registerobject.php
@@ -0,0 +1,84 @@
+_getSmartyObj();
+ // test if allowed methods callable
+ if (!empty($allowed_methods_properties)) {
+ foreach ((array)$allowed_methods_properties as $method) {
+ if (!is_callable(array($object, $method)) && !property_exists($object, $method)) {
+ throw new SmartyException("Undefined method or property '$method' in registered object");
+ }
+ }
+ }
+ // test if block methods callable
+ if (!empty($block_methods)) {
+ foreach ((array)$block_methods as $method) {
+ if (!is_callable(array($object, $method))) {
+ throw new SmartyException("Undefined method '$method' in registered object");
+ }
+ }
+ }
+ // register the object
+ $smarty->registered_objects[ $object_name ] =
+ array($object, (array)$allowed_methods_properties, (boolean)$format, (array)$block_methods);
+ return $obj;
+ }
+}
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_registerplugin.php b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_registerplugin.php
new file mode 100644
index 000000000..74c0ae908
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_registerplugin.php
@@ -0,0 +1,58 @@
+_getSmartyObj();
+ if (isset($smarty->registered_plugins[ $type ][ $name ])) {
+ throw new SmartyException("Plugin tag '{$name}' already registered");
+ } elseif (!is_callable($callback)) {
+ throw new SmartyException("Plugin '{$name}' not callable");
+ } elseif ($cacheable && $cache_attr) {
+ throw new SmartyException("Cannot set caching attributes for plugin '{$name}' when it is cacheable.");
+ } else {
+ $smarty->registered_plugins[ $type ][ $name ] = array($callback, (bool)$cacheable, (array)$cache_attr);
+ }
+ return $obj;
+ }
+}
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_registerresource.php b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_registerresource.php
new file mode 100644
index 000000000..302657ae0
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_registerresource.php
@@ -0,0 +1,39 @@
+_getSmartyObj();
+ $smarty->registered_resources[ $name ] = $resource_handler;
+ return $obj;
+ }
+}
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_setautoloadfilters.php b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_setautoloadfilters.php
new file mode 100644
index 000000000..2972f3ce1
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_setautoloadfilters.php
@@ -0,0 +1,72 @@
+ true, 'post' => true, 'output' => true, 'variable' => true);
+
+ /**
+ * Set autoload filters
+ *
+ * @api Smarty::setAutoloadFilters()
+ *
+ * @param \Smarty_Internal_TemplateBase|\Smarty_Internal_Template|\Smarty $obj
+ * @param array $filters filters to load automatically
+ * @param string $type "pre", "output", … specify
+ * the filter type to set.
+ * Defaults to none treating
+ * $filters' keys as the
+ * appropriate types
+ *
+ * @return \Smarty|\Smarty_Internal_Template
+ * @throws \SmartyException
+ */
+ public function setAutoloadFilters(Smarty_Internal_TemplateBase $obj, $filters, $type = null)
+ {
+ $smarty = $obj->_getSmartyObj();
+ if ($type !== null) {
+ $this->_checkFilterType($type);
+ $smarty->autoload_filters[ $type ] = (array)$filters;
+ } else {
+ foreach ((array)$filters as $type => $value) {
+ $this->_checkFilterType($type);
+ }
+ $smarty->autoload_filters = (array)$filters;
+ }
+ return $obj;
+ }
+
+ /**
+ * Check if filter type is valid
+ *
+ * @param string $type
+ *
+ * @throws \SmartyException
+ */
+ public function _checkFilterType($type)
+ {
+ if (!isset($this->filterTypes[ $type ])) {
+ throw new SmartyException("Illegal filter type '{$type}'");
+ }
+ }
+}
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_setdebugtemplate.php b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_setdebugtemplate.php
new file mode 100644
index 000000000..cc9d23e2a
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_setdebugtemplate.php
@@ -0,0 +1,41 @@
+_getSmartyObj();
+ if (!is_readable($tpl_name)) {
+ throw new SmartyException("Unknown file '{$tpl_name}'");
+ }
+ $smarty->debug_tpl = $tpl_name;
+ return $obj;
+ }
+}
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_setdefaultmodifiers.php b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_setdefaultmodifiers.php
new file mode 100644
index 000000000..eadc2de1b
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_setdefaultmodifiers.php
@@ -0,0 +1,38 @@
+_getSmartyObj();
+ $smarty->default_modifiers = (array)$modifiers;
+ return $obj;
+ }
+}
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_unloadfilter.php b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_unloadfilter.php
new file mode 100644
index 000000000..e41e8dffc
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_unloadfilter.php
@@ -0,0 +1,43 @@
+_getSmartyObj();
+ $this->_checkFilterType($type);
+ if (isset($smarty->registered_filters[ $type ])) {
+ $_filter_name = "smarty_{$type}filter_{$name}";
+ if (isset($smarty->registered_filters[ $type ][ $_filter_name ])) {
+ unset($smarty->registered_filters[ $type ][ $_filter_name ]);
+ if (empty($smarty->registered_filters[ $type ])) {
+ unset($smarty->registered_filters[ $type ]);
+ }
+ }
+ }
+ return $obj;
+ }
+}
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_unregistercacheresource.php b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_unregistercacheresource.php
new file mode 100644
index 000000000..377397e97
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_unregistercacheresource.php
@@ -0,0 +1,40 @@
+_getSmartyObj();
+ if (isset($smarty->registered_cache_resources[ $name ])) {
+ unset($smarty->registered_cache_resources[ $name ]);
+ }
+ return $obj;
+ }
+}
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_unregisterfilter.php b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_unregisterfilter.php
new file mode 100644
index 000000000..ebc9337d0
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_unregisterfilter.php
@@ -0,0 +1,43 @@
+_getSmartyObj();
+ $this->_checkFilterType($type);
+ if (isset($smarty->registered_filters[ $type ])) {
+ $name = is_string($callback) ? $callback : $this->_getFilterName($callback);
+ if (isset($smarty->registered_filters[ $type ][ $name ])) {
+ unset($smarty->registered_filters[ $type ][ $name ]);
+ if (empty($smarty->registered_filters[ $type ])) {
+ unset($smarty->registered_filters[ $type ]);
+ }
+ }
+ }
+ return $obj;
+ }
+}
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_unregisterobject.php b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_unregisterobject.php
new file mode 100644
index 000000000..77d619637
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_unregisterobject.php
@@ -0,0 +1,40 @@
+_getSmartyObj();
+ if (isset($smarty->registered_objects[ $object_name ])) {
+ unset($smarty->registered_objects[ $object_name ]);
+ }
+ return $obj;
+ }
+}
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_unregisterplugin.php b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_unregisterplugin.php
new file mode 100644
index 000000000..2431d5c23
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_unregisterplugin.php
@@ -0,0 +1,41 @@
+_getSmartyObj();
+ if (isset($smarty->registered_plugins[ $type ][ $name ])) {
+ unset($smarty->registered_plugins[ $type ][ $name ]);
+ }
+ return $obj;
+ }
+}
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_unregisterresource.php b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_unregisterresource.php
new file mode 100644
index 000000000..bbb6a861d
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_unregisterresource.php
@@ -0,0 +1,40 @@
+_getSmartyObj();
+ if (isset($smarty->registered_resources[ $type ])) {
+ unset($smarty->registered_resources[ $type ]);
+ }
+ return $obj;
+ }
+}
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_nocache_insert.php b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_nocache_insert.php
new file mode 100644
index 000000000..88694dcfd
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_nocache_insert.php
@@ -0,0 +1,51 @@
+assign('{$_assign}' , {$_function} (" . var_export($_attr, true) .
+ ',\$_smarty_tpl), true);?>';
+ } else {
+ $_output .= "echo {$_function}(" . var_export($_attr, true) . ',$_smarty_tpl);?>';
+ }
+ $_tpl = $_template;
+ while ($_tpl->_isSubTpl()) {
+ $_tpl = $_tpl->parent;
+ }
+ return "/*%%SmartyNocache:{$_tpl->compiled->nocache_hash}%%*/{$_output}/*/%%SmartyNocache:{$_tpl->compiled->nocache_hash}%%*/";
+ }
+}
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_parsetree.php b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_parsetree.php
new file mode 100644
index 000000000..9f7678526
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_parsetree.php
@@ -0,0 +1,50 @@
+data = null;
+ $this->subtrees = null;
+ }
+}
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_parsetree_code.php b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_parsetree_code.php
new file mode 100644
index 000000000..7bd0bc45c
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_parsetree_code.php
@@ -0,0 +1,42 @@
+data = $data;
+ }
+
+ /**
+ * Return buffer content in parentheses
+ *
+ * @param \Smarty_Internal_Templateparser $parser
+ *
+ * @return string content
+ */
+ public function to_smarty_php(Smarty_Internal_Templateparser $parser)
+ {
+ return sprintf('(%s)', $this->data);
+ }
+}
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_parsetree_dq.php b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_parsetree_dq.php
new file mode 100644
index 000000000..8655f5869
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_parsetree_dq.php
@@ -0,0 +1,95 @@
+subtrees[] = $subtree;
+ if ($subtree instanceof Smarty_Internal_ParseTree_Tag) {
+ $parser->block_nesting_level = count($parser->compiler->_tag_stack);
+ }
+ }
+
+ /**
+ * Append buffer to subtree
+ *
+ * @param \Smarty_Internal_Templateparser $parser
+ * @param Smarty_Internal_ParseTree $subtree parse tree buffer
+ */
+ public function append_subtree(Smarty_Internal_Templateparser $parser, Smarty_Internal_ParseTree $subtree)
+ {
+ $last_subtree = count($this->subtrees) - 1;
+ if ($last_subtree >= 0 && $this->subtrees[ $last_subtree ] instanceof Smarty_Internal_ParseTree_Tag
+ && $this->subtrees[ $last_subtree ]->saved_block_nesting < $parser->block_nesting_level
+ ) {
+ if ($subtree instanceof Smarty_Internal_ParseTree_Code) {
+ $this->subtrees[ $last_subtree ]->data =
+ $parser->compiler->appendCode(
+ $this->subtrees[ $last_subtree ]->data,
+ 'data . ';?>'
+ );
+ } elseif ($subtree instanceof Smarty_Internal_ParseTree_DqContent) {
+ $this->subtrees[ $last_subtree ]->data =
+ $parser->compiler->appendCode(
+ $this->subtrees[ $last_subtree ]->data,
+ 'data . '";?>'
+ );
+ } else {
+ $this->subtrees[ $last_subtree ]->data =
+ $parser->compiler->appendCode($this->subtrees[ $last_subtree ]->data, $subtree->data);
+ }
+ } else {
+ $this->subtrees[] = $subtree;
+ }
+ if ($subtree instanceof Smarty_Internal_ParseTree_Tag) {
+ $parser->block_nesting_level = count($parser->compiler->_tag_stack);
+ }
+ }
+
+ /**
+ * Merge subtree buffer content together
+ *
+ * @param \Smarty_Internal_Templateparser $parser
+ *
+ * @return string compiled template code
+ */
+ public function to_smarty_php(Smarty_Internal_Templateparser $parser)
+ {
+ $code = '';
+ foreach ($this->subtrees as $subtree) {
+ if ($code !== '') {
+ $code .= '.';
+ }
+ if ($subtree instanceof Smarty_Internal_ParseTree_Tag) {
+ $more_php = $subtree->assign_to_var($parser);
+ } else {
+ $more_php = $subtree->to_smarty_php($parser);
+ }
+ $code .= $more_php;
+ if (!$subtree instanceof Smarty_Internal_ParseTree_DqContent) {
+ $parser->compiler->has_variable_string = true;
+ }
+ }
+ return $code;
+ }
+}
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_parsetree_dqcontent.php b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_parsetree_dqcontent.php
new file mode 100644
index 000000000..a8ca389d9
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_parsetree_dqcontent.php
@@ -0,0 +1,42 @@
+data = $data;
+ }
+
+ /**
+ * Return content as double quoted string
+ *
+ * @param \Smarty_Internal_Templateparser $parser
+ *
+ * @return string doubled quoted string
+ */
+ public function to_smarty_php(Smarty_Internal_Templateparser $parser)
+ {
+ return '"' . $this->data . '"';
+ }
+}
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_parsetree_tag.php b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_parsetree_tag.php
new file mode 100644
index 000000000..e6c755604
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_parsetree_tag.php
@@ -0,0 +1,67 @@
+data = $data;
+ $this->saved_block_nesting = $parser->block_nesting_level;
+ }
+
+ /**
+ * Return buffer content
+ *
+ * @param \Smarty_Internal_Templateparser $parser
+ *
+ * @return string content
+ */
+ public function to_smarty_php(Smarty_Internal_Templateparser $parser)
+ {
+ return $this->data;
+ }
+
+ /**
+ * Return complied code that loads the evaluated output of buffer content into a temporary variable
+ *
+ * @param \Smarty_Internal_Templateparser $parser
+ *
+ * @return string template code
+ */
+ public function assign_to_var(Smarty_Internal_Templateparser $parser)
+ {
+ $var = $parser->compiler->getNewPrefixVariable();
+ $tmp = $parser->compiler->appendCode('', $this->data);
+ $tmp = $parser->compiler->appendCode($tmp, "");
+ $parser->compiler->prefix_code[] = sprintf('%s', $tmp);
+ return $var;
+ }
+}
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_parsetree_template.php b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_parsetree_template.php
new file mode 100644
index 000000000..829c420fe
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_parsetree_template.php
@@ -0,0 +1,169 @@
+subtrees)) {
+ $this->subtrees = array_merge($this->subtrees, $subtree->subtrees);
+ } else {
+ if ($subtree->data !== '') {
+ $this->subtrees[] = $subtree;
+ }
+ }
+ }
+
+ /**
+ * Append array to subtree
+ *
+ * @param \Smarty_Internal_Templateparser $parser
+ * @param \Smarty_Internal_ParseTree[] $array
+ */
+ public function append_array(Smarty_Internal_Templateparser $parser, $array = array())
+ {
+ if (!empty($array)) {
+ $this->subtrees = array_merge($this->subtrees, (array)$array);
+ }
+ }
+
+ /**
+ * Prepend array to subtree
+ *
+ * @param \Smarty_Internal_Templateparser $parser
+ * @param \Smarty_Internal_ParseTree[] $array
+ */
+ public function prepend_array(Smarty_Internal_Templateparser $parser, $array = array())
+ {
+ if (!empty($array)) {
+ $this->subtrees = array_merge((array)$array, $this->subtrees);
+ }
+ }
+
+ /**
+ * Sanitize and merge subtree buffers together
+ *
+ * @param \Smarty_Internal_Templateparser $parser
+ *
+ * @return string template code content
+ */
+ public function to_smarty_php(Smarty_Internal_Templateparser $parser)
+ {
+ $code = '';
+
+ foreach ($this->getChunkedSubtrees() as $chunk) {
+ $text = '';
+ switch ($chunk['mode']) {
+ case 'textstripped':
+ foreach ($chunk['subtrees'] as $subtree) {
+ $text .= $subtree->to_smarty_php($parser);
+ }
+ $code .= preg_replace(
+ '/((<%)|(%>)|(<\?php)|(<\?)|(\?>)|(<\/?script))/',
+ "\n",
+ $parser->compiler->processText($text)
+ );
+ break;
+ case 'text':
+ foreach ($chunk['subtrees'] as $subtree) {
+ $text .= $subtree->to_smarty_php($parser);
+ }
+ $code .= preg_replace(
+ '/((<%)|(%>)|(<\?php)|(<\?)|(\?>)|(<\/?script))/',
+ "\n",
+ $text
+ );
+ break;
+ case 'tag':
+ foreach ($chunk['subtrees'] as $subtree) {
+ $text = $parser->compiler->appendCode($text, $subtree->to_smarty_php($parser));
+ }
+ $code .= $text;
+ break;
+ default:
+ foreach ($chunk['subtrees'] as $subtree) {
+ $text = $subtree->to_smarty_php($parser);
+ }
+ $code .= $text;
+
+ }
+ }
+ return $code;
+ }
+
+ private function getChunkedSubtrees() {
+ $chunks = array();
+ $currentMode = null;
+ $currentChunk = array();
+ for ($key = 0, $cnt = count($this->subtrees); $key < $cnt; $key++) {
+
+ if ($this->subtrees[ $key ]->data === '' && in_array($currentMode, array('textstripped', 'text', 'tag'))) {
+ continue;
+ }
+
+ if ($this->subtrees[ $key ] instanceof Smarty_Internal_ParseTree_Text
+ && $this->subtrees[ $key ]->isToBeStripped()) {
+ $newMode = 'textstripped';
+ } elseif ($this->subtrees[ $key ] instanceof Smarty_Internal_ParseTree_Text) {
+ $newMode = 'text';
+ } elseif ($this->subtrees[ $key ] instanceof Smarty_Internal_ParseTree_Tag) {
+ $newMode = 'tag';
+ } else {
+ $newMode = 'other';
+ }
+
+ if ($newMode == $currentMode) {
+ $currentChunk[] = $this->subtrees[ $key ];
+ } else {
+ $chunks[] = array(
+ 'mode' => $currentMode,
+ 'subtrees' => $currentChunk
+ );
+ $currentMode = $newMode;
+ $currentChunk = array($this->subtrees[ $key ]);
+ }
+ }
+ if ($currentMode && $currentChunk) {
+ $chunks[] = array(
+ 'mode' => $currentMode,
+ 'subtrees' => $currentChunk
+ );
+ }
+ return $chunks;
+ }
+}
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_parsetree_text.php b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_parsetree_text.php
new file mode 100644
index 000000000..58116c811
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_parsetree_text.php
@@ -0,0 +1,57 @@
+data = $data;
+ $this->toBeStripped = $toBeStripped;
+ }
+
+ /**
+ * Wether this section should be stripped on output to smarty php
+ * @return bool
+ */
+ public function isToBeStripped() {
+ return $this->toBeStripped;
+ }
+
+ /**
+ * Return buffer content
+ *
+ * @param \Smarty_Internal_Templateparser $parser
+ *
+ * @return string text
+ */
+ public function to_smarty_php(Smarty_Internal_Templateparser $parser)
+ {
+ return $this->data;
+ }
+}
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_resource_eval.php b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_resource_eval.php
new file mode 100644
index 000000000..3b552a589
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_resource_eval.php
@@ -0,0 +1,94 @@
+uid = $source->filepath = sha1($source->name);
+ $source->timestamp = $source->exists = true;
+ }
+
+ /**
+ * Load template's source from $resource_name into current template object
+ *
+ * @uses decode() to decode base64 and urlencoded template_resources
+ *
+ * @param Smarty_Template_Source $source source object
+ *
+ * @return string template source
+ */
+ public function getContent(Smarty_Template_Source $source)
+ {
+ return $this->decode($source->name);
+ }
+
+ /**
+ * decode base64 and urlencode
+ *
+ * @param string $string template_resource to decode
+ *
+ * @return string decoded template_resource
+ */
+ protected function decode($string)
+ {
+ // decode if specified
+ if (($pos = strpos($string, ':')) !== false) {
+ if (!strncmp($string, 'base64', 6)) {
+ return base64_decode(substr($string, 7));
+ } elseif (!strncmp($string, 'urlencode', 9)) {
+ return urldecode(substr($string, 10));
+ }
+ }
+ return $string;
+ }
+
+ /**
+ * modify resource_name according to resource handlers specifications
+ *
+ * @param Smarty $smarty Smarty instance
+ * @param string $resource_name resource_name to make unique
+ * @param boolean $isConfig flag for config resource
+ *
+ * @return string unique resource name
+ */
+ public function buildUniqueResourceName(Smarty $smarty, $resource_name, $isConfig = false)
+ {
+ return get_class($this) . '#' . $this->decode($resource_name);
+ }
+
+ /**
+ * Determine basename for compiled filename
+ *
+ * @param Smarty_Template_Source $source source object
+ *
+ * @return string resource's basename
+ */
+ public function getBasename(Smarty_Template_Source $source)
+ {
+ return '';
+ }
+}
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_resource_extends.php b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_resource_extends.php
new file mode 100644
index 000000000..80946932e
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_resource_extends.php
@@ -0,0 +1,126 @@
+name);
+ $smarty = &$source->smarty;
+ $exists = true;
+ foreach ($components as $component) {
+ /* @var \Smarty_Template_Source $_s */
+ $_s = Smarty_Template_Source::load(null, $smarty, $component);
+ if ($_s->type === 'php') {
+ throw new SmartyException("Resource type {$_s->type} cannot be used with the extends resource type");
+ }
+ $sources[ $_s->uid ] = $_s;
+ $uid .= $_s->filepath;
+ if ($_template) {
+ $exists = $exists && $_s->exists;
+ }
+ }
+ $source->components = $sources;
+ $source->filepath = $_s->filepath;
+ $source->uid = sha1($uid . $source->smarty->_joined_template_dir);
+ $source->exists = $exists;
+ if ($_template) {
+ $source->timestamp = $_s->timestamp;
+ }
+ }
+
+ /**
+ * populate Source Object with timestamp and exists from Resource
+ *
+ * @param Smarty_Template_Source $source source object
+ */
+ public function populateTimestamp(Smarty_Template_Source $source)
+ {
+ $source->exists = true;
+ /* @var \Smarty_Template_Source $_s */
+ foreach ($source->components as $_s) {
+ $source->exists = $source->exists && $_s->exists;
+ }
+ $source->timestamp = $source->exists ? $_s->getTimeStamp() : false;
+ }
+
+ /**
+ * Load template's source from files into current template object
+ *
+ * @param Smarty_Template_Source $source source object
+ *
+ * @return string template source
+ * @throws SmartyException if source cannot be loaded
+ */
+ public function getContent(Smarty_Template_Source $source)
+ {
+ if (!$source->exists) {
+ throw new SmartyException("Unable to load template '{$source->type}:{$source->name}'");
+ }
+ $_components = array_reverse($source->components);
+ $_content = '';
+ /* @var \Smarty_Template_Source $_s */
+ foreach ($_components as $_s) {
+ // read content
+ $_content .= $_s->getContent();
+ }
+ return $_content;
+ }
+
+ /**
+ * Determine basename for compiled filename
+ *
+ * @param Smarty_Template_Source $source source object
+ *
+ * @return string resource's basename
+ */
+ public function getBasename(Smarty_Template_Source $source)
+ {
+ return str_replace(':', '.', basename($source->filepath));
+ }
+
+ /*
+ * Disable timestamp checks for extends resource.
+ * The individual source components will be checked.
+ *
+ * @return bool
+ */
+ /**
+ * @return bool
+ */
+ public function checkTimestamps()
+ {
+ return false;
+ }
+}
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_resource_file.php b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_resource_file.php
new file mode 100644
index 000000000..ae2060673
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_resource_file.php
@@ -0,0 +1,180 @@
+filepath = $this->buildFilepath($source, $_template);
+ if ($source->filepath !== false) {
+ if (isset($source->smarty->security_policy) && is_object($source->smarty->security_policy)) {
+ $source->smarty->security_policy->isTrustedResourceDir($source->filepath, $source->isConfig);
+ }
+ $source->exists = true;
+ $source->uid = sha1(
+ $source->filepath . ($source->isConfig ? $source->smarty->_joined_config_dir :
+ $source->smarty->_joined_template_dir)
+ );
+ $source->timestamp = filemtime($source->filepath);
+ } else {
+ $source->timestamp = $source->exists = false;
+ }
+ }
+
+ /**
+ * populate Source Object with timestamp and exists from Resource
+ *
+ * @param Smarty_Template_Source $source source object
+ */
+ public function populateTimestamp(Smarty_Template_Source $source)
+ {
+ if (!$source->exists) {
+ $source->timestamp = $source->exists = is_file($source->filepath);
+ }
+ if ($source->exists) {
+ $source->timestamp = filemtime($source->filepath);
+ }
+ }
+
+ /**
+ * Load template's source from file into current template object
+ *
+ * @param Smarty_Template_Source $source source object
+ *
+ * @return string template source
+ * @throws SmartyException if source cannot be loaded
+ */
+ public function getContent(Smarty_Template_Source $source)
+ {
+ if ($source->exists) {
+ return file_get_contents($source->filepath);
+ }
+ throw new SmartyException(
+ 'Unable to read ' . ($source->isConfig ? 'config' : 'template') .
+ " {$source->type} '{$source->name}'"
+ );
+ }
+
+ /**
+ * Determine basename for compiled filename
+ *
+ * @param Smarty_Template_Source $source source object
+ *
+ * @return string resource's basename
+ */
+ public function getBasename(Smarty_Template_Source $source)
+ {
+ return basename($source->filepath);
+ }
+
+ /**
+ * build template filepath by traversing the template_dir array
+ *
+ * @param Smarty_Template_Source $source source object
+ * @param Smarty_Internal_Template $_template template object
+ *
+ * @return string fully qualified filepath
+ * @throws SmartyException
+ */
+ protected function buildFilepath(Smarty_Template_Source $source, Smarty_Internal_Template $_template = null)
+ {
+ $file = $source->name;
+ // absolute file ?
+ if ($file[ 0 ] === '/' || $file[ 1 ] === ':') {
+ $file = $source->smarty->_realpath($file, true);
+ return is_file($file) ? $file : false;
+ }
+ // go relative to a given template?
+ if ($file[ 0 ] === '.' && $_template && $_template->_isSubTpl()
+ && preg_match('#^[.]{1,2}[\\\/]#', $file)
+ ) {
+ if ($_template->parent->source->type !== 'file' && $_template->parent->source->type !== 'extends'
+ && !isset($_template->parent->_cache[ 'allow_relative_path' ])
+ ) {
+ throw new SmartyException("Template '{$file}' cannot be relative to template of resource type '{$_template->parent->source->type}'");
+ }
+ // normalize path
+ $path =
+ $source->smarty->_realpath(dirname($_template->parent->source->filepath) . DIRECTORY_SEPARATOR . $file);
+ // files relative to a template only get one shot
+ return is_file($path) ? $path : false;
+ }
+ // normalize DIRECTORY_SEPARATOR
+ if (strpos($file, DIRECTORY_SEPARATOR === '/' ? '\\' : '/') !== false) {
+ $file = str_replace(DIRECTORY_SEPARATOR === '/' ? '\\' : '/', DIRECTORY_SEPARATOR, $file);
+ }
+ $_directories = $source->smarty->getTemplateDir(null, $source->isConfig);
+ // template_dir index?
+ if ($file[ 0 ] === '[' && preg_match('#^\[([^\]]+)\](.+)$#', $file, $fileMatch)) {
+ $file = $fileMatch[ 2 ];
+ $_indices = explode(',', $fileMatch[ 1 ]);
+ $_index_dirs = array();
+ foreach ($_indices as $index) {
+ $index = trim($index);
+ // try string indexes
+ if (isset($_directories[ $index ])) {
+ $_index_dirs[] = $_directories[ $index ];
+ } elseif (is_numeric($index)) {
+ // try numeric index
+ $index = (int)$index;
+ if (isset($_directories[ $index ])) {
+ $_index_dirs[] = $_directories[ $index ];
+ } else {
+ // try at location index
+ $keys = array_keys($_directories);
+ if (isset($_directories[ $keys[ $index ] ])) {
+ $_index_dirs[] = $_directories[ $keys[ $index ] ];
+ }
+ }
+ }
+ }
+ if (empty($_index_dirs)) {
+ // index not found
+ return false;
+ } else {
+ $_directories = $_index_dirs;
+ }
+ }
+ // relative file name?
+ foreach ($_directories as $_directory) {
+ $path = $_directory . $file;
+ if (is_file($path)) {
+ return (strpos($path, '.' . DIRECTORY_SEPARATOR) !== false) ? $source->smarty->_realpath($path) : $path;
+ }
+ }
+ if (!isset($_index_dirs)) {
+ // Could be relative to cwd
+ $path = $source->smarty->_realpath($file, true);
+ if (is_file($path)) {
+ return $path;
+ }
+ }
+ // Use include path ?
+ if ($source->smarty->use_include_path) {
+ return $source->smarty->ext->_getIncludePath->getIncludePath($_directories, $file, $source->smarty);
+ }
+ return false;
+ }
+}
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_resource_php.php b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_resource_php.php
new file mode 100644
index 000000000..9d98ae181
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_resource_php.php
@@ -0,0 +1,116 @@
+short_open_tag = function_exists('ini_get') ? ini_get('short_open_tag') : 1;
+ }
+
+ /**
+ * Load template's source from file into current template object
+ *
+ * @param Smarty_Template_Source $source source object
+ *
+ * @return string template source
+ * @throws SmartyException if source cannot be loaded
+ */
+ public function getContent(Smarty_Template_Source $source)
+ {
+ if ($source->exists) {
+ return '';
+ }
+ throw new SmartyException("Unable to read template {$source->type} '{$source->name}'");
+ }
+
+ /**
+ * populate compiled object with compiled filepath
+ *
+ * @param Smarty_Template_Compiled $compiled compiled object
+ * @param Smarty_Internal_Template $_template template object (is ignored)
+ */
+ public function populateCompiledFilepath(Smarty_Template_Compiled $compiled, Smarty_Internal_Template $_template)
+ {
+ $compiled->filepath = $_template->source->filepath;
+ $compiled->timestamp = $_template->source->timestamp;
+ $compiled->exists = $_template->source->exists;
+ $compiled->file_dependency[ $_template->source->uid ] =
+ array(
+ $compiled->filepath,
+ $compiled->timestamp,
+ $_template->source->type,
+ );
+ }
+
+ /**
+ * Render and output the template (without using the compiler)
+ *
+ * @param Smarty_Template_Source $source source object
+ * @param Smarty_Internal_Template $_template template object
+ *
+ * @return void
+ * @throws SmartyException if template cannot be loaded or allow_php_templates is disabled
+ */
+ public function renderUncompiled(Smarty_Template_Source $source, Smarty_Internal_Template $_template)
+ {
+ if (!$source->smarty->allow_php_templates) {
+ throw new SmartyException('PHP templates are disabled');
+ }
+ if (!$source->exists) {
+ throw new SmartyException(
+ "Unable to load template '{$source->type}:{$source->name}'" .
+ ($_template->_isSubTpl() ? " in '{$_template->parent->template_resource}'" : '')
+ );
+ }
+ // prepare variables
+ extract($_template->getTemplateVars());
+ // include PHP template with short open tags enabled
+ if (function_exists('ini_set')) {
+ ini_set('short_open_tag', '1');
+ }
+ /**
+ *
+ *
+ * @var Smarty_Internal_Template $_smarty_template
+ * used in included file
+ */
+ $_smarty_template = $_template;
+ include $source->filepath;
+ if (function_exists('ini_set')) {
+ ini_set('short_open_tag', $this->short_open_tag);
+ }
+ }
+}
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_resource_stream.php b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_resource_stream.php
new file mode 100644
index 000000000..5f0203498
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_resource_stream.php
@@ -0,0 +1,78 @@
+resource, '://') !== false) {
+ $source->filepath = $source->resource;
+ } else {
+ $source->filepath = str_replace(':', '://', $source->resource);
+ }
+ $source->uid = false;
+ $source->content = $this->getContent($source);
+ $source->timestamp = $source->exists = !!$source->content;
+ }
+
+ /**
+ * Load template's source from stream into current template object
+ *
+ * @param Smarty_Template_Source $source source object
+ *
+ * @return string template source
+ */
+ public function getContent(Smarty_Template_Source $source)
+ {
+ $t = '';
+ // the availability of the stream has already been checked in Smarty_Resource::fetch()
+ $fp = fopen($source->filepath, 'r+');
+ if ($fp) {
+ while (!feof($fp) && ($current_line = fgets($fp)) !== false) {
+ $t .= $current_line;
+ }
+ fclose($fp);
+ return $t;
+ } else {
+ return false;
+ }
+ }
+
+ /**
+ * modify resource_name according to resource handlers specifications
+ *
+ * @param Smarty $smarty Smarty instance
+ * @param string $resource_name resource_name to make unique
+ * @param boolean $isConfig flag for config resource
+ *
+ * @return string unique resource name
+ */
+ public function buildUniqueResourceName(Smarty $smarty, $resource_name, $isConfig = false)
+ {
+ return get_class($this) . '#' . $resource_name;
+ }
+}
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_resource_string.php b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_resource_string.php
new file mode 100644
index 000000000..3fecbb7ef
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_resource_string.php
@@ -0,0 +1,108 @@
+uid = $source->filepath = sha1($source->name . $source->smarty->_joined_template_dir);
+ $source->timestamp = $source->exists = true;
+ }
+
+ /**
+ * Load template's source from $resource_name into current template object
+ *
+ * @uses decode() to decode base64 and urlencoded template_resources
+ *
+ * @param Smarty_Template_Source $source source object
+ *
+ * @return string template source
+ */
+ public function getContent(Smarty_Template_Source $source)
+ {
+ return $this->decode($source->name);
+ }
+
+ /**
+ * decode base64 and urlencode
+ *
+ * @param string $string template_resource to decode
+ *
+ * @return string decoded template_resource
+ */
+ protected function decode($string)
+ {
+ // decode if specified
+ if (($pos = strpos($string, ':')) !== false) {
+ if (!strncmp($string, 'base64', 6)) {
+ return base64_decode(substr($string, 7));
+ } elseif (!strncmp($string, 'urlencode', 9)) {
+ return urldecode(substr($string, 10));
+ }
+ }
+ return $string;
+ }
+
+ /**
+ * modify resource_name according to resource handlers specifications
+ *
+ * @param Smarty $smarty Smarty instance
+ * @param string $resource_name resource_name to make unique
+ * @param boolean $isConfig flag for config resource
+ *
+ * @return string unique resource name
+ */
+ public function buildUniqueResourceName(Smarty $smarty, $resource_name, $isConfig = false)
+ {
+ return get_class($this) . '#' . $this->decode($resource_name);
+ }
+
+ /**
+ * Determine basename for compiled filename
+ * Always returns an empty string.
+ *
+ * @param Smarty_Template_Source $source source object
+ *
+ * @return string resource's basename
+ */
+ public function getBasename(Smarty_Template_Source $source)
+ {
+ return '';
+ }
+
+ /*
+ * Disable timestamp checks for string resource.
+ *
+ * @return bool
+ */
+ /**
+ * @return bool
+ */
+ public function checkTimestamps()
+ {
+ return false;
+ }
+}
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_cachemodify.php b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_cachemodify.php
new file mode 100644
index 000000000..6e12d2ae1
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_cachemodify.php
@@ -0,0 +1,68 @@
+isCached() && !$_template->compiled->has_nocache_code;
+ $_last_modified_date =
+ @substr($_SERVER[ 'HTTP_IF_MODIFIED_SINCE' ], 0, strpos($_SERVER[ 'HTTP_IF_MODIFIED_SINCE' ], 'GMT') + 3);
+ if ($_isCached && $cached->timestamp <= strtotime($_last_modified_date)) {
+ switch (PHP_SAPI) {
+ case 'cgi': // php-cgi < 5.3
+ case 'cgi-fcgi': // php-cgi >= 5.3
+ case 'fpm-fcgi': // php-fpm >= 5.3.3
+ header('Status: 304 Not Modified');
+ break;
+ case 'cli':
+ if (/* ^phpunit */
+ !empty($_SERVER[ 'SMARTY_PHPUNIT_DISABLE_HEADERS' ]) /* phpunit$ */
+ ) {
+ $_SERVER[ 'SMARTY_PHPUNIT_HEADERS' ][] = '304 Not Modified';
+ }
+ break;
+ default:
+ if (/* ^phpunit */
+ !empty($_SERVER[ 'SMARTY_PHPUNIT_DISABLE_HEADERS' ]) /* phpunit$ */
+ ) {
+ $_SERVER[ 'SMARTY_PHPUNIT_HEADERS' ][] = '304 Not Modified';
+ } else {
+ header($_SERVER[ 'SERVER_PROTOCOL' ] . ' 304 Not Modified');
+ }
+ break;
+ }
+ } else {
+ switch (PHP_SAPI) {
+ case 'cli':
+ if (/* ^phpunit */
+ !empty($_SERVER[ 'SMARTY_PHPUNIT_DISABLE_HEADERS' ]) /* phpunit$ */
+ ) {
+ $_SERVER[ 'SMARTY_PHPUNIT_HEADERS' ][] =
+ 'Last-Modified: ' . gmdate('D, d M Y H:i:s', $cached->timestamp) . ' GMT';
+ }
+ break;
+ default:
+ header('Last-Modified: ' . gmdate('D, d M Y H:i:s', $cached->timestamp) . ' GMT');
+ break;
+ }
+ echo $content;
+ }
+ }
+}
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_cacheresourcefile.php b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_cacheresourcefile.php
new file mode 100644
index 000000000..287096438
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_cacheresourcefile.php
@@ -0,0 +1,139 @@
+use_sub_dirs ? '/' : '^';
+ $_compile_id_offset = $smarty->use_sub_dirs ? 3 : 0;
+ $_dir = $smarty->getCacheDir();
+ if ($_dir === '/') { //We should never want to delete this!
+ return 0;
+ }
+ $_dir_length = strlen($_dir);
+ if (isset($_cache_id)) {
+ $_cache_id_parts = explode('|', $_cache_id);
+ $_cache_id_parts_count = count($_cache_id_parts);
+ if ($smarty->use_sub_dirs) {
+ foreach ($_cache_id_parts as $id_part) {
+ $_dir .= $id_part . '/';
+ }
+ }
+ }
+ if (isset($resource_name)) {
+ $_save_stat = $smarty->caching;
+ $smarty->caching = Smarty::CACHING_LIFETIME_CURRENT;
+ $tpl = new $smarty->template_class($resource_name, $smarty);
+ $smarty->caching = $_save_stat;
+ // remove from template cache
+ $tpl->source; // have the template registered before unset()
+ if ($tpl->source->exists) {
+ $_resourcename_parts = basename(str_replace('^', '/', $tpl->cached->filepath));
+ } else {
+ return 0;
+ }
+ }
+ $_count = 0;
+ $_time = time();
+ if (file_exists($_dir)) {
+ $_cacheDirs = new RecursiveDirectoryIterator($_dir);
+ $_cache = new RecursiveIteratorIterator($_cacheDirs, RecursiveIteratorIterator::CHILD_FIRST);
+ foreach ($_cache as $_file) {
+ if (substr(basename($_file->getPathname()), 0, 1) === '.') {
+ continue;
+ }
+ $_filepath = (string)$_file;
+ // directory ?
+ if ($_file->isDir()) {
+ if (!$_cache->isDot()) {
+ // delete folder if empty
+ @rmdir($_file->getPathname());
+ }
+ } else {
+ // delete only php files
+ if (substr($_filepath, -4) !== '.php') {
+ continue;
+ }
+ $_parts = explode($_dir_sep, str_replace('\\', '/', substr($_filepath, $_dir_length)));
+ $_parts_count = count($_parts);
+ // check name
+ if (isset($resource_name)) {
+ if ($_parts[ $_parts_count - 1 ] !== $_resourcename_parts) {
+ continue;
+ }
+ }
+ // check compile id
+ if (isset($_compile_id) && (!isset($_parts[ $_parts_count - 2 - $_compile_id_offset ])
+ || $_parts[ $_parts_count - 2 - $_compile_id_offset ] !== $_compile_id)
+ ) {
+ continue;
+ }
+ // check cache id
+ if (isset($_cache_id)) {
+ // count of cache id parts
+ $_parts_count = (isset($_compile_id)) ? $_parts_count - 2 - $_compile_id_offset :
+ $_parts_count - 1 - $_compile_id_offset;
+ if ($_parts_count < $_cache_id_parts_count) {
+ continue;
+ }
+ for ($i = 0; $i < $_cache_id_parts_count; $i++) {
+ if ($_parts[ $i ] !== $_cache_id_parts[ $i ]) {
+ continue 2;
+ }
+ }
+ }
+ if (is_file($_filepath)) {
+ // expired ?
+ if (isset($exp_time)) {
+ if ($exp_time < 0) {
+ preg_match('#\'cache_lifetime\' =>\s*(\d*)#', file_get_contents($_filepath), $match);
+ if ($_time < (filemtime($_filepath) + $match[ 1 ])) {
+ continue;
+ }
+ } else {
+ if ($_time - filemtime($_filepath) < $exp_time) {
+ continue;
+ }
+ }
+ }
+ $_count += @unlink($_filepath) ? 1 : 0;
+ if (function_exists('opcache_invalidate')
+ && (!function_exists('ini_get') || strlen(ini_get("opcache.restrict_api")) < 1)
+ ) {
+ opcache_invalidate($_filepath, true);
+ } elseif (function_exists('apc_delete_file')) {
+ apc_delete_file($_filepath);
+ }
+ }
+ }
+ }
+ }
+ return $_count;
+ }
+}
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_capture.php b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_capture.php
new file mode 100644
index 000000000..c9dca83d9
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_capture.php
@@ -0,0 +1,174 @@
+isRegistered) {
+ $this->register($_template);
+ }
+ $this->captureStack[] = array(
+ $buffer,
+ $assign,
+ $append
+ );
+ $this->captureCount++;
+ ob_start();
+ }
+
+ /**
+ * Register callbacks in template class
+ *
+ * @param \Smarty_Internal_Template $_template
+ */
+ private function register(Smarty_Internal_Template $_template)
+ {
+ $_template->startRenderCallbacks[] = array(
+ $this,
+ 'startRender'
+ );
+ $_template->endRenderCallbacks[] = array(
+ $this,
+ 'endRender'
+ );
+ $this->startRender($_template);
+ $this->isRegistered = true;
+ }
+
+ /**
+ * Start render callback
+ *
+ * @param \Smarty_Internal_Template $_template
+ */
+ public function startRender(Smarty_Internal_Template $_template)
+ {
+ $this->countStack[] = $this->captureCount;
+ $this->captureCount = 0;
+ }
+
+ /**
+ * Close capture section
+ *
+ * @param \Smarty_Internal_Template $_template
+ *
+ * @throws \SmartyException
+ */
+ public function close(Smarty_Internal_Template $_template)
+ {
+ if ($this->captureCount) {
+ list($buffer, $assign, $append) = array_pop($this->captureStack);
+ $this->captureCount--;
+ if (isset($assign)) {
+ $_template->assign($assign, ob_get_contents());
+ }
+ if (isset($append)) {
+ $_template->append($append, ob_get_contents());
+ }
+ $this->namedBuffer[ $buffer ] = ob_get_clean();
+ } else {
+ $this->error($_template);
+ }
+ }
+
+ /**
+ * Error exception on not matching {capture}{/capture}
+ *
+ * @param \Smarty_Internal_Template $_template
+ *
+ * @throws \SmartyException
+ */
+ public function error(Smarty_Internal_Template $_template)
+ {
+ throw new SmartyException("Not matching {capture}{/capture} in '{$_template->template_resource}'");
+ }
+
+ /**
+ * Return content of named capture buffer by key or as array
+ *
+ * @param \Smarty_Internal_Template $_template
+ * @param string|null $name
+ *
+ * @return string|string[]|null
+ */
+ public function getBuffer(Smarty_Internal_Template $_template, $name = null)
+ {
+ if (isset($name)) {
+ return isset($this->namedBuffer[ $name ]) ? $this->namedBuffer[ $name ] : null;
+ } else {
+ return $this->namedBuffer;
+ }
+ }
+
+ /**
+ * End render callback
+ *
+ * @param \Smarty_Internal_Template $_template
+ *
+ * @throws \SmartyException
+ */
+ public function endRender(Smarty_Internal_Template $_template)
+ {
+ if ($this->captureCount) {
+ $this->error($_template);
+ } else {
+ $this->captureCount = array_pop($this->countStack);
+ }
+ }
+}
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_codeframe.php b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_codeframe.php
new file mode 100644
index 000000000..d0ca751e2
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_codeframe.php
@@ -0,0 +1,103 @@
+compiled->has_nocache_code;
+ $properties[ 'file_dependency' ] = $_template->compiled->file_dependency;
+ $properties[ 'includes' ] = $_template->compiled->includes;
+ } else {
+ $properties[ 'has_nocache_code' ] = $_template->cached->has_nocache_code;
+ $properties[ 'file_dependency' ] = $_template->cached->file_dependency;
+ $properties[ 'cache_lifetime' ] = $_template->cache_lifetime;
+ }
+ $output = sprintf(
+ "source->filepath)
+ );
+ $output .= "/* @var Smarty_Internal_Template \$_smarty_tpl */\n";
+ $dec = "\$_smarty_tpl->_decodeProperties(\$_smarty_tpl, " . var_export($properties, true) . ',' .
+ ($cache ? 'true' : 'false') . ')';
+ $output .= "if ({$dec}) {\n";
+ $output .= "function {$properties['unifunc']} (Smarty_Internal_Template \$_smarty_tpl) {\n";
+ if (!$cache && !empty($compiler->tpl_function)) {
+ $output .= '$_smarty_tpl->smarty->ext->_tplFunction->registerTplFunctions($_smarty_tpl, ';
+ $output .= var_export($compiler->tpl_function, true);
+ $output .= ");\n";
+ }
+ if ($cache && isset($_template->smarty->ext->_tplFunction)) {
+ $output .= "\$_smarty_tpl->smarty->ext->_tplFunction->registerTplFunctions(\$_smarty_tpl, " .
+ var_export($_template->smarty->ext->_tplFunction->getTplFunction($_template), true) . ");\n";
+ }
+ $output .= "?>";
+ $output .= $content;
+ $output .= "";
+ $output .= $functions;
+ $output .= "[\n]?<\?php\s*/', $output)) {
+ $curr_split = preg_split(
+ '/\s*\?>[\n]?<\?php\s*/',
+ $output
+ );
+ preg_match_all(
+ '/\s*\?>[\n]?<\?php\s*/',
+ $output,
+ $curr_parts
+ );
+ $output = '';
+ foreach ($curr_split as $idx => $curr_output) {
+ $output .= $curr_output;
+ if (isset($curr_parts[ 0 ][ $idx ])) {
+ $output .= "\n";
+ }
+ }
+ }
+ if (preg_match('/\?>\s*$/', $output)) {
+ $curr_split = preg_split(
+ '/\?>\s*$/',
+ $output
+ );
+ $output = '';
+ foreach ($curr_split as $idx => $curr_output) {
+ $output .= $curr_output;
+ }
+ }
+ return $output;
+ }
+}
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_filterhandler.php b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_filterhandler.php
new file mode 100644
index 000000000..9f868e1a4
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_filterhandler.php
@@ -0,0 +1,69 @@
+smarty->autoload_filters[ $type ])) {
+ foreach ((array)$template->smarty->autoload_filters[ $type ] as $name) {
+ $plugin_name = "Smarty_{$type}filter_{$name}";
+ if (function_exists($plugin_name)) {
+ $callback = $plugin_name;
+ } elseif (class_exists($plugin_name, false) && is_callable(array($plugin_name, 'execute'))) {
+ $callback = array($plugin_name, 'execute');
+ } elseif ($template->smarty->loadPlugin($plugin_name, false)) {
+ if (function_exists($plugin_name)) {
+ // use loaded Smarty2 style plugin
+ $callback = $plugin_name;
+ } elseif (class_exists($plugin_name, false) && is_callable(array($plugin_name, 'execute'))) {
+ // loaded class of filter plugin
+ $callback = array($plugin_name, 'execute');
+ } else {
+ throw new SmartyException("Auto load {$type}-filter plugin method '{$plugin_name}::execute' not callable");
+ }
+ } else {
+ // nothing found, throw exception
+ throw new SmartyException("Unable to auto load {$type}-filter plugin '{$plugin_name}'");
+ }
+ $content = call_user_func($callback, $content, $template);
+ }
+ }
+ // loop over registered filters of specified type
+ if (!empty($template->smarty->registered_filters[ $type ])) {
+ foreach ($template->smarty->registered_filters[ $type ] as $key => $name) {
+ $content = call_user_func($template->smarty->registered_filters[ $type ][ $key ], $content, $template);
+ }
+ }
+ // return filtered output
+ return $content;
+ }
+}
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_foreach.php b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_foreach.php
new file mode 100644
index 000000000..badead165
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_foreach.php
@@ -0,0 +1,162 @@
+count($from);
+ }
+ } else {
+ settype($from, 'array');
+ }
+ }
+ if (!isset($total)) {
+ $total = empty($from) ? 0 : ($needTotal ? count($from) : 1);
+ }
+ if (isset($tpl->tpl_vars[ $item ])) {
+ $saveVars[ 'item' ] = array(
+ $item,
+ $tpl->tpl_vars[ $item ]
+ );
+ }
+ $tpl->tpl_vars[ $item ] = new Smarty_Variable(null, $tpl->isRenderingCache);
+ if ($total === 0) {
+ $from = null;
+ } else {
+ if ($key) {
+ if (isset($tpl->tpl_vars[ $key ])) {
+ $saveVars[ 'key' ] = array(
+ $key,
+ $tpl->tpl_vars[ $key ]
+ );
+ }
+ $tpl->tpl_vars[ $key ] = new Smarty_Variable(null, $tpl->isRenderingCache);
+ }
+ }
+ if ($needTotal) {
+ $tpl->tpl_vars[ $item ]->total = $total;
+ }
+ if ($name) {
+ $namedVar = "__smarty_foreach_{$name}";
+ if (isset($tpl->tpl_vars[ $namedVar ])) {
+ $saveVars[ 'named' ] = array(
+ $namedVar,
+ $tpl->tpl_vars[ $namedVar ]
+ );
+ }
+ $namedProp = array();
+ if (isset($properties[ 'total' ])) {
+ $namedProp[ 'total' ] = $total;
+ }
+ if (isset($properties[ 'iteration' ])) {
+ $namedProp[ 'iteration' ] = 0;
+ }
+ if (isset($properties[ 'index' ])) {
+ $namedProp[ 'index' ] = -1;
+ }
+ if (isset($properties[ 'show' ])) {
+ $namedProp[ 'show' ] = ($total > 0);
+ }
+ $tpl->tpl_vars[ $namedVar ] = new Smarty_Variable($namedProp);
+ }
+ $this->stack[] = $saveVars;
+ return $from;
+ }
+
+ /**
+ * [util function] counts an array, arrayAccess/traversable or PDOStatement object
+ *
+ * @param mixed $value
+ *
+ * @return int the count for arrays and objects that implement countable, 1 for other objects that don't, and 0
+ * for empty elements
+ */
+ public function count($value)
+ {
+ if ($value instanceof IteratorAggregate) {
+ // Note: getIterator() returns a Traversable, not an Iterator
+ // thus rewind() and valid() methods may not be present
+ return iterator_count($value->getIterator());
+ } elseif ($value instanceof Iterator) {
+ return $value instanceof Generator ? 1 : iterator_count($value);
+ } elseif ($value instanceof Countable) {
+ return count($value);
+ } elseif ($value instanceof PDOStatement) {
+ return $value->rowCount();
+ } elseif ($value instanceof Traversable) {
+ return iterator_count($value);
+ }
+ return count((array)$value);
+ }
+
+ /**
+ * Restore saved variables
+ *
+ * will be called by {break n} or {continue n} for the required number of levels
+ *
+ * @param \Smarty_Internal_Template $tpl
+ * @param int $levels number of levels
+ */
+ public function restore(Smarty_Internal_Template $tpl, $levels = 1)
+ {
+ while ($levels) {
+ $saveVars = array_pop($this->stack);
+ if (!empty($saveVars)) {
+ if (isset($saveVars[ 'item' ])) {
+ $item = &$saveVars[ 'item' ];
+ $tpl->tpl_vars[ $item[ 0 ] ]->value = $item[ 1 ]->value;
+ }
+ if (isset($saveVars[ 'key' ])) {
+ $tpl->tpl_vars[ $saveVars[ 'key' ][ 0 ] ] = $saveVars[ 'key' ][ 1 ];
+ }
+ if (isset($saveVars[ 'named' ])) {
+ $tpl->tpl_vars[ $saveVars[ 'named' ][ 0 ] ] = $saveVars[ 'named' ][ 1 ];
+ }
+ }
+ $levels--;
+ }
+ }
+}
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_getincludepath.php b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_getincludepath.php
new file mode 100644
index 000000000..5ae98304e
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_getincludepath.php
@@ -0,0 +1,181 @@
+_include_path !== $_i_path) {
+ $this->_include_dirs = array();
+ $this->_include_path = $_i_path;
+ $_dirs = (array)explode(PATH_SEPARATOR, $_i_path);
+ foreach ($_dirs as $_path) {
+ if (is_dir($_path)) {
+ $this->_include_dirs[] = $smarty->_realpath($_path . DIRECTORY_SEPARATOR, true);
+ }
+ }
+ return true;
+ }
+ return false;
+ }
+
+ /**
+ * return array with include path directories
+ *
+ * @param \Smarty $smarty
+ *
+ * @return array
+ */
+ public function getIncludePathDirs(Smarty $smarty)
+ {
+ $this->isNewIncludePath($smarty);
+ return $this->_include_dirs;
+ }
+
+ /**
+ * Return full file path from PHP include_path
+ *
+ * @param string[] $dirs
+ * @param string $file
+ * @param \Smarty $smarty
+ *
+ * @return bool|string full filepath or false
+ */
+ public function getIncludePath($dirs, $file, Smarty $smarty)
+ {
+ //if (!(isset($this->_has_stream_include) ? $this->_has_stream_include : $this->_has_stream_include = false)) {
+ if (!(isset($this->_has_stream_include) ? $this->_has_stream_include :
+ $this->_has_stream_include = function_exists('stream_resolve_include_path'))
+ ) {
+ $this->isNewIncludePath($smarty);
+ }
+ // try PHP include_path
+ foreach ($dirs as $dir) {
+ $dir_n = isset($this->number[ $dir ]) ? $this->number[ $dir ] : $this->number[ $dir ] = $this->counter++;
+ if (isset($this->isFile[ $dir_n ][ $file ])) {
+ if ($this->isFile[ $dir_n ][ $file ]) {
+ return $this->isFile[ $dir_n ][ $file ];
+ } else {
+ continue;
+ }
+ }
+ if (isset($this->_user_dirs[ $dir_n ])) {
+ if (false === $this->_user_dirs[ $dir_n ]) {
+ continue;
+ } else {
+ $dir = $this->_user_dirs[ $dir_n ];
+ }
+ } else {
+ if ($dir[ 0 ] === '/' || $dir[ 1 ] === ':') {
+ $dir = str_ireplace(getcwd(), '.', $dir);
+ if ($dir[ 0 ] === '/' || $dir[ 1 ] === ':') {
+ $this->_user_dirs[ $dir_n ] = false;
+ continue;
+ }
+ }
+ $dir = substr($dir, 2);
+ $this->_user_dirs[ $dir_n ] = $dir;
+ }
+ if ($this->_has_stream_include) {
+ $path = stream_resolve_include_path($dir . (isset($file) ? $file : ''));
+ if ($path) {
+ return $this->isFile[ $dir_n ][ $file ] = $path;
+ }
+ } else {
+ foreach ($this->_include_dirs as $key => $_i_path) {
+ $path = isset($this->isPath[ $key ][ $dir_n ]) ? $this->isPath[ $key ][ $dir_n ] :
+ $this->isPath[ $key ][ $dir_n ] = is_dir($_dir_path = $_i_path . $dir) ? $_dir_path : false;
+ if ($path === false) {
+ continue;
+ }
+ if (isset($file)) {
+ $_file = $this->isFile[ $dir_n ][ $file ] = (is_file($path . $file)) ? $path . $file : false;
+ if ($_file) {
+ return $_file;
+ }
+ } else {
+ // no file was given return directory path
+ return $path;
+ }
+ }
+ }
+ }
+ return false;
+ }
+}
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_inheritance.php b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_inheritance.php
new file mode 100644
index 000000000..8f7f02d59
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_inheritance.php
@@ -0,0 +1,251 @@
+state === 3 && (strpos($tpl->template_resource, 'extendsall') === false)) {
+ $tpl->inheritance = new Smarty_Internal_Runtime_Inheritance();
+ $tpl->inheritance->init($tpl, $initChild, $blockNames);
+ return;
+ }
+ ++$this->tplIndex;
+ $this->sources[ $this->tplIndex ] = $tpl->source;
+ // start of child sub template(s)
+ if ($initChild) {
+ $this->state = 1;
+ if (!$this->inheritanceLevel) {
+ //grab any output of child templates
+ ob_start();
+ }
+ ++$this->inheritanceLevel;
+ // $tpl->startRenderCallbacks[ 'inheritance' ] = array($this, 'subTemplateStart');
+ // $tpl->endRenderCallbacks[ 'inheritance' ] = array($this, 'subTemplateEnd');
+ }
+ // if state was waiting for parent change state to parent
+ if ($this->state === 2) {
+ $this->state = 3;
+ }
+ }
+
+ /**
+ * End of child template(s)
+ * - if outer level is reached flush output buffer and switch to wait for parent template state
+ *
+ * @param \Smarty_Internal_Template $tpl
+ * @param null|string $template optional name of inheritance parent template
+ * @param null|string $uid uid of inline template
+ * @param null|string $func function call name of inline template
+ *
+ * @throws \Exception
+ * @throws \SmartyException
+ */
+ public function endChild(Smarty_Internal_Template $tpl, $template = null, $uid = null, $func = null)
+ {
+ --$this->inheritanceLevel;
+ if (!$this->inheritanceLevel) {
+ ob_end_clean();
+ $this->state = 2;
+ }
+ if (isset($template) && (($tpl->parent->_isTplObj() && $tpl->parent->source->type !== 'extends')
+ || $tpl->smarty->extends_recursion)
+ ) {
+ $tpl->_subTemplateRender(
+ $template,
+ $tpl->cache_id,
+ $tpl->compile_id,
+ $tpl->caching ? 9999 : 0,
+ $tpl->cache_lifetime,
+ array(),
+ 2,
+ false,
+ $uid,
+ $func
+ );
+ }
+ }
+
+ /**
+ * Smarty_Internal_Block constructor.
+ * - if outer level {block} of child template ($state === 1) save it as child root block
+ * - otherwise process inheritance and render
+ *
+ * @param \Smarty_Internal_Template $tpl
+ * @param $className
+ * @param string $name
+ * @param int|null $tplIndex index of outer level {block} if nested
+ *
+ * @throws \SmartyException
+ */
+ public function instanceBlock(Smarty_Internal_Template $tpl, $className, $name, $tplIndex = null)
+ {
+ $block = new $className($name, isset($tplIndex) ? $tplIndex : $this->tplIndex);
+ if (isset($this->childRoot[ $name ])) {
+ $block->child = $this->childRoot[ $name ];
+ }
+ if ($this->state === 1) {
+ $this->childRoot[ $name ] = $block;
+ return;
+ }
+ // make sure we got child block of child template of current block
+ while ($block->child && $block->child->child && $block->tplIndex <= $block->child->tplIndex) {
+ $block->child = $block->child->child;
+ }
+ $this->process($tpl, $block);
+ }
+
+ /**
+ * Goto child block or render this
+ *
+ * @param \Smarty_Internal_Template $tpl
+ * @param \Smarty_Internal_Block $block
+ * @param \Smarty_Internal_Block|null $parent
+ *
+ * @throws \SmartyException
+ */
+ public function process(
+ Smarty_Internal_Template $tpl,
+ Smarty_Internal_Block $block,
+ Smarty_Internal_Block $parent = null
+ ) {
+ if ($block->hide && !isset($block->child)) {
+ return;
+ }
+ if (isset($block->child) && $block->child->hide && !isset($block->child->child)) {
+ $block->child = null;
+ }
+ $block->parent = $parent;
+ if ($block->append && !$block->prepend && isset($parent)) {
+ $this->callParent($tpl, $block, '\'{block append}\'');
+ }
+ if ($block->callsChild || !isset($block->child) || ($block->child->hide && !isset($block->child->child))) {
+ $this->callBlock($block, $tpl);
+ } else {
+ $this->process($tpl, $block->child, $block);
+ }
+ if ($block->prepend && isset($parent)) {
+ $this->callParent($tpl, $block, '{block prepend}');
+ if ($block->append) {
+ if ($block->callsChild || !isset($block->child)
+ || ($block->child->hide && !isset($block->child->child))
+ ) {
+ $this->callBlock($block, $tpl);
+ } else {
+ $this->process($tpl, $block->child, $block);
+ }
+ }
+ }
+ $block->parent = null;
+ }
+
+ /**
+ * Render child on \$smarty.block.child
+ *
+ * @param \Smarty_Internal_Template $tpl
+ * @param \Smarty_Internal_Block $block
+ *
+ * @return null|string block content
+ * @throws \SmartyException
+ */
+ public function callChild(Smarty_Internal_Template $tpl, Smarty_Internal_Block $block)
+ {
+ if (isset($block->child)) {
+ $this->process($tpl, $block->child, $block);
+ }
+ }
+
+ /**
+ * Render parent block on \$smarty.block.parent or {block append/prepend}
+ *
+ * @param \Smarty_Internal_Template $tpl
+ * @param \Smarty_Internal_Block $block
+ * @param string $tag
+ *
+ * @return null|string block content
+ * @throws \SmartyException
+ */
+ public function callParent(Smarty_Internal_Template $tpl, Smarty_Internal_Block $block, $tag)
+ {
+ if (isset($block->parent)) {
+ $this->callBlock($block->parent, $tpl);
+ } else {
+ throw new SmartyException("inheritance: illegal '{$tag}' used in child template '{$tpl->inheritance->sources[$block->tplIndex]->filepath}' block '{$block->name}'");
+ }
+ }
+
+ /**
+ * render block
+ *
+ * @param \Smarty_Internal_Block $block
+ * @param \Smarty_Internal_Template $tpl
+ */
+ public function callBlock(Smarty_Internal_Block $block, Smarty_Internal_Template $tpl)
+ {
+ $this->sourceStack[] = $tpl->source;
+ $tpl->source = $this->sources[ $block->tplIndex ];
+ $block->callBlock($tpl);
+ $tpl->source = array_pop($this->sourceStack);
+ }
+}
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_make_nocache.php b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_make_nocache.php
new file mode 100644
index 000000000..7994aa048
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_make_nocache.php
@@ -0,0 +1,54 @@
+tpl_vars[ $var ])) {
+ $export =
+ preg_replace('/^\\\\?Smarty_Variable::__set_state[(]|[)]$/', '', var_export($tpl->tpl_vars[ $var ], true));
+ if (preg_match('/(\w+)::__set_state/', $export, $match)) {
+ throw new SmartyException("{make_nocache \${$var}} in template '{$tpl->source->name}': variable does contain object '{$match[1]}' not implementing method '__set_state'");
+ }
+ echo "/*%%SmartyNocache:{$tpl->compiled->nocache_hash}%%*/smarty->ext->_make_nocache->store(\$_smarty_tpl, '{$var}', ", '\\') .
+ $export . ");?>\n/*/%%SmartyNocache:{$tpl->compiled->nocache_hash}%%*/";
+ }
+ }
+
+ /**
+ * Store variable value saved while rendering compiled template in cached template context
+ *
+ * @param \Smarty_Internal_Template $tpl
+ * @param string $var variable name
+ * @param array $properties
+ */
+ public function store(Smarty_Internal_Template $tpl, $var, $properties)
+ {
+ // do not overwrite existing nocache variables
+ if (!isset($tpl->tpl_vars[ $var ]) || !$tpl->tpl_vars[ $var ]->nocache) {
+ $newVar = new Smarty_Variable();
+ unset($properties[ 'nocache' ]);
+ foreach ($properties as $k => $v) {
+ $newVar->$k = $v;
+ }
+ $tpl->tpl_vars[ $var ] = $newVar;
+ }
+ }
+}
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_tplfunction.php b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_tplfunction.php
new file mode 100644
index 000000000..e5f8e48f7
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_tplfunction.php
@@ -0,0 +1,177 @@
+tplFunctions[ $name ]) ? $tpl->tplFunctions[ $name ] :
+ (isset($tpl->smarty->tplFunctions[ $name ]) ? $tpl->smarty->tplFunctions[ $name ] : null);
+ if (isset($funcParam)) {
+ if (!$tpl->caching || ($tpl->caching && $nocache)) {
+ $function = $funcParam[ 'call_name' ];
+ } else {
+ if (isset($funcParam[ 'call_name_caching' ])) {
+ $function = $funcParam[ 'call_name_caching' ];
+ } else {
+ $function = $funcParam[ 'call_name' ];
+ }
+ }
+ if (function_exists($function)) {
+ $this->saveTemplateVariables($tpl, $name);
+ $function($tpl, $params);
+ $this->restoreTemplateVariables($tpl, $name);
+ return;
+ }
+ // try to load template function dynamically
+ if ($this->addTplFuncToCache($tpl, $name, $function)) {
+ $this->saveTemplateVariables($tpl, $name);
+ $function($tpl, $params);
+ $this->restoreTemplateVariables($tpl, $name);
+ return;
+ }
+ }
+ throw new SmartyException("Unable to find template function '{$name}'");
+ }
+
+ /**
+ * Register template functions defined by template
+ *
+ * @param \Smarty|\Smarty_Internal_Template|\Smarty_Internal_TemplateBase $obj
+ * @param array $tplFunctions source information array of
+ * template functions defined
+ * in template
+ * @param bool $override if true replace existing
+ * functions with same name
+ */
+ public function registerTplFunctions(Smarty_Internal_TemplateBase $obj, $tplFunctions, $override = true)
+ {
+ $obj->tplFunctions =
+ $override ? array_merge($obj->tplFunctions, $tplFunctions) : array_merge($tplFunctions, $obj->tplFunctions);
+ // make sure that the template functions are known in parent templates
+ if ($obj->_isSubTpl()) {
+ $obj->smarty->ext->_tplFunction->registerTplFunctions($obj->parent, $tplFunctions, false);
+ } else {
+ $obj->smarty->tplFunctions = $override ? array_merge($obj->smarty->tplFunctions, $tplFunctions) :
+ array_merge($tplFunctions, $obj->smarty->tplFunctions);
+ }
+ }
+
+ /**
+ * Return source parameter array for single or all template functions
+ *
+ * @param \Smarty_Internal_Template $tpl template object
+ * @param null|string $name template function name
+ *
+ * @return array|bool|mixed
+ */
+ public function getTplFunction(Smarty_Internal_Template $tpl, $name = null)
+ {
+ if (isset($name)) {
+ return isset($tpl->tplFunctions[ $name ]) ? $tpl->tplFunctions[ $name ] :
+ (isset($tpl->smarty->tplFunctions[ $name ]) ? $tpl->smarty->tplFunctions[ $name ] : false);
+ } else {
+ return empty($tpl->tplFunctions) ? $tpl->smarty->tplFunctions : $tpl->tplFunctions;
+ }
+ }
+
+ /**
+ * Add template function to cache file for nocache calls
+ *
+ * @param Smarty_Internal_Template $tpl
+ * @param string $_name template function name
+ * @param string $_function PHP function name
+ *
+ * @return bool
+ */
+ public function addTplFuncToCache(Smarty_Internal_Template $tpl, $_name, $_function)
+ {
+ $funcParam = $tpl->tplFunctions[ $_name ];
+ if (is_file($funcParam[ 'compiled_filepath' ])) {
+ // read compiled file
+ $code = file_get_contents($funcParam[ 'compiled_filepath' ]);
+ // grab template function
+ if (preg_match("/\/\* {$_function} \*\/([\S\s]*?)\/\*\/ {$_function} \*\//", $code, $match)) {
+ // grab source info from file dependency
+ preg_match("/\s*'{$funcParam['uid']}'([\S\s]*?)\),/", $code, $match1);
+ unset($code);
+ // make PHP function known
+ eval($match[ 0 ]);
+ if (function_exists($_function)) {
+ // search cache file template
+ $tplPtr = $tpl;
+ while (!isset($tplPtr->cached) && isset($tplPtr->parent)) {
+ $tplPtr = $tplPtr->parent;
+ }
+ // add template function code to cache file
+ if (isset($tplPtr->cached)) {
+ $content = $tplPtr->cached->read($tplPtr);
+ if ($content) {
+ // check if we must update file dependency
+ if (!preg_match("/'{$funcParam['uid']}'(.*?)'nocache_hash'/", $content, $match2)) {
+ $content = preg_replace("/('file_dependency'(.*?)\()/", "\\1{$match1[0]}", $content);
+ }
+ $tplPtr->smarty->ext->_updateCache->write(
+ $tplPtr,
+ preg_replace('/\s*\?>\s*$/', "\n", $content) .
+ "\n" . preg_replace(
+ array(
+ '/^\s*<\?php\s+/',
+ '/\s*\?>\s*$/',
+ ),
+ "\n",
+ $match[ 0 ]
+ )
+ );
+ }
+ }
+ return true;
+ }
+ }
+ }
+ return false;
+ }
+
+ /**
+ * Save current template variables on stack
+ *
+ * @param \Smarty_Internal_Template $tpl
+ * @param string $name stack name
+ */
+ public function saveTemplateVariables(Smarty_Internal_Template $tpl, $name)
+ {
+ $tpl->_cache[ 'varStack' ][] =
+ array('tpl' => $tpl->tpl_vars, 'config' => $tpl->config_vars, 'name' => "_tplFunction_{$name}");
+ }
+
+ /**
+ * Restore saved variables into template objects
+ *
+ * @param \Smarty_Internal_Template $tpl
+ * @param string $name stack name
+ */
+ public function restoreTemplateVariables(Smarty_Internal_Template $tpl, $name)
+ {
+ if (isset($tpl->_cache[ 'varStack' ])) {
+ $vars = array_pop($tpl->_cache[ 'varStack' ]);
+ $tpl->tpl_vars = $vars[ 'tpl' ];
+ $tpl->config_vars = $vars[ 'config' ];
+ }
+ }
+}
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_updatecache.php b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_updatecache.php
new file mode 100644
index 000000000..c1abbb321
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_updatecache.php
@@ -0,0 +1,183 @@
+compiled)) {
+ $_template->loadCompiled();
+ }
+ $_template->compiled->render($_template);
+ if ($_template->smarty->debugging) {
+ $_template->smarty->_debug->start_cache($_template);
+ }
+ $this->removeNoCacheHash($cached, $_template, $no_output_filter);
+ $compile_check = (int)$_template->compile_check;
+ $_template->compile_check = Smarty::COMPILECHECK_OFF;
+ if ($_template->_isSubTpl()) {
+ $_template->compiled->unifunc = $_template->parent->compiled->unifunc;
+ }
+ if (!$_template->cached->processed) {
+ $_template->cached->process($_template, true);
+ }
+ $_template->compile_check = $compile_check;
+ $cached->getRenderedTemplateCode($_template);
+ if ($_template->smarty->debugging) {
+ $_template->smarty->_debug->end_cache($_template);
+ }
+ }
+
+ /**
+ * Sanitize content and write it to cache resource
+ *
+ * @param \Smarty_Template_Cached $cached
+ * @param Smarty_Internal_Template $_template
+ * @param bool $no_output_filter
+ *
+ * @throws \SmartyException
+ */
+ public function removeNoCacheHash(
+ Smarty_Template_Cached $cached,
+ Smarty_Internal_Template $_template,
+ $no_output_filter
+ ) {
+ $php_pattern = '/(<%|%>|<\?php|<\?|\?>|]*>)|(]*>)|(]*>.*? ]*>)#is',
+ $text,
+ $matches,
+ PREG_OFFSET_CAPTURE | PREG_SET_ORDER
+ )
+ ) {
+ foreach ($matches as $match) {
+ $store[] = $match[ 0 ][ 0 ];
+ $_length = strlen($match[ 0 ][ 0 ]);
+ $replace = '@!@SMARTY:' . $_store . ':SMARTY@!@';
+ $text = substr_replace($text, $replace, $match[ 0 ][ 1 ] - $_offset, $_length);
+ $_offset += $_length - strlen($replace);
+ $_store++;
+ }
+ }
+ $expressions = array(// replace multiple spaces between tags by a single space
+ '#(:SMARTY@!@|>)[\040\011]+(?=@!@SMARTY:|<)#s' => '\1 \2',
+ // remove newline between tags
+ '#(:SMARTY@!@|>)[\040\011]*[\n]\s*(?=@!@SMARTY:|<)#s' => '\1\2',
+ // remove multiple spaces between attributes (but not in attribute values!)
+ '#(([a-z0-9]\s*=\s*("[^"]*?")|(\'[^\']*?\'))|<[a-z0-9_]+)\s+([a-z/>])#is' => '\1 \5',
+ '#>[\040\011]+$#Ss' => '> ',
+ '#>[\040\011]*[\n]\s*$#Ss' => '>',
+ $this->stripRegEx => '',
+ );
+ $text = preg_replace(array_keys($expressions), array_values($expressions), $text);
+ $_offset = 0;
+ if (preg_match_all(
+ '#@!@SMARTY:([0-9]+):SMARTY@!@#is',
+ $text,
+ $matches,
+ PREG_OFFSET_CAPTURE | PREG_SET_ORDER
+ )
+ ) {
+ foreach ($matches as $match) {
+ $_length = strlen($match[ 0 ][ 0 ]);
+ $replace = $store[ $match[ 1 ][ 0 ] ];
+ $text = substr_replace($text, $replace, $match[ 0 ][ 1 ] + $_offset, $_length);
+ $_offset += strlen($replace) - $_length;
+ $_store++;
+ }
+ }
+ return $text;
+ }
+
+ /**
+ * lazy loads internal compile plugin for tag and calls the compile method
+ * compile objects cached for reuse.
+ * class name format: Smarty_Internal_Compile_TagName
+ * plugin filename format: Smarty_Internal_TagName.php
+ *
+ * @param string $tag tag name
+ * @param array $args list of tag attributes
+ * @param mixed $param1 optional parameter
+ * @param mixed $param2 optional parameter
+ * @param mixed $param3 optional parameter
+ *
+ * @return bool|string compiled code or false
+ * @throws \SmartyCompilerException
+ */
+ public function callTagCompiler($tag, $args, $param1 = null, $param2 = null, $param3 = null)
+ {
+ /* @var Smarty_Internal_CompileBase $tagCompiler */
+ $tagCompiler = $this->getTagCompiler($tag);
+ // compile this tag
+ return $tagCompiler === false ? false : $tagCompiler->compile($args, $this, $param1, $param2, $param3);
+ }
+
+ /**
+ * lazy loads internal compile plugin for tag compile objects cached for reuse.
+ *
+ * class name format: Smarty_Internal_Compile_TagName
+ * plugin filename format: Smarty_Internal_TagName.php
+ *
+ * @param string $tag tag name
+ *
+ * @return bool|\Smarty_Internal_CompileBase tag compiler object or false if not found
+ */
+ public function getTagCompiler($tag)
+ {
+ // re-use object if already exists
+ if (!isset(self::$_tag_objects[ $tag ])) {
+ // lazy load internal compiler plugin
+ $_tag = explode('_', $tag);
+ $_tag = array_map('smarty_ucfirst_ascii', $_tag);
+ $class_name = 'Smarty_Internal_Compile_' . implode('_', $_tag);
+ if (class_exists($class_name)
+ && (!isset($this->smarty->security_policy) || $this->smarty->security_policy->isTrustedTag($tag, $this))
+ ) {
+ self::$_tag_objects[ $tag ] = new $class_name;
+ } else {
+ self::$_tag_objects[ $tag ] = false;
+ }
+ }
+ return self::$_tag_objects[ $tag ];
+ }
+
+ /**
+ * Check for plugins and return function name
+ *
+ * @param $plugin_name
+ * @param string $plugin_type type of plugin
+ *
+ * @return string call name of function
+ * @throws \SmartyException
+ */
+ public function getPlugin($plugin_name, $plugin_type)
+ {
+ $function = null;
+ if ($this->caching && ($this->nocache || $this->tag_nocache)) {
+ if (isset($this->required_plugins[ 'nocache' ][ $plugin_name ][ $plugin_type ])) {
+ $function =
+ $this->required_plugins[ 'nocache' ][ $plugin_name ][ $plugin_type ][ 'function' ];
+ } elseif (isset($this->required_plugins[ 'compiled' ][ $plugin_name ][ $plugin_type ])) {
+ $this->required_plugins[ 'nocache' ][ $plugin_name ][ $plugin_type ] =
+ $this->required_plugins[ 'compiled' ][ $plugin_name ][ $plugin_type ];
+ $function =
+ $this->required_plugins[ 'nocache' ][ $plugin_name ][ $plugin_type ][ 'function' ];
+ }
+ } else {
+ if (isset($this->required_plugins[ 'compiled' ][ $plugin_name ][ $plugin_type ])) {
+ $function =
+ $this->required_plugins[ 'compiled' ][ $plugin_name ][ $plugin_type ][ 'function' ];
+ } elseif (isset($this->required_plugins[ 'nocache' ][ $plugin_name ][ $plugin_type ])) {
+ $this->required_plugins[ 'compiled' ][ $plugin_name ][ $plugin_type ] =
+ $this->required_plugins[ 'nocache' ][ $plugin_name ][ $plugin_type ];
+ $function =
+ $this->required_plugins[ 'compiled' ][ $plugin_name ][ $plugin_type ][ 'function' ];
+ }
+ }
+ if (isset($function)) {
+ if ($plugin_type === 'modifier') {
+ $this->modifier_plugins[ $plugin_name ] = true;
+ }
+ return $function;
+ }
+ // loop through plugin dirs and find the plugin
+ $function = 'smarty_' . $plugin_type . '_' . $plugin_name;
+ $file = $this->smarty->loadPlugin($function, false);
+ if (is_string($file)) {
+ if ($this->caching && ($this->nocache || $this->tag_nocache)) {
+ $this->required_plugins[ 'nocache' ][ $plugin_name ][ $plugin_type ][ 'file' ] =
+ $file;
+ $this->required_plugins[ 'nocache' ][ $plugin_name ][ $plugin_type ][ 'function' ] =
+ $function;
+ } else {
+ $this->required_plugins[ 'compiled' ][ $plugin_name ][ $plugin_type ][ 'file' ] =
+ $file;
+ $this->required_plugins[ 'compiled' ][ $plugin_name ][ $plugin_type ][ 'function' ] =
+ $function;
+ }
+ if ($plugin_type === 'modifier') {
+ $this->modifier_plugins[ $plugin_name ] = true;
+ }
+ return $function;
+ }
+ if (is_callable($function)) {
+ // plugin function is defined in the script
+ return $function;
+ }
+ return false;
+ }
+
+ /**
+ * Check for plugins by default plugin handler
+ *
+ * @param string $tag name of tag
+ * @param string $plugin_type type of plugin
+ *
+ * @return bool true if found
+ * @throws \SmartyCompilerException
+ */
+ public function getPluginFromDefaultHandler($tag, $plugin_type)
+ {
+ $callback = null;
+ $script = null;
+ $cacheable = true;
+ $result = call_user_func_array(
+ $this->smarty->default_plugin_handler_func,
+ array(
+ $tag,
+ $plugin_type,
+ $this->template,
+ &$callback,
+ &$script,
+ &$cacheable,
+ )
+ );
+ if ($result) {
+ $this->tag_nocache = $this->tag_nocache || !$cacheable;
+ if ($script !== null) {
+ if (is_file($script)) {
+ if ($this->caching && ($this->nocache || $this->tag_nocache)) {
+ $this->required_plugins[ 'nocache' ][ $tag ][ $plugin_type ][ 'file' ] =
+ $script;
+ $this->required_plugins[ 'nocache' ][ $tag ][ $plugin_type ][ 'function' ] =
+ $callback;
+ } else {
+ $this->required_plugins[ 'compiled' ][ $tag ][ $plugin_type ][ 'file' ] =
+ $script;
+ $this->required_plugins[ 'compiled' ][ $tag ][ $plugin_type ][ 'function' ] =
+ $callback;
+ }
+ include_once $script;
+ } else {
+ $this->trigger_template_error("Default plugin handler: Returned script file '{$script}' for '{$tag}' not found");
+ }
+ }
+ if (is_callable($callback)) {
+ $this->default_handler_plugins[ $plugin_type ][ $tag ] = array(
+ $callback,
+ true,
+ array()
+ );
+ return true;
+ } else {
+ $this->trigger_template_error("Default plugin handler: Returned callback for '{$tag}' not callable");
+ }
+ }
+ return false;
+ }
+
+ /**
+ * Append code segments and remove unneeded ?> \s?$/D', $left) && preg_match('/^<\?php\s+/', $right)) {
+ $left = preg_replace('/\s*\?>\s?$/D', "\n", $left);
+ $left .= preg_replace('/^<\?php\s+/', '', $right);
+ } else {
+ $left .= $right;
+ }
+ return $left;
+ }
+
+ /**
+ * Inject inline code for nocache template sections
+ * This method gets the content of each template element from the parser.
+ * If the content is compiled code and it should be not cached the code is injected
+ * into the rendered output.
+ *
+ * @param string $content content of template element
+ * @param boolean $is_code true if content is compiled code
+ *
+ * @return string content
+ */
+ public function processNocacheCode($content, $is_code)
+ {
+ // If the template is not evaluated and we have a nocache section and or a nocache tag
+ if ($is_code && !empty($content)) {
+ // generate replacement code
+ if ((!($this->template->source->handler->recompiled) || $this->forceNocache) && $this->caching
+ && !$this->suppressNocacheProcessing && ($this->nocache || $this->tag_nocache)
+ ) {
+ $this->template->compiled->has_nocache_code = true;
+ $_output = addcslashes($content, '\'\\');
+ $_output = str_replace('^#^', '\'', $_output);
+ $_output =
+ "nocache_hash}%%*/{$_output}/*/%%SmartyNocache:{$this->nocache_hash}%%*/';?>\n";
+ // make sure we include modifier plugins for nocache code
+ foreach ($this->modifier_plugins as $plugin_name => $dummy) {
+ if (isset($this->required_plugins[ 'compiled' ][ $plugin_name ][ 'modifier' ])) {
+ $this->required_plugins[ 'nocache' ][ $plugin_name ][ 'modifier' ] =
+ $this->required_plugins[ 'compiled' ][ $plugin_name ][ 'modifier' ];
+ }
+ }
+ } else {
+ $_output = $content;
+ }
+ } else {
+ $_output = $content;
+ }
+ $this->modifier_plugins = array();
+ $this->suppressNocacheProcessing = false;
+ $this->tag_nocache = false;
+ return $_output;
+ }
+
+ /**
+ * Get Id
+ *
+ * @param string $input
+ *
+ * @return bool|string
+ */
+ public function getId($input)
+ {
+ if (preg_match('~^([\'"]*)([0-9]*[a-zA-Z_]\w*)\1$~', $input, $match)) {
+ return $match[ 2 ];
+ }
+ return false;
+ }
+
+ /**
+ * Get variable name from string
+ *
+ * @param string $input
+ *
+ * @return bool|string
+ */
+ public function getVariableName($input)
+ {
+ if (preg_match('~^[$]_smarty_tpl->tpl_vars\[[\'"]*([0-9]*[a-zA-Z_]\w*)[\'"]*\]->value$~', $input, $match)) {
+ return $match[ 1 ];
+ }
+ return false;
+ }
+
+ /**
+ * Set nocache flag in variable or create new variable
+ *
+ * @param string $varName
+ */
+ public function setNocacheInVariable($varName)
+ {
+ // create nocache var to make it know for further compiling
+ if ($_var = $this->getId($varName)) {
+ if (isset($this->template->tpl_vars[ $_var ])) {
+ $this->template->tpl_vars[ $_var ] = clone $this->template->tpl_vars[ $_var ];
+ $this->template->tpl_vars[ $_var ]->nocache = true;
+ } else {
+ $this->template->tpl_vars[ $_var ] = new Smarty_Variable(null, true);
+ }
+ }
+ }
+
+ /**
+ * @param array $_attr tag attributes
+ * @param array $validScopes
+ *
+ * @return int|string
+ * @throws \SmartyCompilerException
+ */
+ public function convertScope($_attr, $validScopes)
+ {
+ $_scope = 0;
+ if (isset($_attr[ 'scope' ])) {
+ $_scopeName = trim($_attr[ 'scope' ], '\'"');
+ if (is_numeric($_scopeName) && in_array($_scopeName, $validScopes)) {
+ $_scope = $_scopeName;
+ } elseif (is_string($_scopeName)) {
+ $_scopeName = trim($_scopeName, '\'"');
+ $_scope = isset($validScopes[ $_scopeName ]) ? $validScopes[ $_scopeName ] : false;
+ } else {
+ $_scope = false;
+ }
+ if ($_scope === false) {
+ $err = var_export($_scopeName, true);
+ $this->trigger_template_error("illegal value '{$err}' for \"scope\" attribute", null, true);
+ }
+ }
+ return $_scope;
+ }
+
+ /**
+ * Generate nocache code string
+ *
+ * @param string $code PHP code
+ *
+ * @return string
+ */
+ public function makeNocacheCode($code)
+ {
+ return "echo '/*%%SmartyNocache:{$this->nocache_hash}%%*//*/%%SmartyNocache:{$this->nocache_hash}%%*/';\n";
+ }
+
+ /**
+ * display compiler error messages without dying
+ * If parameter $args is empty it is a parser detected syntax error.
+ * In this case the parser is called to obtain information about expected tokens.
+ * If parameter $args contains a string this is used as error message
+ *
+ * @param string $args individual error message or null
+ * @param string $line line-number
+ * @param null|bool $tagline if true the line number of last tag
+ *
+ * @throws \SmartyCompilerException when an unexpected token is found
+ */
+ public function trigger_template_error($args = null, $line = null, $tagline = null)
+ {
+ $lex = $this->parser->lex;
+ if ($tagline === true) {
+ // get line number of Tag
+ $line = $lex->taglineno;
+ } elseif (!isset($line)) {
+ // get template source line which has error
+ $line = $lex->line;
+ } else {
+ $line = (int)$line;
+ }
+ if (in_array(
+ $this->template->source->type,
+ array(
+ 'eval',
+ 'string'
+ )
+ )
+ ) {
+ $templateName = $this->template->source->type . ':' . trim(
+ preg_replace(
+ '![\t\r\n]+!',
+ ' ',
+ strlen($lex->data) > 40 ?
+ substr($lex->data, 0, 40) .
+ '...' : $lex->data
+ )
+ );
+ } else {
+ $templateName = $this->template->source->type . ':' . $this->template->source->filepath;
+ }
+ // $line += $this->trace_line_offset;
+ $match = preg_split("/\n/", $lex->data);
+ $error_text =
+ 'Syntax error in template "' . (empty($this->trace_filepath) ? $templateName : $this->trace_filepath) .
+ '" on line ' . ($line + $this->trace_line_offset) . ' "' .
+ trim(preg_replace('![\t\r\n]+!', ' ', $match[ $line - 1 ])) . '" ';
+ if (isset($args)) {
+ // individual error message
+ $error_text .= $args;
+ } else {
+ $expect = array();
+ // expected token from parser
+ $error_text .= ' - Unexpected "' . $lex->value . '"';
+ if (count($this->parser->yy_get_expected_tokens($this->parser->yymajor)) <= 4) {
+ foreach ($this->parser->yy_get_expected_tokens($this->parser->yymajor) as $token) {
+ $exp_token = $this->parser->yyTokenName[ $token ];
+ if (isset($lex->smarty_token_names[ $exp_token ])) {
+ // token type from lexer
+ $expect[] = '"' . $lex->smarty_token_names[ $exp_token ] . '"';
+ } else {
+ // otherwise internal token name
+ $expect[] = $this->parser->yyTokenName[ $token ];
+ }
+ }
+ $error_text .= ', expected one of: ' . implode(' , ', $expect);
+ }
+ }
+ if ($this->smarty->_parserdebug) {
+ $this->parser->errorRunDown();
+ echo ob_get_clean();
+ flush();
+ }
+ $e = new SmartyCompilerException(
+ $error_text,
+ 0,
+ $this->template->source->filepath,
+ $line
+ );
+ $e->source = trim(preg_replace('![\t\r\n]+!', ' ', $match[ $line - 1 ]));
+ $e->desc = $args;
+ $e->template = $this->template->source->filepath;
+ throw $e;
+ }
+
+ /**
+ * Return var_export() value with all white spaces removed
+ *
+ * @param mixed $value
+ *
+ * @return string
+ */
+ public function getVarExport($value)
+ {
+ return preg_replace('/\s/', '', var_export($value, true));
+ }
+
+ /**
+ * enter double quoted string
+ * - save tag stack count
+ */
+ public function enterDoubleQuote()
+ {
+ array_push($this->_tag_stack_count, $this->getTagStackCount());
+ }
+
+ /**
+ * Return tag stack count
+ *
+ * @return int
+ */
+ public function getTagStackCount()
+ {
+ return count($this->_tag_stack);
+ }
+
+ /**
+ * @param $lexerPreg
+ *
+ * @return mixed
+ */
+ public function replaceDelimiter($lexerPreg)
+ {
+ return str_replace(
+ array('SMARTYldel', 'SMARTYliteral', 'SMARTYrdel', 'SMARTYautoliteral', 'SMARTYal'),
+ array(
+ $this->ldelPreg, $this->literalPreg, $this->rdelPreg,
+ $this->smarty->getAutoLiteral() ? '{1,}' : '{9}',
+ $this->smarty->getAutoLiteral() ? '' : '\\s*'
+ ),
+ $lexerPreg
+ );
+ }
+
+ /**
+ * Build lexer regular expressions for left and right delimiter and user defined literals
+ */
+ public function initDelimiterPreg()
+ {
+ $ldel = $this->smarty->getLeftDelimiter();
+ $this->ldelLength = strlen($ldel);
+ $this->ldelPreg = '';
+ foreach (str_split($ldel, 1) as $chr) {
+ $this->ldelPreg .= '[' . preg_quote($chr,'/') . ']';
+ }
+ $rdel = $this->smarty->getRightDelimiter();
+ $this->rdelLength = strlen($rdel);
+ $this->rdelPreg = '';
+ foreach (str_split($rdel, 1) as $chr) {
+ $this->rdelPreg .= '[' . preg_quote($chr,'/') . ']';
+ }
+ $literals = $this->smarty->getLiterals();
+ if (!empty($literals)) {
+ foreach ($literals as $key => $literal) {
+ $literalPreg = '';
+ foreach (str_split($literal, 1) as $chr) {
+ $literalPreg .= '[' . preg_quote($chr,'/') . ']';
+ }
+ $literals[ $key ] = $literalPreg;
+ }
+ $this->literalPreg = '|' . implode('|', $literals);
+ } else {
+ $this->literalPreg = '';
+ }
+ }
+
+ /**
+ * leave double quoted string
+ * - throw exception if block in string was not closed
+ *
+ * @throws \SmartyCompilerException
+ */
+ public function leaveDoubleQuote()
+ {
+ if (array_pop($this->_tag_stack_count) !== $this->getTagStackCount()) {
+ $tag = $this->getOpenBlockTag();
+ $this->trigger_template_error(
+ "unclosed '{{$tag}}' in doubled quoted string",
+ null,
+ true
+ );
+ }
+ }
+
+ /**
+ * Get left delimiter preg
+ *
+ * @return string
+ */
+ public function getLdelPreg()
+ {
+ return $this->ldelPreg;
+ }
+
+ /**
+ * Get right delimiter preg
+ *
+ * @return string
+ */
+ public function getRdelPreg()
+ {
+ return $this->rdelPreg;
+ }
+
+ /**
+ * Get length of left delimiter
+ *
+ * @return int
+ */
+ public function getLdelLength()
+ {
+ return $this->ldelLength;
+ }
+
+ /**
+ * Get length of right delimiter
+ *
+ * @return int
+ */
+ public function getRdelLength()
+ {
+ return $this->rdelLength;
+ }
+
+ /**
+ * Get name of current open block tag
+ *
+ * @return string|boolean
+ */
+ public function getOpenBlockTag()
+ {
+ $tagCount = $this->getTagStackCount();
+ if ($tagCount) {
+ return $this->_tag_stack[ $tagCount - 1 ][ 0 ];
+ } else {
+ return false;
+ }
+ }
+
+ /**
+ * Check if $value contains variable elements
+ *
+ * @param mixed $value
+ *
+ * @return bool|int
+ */
+ public function isVariable($value)
+ {
+ if (is_string($value)) {
+ return preg_match('/[$(]/', $value);
+ }
+ if (is_bool($value) || is_numeric($value)) {
+ return false;
+ }
+ if (is_array($value)) {
+ foreach ($value as $k => $v) {
+ if ($this->isVariable($k) || $this->isVariable($v)) {
+ return true;
+ }
+ }
+ return false;
+ }
+ return false;
+ }
+
+ /**
+ * Get new prefix variable name
+ *
+ * @return string
+ */
+ public function getNewPrefixVariable()
+ {
+ ++self::$prefixVariableNumber;
+ return $this->getPrefixVariable();
+ }
+
+ /**
+ * Get current prefix variable name
+ *
+ * @return string
+ */
+ public function getPrefixVariable()
+ {
+ return '$_prefixVariable' . self::$prefixVariableNumber;
+ }
+
+ /**
+ * append code to prefix buffer
+ *
+ * @param string $code
+ */
+ public function appendPrefixCode($code)
+ {
+ $this->prefix_code[] = $code;
+ }
+
+ /**
+ * get prefix code string
+ *
+ * @return string
+ */
+ public function getPrefixCode()
+ {
+ $code = '';
+ $prefixArray = array_merge($this->prefix_code, array_pop($this->prefixCodeStack));
+ $this->prefixCodeStack[] = array();
+ foreach ($prefixArray as $c) {
+ $code = $this->appendCode($code, $c);
+ }
+ $this->prefix_code = array();
+ return $code;
+ }
+
+ /**
+ * Save current required plugins
+ *
+ * @param bool $init if true init required plugins
+ */
+ public function saveRequiredPlugins($init = false)
+ {
+ $this->required_plugins_stack[] = $this->required_plugins;
+ if ($init) {
+ $this->required_plugins = array('compiled' => array(), 'nocache' => array());
+ }
+ }
+
+ /**
+ * Restore required plugins
+ */
+ public function restoreRequiredPlugins()
+ {
+ $this->required_plugins = array_pop($this->required_plugins_stack);
+ }
+
+ /**
+ * Compile code to call Smarty_Internal_Template::_checkPlugins()
+ * for required plugins
+ *
+ * @return string
+ */
+ public function compileRequiredPlugins()
+ {
+ $code = $this->compileCheckPlugins($this->required_plugins[ 'compiled' ]);
+ if ($this->caching && !empty($this->required_plugins[ 'nocache' ])) {
+ $code .= $this->makeNocacheCode($this->compileCheckPlugins($this->required_plugins[ 'nocache' ]));
+ }
+ return $code;
+ }
+
+ /**
+ * Compile code to call Smarty_Internal_Template::_checkPlugins
+ * - checks if plugin is callable require otherwise
+ *
+ * @param $requiredPlugins
+ *
+ * @return string
+ */
+ public function compileCheckPlugins($requiredPlugins)
+ {
+ if (!empty($requiredPlugins)) {
+ $plugins = array();
+ foreach ($requiredPlugins as $plugin) {
+ foreach ($plugin as $data) {
+ $plugins[] = $data;
+ }
+ }
+ return '$_smarty_tpl->_checkPlugins(' . $this->getVarExport($plugins) . ');' . "\n";
+ } else {
+ return '';
+ }
+ }
+
+ /**
+ * method to compile a Smarty template
+ *
+ * @param mixed $_content template source
+ * @param bool $isTemplateSource
+ *
+ * @return bool true if compiling succeeded, false if it failed
+ */
+ abstract protected function doCompile($_content, $isTemplateSource = false);
+
+ public function cStyleComment($string) {
+ return '/*' . str_replace('*/', '* /' , $string) . '*/';
+ }
+
+ /**
+ * Compile Tag
+ *
+ * @param string $tag tag name
+ * @param array $args array with tag attributes
+ * @param array $parameter array with compilation parameter
+ *
+ * @throws SmartyCompilerException
+ * @throws SmartyException
+ * @return string compiled code
+ */
+ private function compileTag2($tag, $args, $parameter)
+ {
+ $plugin_type = '';
+ // $args contains the attributes parsed and compiled by the lexer/parser
+ // assume that tag does compile into code, but creates no HTML output
+ $this->has_code = true;
+ // log tag/attributes
+ if (isset($this->smarty->_cache[ 'get_used_tags' ])) {
+ $this->template->_cache[ 'used_tags' ][] = array(
+ $tag,
+ $args
+ );
+ }
+ // check nocache option flag
+ foreach ($args as $arg) {
+ if (!is_array($arg)) {
+ if ($arg === "'nocache'" || $arg === 'nocache') {
+ $this->tag_nocache = true;
+ }
+ } else {
+ foreach ($arg as $k => $v) {
+ if (($k === "'nocache'" || $k === 'nocache') && (trim($v, "'\" ") === 'true')) {
+ $this->tag_nocache = true;
+ }
+ }
+ }
+ }
+ // compile the smarty tag (required compile classes to compile the tag are auto loaded)
+ if (($_output = $this->callTagCompiler($tag, $args, $parameter)) === false) {
+ if (isset($this->parent_compiler->tpl_function[ $tag ])
+ || (isset($this->template->smarty->ext->_tplFunction)
+ && $this->template->smarty->ext->_tplFunction->getTplFunction($this->template, $tag) !== false)
+ ) {
+ // template defined by {template} tag
+ $args[ '_attr' ][ 'name' ] = "'{$tag}'";
+ $_output = $this->callTagCompiler('call', $args, $parameter);
+ }
+ }
+ if ($_output !== false) {
+ if ($_output !== true) {
+ // did we get compiled code
+ if ($this->has_code) {
+ // return compiled code
+ return $_output;
+ }
+ }
+ // tag did not produce compiled code
+ return null;
+ } else {
+ // map_named attributes
+ if (isset($args[ '_attr' ])) {
+ foreach ($args[ '_attr' ] as $key => $attribute) {
+ if (is_array($attribute)) {
+ $args = array_merge($args, $attribute);
+ }
+ }
+ }
+ // not an internal compiler tag
+ if (strlen($tag) < 6 || substr($tag, -5) !== 'close') {
+ // check if tag is a registered object
+ if (isset($this->smarty->registered_objects[ $tag ]) && isset($parameter[ 'object_method' ])) {
+ $method = $parameter[ 'object_method' ];
+ if (!in_array($method, $this->smarty->registered_objects[ $tag ][ 3 ])
+ && (empty($this->smarty->registered_objects[ $tag ][ 1 ])
+ || in_array($method, $this->smarty->registered_objects[ $tag ][ 1 ]))
+ ) {
+ return $this->callTagCompiler('private_object_function', $args, $parameter, $tag, $method);
+ } elseif (in_array($method, $this->smarty->registered_objects[ $tag ][ 3 ])) {
+ return $this->callTagCompiler(
+ 'private_object_block_function',
+ $args,
+ $parameter,
+ $tag,
+ $method
+ );
+ } else {
+ // throw exception
+ $this->trigger_template_error(
+ 'not allowed method "' . $method . '" in registered object "' .
+ $tag . '"',
+ null,
+ true
+ );
+ }
+ }
+ // check if tag is registered
+ foreach (array(
+ Smarty::PLUGIN_COMPILER,
+ Smarty::PLUGIN_FUNCTION,
+ Smarty::PLUGIN_BLOCK,
+ ) as $plugin_type) {
+ if (isset($this->smarty->registered_plugins[ $plugin_type ][ $tag ])) {
+ // if compiler function plugin call it now
+ if ($plugin_type === Smarty::PLUGIN_COMPILER) {
+ $new_args = array();
+ foreach ($args as $key => $mixed) {
+ if (is_array($mixed)) {
+ $new_args = array_merge($new_args, $mixed);
+ } else {
+ $new_args[ $key ] = $mixed;
+ }
+ }
+ if (!$this->smarty->registered_plugins[ $plugin_type ][ $tag ][ 1 ]) {
+ $this->tag_nocache = true;
+ }
+ return call_user_func_array(
+ $this->smarty->registered_plugins[ $plugin_type ][ $tag ][ 0 ],
+ array(
+ $new_args,
+ $this
+ )
+ );
+ }
+ // compile registered function or block function
+ if ($plugin_type === Smarty::PLUGIN_FUNCTION || $plugin_type === Smarty::PLUGIN_BLOCK) {
+ return $this->callTagCompiler(
+ 'private_registered_' . $plugin_type,
+ $args,
+ $parameter,
+ $tag
+ );
+ }
+ }
+ }
+ // check plugins from plugins folder
+ foreach ($this->plugin_search_order as $plugin_type) {
+ if ($plugin_type === Smarty::PLUGIN_COMPILER
+ && $this->smarty->loadPlugin('smarty_compiler_' . $tag)
+ && (!isset($this->smarty->security_policy)
+ || $this->smarty->security_policy->isTrustedTag($tag, $this))
+ ) {
+ $plugin = 'smarty_compiler_' . $tag;
+ if (is_callable($plugin)) {
+ // convert arguments format for old compiler plugins
+ $new_args = array();
+ foreach ($args as $key => $mixed) {
+ if (is_array($mixed)) {
+ $new_args = array_merge($new_args, $mixed);
+ } else {
+ $new_args[ $key ] = $mixed;
+ }
+ }
+ return $plugin($new_args, $this->smarty);
+ }
+ if (class_exists($plugin, false)) {
+ $plugin_object = new $plugin;
+ if (method_exists($plugin_object, 'compile')) {
+ return $plugin_object->compile($args, $this);
+ }
+ }
+ throw new SmartyException("Plugin '{$tag}' not callable");
+ } else {
+ if ($function = $this->getPlugin($tag, $plugin_type)) {
+ if (!isset($this->smarty->security_policy)
+ || $this->smarty->security_policy->isTrustedTag($tag, $this)
+ ) {
+ return $this->callTagCompiler(
+ 'private_' . $plugin_type . '_plugin',
+ $args,
+ $parameter,
+ $tag,
+ $function
+ );
+ }
+ }
+ }
+ }
+ if (is_callable($this->smarty->default_plugin_handler_func)) {
+ $found = false;
+ // look for already resolved tags
+ foreach ($this->plugin_search_order as $plugin_type) {
+ if (isset($this->default_handler_plugins[ $plugin_type ][ $tag ])) {
+ $found = true;
+ break;
+ }
+ }
+ if (!$found) {
+ // call default handler
+ foreach ($this->plugin_search_order as $plugin_type) {
+ if ($this->getPluginFromDefaultHandler($tag, $plugin_type)) {
+ $found = true;
+ break;
+ }
+ }
+ }
+ if ($found) {
+ // if compiler function plugin call it now
+ if ($plugin_type === Smarty::PLUGIN_COMPILER) {
+ $new_args = array();
+ foreach ($args as $key => $mixed) {
+ if (is_array($mixed)) {
+ $new_args = array_merge($new_args, $mixed);
+ } else {
+ $new_args[ $key ] = $mixed;
+ }
+ }
+ return call_user_func_array(
+ $this->default_handler_plugins[ $plugin_type ][ $tag ][ 0 ],
+ array(
+ $new_args,
+ $this
+ )
+ );
+ } else {
+ return $this->callTagCompiler(
+ 'private_registered_' . $plugin_type,
+ $args,
+ $parameter,
+ $tag
+ );
+ }
+ }
+ }
+ } else {
+ // compile closing tag of block function
+ $base_tag = substr($tag, 0, -5);
+ // check if closing tag is a registered object
+ if (isset($this->smarty->registered_objects[ $base_tag ]) && isset($parameter[ 'object_method' ])) {
+ $method = $parameter[ 'object_method' ];
+ if (in_array($method, $this->smarty->registered_objects[ $base_tag ][ 3 ])) {
+ return $this->callTagCompiler(
+ 'private_object_block_function',
+ $args,
+ $parameter,
+ $tag,
+ $method
+ );
+ } else {
+ // throw exception
+ $this->trigger_template_error(
+ 'not allowed closing tag method "' . $method .
+ '" in registered object "' . $base_tag . '"',
+ null,
+ true
+ );
+ }
+ }
+ // registered block tag ?
+ if (isset($this->smarty->registered_plugins[ Smarty::PLUGIN_BLOCK ][ $base_tag ])
+ || isset($this->default_handler_plugins[ Smarty::PLUGIN_BLOCK ][ $base_tag ])
+ ) {
+ return $this->callTagCompiler('private_registered_block', $args, $parameter, $tag);
+ }
+ // registered function tag ?
+ if (isset($this->smarty->registered_plugins[ Smarty::PLUGIN_FUNCTION ][ $tag ])) {
+ return $this->callTagCompiler('private_registered_function', $args, $parameter, $tag);
+ }
+ // block plugin?
+ if ($function = $this->getPlugin($base_tag, Smarty::PLUGIN_BLOCK)) {
+ return $this->callTagCompiler('private_block_plugin', $args, $parameter, $tag, $function);
+ }
+ // function plugin?
+ if ($function = $this->getPlugin($tag, Smarty::PLUGIN_FUNCTION)) {
+ if (!isset($this->smarty->security_policy)
+ || $this->smarty->security_policy->isTrustedTag($tag, $this)
+ ) {
+ return $this->callTagCompiler('private_function_plugin', $args, $parameter, $tag, $function);
+ }
+ }
+ // registered compiler plugin ?
+ if (isset($this->smarty->registered_plugins[ Smarty::PLUGIN_COMPILER ][ $tag ])) {
+ // if compiler function plugin call it now
+ $args = array();
+ if (!$this->smarty->registered_plugins[ Smarty::PLUGIN_COMPILER ][ $tag ][ 1 ]) {
+ $this->tag_nocache = true;
+ }
+ return call_user_func_array(
+ $this->smarty->registered_plugins[ Smarty::PLUGIN_COMPILER ][ $tag ][ 0 ],
+ array(
+ $args,
+ $this
+ )
+ );
+ }
+ if ($this->smarty->loadPlugin('smarty_compiler_' . $tag)) {
+ $plugin = 'smarty_compiler_' . $tag;
+ if (is_callable($plugin)) {
+ return $plugin($args, $this->smarty);
+ }
+ if (class_exists($plugin, false)) {
+ $plugin_object = new $plugin;
+ if (method_exists($plugin_object, 'compile')) {
+ return $plugin_object->compile($args, $this);
+ }
+ }
+ throw new SmartyException("Plugin '{$tag}' not callable");
+ }
+ }
+ $this->trigger_template_error("unknown tag '{$tag}'", null, true);
+ }
+ }
+}
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_templatelexer.php b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_templatelexer.php
new file mode 100644
index 000000000..5ca482058
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_templatelexer.php
@@ -0,0 +1,1095 @@
+
+ */
+class Smarty_Internal_Templatelexer
+{
+ /**
+ * Source
+ *
+ * @var string
+ */
+ public $data;
+
+ /**
+ * Source length
+ *
+ * @var int
+ */
+ public $dataLength = null;
+
+ /**
+ * byte counter
+ *
+ * @var int
+ */
+ public $counter;
+
+ /**
+ * token number
+ *
+ * @var int
+ */
+ public $token;
+
+ /**
+ * token value
+ *
+ * @var string
+ */
+ public $value;
+
+ /**
+ * current line
+ *
+ * @var int
+ */
+ public $line;
+
+ /**
+ * tag start line
+ *
+ * @var
+ */
+ public $taglineno;
+
+ /**
+ * php code type
+ *
+ * @var string
+ */
+ public $phpType = '';
+
+ /**
+ * state number
+ *
+ * @var int
+ */
+ public $state = 1;
+
+ /**
+ * Smarty object
+ *
+ * @var Smarty
+ */
+ public $smarty = null;
+
+ /**
+ * compiler object
+ *
+ * @var Smarty_Internal_TemplateCompilerBase
+ */
+ public $compiler = null;
+
+ /**
+ * trace file
+ *
+ * @var resource
+ */
+ public $yyTraceFILE;
+
+ /**
+ * trace prompt
+ *
+ * @var string
+ */
+ public $yyTracePrompt;
+
+ /**
+ * XML flag true while processing xml
+ *
+ * @var bool
+ */
+ public $is_xml = false;
+
+ /**
+ * state names
+ *
+ * @var array
+ */
+ public $state_name = array(1 => 'TEXT', 2 => 'TAG', 3 => 'TAGBODY', 4 => 'LITERAL', 5 => 'DOUBLEQUOTEDSTRING',);
+
+ /**
+ * token names
+ *
+ * @var array
+ */
+ public $smarty_token_names = array( // Text for parser error messages
+ 'NOT' => '(!,not)',
+ 'OPENP' => '(',
+ 'CLOSEP' => ')',
+ 'OPENB' => '[',
+ 'CLOSEB' => ']',
+ 'PTR' => '->',
+ 'APTR' => '=>',
+ 'EQUAL' => '=',
+ 'NUMBER' => 'number',
+ 'UNIMATH' => '+" , "-',
+ 'MATH' => '*" , "/" , "%',
+ 'INCDEC' => '++" , "--',
+ 'SPACE' => ' ',
+ 'DOLLAR' => '$',
+ 'SEMICOLON' => ';',
+ 'COLON' => ':',
+ 'DOUBLECOLON' => '::',
+ 'AT' => '@',
+ 'HATCH' => '#',
+ 'QUOTE' => '"',
+ 'BACKTICK' => '`',
+ 'VERT' => '"|" modifier',
+ 'DOT' => '.',
+ 'COMMA' => '","',
+ 'QMARK' => '"?"',
+ 'ID' => 'id, name',
+ 'TEXT' => 'text',
+ 'LDELSLASH' => '{/..} closing tag',
+ 'LDEL' => '{...} Smarty tag',
+ 'COMMENT' => 'comment',
+ 'AS' => 'as',
+ 'TO' => 'to',
+ 'PHP' => '" '"<", "==" ... logical operator',
+ 'TLOGOP' => '"lt", "eq" ... logical operator; "is div by" ... if condition',
+ 'SCOND' => '"is even" ... if condition',
+ );
+
+ /**
+ * literal tag nesting level
+ *
+ * @var int
+ */
+ private $literal_cnt = 0;
+
+ /**
+ * preg token pattern for state TEXT
+ *
+ * @var string
+ */
+ private $yy_global_pattern1 = null;
+
+ /**
+ * preg token pattern for state TAG
+ *
+ * @var string
+ */
+ private $yy_global_pattern2 = null;
+
+ /**
+ * preg token pattern for state TAGBODY
+ *
+ * @var string
+ */
+ private $yy_global_pattern3 = null;
+
+ /**
+ * preg token pattern for state LITERAL
+ *
+ * @var string
+ */
+ private $yy_global_pattern4 = null;
+
+ /**
+ * preg token pattern for state DOUBLEQUOTEDSTRING
+ *
+ * @var null
+ */
+ private $yy_global_pattern5 = null;
+
+ /**
+ * preg token pattern for text
+ *
+ * @var null
+ */
+ private $yy_global_text = null;
+
+ /**
+ * preg token pattern for literal
+ *
+ * @var null
+ */
+ private $yy_global_literal = null;
+
+ /**
+ * constructor
+ *
+ * @param string $source template source
+ * @param Smarty_Internal_TemplateCompilerBase $compiler
+ */
+ public function __construct($source, Smarty_Internal_TemplateCompilerBase $compiler)
+ {
+ $this->data = $source;
+ $this->dataLength = strlen($this->data);
+ $this->counter = 0;
+ if (preg_match('/^\xEF\xBB\xBF/i', $this->data, $match)) {
+ $this->counter += strlen($match[0]);
+ }
+ $this->line = 1;
+ $this->smarty = $compiler->template->smarty;
+ $this->compiler = $compiler;
+ $this->compiler->initDelimiterPreg();
+ $this->smarty_token_names['LDEL'] = $this->smarty->getLeftDelimiter();
+ $this->smarty_token_names['RDEL'] = $this->smarty->getRightDelimiter();
+ }
+
+ /**
+ * open lexer/parser trace file
+ *
+ */
+ public function PrintTrace()
+ {
+ $this->yyTraceFILE = fopen('php://output', 'w');
+ $this->yyTracePrompt = ' ';
+ }
+
+ /**
+ * replace placeholders with runtime preg code
+ *
+ * @param string $preg
+ *
+ * @return string
+ */
+ public function replace($preg)
+ {
+ return $this->compiler->replaceDelimiter($preg);
+ }
+
+ /**
+ * check if current value is an autoliteral left delimiter
+ *
+ * @return bool
+ */
+ public function isAutoLiteral()
+ {
+ return $this->smarty->getAutoLiteral() && isset($this->value[ $this->compiler->getLdelLength() ]) ?
+ strpos(" \n\t\r", $this->value[ $this->compiler->getLdelLength() ]) !== false : false;
+ }
+
+
+ private $_yy_state = 1;
+ private $_yy_stack = array();
+
+ public function yylex()
+ {
+ return $this->{'yylex' . $this->_yy_state}();
+ }
+
+ public function yypushstate($state)
+ {
+ if ($this->yyTraceFILE) {
+ fprintf($this->yyTraceFILE, "%sState push %s\n", $this->yyTracePrompt, isset($this->state_name[$this->_yy_state]) ? $this->state_name[$this->_yy_state] : $this->_yy_state);
+ }
+ array_push($this->_yy_stack, $this->_yy_state);
+ $this->_yy_state = $state;
+ if ($this->yyTraceFILE) {
+ fprintf($this->yyTraceFILE, "%snew State %s\n", $this->yyTracePrompt, isset($this->state_name[$this->_yy_state]) ? $this->state_name[$this->_yy_state] : $this->_yy_state);
+ }
+ }
+
+ public function yypopstate()
+ {
+ if ($this->yyTraceFILE) {
+ fprintf($this->yyTraceFILE, "%sState pop %s\n", $this->yyTracePrompt, isset($this->state_name[$this->_yy_state]) ? $this->state_name[$this->_yy_state] : $this->_yy_state);
+ }
+ $this->_yy_state = array_pop($this->_yy_stack);
+ if ($this->yyTraceFILE) {
+ fprintf($this->yyTraceFILE, "%snew State %s\n", $this->yyTracePrompt, isset($this->state_name[$this->_yy_state]) ? $this->state_name[$this->_yy_state] : $this->_yy_state);
+ }
+
+ }
+
+ public function yybegin($state)
+ {
+ $this->_yy_state = $state;
+ if ($this->yyTraceFILE) {
+ fprintf($this->yyTraceFILE, "%sState set %s\n", $this->yyTracePrompt, isset($this->state_name[$this->_yy_state]) ? $this->state_name[$this->_yy_state] : $this->_yy_state);
+ }
+ }
+
+
+
+ public function yylex1()
+ {
+ if (!isset($this->yy_global_pattern1)) {
+ $this->yy_global_pattern1 = $this->replace("/\G([{][}])|\G((SMARTYldel)SMARTYal[*])|\G((SMARTYldel)SMARTYautoliteral\\s+SMARTYliteral)|\G((SMARTYldel)SMARTYalliteral\\s*SMARTYrdel)|\G((SMARTYldel)SMARTYal[\/]literal\\s*SMARTYrdel)|\G((SMARTYldel)SMARTYal)|\G([\S\s])/isS");
+ }
+ if (!isset($this->dataLength)) {
+ $this->dataLength = strlen($this->data);
+ }
+ if ($this->counter >= $this->dataLength) {
+ return false; // end of input
+ }
+
+ do {
+ if (preg_match($this->yy_global_pattern1,$this->data, $yymatches, 0, $this->counter)) {
+ if (!isset($yymatches[ 0 ][1])) {
+ $yymatches = preg_grep("/(.|\s)+/", $yymatches);
+ } else {
+ $yymatches = array_filter($yymatches);
+ }
+ if (empty($yymatches)) {
+ throw new Exception('Error: lexing failed because a rule matched' .
+ ' an empty string. Input "' . substr($this->data,
+ $this->counter, 5) . '... state TEXT');
+ }
+ next($yymatches); // skip global match
+ $this->token = key($yymatches); // token number
+ $this->value = current($yymatches); // token value
+ $r = $this->{'yy_r1_' . $this->token}();
+ if ($r === null) {
+ $this->counter += strlen($this->value);
+ $this->line += substr_count($this->value, "\n");
+ // accept this token
+ return true;
+ } elseif ($r === true) {
+ // we have changed state
+ // process this token in the new state
+ return $this->yylex();
+ } elseif ($r === false) {
+ $this->counter += strlen($this->value);
+ $this->line += substr_count($this->value, "\n");
+ if ($this->counter >= $this->dataLength) {
+ return false; // end of input
+ }
+ // skip this token
+ continue;
+ } } else {
+ throw new Exception('Unexpected input at line' . $this->line .
+ ': ' . $this->data[$this->counter]);
+ }
+ break;
+ } while (true);
+
+ } // end function
+
+
+ const TEXT = 1;
+ public function yy_r1_1()
+ {
+
+ $this->token = Smarty_Internal_Templateparser::TP_TEXT;
+ }
+ public function yy_r1_2()
+ {
+
+ $to = $this->dataLength;
+ preg_match("/[*]{$this->compiler->getRdelPreg()}[\n]?/",$this->data,$match,PREG_OFFSET_CAPTURE,$this->counter);
+ if (isset($match[0][1])) {
+ $to = $match[0][1] + strlen($match[0][0]);
+ } else {
+ $this->compiler->trigger_template_error ("missing or misspelled comment closing tag '{$this->smarty->getRightDelimiter()}'");
+ }
+ $this->value = substr($this->data,$this->counter,$to-$this->counter);
+ return false;
+ }
+ public function yy_r1_4()
+ {
+
+ $this->token = Smarty_Internal_Templateparser::TP_TEXT;
+ }
+ public function yy_r1_6()
+ {
+
+ $this->token = Smarty_Internal_Templateparser::TP_LITERALSTART;
+ $this->yypushstate(self::LITERAL);
+ }
+ public function yy_r1_8()
+ {
+
+ $this->token = Smarty_Internal_Templateparser::TP_LITERALEND;
+ $this->yypushstate(self::LITERAL);
+ }
+ public function yy_r1_10()
+ {
+
+ $this->yypushstate(self::TAG);
+ return true;
+ }
+ public function yy_r1_12()
+ {
+
+ if (!isset($this->yy_global_text)) {
+ $this->yy_global_text = $this->replace('/(SMARTYldel)SMARTYal/isS');
+ }
+ $to = $this->dataLength;
+ preg_match($this->yy_global_text, $this->data,$match,PREG_OFFSET_CAPTURE,$this->counter);
+ if (isset($match[0][1])) {
+ $to = $match[0][1];
+ }
+ $this->value = substr($this->data,$this->counter,$to-$this->counter);
+ $this->token = Smarty_Internal_Templateparser::TP_TEXT;
+ }
+
+
+ public function yylex2()
+ {
+ if (!isset($this->yy_global_pattern2)) {
+ $this->yy_global_pattern2 = $this->replace("/\G((SMARTYldel)SMARTYal(if|elseif|else if|while)\\s+)|\G((SMARTYldel)SMARTYalfor\\s+)|\G((SMARTYldel)SMARTYalforeach(?![^\s]))|\G((SMARTYldel)SMARTYalsetfilter\\s+)|\G((SMARTYldel)SMARTYalmake_nocache\\s+)|\G((SMARTYldel)SMARTYal[0-9]*[a-zA-Z_]\\w*(\\s+nocache)?\\s*SMARTYrdel)|\G((SMARTYldel)SMARTYal[$]smarty\\.block\\.(child|parent)\\s*SMARTYrdel)|\G((SMARTYldel)SMARTYal[\/][0-9]*[a-zA-Z_]\\w*\\s*SMARTYrdel)|\G((SMARTYldel)SMARTYal[$][0-9]*[a-zA-Z_]\\w*(\\s+nocache)?\\s*SMARTYrdel)|\G((SMARTYldel)SMARTYal[\/])|\G((SMARTYldel)SMARTYal)/isS");
+ }
+ if (!isset($this->dataLength)) {
+ $this->dataLength = strlen($this->data);
+ }
+ if ($this->counter >= $this->dataLength) {
+ return false; // end of input
+ }
+
+ do {
+ if (preg_match($this->yy_global_pattern2,$this->data, $yymatches, 0, $this->counter)) {
+ if (!isset($yymatches[ 0 ][1])) {
+ $yymatches = preg_grep("/(.|\s)+/", $yymatches);
+ } else {
+ $yymatches = array_filter($yymatches);
+ }
+ if (empty($yymatches)) {
+ throw new Exception('Error: lexing failed because a rule matched' .
+ ' an empty string. Input "' . substr($this->data,
+ $this->counter, 5) . '... state TAG');
+ }
+ next($yymatches); // skip global match
+ $this->token = key($yymatches); // token number
+ $this->value = current($yymatches); // token value
+ $r = $this->{'yy_r2_' . $this->token}();
+ if ($r === null) {
+ $this->counter += strlen($this->value);
+ $this->line += substr_count($this->value, "\n");
+ // accept this token
+ return true;
+ } elseif ($r === true) {
+ // we have changed state
+ // process this token in the new state
+ return $this->yylex();
+ } elseif ($r === false) {
+ $this->counter += strlen($this->value);
+ $this->line += substr_count($this->value, "\n");
+ if ($this->counter >= $this->dataLength) {
+ return false; // end of input
+ }
+ // skip this token
+ continue;
+ } } else {
+ throw new Exception('Unexpected input at line' . $this->line .
+ ': ' . $this->data[$this->counter]);
+ }
+ break;
+ } while (true);
+
+ } // end function
+
+
+ const TAG = 2;
+ public function yy_r2_1()
+ {
+
+ $this->token = Smarty_Internal_Templateparser::TP_LDELIF;
+ $this->yybegin(self::TAGBODY);
+ $this->taglineno = $this->line;
+ }
+ public function yy_r2_4()
+ {
+
+ $this->token = Smarty_Internal_Templateparser::TP_LDELFOR;
+ $this->yybegin(self::TAGBODY);
+ $this->taglineno = $this->line;
+ }
+ public function yy_r2_6()
+ {
+
+ $this->token = Smarty_Internal_Templateparser::TP_LDELFOREACH;
+ $this->yybegin(self::TAGBODY);
+ $this->taglineno = $this->line;
+ }
+ public function yy_r2_8()
+ {
+
+ $this->token = Smarty_Internal_Templateparser::TP_LDELSETFILTER;
+ $this->yybegin(self::TAGBODY);
+ $this->taglineno = $this->line;
+ }
+ public function yy_r2_10()
+ {
+
+ $this->token = Smarty_Internal_Templateparser::TP_LDELMAKENOCACHE;
+ $this->yybegin(self::TAGBODY);
+ $this->taglineno = $this->line;
+ }
+ public function yy_r2_12()
+ {
+
+ $this->yypopstate();
+ $this->token = Smarty_Internal_Templateparser::TP_SIMPLETAG;
+ $this->taglineno = $this->line;
+ }
+ public function yy_r2_15()
+ {
+
+ $this->yypopstate();
+ $this->token = Smarty_Internal_Templateparser::TP_SMARTYBLOCKCHILDPARENT;
+ $this->taglineno = $this->line;
+ }
+ public function yy_r2_18()
+ {
+
+ $this->yypopstate();
+ $this->token = Smarty_Internal_Templateparser::TP_CLOSETAG;
+ $this->taglineno = $this->line;
+ }
+ public function yy_r2_20()
+ {
+
+ if ($this->_yy_stack[count($this->_yy_stack)-1] === self::TEXT) {
+ $this->yypopstate();
+ $this->token = Smarty_Internal_Templateparser::TP_SIMPELOUTPUT;
+ $this->taglineno = $this->line;
+ } else {
+ $this->value = $this->smarty->getLeftDelimiter();
+ $this->token = Smarty_Internal_Templateparser::TP_LDEL;
+ $this->yybegin(self::TAGBODY);
+ $this->taglineno = $this->line;
+ }
+ }
+ public function yy_r2_23()
+ {
+
+ $this->token = Smarty_Internal_Templateparser::TP_LDELSLASH;
+ $this->yybegin(self::TAGBODY);
+ $this->taglineno = $this->line;
+ }
+ public function yy_r2_25()
+ {
+
+ $this->token = Smarty_Internal_Templateparser::TP_LDEL;
+ $this->yybegin(self::TAGBODY);
+ $this->taglineno = $this->line;
+ }
+
+
+ public function yylex3()
+ {
+ if (!isset($this->yy_global_pattern3)) {
+ $this->yy_global_pattern3 = $this->replace("/\G(\\s*SMARTYrdel)|\G((SMARTYldel)SMARTYal)|\G([\"])|\G('[^'\\\\]*(?:\\\\.[^'\\\\]*)*')|\G([$][0-9]*[a-zA-Z_]\\w*)|\G([$])|\G(\\s+is\\s+in\\s+)|\G(\\s+as\\s+)|\G(\\s+to\\s+)|\G(\\s+step\\s+)|\G(\\s+instanceof\\s+)|\G(\\s*([!=][=]{1,2}|[<][=>]?|[>][=]?|[&|]{2})\\s*)|\G(\\s+(eq|ne|neq|gt|ge|gte|lt|le|lte|mod|and|or|xor)\\s+)|\G(\\s+is\\s+(not\\s+)?(odd|even|div)\\s+by\\s+)|\G(\\s+is\\s+(not\\s+)?(odd|even))|\G([!]\\s*|not\\s+)|\G([(](int(eger)?|bool(ean)?|float|double|real|string|binary|array|object)[)]\\s*)|\G(\\s*[(]\\s*)|\G(\\s*[)])|\G(\\[\\s*)|\G(\\s*\\])|\G(\\s*[-][>]\\s*)|\G(\\s*[=][>]\\s*)|\G(\\s*[=]\\s*)|\G(([+]|[-]){2})|\G(\\s*([+]|[-])\\s*)|\G(\\s*([*]{1,2}|[%\/^&]|[<>]{2})\\s*)|\G([@])|\G(array\\s*[(]\\s*)|\G([#])|\G(\\s+[0-9]*[a-zA-Z_][a-zA-Z0-9_\-:]*\\s*[=]\\s*)|\G(([0-9]*[a-zA-Z_]\\w*)?(\\\\[0-9]*[a-zA-Z_]\\w*)+)|\G([0-9]*[a-zA-Z_]\\w*)|\G(\\d+)|\G([`])|\G([|][@]?)|\G([.])|\G(\\s*[,]\\s*)|\G(\\s*[;]\\s*)|\G([:]{2})|\G(\\s*[:]\\s*)|\G(\\s*[?]\\s*)|\G(0[xX][0-9a-fA-F]+)|\G(\\s+)|\G([\S\s])/isS");
+ }
+ if (!isset($this->dataLength)) {
+ $this->dataLength = strlen($this->data);
+ }
+ if ($this->counter >= $this->dataLength) {
+ return false; // end of input
+ }
+
+ do {
+ if (preg_match($this->yy_global_pattern3,$this->data, $yymatches, 0, $this->counter)) {
+ if (!isset($yymatches[ 0 ][1])) {
+ $yymatches = preg_grep("/(.|\s)+/", $yymatches);
+ } else {
+ $yymatches = array_filter($yymatches);
+ }
+ if (empty($yymatches)) {
+ throw new Exception('Error: lexing failed because a rule matched' .
+ ' an empty string. Input "' . substr($this->data,
+ $this->counter, 5) . '... state TAGBODY');
+ }
+ next($yymatches); // skip global match
+ $this->token = key($yymatches); // token number
+ $this->value = current($yymatches); // token value
+ $r = $this->{'yy_r3_' . $this->token}();
+ if ($r === null) {
+ $this->counter += strlen($this->value);
+ $this->line += substr_count($this->value, "\n");
+ // accept this token
+ return true;
+ } elseif ($r === true) {
+ // we have changed state
+ // process this token in the new state
+ return $this->yylex();
+ } elseif ($r === false) {
+ $this->counter += strlen($this->value);
+ $this->line += substr_count($this->value, "\n");
+ if ($this->counter >= $this->dataLength) {
+ return false; // end of input
+ }
+ // skip this token
+ continue;
+ } } else {
+ throw new Exception('Unexpected input at line' . $this->line .
+ ': ' . $this->data[$this->counter]);
+ }
+ break;
+ } while (true);
+
+ } // end function
+
+
+ const TAGBODY = 3;
+ public function yy_r3_1()
+ {
+
+ $this->token = Smarty_Internal_Templateparser::TP_RDEL;
+ $this->yypopstate();
+ }
+ public function yy_r3_2()
+ {
+
+ $this->yypushstate(self::TAG);
+ return true;
+ }
+ public function yy_r3_4()
+ {
+
+ $this->token = Smarty_Internal_Templateparser::TP_QUOTE;
+ $this->yypushstate(self::DOUBLEQUOTEDSTRING);
+ $this->compiler->enterDoubleQuote();
+ }
+ public function yy_r3_5()
+ {
+
+ $this->token = Smarty_Internal_Templateparser::TP_SINGLEQUOTESTRING;
+ }
+ public function yy_r3_6()
+ {
+
+ $this->token = Smarty_Internal_Templateparser::TP_DOLLARID;
+ }
+ public function yy_r3_7()
+ {
+
+ $this->token = Smarty_Internal_Templateparser::TP_DOLLAR;
+ }
+ public function yy_r3_8()
+ {
+
+ $this->token = Smarty_Internal_Templateparser::TP_ISIN;
+ }
+ public function yy_r3_9()
+ {
+
+ $this->token = Smarty_Internal_Templateparser::TP_AS;
+ }
+ public function yy_r3_10()
+ {
+
+ $this->token = Smarty_Internal_Templateparser::TP_TO;
+ }
+ public function yy_r3_11()
+ {
+
+ $this->token = Smarty_Internal_Templateparser::TP_STEP;
+ }
+ public function yy_r3_12()
+ {
+
+ $this->token = Smarty_Internal_Templateparser::TP_INSTANCEOF;
+ }
+ public function yy_r3_13()
+ {
+
+ $this->token = Smarty_Internal_Templateparser::TP_LOGOP;
+ }
+ public function yy_r3_15()
+ {
+
+ $this->token = Smarty_Internal_Templateparser::TP_SLOGOP;
+ }
+ public function yy_r3_17()
+ {
+
+ $this->token = Smarty_Internal_Templateparser::TP_TLOGOP;
+ }
+ public function yy_r3_20()
+ {
+
+ $this->token = Smarty_Internal_Templateparser::TP_SINGLECOND;
+ }
+ public function yy_r3_23()
+ {
+
+ $this->token = Smarty_Internal_Templateparser::TP_NOT;
+ }
+ public function yy_r3_24()
+ {
+
+ $this->token = Smarty_Internal_Templateparser::TP_TYPECAST;
+ }
+ public function yy_r3_28()
+ {
+
+ $this->token = Smarty_Internal_Templateparser::TP_OPENP;
+ }
+ public function yy_r3_29()
+ {
+
+ $this->token = Smarty_Internal_Templateparser::TP_CLOSEP;
+ }
+ public function yy_r3_30()
+ {
+
+ $this->token = Smarty_Internal_Templateparser::TP_OPENB;
+ }
+ public function yy_r3_31()
+ {
+
+ $this->token = Smarty_Internal_Templateparser::TP_CLOSEB;
+ }
+ public function yy_r3_32()
+ {
+
+ $this->token = Smarty_Internal_Templateparser::TP_PTR;
+ }
+ public function yy_r3_33()
+ {
+
+ $this->token = Smarty_Internal_Templateparser::TP_APTR;
+ }
+ public function yy_r3_34()
+ {
+
+ $this->token = Smarty_Internal_Templateparser::TP_EQUAL;
+ }
+ public function yy_r3_35()
+ {
+
+ $this->token = Smarty_Internal_Templateparser::TP_INCDEC;
+ }
+ public function yy_r3_37()
+ {
+
+ $this->token = Smarty_Internal_Templateparser::TP_UNIMATH;
+ }
+ public function yy_r3_39()
+ {
+
+ $this->token = Smarty_Internal_Templateparser::TP_MATH;
+ }
+ public function yy_r3_41()
+ {
+
+ $this->token = Smarty_Internal_Templateparser::TP_AT;
+ }
+ public function yy_r3_42()
+ {
+
+ $this->token = Smarty_Internal_Templateparser::TP_ARRAYOPEN;
+ }
+ public function yy_r3_43()
+ {
+
+ $this->token = Smarty_Internal_Templateparser::TP_HATCH;
+ }
+ public function yy_r3_44()
+ {
+
+ // resolve conflicts with shorttag and right_delimiter starting with '='
+ if (substr($this->data, $this->counter + strlen($this->value) - 1, $this->compiler->getRdelLength()) === $this->smarty->getRightDelimiter()) {
+ preg_match('/\s+/',$this->value,$match);
+ $this->value = $match[0];
+ $this->token = Smarty_Internal_Templateparser::TP_SPACE;
+ } else {
+ $this->token = Smarty_Internal_Templateparser::TP_ATTR;
+ }
+ }
+ public function yy_r3_45()
+ {
+
+ $this->token = Smarty_Internal_Templateparser::TP_NAMESPACE;
+ }
+ public function yy_r3_48()
+ {
+
+ $this->token = Smarty_Internal_Templateparser::TP_ID;
+ }
+ public function yy_r3_49()
+ {
+
+ $this->token = Smarty_Internal_Templateparser::TP_INTEGER;
+ }
+ public function yy_r3_50()
+ {
+
+ $this->token = Smarty_Internal_Templateparser::TP_BACKTICK;
+ $this->yypopstate();
+ }
+ public function yy_r3_51()
+ {
+
+ $this->token = Smarty_Internal_Templateparser::TP_VERT;
+ }
+ public function yy_r3_52()
+ {
+
+ $this->token = Smarty_Internal_Templateparser::TP_DOT;
+ }
+ public function yy_r3_53()
+ {
+
+ $this->token = Smarty_Internal_Templateparser::TP_COMMA;
+ }
+ public function yy_r3_54()
+ {
+
+ $this->token = Smarty_Internal_Templateparser::TP_SEMICOLON;
+ }
+ public function yy_r3_55()
+ {
+
+ $this->token = Smarty_Internal_Templateparser::TP_DOUBLECOLON;
+ }
+ public function yy_r3_56()
+ {
+
+ $this->token = Smarty_Internal_Templateparser::TP_COLON;
+ }
+ public function yy_r3_57()
+ {
+
+ $this->token = Smarty_Internal_Templateparser::TP_QMARK;
+ }
+ public function yy_r3_58()
+ {
+
+ $this->token = Smarty_Internal_Templateparser::TP_HEX;
+ }
+ public function yy_r3_59()
+ {
+
+ $this->token = Smarty_Internal_Templateparser::TP_SPACE;
+ }
+ public function yy_r3_60()
+ {
+
+ $this->token = Smarty_Internal_Templateparser::TP_TEXT;
+ }
+
+
+
+ public function yylex4()
+ {
+ if (!isset($this->yy_global_pattern4)) {
+ $this->yy_global_pattern4 = $this->replace("/\G((SMARTYldel)SMARTYalliteral\\s*SMARTYrdel)|\G((SMARTYldel)SMARTYal[\/]literal\\s*SMARTYrdel)|\G([\S\s])/isS");
+ }
+ if (!isset($this->dataLength)) {
+ $this->dataLength = strlen($this->data);
+ }
+ if ($this->counter >= $this->dataLength) {
+ return false; // end of input
+ }
+
+ do {
+ if (preg_match($this->yy_global_pattern4,$this->data, $yymatches, 0, $this->counter)) {
+ if (!isset($yymatches[ 0 ][1])) {
+ $yymatches = preg_grep("/(.|\s)+/", $yymatches);
+ } else {
+ $yymatches = array_filter($yymatches);
+ }
+ if (empty($yymatches)) {
+ throw new Exception('Error: lexing failed because a rule matched' .
+ ' an empty string. Input "' . substr($this->data,
+ $this->counter, 5) . '... state LITERAL');
+ }
+ next($yymatches); // skip global match
+ $this->token = key($yymatches); // token number
+ $this->value = current($yymatches); // token value
+ $r = $this->{'yy_r4_' . $this->token}();
+ if ($r === null) {
+ $this->counter += strlen($this->value);
+ $this->line += substr_count($this->value, "\n");
+ // accept this token
+ return true;
+ } elseif ($r === true) {
+ // we have changed state
+ // process this token in the new state
+ return $this->yylex();
+ } elseif ($r === false) {
+ $this->counter += strlen($this->value);
+ $this->line += substr_count($this->value, "\n");
+ if ($this->counter >= $this->dataLength) {
+ return false; // end of input
+ }
+ // skip this token
+ continue;
+ } } else {
+ throw new Exception('Unexpected input at line' . $this->line .
+ ': ' . $this->data[$this->counter]);
+ }
+ break;
+ } while (true);
+
+ } // end function
+
+
+ const LITERAL = 4;
+ public function yy_r4_1()
+ {
+
+ $this->literal_cnt++;
+ $this->token = Smarty_Internal_Templateparser::TP_LITERAL;
+ }
+ public function yy_r4_3()
+ {
+
+ if ($this->literal_cnt) {
+ $this->literal_cnt--;
+ $this->token = Smarty_Internal_Templateparser::TP_LITERAL;
+ } else {
+ $this->token = Smarty_Internal_Templateparser::TP_LITERALEND;
+ $this->yypopstate();
+ }
+ }
+ public function yy_r4_5()
+ {
+
+ if (!isset($this->yy_global_literal)) {
+ $this->yy_global_literal = $this->replace('/(SMARTYldel)SMARTYal[\/]?literalSMARTYrdel/isS');
+ }
+ $to = $this->dataLength;
+ preg_match($this->yy_global_literal, $this->data,$match,PREG_OFFSET_CAPTURE,$this->counter);
+ if (isset($match[0][1])) {
+ $to = $match[0][1];
+ } else {
+ $this->compiler->trigger_template_error ("missing or misspelled literal closing tag");
+ }
+ $this->value = substr($this->data,$this->counter,$to-$this->counter);
+ $this->token = Smarty_Internal_Templateparser::TP_LITERAL;
+ }
+
+
+ public function yylex5()
+ {
+ if (!isset($this->yy_global_pattern5)) {
+ $this->yy_global_pattern5 = $this->replace("/\G((SMARTYldel)SMARTYautoliteral\\s+SMARTYliteral)|\G((SMARTYldel)SMARTYalliteral\\s*SMARTYrdel)|\G((SMARTYldel)SMARTYal[\/]literal\\s*SMARTYrdel)|\G((SMARTYldel)SMARTYal[\/])|\G((SMARTYldel)SMARTYal[0-9]*[a-zA-Z_]\\w*)|\G((SMARTYldel)SMARTYal)|\G([\"])|\G([`][$])|\G([$][0-9]*[a-zA-Z_]\\w*)|\G([$])|\G(([^\"\\\\]*?)((?:\\\\.[^\"\\\\]*?)*?)(?=((SMARTYldel)SMARTYal|\\$|`\\$|\"SMARTYliteral)))|\G([\S\s])/isS");
+ }
+ if (!isset($this->dataLength)) {
+ $this->dataLength = strlen($this->data);
+ }
+ if ($this->counter >= $this->dataLength) {
+ return false; // end of input
+ }
+
+ do {
+ if (preg_match($this->yy_global_pattern5,$this->data, $yymatches, 0, $this->counter)) {
+ if (!isset($yymatches[ 0 ][1])) {
+ $yymatches = preg_grep("/(.|\s)+/", $yymatches);
+ } else {
+ $yymatches = array_filter($yymatches);
+ }
+ if (empty($yymatches)) {
+ throw new Exception('Error: lexing failed because a rule matched' .
+ ' an empty string. Input "' . substr($this->data,
+ $this->counter, 5) . '... state DOUBLEQUOTEDSTRING');
+ }
+ next($yymatches); // skip global match
+ $this->token = key($yymatches); // token number
+ $this->value = current($yymatches); // token value
+ $r = $this->{'yy_r5_' . $this->token}();
+ if ($r === null) {
+ $this->counter += strlen($this->value);
+ $this->line += substr_count($this->value, "\n");
+ // accept this token
+ return true;
+ } elseif ($r === true) {
+ // we have changed state
+ // process this token in the new state
+ return $this->yylex();
+ } elseif ($r === false) {
+ $this->counter += strlen($this->value);
+ $this->line += substr_count($this->value, "\n");
+ if ($this->counter >= $this->dataLength) {
+ return false; // end of input
+ }
+ // skip this token
+ continue;
+ } } else {
+ throw new Exception('Unexpected input at line' . $this->line .
+ ': ' . $this->data[$this->counter]);
+ }
+ break;
+ } while (true);
+
+ } // end function
+
+
+ const DOUBLEQUOTEDSTRING = 5;
+ public function yy_r5_1()
+ {
+
+ $this->token = Smarty_Internal_Templateparser::TP_TEXT;
+ }
+ public function yy_r5_3()
+ {
+
+ $this->token = Smarty_Internal_Templateparser::TP_TEXT;
+ }
+ public function yy_r5_5()
+ {
+
+ $this->token = Smarty_Internal_Templateparser::TP_TEXT;
+ }
+ public function yy_r5_7()
+ {
+
+ $this->yypushstate(self::TAG);
+ return true;
+ }
+ public function yy_r5_9()
+ {
+
+ $this->yypushstate(self::TAG);
+ return true;
+ }
+ public function yy_r5_11()
+ {
+
+ $this->token = Smarty_Internal_Templateparser::TP_LDEL;
+ $this->taglineno = $this->line;
+ $this->yypushstate(self::TAGBODY);
+ }
+ public function yy_r5_13()
+ {
+
+ $this->token = Smarty_Internal_Templateparser::TP_QUOTE;
+ $this->yypopstate();
+ }
+ public function yy_r5_14()
+ {
+
+ $this->token = Smarty_Internal_Templateparser::TP_BACKTICK;
+ $this->value = substr($this->value,0,-1);
+ $this->yypushstate(self::TAGBODY);
+ $this->taglineno = $this->line;
+ }
+ public function yy_r5_15()
+ {
+
+ $this->token = Smarty_Internal_Templateparser::TP_DOLLARID;
+ }
+ public function yy_r5_16()
+ {
+
+ $this->token = Smarty_Internal_Templateparser::TP_TEXT;
+ }
+ public function yy_r5_17()
+ {
+
+ $this->token = Smarty_Internal_Templateparser::TP_TEXT;
+ }
+ public function yy_r5_22()
+ {
+
+ $to = $this->dataLength;
+ $this->value = substr($this->data,$this->counter,$to-$this->counter);
+ $this->token = Smarty_Internal_Templateparser::TP_TEXT;
+ }
+
+ }
+
+
\ No newline at end of file
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_templateparser.php b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_templateparser.php
new file mode 100644
index 000000000..c37d3c187
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_templateparser.php
@@ -0,0 +1,2929 @@
+
+*/
+class Smarty_Internal_Templateparser
+{
+// line 23 "../smarty/lexer/smarty_internal_templateparser.y"
+
+ const ERR1 = 'Security error: Call to private object member not allowed';
+ const ERR2 = 'Security error: Call to dynamic object member not allowed';
+
+ /**
+ * result status
+ *
+ * @var bool
+ */
+ public $successful = true;
+
+ /**
+ * return value
+ *
+ * @var mixed
+ */
+ public $retvalue = 0;
+
+ /**
+ * @var
+ */
+ public $yymajor;
+
+ /**
+ * last index of array variable
+ *
+ * @var mixed
+ */
+ public $last_index;
+
+ /**
+ * last variable name
+ *
+ * @var string
+ */
+ public $last_variable;
+
+ /**
+ * root parse tree buffer
+ *
+ * @var Smarty_Internal_ParseTree_Template
+ */
+ public $root_buffer;
+
+ /**
+ * current parse tree object
+ *
+ * @var Smarty_Internal_ParseTree
+ */
+ public $current_buffer;
+
+ /**
+ * lexer object
+ *
+ * @var Smarty_Internal_Templatelexer
+ */
+ public $lex;
+
+ /**
+ * internal error flag
+ *
+ * @var bool
+ */
+ private $internalError = false;
+
+ /**
+ * {strip} status
+ *
+ * @var bool
+ */
+ public $strip = false;
+ /**
+ * compiler object
+ *
+ * @var Smarty_Internal_TemplateCompilerBase
+ */
+ public $compiler = null;
+
+ /**
+ * smarty object
+ *
+ * @var Smarty
+ */
+ public $smarty = null;
+
+ /**
+ * template object
+ *
+ * @var Smarty_Internal_Template
+ */
+ public $template = null;
+
+ /**
+ * block nesting level
+ *
+ * @var int
+ */
+ public $block_nesting_level = 0;
+
+ /**
+ * security object
+ *
+ * @var Smarty_Security
+ */
+ public $security = null;
+
+ /**
+ * template prefix array
+ *
+ * @var \Smarty_Internal_ParseTree[]
+ */
+ public $template_prefix = array();
+
+ /**
+ * template prefix array
+ *
+ * @var \Smarty_Internal_ParseTree[]
+ */
+ public $template_postfix = array();
+
+ /**
+ * constructor
+ *
+ * @param Smarty_Internal_Templatelexer $lex
+ * @param Smarty_Internal_TemplateCompilerBase $compiler
+ */
+ public function __construct(Smarty_Internal_Templatelexer $lex, Smarty_Internal_TemplateCompilerBase $compiler)
+ {
+ $this->lex = $lex;
+ $this->compiler = $compiler;
+ $this->template = $this->compiler->template;
+ $this->smarty = $this->template->smarty;
+ $this->security = isset($this->smarty->security_policy) ? $this->smarty->security_policy : false;
+ $this->current_buffer = $this->root_buffer = new Smarty_Internal_ParseTree_Template();
+ }
+
+ /**
+ * insert PHP code in current buffer
+ *
+ * @param string $code
+ */
+ public function insertPhpCode($code)
+ {
+ $this->current_buffer->append_subtree($this, new Smarty_Internal_ParseTree_Tag($this, $code));
+ }
+
+ /**
+ * error rundown
+ *
+ */
+ public function errorRunDown()
+ {
+ while ($this->yystack !== array()) {
+ $this->yy_pop_parser_stack();
+ }
+ if (is_resource($this->yyTraceFILE)) {
+ fclose($this->yyTraceFILE);
+ }
+ }
+
+ /**
+ * merge PHP code with prefix code and return parse tree tag object
+ *
+ * @param string $code
+ *
+ * @return Smarty_Internal_ParseTree_Tag
+ */
+ public function mergePrefixCode($code)
+ {
+ $tmp = '';
+ foreach ($this->compiler->prefix_code as $preCode) {
+ $tmp .= $preCode;
+ }
+ $this->compiler->prefix_code = array();
+ $tmp .= $code;
+ return new Smarty_Internal_ParseTree_Tag($this, $this->compiler->processNocacheCode($tmp, true));
+ }
+
+
+ const TP_VERT = 1;
+ const TP_COLON = 2;
+ const TP_TEXT = 3;
+ const TP_STRIPON = 4;
+ const TP_STRIPOFF = 5;
+ const TP_LITERALSTART = 6;
+ const TP_LITERALEND = 7;
+ const TP_LITERAL = 8;
+ const TP_SIMPELOUTPUT = 9;
+ const TP_SIMPLETAG = 10;
+ const TP_SMARTYBLOCKCHILDPARENT = 11;
+ const TP_LDEL = 12;
+ const TP_RDEL = 13;
+ const TP_DOLLARID = 14;
+ const TP_EQUAL = 15;
+ const TP_ID = 16;
+ const TP_PTR = 17;
+ const TP_LDELMAKENOCACHE = 18;
+ const TP_LDELIF = 19;
+ const TP_LDELFOR = 20;
+ const TP_SEMICOLON = 21;
+ const TP_INCDEC = 22;
+ const TP_TO = 23;
+ const TP_STEP = 24;
+ const TP_LDELFOREACH = 25;
+ const TP_SPACE = 26;
+ const TP_AS = 27;
+ const TP_APTR = 28;
+ const TP_LDELSETFILTER = 29;
+ const TP_CLOSETAG = 30;
+ const TP_LDELSLASH = 31;
+ const TP_ATTR = 32;
+ const TP_INTEGER = 33;
+ const TP_COMMA = 34;
+ const TP_OPENP = 35;
+ const TP_CLOSEP = 36;
+ const TP_MATH = 37;
+ const TP_UNIMATH = 38;
+ const TP_ISIN = 39;
+ const TP_QMARK = 40;
+ const TP_NOT = 41;
+ const TP_TYPECAST = 42;
+ const TP_HEX = 43;
+ const TP_DOT = 44;
+ const TP_INSTANCEOF = 45;
+ const TP_SINGLEQUOTESTRING = 46;
+ const TP_DOUBLECOLON = 47;
+ const TP_NAMESPACE = 48;
+ const TP_AT = 49;
+ const TP_HATCH = 50;
+ const TP_OPENB = 51;
+ const TP_CLOSEB = 52;
+ const TP_DOLLAR = 53;
+ const TP_LOGOP = 54;
+ const TP_SLOGOP = 55;
+ const TP_TLOGOP = 56;
+ const TP_SINGLECOND = 57;
+ const TP_ARRAYOPEN = 58;
+ const TP_QUOTE = 59;
+ const TP_BACKTICK = 60;
+ const YY_NO_ACTION = 514;
+ const YY_ACCEPT_ACTION = 513;
+ const YY_ERROR_ACTION = 512;
+
+ const YY_SZ_ACTTAB = 1997;
+public static $yy_action = array(
+ 249, 250, 239, 1, 27, 127, 220, 184, 160, 213,
+ 11, 54, 278, 10, 173, 34, 108, 387, 282, 279,
+ 223, 321, 221, 8, 194, 387, 18, 387, 85, 41,
+ 387, 285, 42, 44, 264, 222, 387, 209, 387, 198,
+ 387, 52, 5, 307, 288, 288, 164, 283, 224, 4,
+ 50, 249, 250, 239, 1, 232, 131, 381, 189, 205,
+ 213, 11, 54, 39, 35, 243, 31, 108, 94, 17,
+ 381, 223, 321, 221, 439, 226, 381, 33, 49, 426,
+ 41, 439, 89, 42, 44, 264, 222, 9, 235, 163,
+ 198, 426, 52, 5, 131, 288, 212, 284, 102, 106,
+ 4, 50, 249, 250, 239, 1, 232, 129, 426, 189,
+ 347, 213, 11, 54, 175, 324, 347, 208, 108, 22,
+ 426, 301, 223, 321, 221, 302, 226, 135, 18, 49,
+ 52, 41, 26, 288, 42, 44, 264, 222, 16, 235,
+ 294, 198, 204, 52, 5, 170, 288, 32, 90, 267,
+ 268, 4, 50, 249, 250, 239, 1, 20, 129, 185,
+ 179, 255, 213, 11, 54, 455, 288, 192, 455, 108,
+ 175, 167, 455, 223, 321, 221, 439, 226, 256, 18,
+ 55, 292, 41, 439, 132, 42, 44, 264, 222, 427,
+ 235, 12, 198, 165, 52, 5, 232, 288, 288, 347,
+ 153, 427, 4, 50, 249, 250, 239, 1, 232, 129,
+ 286, 181, 347, 213, 11, 54, 24, 13, 347, 49,
+ 108, 232, 320, 426, 223, 321, 221, 195, 201, 173,
+ 18, 49, 139, 41, 296, 426, 42, 44, 264, 222,
+ 7, 235, 286, 198, 49, 52, 5, 147, 288, 117,
+ 150, 317, 263, 4, 50, 249, 250, 239, 1, 95,
+ 130, 173, 189, 155, 213, 11, 54, 22, 244, 271,
+ 192, 108, 323, 286, 101, 223, 321, 221, 294, 226,
+ 204, 18, 348, 257, 41, 166, 283, 42, 44, 264,
+ 222, 28, 235, 300, 198, 348, 52, 5, 247, 288,
+ 117, 348, 94, 206, 4, 50, 249, 250, 239, 1,
+ 95, 129, 22, 189, 277, 213, 11, 54, 91, 274,
+ 224, 426, 108, 323, 216, 156, 223, 321, 221, 132,
+ 180, 262, 18, 426, 100, 41, 12, 288, 42, 44,
+ 264, 222, 15, 235, 216, 198, 254, 52, 5, 233,
+ 288, 210, 190, 192, 100, 4, 50, 249, 250, 239,
+ 1, 3, 131, 94, 189, 192, 213, 11, 54, 269,
+ 10, 204, 290, 108, 325, 216, 224, 223, 321, 221,
+ 23, 226, 211, 33, 315, 100, 45, 513, 92, 42,
+ 44, 264, 222, 102, 235, 178, 198, 268, 52, 5,
+ 275, 288, 161, 192, 37, 25, 4, 50, 249, 250,
+ 239, 1, 286, 129, 172, 187, 305, 213, 11, 54,
+ 164, 283, 310, 141, 108, 281, 281, 236, 223, 321,
+ 221, 169, 226, 230, 18, 122, 171, 41, 225, 175,
+ 42, 44, 264, 222, 144, 235, 303, 198, 134, 52,
+ 5, 265, 288, 151, 286, 192, 175, 4, 50, 249,
+ 250, 239, 1, 286, 128, 94, 189, 143, 213, 11,
+ 54, 219, 152, 207, 193, 108, 149, 281, 31, 223,
+ 321, 221, 100, 226, 21, 6, 286, 288, 41, 158,
+ 16, 42, 44, 264, 222, 102, 235, 238, 198, 286,
+ 52, 5, 157, 288, 281, 122, 168, 283, 4, 50,
+ 249, 250, 239, 1, 30, 93, 308, 51, 215, 213,
+ 11, 54, 53, 251, 140, 248, 108, 245, 304, 116,
+ 223, 321, 221, 111, 226, 176, 18, 270, 266, 41,
+ 224, 322, 42, 44, 264, 222, 7, 235, 259, 198,
+ 147, 52, 5, 257, 288, 43, 40, 38, 83, 4,
+ 50, 241, 214, 204, 319, 280, 88, 107, 138, 182,
+ 97, 64, 311, 312, 313, 316, 95, 281, 298, 258,
+ 142, 234, 94, 105, 272, 197, 231, 482, 237, 323,
+ 37, 133, 324, 241, 214, 204, 319, 314, 88, 107,
+ 296, 183, 97, 82, 84, 43, 40, 38, 95, 296,
+ 296, 258, 296, 296, 296, 159, 272, 197, 231, 296,
+ 237, 323, 311, 312, 313, 316, 241, 296, 204, 296,
+ 296, 103, 296, 296, 199, 104, 77, 296, 296, 110,
+ 296, 95, 296, 296, 258, 278, 296, 296, 34, 272,
+ 197, 231, 279, 237, 323, 43, 40, 38, 296, 296,
+ 296, 241, 26, 204, 196, 276, 103, 296, 16, 199,
+ 104, 77, 311, 312, 313, 316, 95, 192, 296, 258,
+ 146, 296, 296, 296, 272, 197, 231, 296, 237, 323,
+ 286, 393, 39, 35, 243, 296, 296, 296, 296, 191,
+ 276, 296, 26, 318, 252, 253, 126, 296, 16, 249,
+ 250, 239, 1, 296, 296, 131, 296, 261, 213, 11,
+ 54, 296, 296, 296, 426, 108, 393, 393, 393, 223,
+ 321, 221, 241, 296, 204, 299, 426, 103, 107, 296,
+ 183, 97, 82, 393, 393, 393, 393, 95, 296, 260,
+ 258, 52, 296, 296, 288, 272, 197, 231, 296, 237,
+ 323, 293, 296, 296, 296, 296, 296, 249, 250, 239,
+ 2, 296, 295, 296, 296, 296, 213, 11, 54, 296,
+ 296, 177, 296, 108, 136, 296, 296, 223, 321, 221,
+ 296, 296, 296, 293, 43, 40, 38, 296, 296, 249,
+ 250, 239, 2, 296, 295, 43, 40, 38, 213, 11,
+ 54, 311, 312, 313, 316, 108, 296, 291, 14, 223,
+ 321, 221, 311, 312, 313, 316, 296, 296, 241, 296,
+ 204, 296, 192, 103, 296, 296, 199, 104, 77, 296,
+ 296, 296, 296, 95, 383, 296, 258, 296, 296, 297,
+ 14, 272, 197, 231, 296, 237, 323, 383, 296, 296,
+ 241, 296, 204, 383, 296, 99, 296, 287, 199, 120,
+ 48, 241, 112, 204, 296, 95, 103, 296, 258, 199,
+ 120, 74, 296, 272, 197, 231, 95, 237, 323, 258,
+ 455, 296, 296, 455, 272, 197, 231, 455, 237, 323,
+ 241, 296, 204, 296, 296, 103, 200, 296, 199, 120,
+ 74, 296, 296, 296, 296, 95, 296, 296, 258, 278,
+ 296, 296, 34, 272, 197, 231, 279, 237, 323, 241,
+ 455, 204, 296, 296, 99, 202, 296, 199, 120, 56,
+ 241, 211, 204, 296, 95, 103, 296, 258, 199, 120,
+ 74, 296, 272, 197, 231, 95, 237, 323, 258, 227,
+ 296, 296, 296, 272, 197, 231, 296, 237, 323, 241,
+ 296, 204, 148, 296, 103, 203, 86, 199, 120, 73,
+ 296, 296, 286, 296, 95, 296, 296, 258, 278, 296,
+ 296, 34, 272, 197, 231, 279, 237, 323, 241, 296,
+ 204, 175, 296, 103, 296, 296, 199, 120, 75, 241,
+ 296, 204, 296, 95, 103, 296, 258, 199, 120, 63,
+ 296, 272, 197, 231, 95, 237, 323, 258, 229, 192,
+ 296, 296, 272, 197, 231, 296, 237, 323, 241, 296,
+ 204, 380, 296, 103, 296, 296, 199, 120, 58, 296,
+ 296, 296, 296, 95, 380, 296, 258, 296, 296, 296,
+ 380, 272, 197, 231, 296, 237, 323, 241, 296, 204,
+ 296, 296, 103, 296, 296, 199, 120, 71, 241, 296,
+ 204, 296, 95, 103, 296, 258, 199, 120, 79, 296,
+ 272, 197, 231, 95, 237, 323, 258, 296, 296, 296,
+ 154, 272, 197, 231, 87, 237, 323, 241, 296, 204,
+ 286, 296, 103, 296, 296, 199, 120, 70, 296, 296,
+ 296, 296, 95, 296, 296, 258, 296, 296, 296, 175,
+ 272, 197, 231, 296, 237, 323, 241, 296, 204, 296,
+ 296, 103, 296, 296, 199, 120, 56, 241, 296, 204,
+ 296, 95, 103, 296, 258, 199, 120, 46, 296, 272,
+ 197, 231, 95, 237, 323, 258, 296, 296, 296, 296,
+ 272, 197, 231, 296, 237, 323, 241, 296, 204, 296,
+ 296, 103, 296, 296, 199, 120, 78, 296, 296, 296,
+ 296, 95, 296, 296, 258, 296, 296, 296, 296, 272,
+ 197, 231, 296, 237, 323, 241, 296, 204, 296, 296,
+ 103, 296, 296, 199, 120, 66, 241, 296, 204, 296,
+ 95, 103, 296, 258, 199, 120, 59, 296, 272, 197,
+ 231, 95, 237, 323, 258, 296, 296, 296, 296, 272,
+ 197, 231, 296, 237, 323, 241, 296, 204, 296, 296,
+ 103, 296, 296, 186, 109, 57, 296, 296, 296, 296,
+ 95, 296, 296, 258, 296, 296, 296, 296, 272, 197,
+ 231, 296, 237, 323, 241, 296, 204, 296, 296, 103,
+ 296, 296, 188, 120, 67, 241, 296, 204, 296, 95,
+ 103, 296, 258, 199, 96, 62, 296, 272, 197, 231,
+ 95, 237, 323, 258, 296, 296, 296, 296, 272, 197,
+ 231, 296, 237, 323, 241, 296, 204, 296, 296, 103,
+ 296, 296, 199, 120, 80, 296, 296, 296, 296, 95,
+ 296, 296, 258, 296, 296, 296, 296, 272, 197, 231,
+ 296, 237, 323, 241, 296, 204, 296, 296, 103, 296,
+ 296, 199, 120, 76, 241, 296, 204, 296, 95, 103,
+ 296, 258, 199, 120, 81, 296, 272, 197, 231, 95,
+ 237, 323, 258, 296, 296, 296, 296, 272, 197, 231,
+ 296, 237, 323, 241, 296, 204, 296, 296, 103, 296,
+ 296, 199, 120, 65, 296, 296, 296, 296, 95, 296,
+ 296, 258, 296, 296, 296, 296, 272, 197, 231, 296,
+ 237, 323, 241, 296, 204, 296, 296, 103, 296, 296,
+ 199, 96, 68, 241, 296, 204, 296, 95, 103, 296,
+ 258, 199, 120, 61, 296, 272, 197, 231, 95, 237,
+ 323, 258, 296, 296, 296, 296, 272, 197, 231, 296,
+ 237, 323, 241, 296, 204, 296, 296, 103, 296, 296,
+ 199, 98, 69, 296, 296, 296, 296, 95, 296, 296,
+ 258, 296, 296, 296, 296, 272, 197, 231, 296, 237,
+ 323, 241, 296, 204, 296, 296, 103, 296, 296, 199,
+ 120, 72, 241, 296, 204, 296, 95, 103, 296, 258,
+ 199, 120, 47, 296, 272, 197, 231, 95, 237, 323,
+ 258, 296, 296, 296, 296, 272, 197, 231, 296, 237,
+ 323, 241, 192, 204, 296, 296, 103, 296, 296, 199,
+ 120, 60, 296, 296, 351, 296, 95, 296, 217, 258,
+ 296, 296, 296, 296, 272, 197, 231, 26, 237, 323,
+ 241, 296, 204, 16, 296, 103, 426, 296, 199, 125,
+ 296, 241, 296, 204, 296, 95, 103, 296, 426, 199,
+ 118, 296, 242, 272, 197, 231, 95, 237, 323, 296,
+ 296, 296, 296, 246, 272, 197, 231, 296, 237, 323,
+ 241, 296, 204, 278, 296, 103, 34, 296, 199, 121,
+ 279, 296, 296, 296, 296, 95, 296, 296, 296, 296,
+ 26, 296, 162, 272, 197, 231, 16, 237, 323, 241,
+ 296, 204, 296, 296, 103, 296, 296, 199, 123, 296,
+ 241, 296, 204, 296, 95, 103, 296, 296, 199, 114,
+ 296, 296, 272, 197, 231, 95, 237, 323, 296, 296,
+ 296, 296, 296, 272, 197, 231, 296, 237, 323, 241,
+ 296, 204, 296, 145, 103, 296, 296, 199, 124, 296,
+ 296, 296, 296, 286, 95, 39, 35, 243, 296, 296,
+ 296, 296, 272, 197, 231, 296, 237, 323, 241, 296,
+ 204, 296, 296, 103, 296, 296, 199, 115, 296, 241,
+ 296, 204, 296, 95, 103, 296, 296, 199, 113, 296,
+ 296, 272, 197, 231, 95, 237, 323, 296, 296, 296,
+ 296, 296, 272, 197, 231, 228, 237, 323, 241, 296,
+ 204, 296, 455, 103, 296, 455, 199, 119, 3, 455,
+ 439, 296, 296, 95, 296, 296, 296, 296, 296, 296,
+ 296, 272, 197, 231, 228, 237, 323, 296, 296, 296,
+ 296, 455, 296, 296, 455, 296, 296, 439, 455, 439,
+ 439, 228, 455, 296, 439, 296, 296, 137, 455, 296,
+ 296, 455, 296, 296, 32, 455, 439, 286, 296, 39,
+ 35, 243, 29, 296, 26, 296, 439, 296, 296, 439,
+ 16, 455, 296, 439, 306, 43, 40, 38, 296, 296,
+ 296, 296, 296, 439, 296, 296, 439, 296, 455, 296,
+ 439, 26, 311, 312, 313, 316, 296, 16, 228, 296,
+ 296, 296, 43, 40, 38, 455, 296, 296, 455, 296,
+ 296, 296, 455, 439, 296, 296, 19, 296, 296, 311,
+ 312, 313, 316, 455, 296, 296, 455, 296, 296, 296,
+ 455, 439, 296, 296, 296, 43, 40, 38, 296, 296,
+ 439, 296, 296, 439, 174, 455, 296, 439, 296, 240,
+ 309, 296, 311, 312, 313, 316, 296, 289, 439, 296,
+ 36, 439, 296, 455, 296, 439, 296, 296, 43, 40,
+ 38, 296, 296, 43, 40, 38, 296, 296, 296, 296,
+ 296, 43, 40, 38, 296, 311, 312, 313, 316, 296,
+ 311, 312, 313, 316, 296, 43, 40, 38, 311, 312,
+ 313, 316, 273, 43, 40, 38, 296, 296, 296, 296,
+ 296, 296, 311, 312, 313, 316, 296, 296, 296, 296,
+ 311, 312, 313, 316, 455, 296, 296, 455, 43, 40,
+ 38, 455, 439, 218, 43, 40, 38, 296, 296, 296,
+ 296, 296, 296, 296, 296, 311, 312, 313, 316, 296,
+ 296, 311, 312, 313, 316, 296, 296, 296, 296, 439,
+ 296, 296, 439, 296, 455, 296, 439,
+ );
+ public static $yy_lookahead = array(
+ 9, 10, 11, 12, 12, 14, 14, 16, 16, 18,
+ 19, 20, 9, 34, 102, 12, 25, 13, 70, 16,
+ 29, 30, 31, 35, 33, 21, 35, 23, 95, 38,
+ 26, 52, 41, 42, 43, 44, 32, 46, 34, 48,
+ 36, 50, 51, 52, 53, 53, 98, 99, 44, 58,
+ 59, 9, 10, 11, 12, 22, 14, 13, 16, 15,
+ 18, 19, 20, 85, 86, 87, 15, 25, 17, 21,
+ 26, 29, 30, 31, 44, 33, 32, 35, 45, 35,
+ 38, 51, 34, 41, 42, 43, 44, 35, 46, 77,
+ 48, 47, 50, 51, 14, 53, 16, 13, 47, 47,
+ 58, 59, 9, 10, 11, 12, 22, 14, 35, 16,
+ 26, 18, 19, 20, 102, 103, 32, 44, 25, 34,
+ 47, 36, 29, 30, 31, 52, 33, 14, 35, 45,
+ 50, 38, 26, 53, 41, 42, 43, 44, 32, 46,
+ 66, 48, 68, 50, 51, 77, 53, 15, 35, 7,
+ 8, 58, 59, 9, 10, 11, 12, 12, 14, 14,
+ 16, 16, 18, 19, 20, 9, 53, 1, 12, 25,
+ 102, 82, 16, 29, 30, 31, 44, 33, 33, 35,
+ 106, 107, 38, 51, 44, 41, 42, 43, 44, 35,
+ 46, 51, 48, 82, 50, 51, 22, 53, 53, 13,
+ 73, 47, 58, 59, 9, 10, 11, 12, 22, 14,
+ 83, 16, 26, 18, 19, 20, 28, 12, 32, 45,
+ 25, 22, 70, 35, 29, 30, 31, 65, 33, 102,
+ 35, 45, 73, 38, 60, 47, 41, 42, 43, 44,
+ 35, 46, 83, 48, 45, 50, 51, 95, 53, 71,
+ 95, 52, 74, 58, 59, 9, 10, 11, 12, 81,
+ 14, 102, 16, 73, 18, 19, 20, 34, 90, 36,
+ 1, 25, 94, 83, 81, 29, 30, 31, 66, 33,
+ 68, 35, 13, 96, 38, 98, 99, 41, 42, 43,
+ 44, 15, 46, 100, 48, 26, 50, 51, 14, 53,
+ 71, 32, 17, 74, 58, 59, 9, 10, 11, 12,
+ 81, 14, 34, 16, 36, 18, 19, 20, 82, 107,
+ 44, 35, 25, 94, 71, 95, 29, 30, 31, 44,
+ 33, 78, 35, 47, 81, 38, 51, 53, 41, 42,
+ 43, 44, 15, 46, 71, 48, 16, 50, 51, 22,
+ 53, 78, 79, 1, 81, 58, 59, 9, 10, 11,
+ 12, 15, 14, 17, 16, 1, 18, 19, 20, 66,
+ 34, 68, 36, 25, 16, 71, 44, 29, 30, 31,
+ 28, 33, 78, 35, 52, 81, 38, 62, 63, 41,
+ 42, 43, 44, 47, 46, 6, 48, 8, 50, 51,
+ 16, 53, 73, 1, 2, 40, 58, 59, 9, 10,
+ 11, 12, 83, 14, 77, 16, 52, 18, 19, 20,
+ 98, 99, 52, 95, 25, 97, 97, 92, 29, 30,
+ 31, 77, 33, 49, 35, 100, 14, 38, 16, 102,
+ 41, 42, 43, 44, 73, 46, 14, 48, 14, 50,
+ 51, 36, 53, 73, 83, 1, 102, 58, 59, 9,
+ 10, 11, 12, 83, 14, 17, 16, 50, 18, 19,
+ 20, 17, 71, 64, 65, 25, 73, 97, 15, 29,
+ 30, 31, 81, 33, 26, 35, 83, 53, 38, 73,
+ 32, 41, 42, 43, 44, 47, 46, 92, 48, 83,
+ 50, 51, 95, 53, 97, 100, 98, 99, 58, 59,
+ 9, 10, 11, 12, 23, 14, 52, 16, 16, 18,
+ 19, 20, 16, 7, 50, 16, 25, 13, 13, 16,
+ 29, 30, 31, 16, 33, 16, 35, 33, 33, 38,
+ 44, 16, 41, 42, 43, 44, 35, 46, 16, 48,
+ 95, 50, 51, 96, 53, 37, 38, 39, 81, 58,
+ 59, 66, 67, 68, 69, 83, 71, 72, 95, 74,
+ 75, 76, 54, 55, 56, 57, 81, 97, 60, 84,
+ 95, 13, 17, 80, 89, 90, 91, 1, 93, 94,
+ 2, 81, 103, 66, 67, 68, 69, 99, 71, 72,
+ 108, 74, 75, 76, 81, 37, 38, 39, 81, 108,
+ 108, 84, 108, 108, 108, 95, 89, 90, 91, 108,
+ 93, 94, 54, 55, 56, 57, 66, 108, 68, 108,
+ 108, 71, 108, 108, 74, 75, 76, 108, 108, 21,
+ 108, 81, 108, 108, 84, 9, 108, 108, 12, 89,
+ 90, 91, 16, 93, 94, 37, 38, 39, 108, 108,
+ 108, 66, 26, 68, 104, 105, 71, 108, 32, 74,
+ 75, 76, 54, 55, 56, 57, 81, 1, 108, 84,
+ 73, 108, 108, 108, 89, 90, 91, 108, 93, 94,
+ 83, 2, 85, 86, 87, 108, 108, 108, 108, 104,
+ 105, 108, 26, 3, 4, 5, 6, 108, 32, 9,
+ 10, 11, 12, 108, 108, 14, 108, 16, 18, 19,
+ 20, 108, 108, 108, 35, 25, 37, 38, 39, 29,
+ 30, 31, 66, 108, 68, 69, 47, 71, 72, 108,
+ 74, 75, 76, 54, 55, 56, 57, 81, 108, 48,
+ 84, 50, 108, 108, 53, 89, 90, 91, 108, 93,
+ 94, 3, 108, 108, 108, 108, 108, 9, 10, 11,
+ 12, 108, 14, 108, 108, 108, 18, 19, 20, 108,
+ 108, 13, 108, 25, 27, 108, 108, 29, 30, 31,
+ 108, 108, 108, 3, 37, 38, 39, 108, 108, 9,
+ 10, 11, 12, 108, 14, 37, 38, 39, 18, 19,
+ 20, 54, 55, 56, 57, 25, 108, 59, 60, 29,
+ 30, 31, 54, 55, 56, 57, 108, 108, 66, 108,
+ 68, 108, 1, 71, 108, 108, 74, 75, 76, 108,
+ 108, 108, 108, 81, 13, 108, 84, 108, 108, 59,
+ 60, 89, 90, 91, 108, 93, 94, 26, 108, 108,
+ 66, 108, 68, 32, 108, 71, 108, 105, 74, 75,
+ 76, 66, 78, 68, 108, 81, 71, 108, 84, 74,
+ 75, 76, 108, 89, 90, 91, 81, 93, 94, 84,
+ 9, 108, 108, 12, 89, 90, 91, 16, 93, 94,
+ 66, 108, 68, 108, 108, 71, 101, 108, 74, 75,
+ 76, 108, 108, 108, 108, 81, 108, 108, 84, 9,
+ 108, 108, 12, 89, 90, 91, 16, 93, 94, 66,
+ 49, 68, 108, 108, 71, 101, 108, 74, 75, 76,
+ 66, 78, 68, 108, 81, 71, 108, 84, 74, 75,
+ 76, 108, 89, 90, 91, 81, 93, 94, 84, 49,
+ 108, 108, 108, 89, 90, 91, 108, 93, 94, 66,
+ 108, 68, 73, 108, 71, 101, 77, 74, 75, 76,
+ 108, 108, 83, 108, 81, 108, 108, 84, 9, 108,
+ 108, 12, 89, 90, 91, 16, 93, 94, 66, 108,
+ 68, 102, 108, 71, 108, 108, 74, 75, 76, 66,
+ 108, 68, 108, 81, 71, 108, 84, 74, 75, 76,
+ 108, 89, 90, 91, 81, 93, 94, 84, 49, 1,
+ 108, 108, 89, 90, 91, 108, 93, 94, 66, 108,
+ 68, 13, 108, 71, 108, 108, 74, 75, 76, 108,
+ 108, 108, 108, 81, 26, 108, 84, 108, 108, 108,
+ 32, 89, 90, 91, 108, 93, 94, 66, 108, 68,
+ 108, 108, 71, 108, 108, 74, 75, 76, 66, 108,
+ 68, 108, 81, 71, 108, 84, 74, 75, 76, 108,
+ 89, 90, 91, 81, 93, 94, 84, 108, 108, 108,
+ 73, 89, 90, 91, 77, 93, 94, 66, 108, 68,
+ 83, 108, 71, 108, 108, 74, 75, 76, 108, 108,
+ 108, 108, 81, 108, 108, 84, 108, 108, 108, 102,
+ 89, 90, 91, 108, 93, 94, 66, 108, 68, 108,
+ 108, 71, 108, 108, 74, 75, 76, 66, 108, 68,
+ 108, 81, 71, 108, 84, 74, 75, 76, 108, 89,
+ 90, 91, 81, 93, 94, 84, 108, 108, 108, 108,
+ 89, 90, 91, 108, 93, 94, 66, 108, 68, 108,
+ 108, 71, 108, 108, 74, 75, 76, 108, 108, 108,
+ 108, 81, 108, 108, 84, 108, 108, 108, 108, 89,
+ 90, 91, 108, 93, 94, 66, 108, 68, 108, 108,
+ 71, 108, 108, 74, 75, 76, 66, 108, 68, 108,
+ 81, 71, 108, 84, 74, 75, 76, 108, 89, 90,
+ 91, 81, 93, 94, 84, 108, 108, 108, 108, 89,
+ 90, 91, 108, 93, 94, 66, 108, 68, 108, 108,
+ 71, 108, 108, 74, 75, 76, 108, 108, 108, 108,
+ 81, 108, 108, 84, 108, 108, 108, 108, 89, 90,
+ 91, 108, 93, 94, 66, 108, 68, 108, 108, 71,
+ 108, 108, 74, 75, 76, 66, 108, 68, 108, 81,
+ 71, 108, 84, 74, 75, 76, 108, 89, 90, 91,
+ 81, 93, 94, 84, 108, 108, 108, 108, 89, 90,
+ 91, 108, 93, 94, 66, 108, 68, 108, 108, 71,
+ 108, 108, 74, 75, 76, 108, 108, 108, 108, 81,
+ 108, 108, 84, 108, 108, 108, 108, 89, 90, 91,
+ 108, 93, 94, 66, 108, 68, 108, 108, 71, 108,
+ 108, 74, 75, 76, 66, 108, 68, 108, 81, 71,
+ 108, 84, 74, 75, 76, 108, 89, 90, 91, 81,
+ 93, 94, 84, 108, 108, 108, 108, 89, 90, 91,
+ 108, 93, 94, 66, 108, 68, 108, 108, 71, 108,
+ 108, 74, 75, 76, 108, 108, 108, 108, 81, 108,
+ 108, 84, 108, 108, 108, 108, 89, 90, 91, 108,
+ 93, 94, 66, 108, 68, 108, 108, 71, 108, 108,
+ 74, 75, 76, 66, 108, 68, 108, 81, 71, 108,
+ 84, 74, 75, 76, 108, 89, 90, 91, 81, 93,
+ 94, 84, 108, 108, 108, 108, 89, 90, 91, 108,
+ 93, 94, 66, 108, 68, 108, 108, 71, 108, 108,
+ 74, 75, 76, 108, 108, 108, 108, 81, 108, 108,
+ 84, 108, 108, 108, 108, 89, 90, 91, 108, 93,
+ 94, 66, 108, 68, 108, 108, 71, 108, 108, 74,
+ 75, 76, 66, 108, 68, 108, 81, 71, 108, 84,
+ 74, 75, 76, 108, 89, 90, 91, 81, 93, 94,
+ 84, 108, 108, 108, 108, 89, 90, 91, 108, 93,
+ 94, 66, 1, 68, 108, 108, 71, 108, 108, 74,
+ 75, 76, 108, 108, 13, 108, 81, 108, 17, 84,
+ 108, 108, 108, 108, 89, 90, 91, 26, 93, 94,
+ 66, 108, 68, 32, 108, 71, 35, 108, 74, 75,
+ 108, 66, 108, 68, 108, 81, 71, 108, 47, 74,
+ 75, 108, 88, 89, 90, 91, 81, 93, 94, 108,
+ 108, 108, 108, 88, 89, 90, 91, 108, 93, 94,
+ 66, 108, 68, 9, 108, 71, 12, 108, 74, 75,
+ 16, 108, 108, 108, 108, 81, 108, 108, 108, 108,
+ 26, 108, 28, 89, 90, 91, 32, 93, 94, 66,
+ 108, 68, 108, 108, 71, 108, 108, 74, 75, 108,
+ 66, 108, 68, 108, 81, 71, 108, 108, 74, 75,
+ 108, 108, 89, 90, 91, 81, 93, 94, 108, 108,
+ 108, 108, 108, 89, 90, 91, 108, 93, 94, 66,
+ 108, 68, 108, 73, 71, 108, 108, 74, 75, 108,
+ 108, 108, 108, 83, 81, 85, 86, 87, 108, 108,
+ 108, 108, 89, 90, 91, 108, 93, 94, 66, 108,
+ 68, 108, 108, 71, 108, 108, 74, 75, 108, 66,
+ 108, 68, 108, 81, 71, 108, 108, 74, 75, 108,
+ 108, 89, 90, 91, 81, 93, 94, 108, 108, 108,
+ 108, 108, 89, 90, 91, 2, 93, 94, 66, 108,
+ 68, 108, 9, 71, 108, 12, 74, 75, 15, 16,
+ 17, 108, 108, 81, 108, 108, 108, 108, 108, 108,
+ 108, 89, 90, 91, 2, 93, 94, 108, 108, 108,
+ 108, 9, 108, 108, 12, 108, 108, 44, 16, 17,
+ 47, 2, 49, 108, 51, 108, 108, 73, 9, 108,
+ 108, 12, 108, 108, 15, 16, 17, 83, 108, 85,
+ 86, 87, 24, 108, 26, 108, 44, 108, 108, 47,
+ 32, 49, 108, 51, 52, 37, 38, 39, 108, 108,
+ 108, 108, 108, 44, 108, 108, 47, 108, 49, 108,
+ 51, 26, 54, 55, 56, 57, 108, 32, 2, 108,
+ 108, 108, 37, 38, 39, 9, 108, 108, 12, 108,
+ 108, 108, 16, 17, 108, 108, 2, 108, 108, 54,
+ 55, 56, 57, 9, 108, 108, 12, 108, 108, 108,
+ 16, 17, 108, 108, 108, 37, 38, 39, 108, 108,
+ 44, 108, 108, 47, 13, 49, 108, 51, 108, 13,
+ 52, 108, 54, 55, 56, 57, 108, 13, 44, 108,
+ 2, 47, 108, 49, 108, 51, 108, 108, 37, 38,
+ 39, 108, 108, 37, 38, 39, 108, 108, 108, 108,
+ 108, 37, 38, 39, 108, 54, 55, 56, 57, 108,
+ 54, 55, 56, 57, 108, 37, 38, 39, 54, 55,
+ 56, 57, 36, 37, 38, 39, 108, 108, 108, 108,
+ 108, 108, 54, 55, 56, 57, 108, 108, 108, 108,
+ 54, 55, 56, 57, 9, 108, 108, 12, 37, 38,
+ 39, 16, 17, 36, 37, 38, 39, 108, 108, 108,
+ 108, 108, 108, 108, 108, 54, 55, 56, 57, 108,
+ 108, 54, 55, 56, 57, 108, 108, 108, 108, 44,
+ 108, 108, 47, 108, 49, 108, 51,
+);
+ const YY_SHIFT_USE_DFLT = -22;
+ const YY_SHIFT_MAX = 230;
+ public static $yy_shift_ofst = array(
+ -22, 501, 501, 93, 399, 399, 450, 93, 93, 93,
+ 399, 450, -9, 93, 93, 93, 93, 93, 93, 144,
+ 93, 195, 93, 93, 93, 246, 195, 93, 93, 93,
+ 93, 93, 297, 93, 93, 93, 93, 348, 42, 42,
+ 42, 42, 42, 42, 42, 42, 1768, 1795, 1795, 701,
+ 758, 1521, 80, 676, 113, 790, 1927, 1828, 1896, 568,
+ 768, 1861, 757, 1866, 1874, 1888, 618, 518, 1921, 1921,
+ 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921,
+ 1921, 1921, 1921, 1584, 636, 285, 676, 676, 346, 113,
+ 113, 402, 700, 1723, -8, 910, 831, 269, 1028, 51,
+ 3, 3, 422, 448, 352, 106, 422, 106, 458, 364,
+ 434, 454, 106, 166, 166, 166, 166, 565, 166, 166,
+ 166, 586, 565, 166, 166, -22, -22, 1752, 1769, 1826,
+ 1844, 1945, 145, 979, 156, 132, 284, 106, 140, 106,
+ 30, 140, 140, 30, 106, 106, 106, 140, 106, 106,
+ 140, 106, 327, 106, 106, 106, 140, 140, 106, 140,
+ 205, 106, 284, 166, 565, 588, 565, 588, 565, 166,
+ 166, -12, 166, -22, -22, -22, -22, -22, -22, 689,
+ 4, 44, 84, 186, 73, 881, 199, 188, 174, 286,
+ 48, 336, 384, 389, 332, 142, -21, 52, 154, 33,
+ 85, 276, 278, 233, 515, 509, 474, 516, 502, 464,
+ 491, 415, 417, 432, 514, 370, 463, 506, 365, 513,
+ -12, 517, 504, 519, 505, 511, 496, 525, 532, 330,
+ 358,
+);
+ const YY_REDUCE_USE_DFLT = -89;
+ const YY_REDUCE_MAX = 178;
+ public static $yy_reduce_ofst = array(
+ 325, 527, 495, 666, 595, 560, 863, 874, 834, 805,
+ 762, 794, 1179, 1455, 1208, 1012, 1386, 1139, 1070, 1110,
+ 1150, 1219, 1248, 1277, 1288, 1317, 1346, 1357, 1415, 1426,
+ 1081, 1041, 1001, 972, 943, 932, 903, 1484, 1495, 1622,
+ 1633, 1662, 1593, 1564, 1553, 1524, 1704, 607, 1590, 178,
+ 74, 1027, 229, 899, 273, 212, -22, -22, -22, -22,
+ -22, -22, -22, -22, -22, -22, -22, -22, -22, -22,
+ -22, -22, -22, -22, -22, -22, -22, -22, -22, -22,
+ -22, -22, -22, 380, 329, 187, 159, 127, -52, 253,
+ 304, 12, 303, 152, 193, 328, 68, 68, 68, 322,
+ 328, 407, 405, 322, 68, 190, 335, 416, 403, 68,
+ 401, 354, 371, 68, 68, 68, 337, 322, 68, 68,
+ 68, 68, 408, 68, 68, 68, 409, 455, 455, 455,
+ 455, 455, 510, 480, 455, 455, 477, 482, 457, 482,
+ 473, 457, 457, 485, 482, 482, 482, 457, 482, 482,
+ 457, 482, 503, 482, 482, 482, 457, 457, 482, 457,
+ 520, 482, 523, -88, 498, 489, 498, 489, 498, -88,
+ -88, -67, -88, 111, 155, 89, 236, 230, 162,
+);
+ public static $yyExpectedTokens = array(
+ array(),
+ array(9, 10, 11, 12, 14, 16, 18, 19, 20, 25, 29, 30, 31, 33, 35, 38, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58, 59, ),
+ array(9, 10, 11, 12, 14, 16, 18, 19, 20, 25, 29, 30, 31, 33, 35, 38, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58, 59, ),
+ array(9, 10, 11, 12, 14, 16, 18, 19, 20, 25, 29, 30, 31, 33, 35, 38, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58, 59, ),
+ array(9, 10, 11, 12, 14, 16, 18, 19, 20, 25, 29, 30, 31, 33, 35, 38, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58, 59, ),
+ array(9, 10, 11, 12, 14, 16, 18, 19, 20, 25, 29, 30, 31, 33, 35, 38, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58, 59, ),
+ array(9, 10, 11, 12, 14, 16, 18, 19, 20, 25, 29, 30, 31, 33, 35, 38, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58, 59, ),
+ array(9, 10, 11, 12, 14, 16, 18, 19, 20, 25, 29, 30, 31, 33, 35, 38, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58, 59, ),
+ array(9, 10, 11, 12, 14, 16, 18, 19, 20, 25, 29, 30, 31, 33, 35, 38, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58, 59, ),
+ array(9, 10, 11, 12, 14, 16, 18, 19, 20, 25, 29, 30, 31, 33, 35, 38, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58, 59, ),
+ array(9, 10, 11, 12, 14, 16, 18, 19, 20, 25, 29, 30, 31, 33, 35, 38, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58, 59, ),
+ array(9, 10, 11, 12, 14, 16, 18, 19, 20, 25, 29, 30, 31, 33, 35, 38, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58, 59, ),
+ array(9, 10, 11, 12, 14, 16, 18, 19, 20, 25, 29, 30, 31, 33, 35, 38, 41, 42, 43, 44, 46, 48, 50, 51, 52, 53, 58, 59, ),
+ array(9, 10, 11, 12, 14, 16, 18, 19, 20, 25, 29, 30, 31, 33, 35, 38, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58, 59, ),
+ array(9, 10, 11, 12, 14, 16, 18, 19, 20, 25, 29, 30, 31, 33, 35, 38, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58, 59, ),
+ array(9, 10, 11, 12, 14, 16, 18, 19, 20, 25, 29, 30, 31, 33, 35, 38, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58, 59, ),
+ array(9, 10, 11, 12, 14, 16, 18, 19, 20, 25, 29, 30, 31, 33, 35, 38, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58, 59, ),
+ array(9, 10, 11, 12, 14, 16, 18, 19, 20, 25, 29, 30, 31, 33, 35, 38, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58, 59, ),
+ array(9, 10, 11, 12, 14, 16, 18, 19, 20, 25, 29, 30, 31, 33, 35, 38, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58, 59, ),
+ array(9, 10, 11, 12, 14, 16, 18, 19, 20, 25, 29, 30, 31, 33, 35, 38, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58, 59, ),
+ array(9, 10, 11, 12, 14, 16, 18, 19, 20, 25, 29, 30, 31, 33, 35, 38, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58, 59, ),
+ array(9, 10, 11, 12, 14, 16, 18, 19, 20, 25, 29, 30, 31, 33, 35, 38, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58, 59, ),
+ array(9, 10, 11, 12, 14, 16, 18, 19, 20, 25, 29, 30, 31, 33, 35, 38, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58, 59, ),
+ array(9, 10, 11, 12, 14, 16, 18, 19, 20, 25, 29, 30, 31, 33, 35, 38, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58, 59, ),
+ array(9, 10, 11, 12, 14, 16, 18, 19, 20, 25, 29, 30, 31, 33, 35, 38, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58, 59, ),
+ array(9, 10, 11, 12, 14, 16, 18, 19, 20, 25, 29, 30, 31, 33, 35, 38, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58, 59, ),
+ array(9, 10, 11, 12, 14, 16, 18, 19, 20, 25, 29, 30, 31, 33, 35, 38, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58, 59, ),
+ array(9, 10, 11, 12, 14, 16, 18, 19, 20, 25, 29, 30, 31, 33, 35, 38, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58, 59, ),
+ array(9, 10, 11, 12, 14, 16, 18, 19, 20, 25, 29, 30, 31, 33, 35, 38, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58, 59, ),
+ array(9, 10, 11, 12, 14, 16, 18, 19, 20, 25, 29, 30, 31, 33, 35, 38, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58, 59, ),
+ array(9, 10, 11, 12, 14, 16, 18, 19, 20, 25, 29, 30, 31, 33, 35, 38, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58, 59, ),
+ array(9, 10, 11, 12, 14, 16, 18, 19, 20, 25, 29, 30, 31, 33, 35, 38, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58, 59, ),
+ array(9, 10, 11, 12, 14, 16, 18, 19, 20, 25, 29, 30, 31, 33, 35, 38, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58, 59, ),
+ array(9, 10, 11, 12, 14, 16, 18, 19, 20, 25, 29, 30, 31, 33, 35, 38, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58, 59, ),
+ array(9, 10, 11, 12, 14, 16, 18, 19, 20, 25, 29, 30, 31, 33, 35, 38, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58, 59, ),
+ array(9, 10, 11, 12, 14, 16, 18, 19, 20, 25, 29, 30, 31, 33, 35, 38, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58, 59, ),
+ array(9, 10, 11, 12, 14, 16, 18, 19, 20, 25, 29, 30, 31, 33, 35, 38, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58, 59, ),
+ array(9, 10, 11, 12, 14, 16, 18, 19, 20, 25, 29, 30, 31, 33, 35, 38, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58, 59, ),
+ array(9, 10, 11, 12, 14, 16, 18, 19, 20, 25, 29, 30, 31, 33, 35, 38, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58, 59, ),
+ array(9, 10, 11, 12, 14, 16, 18, 19, 20, 25, 29, 30, 31, 33, 35, 38, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58, 59, ),
+ array(9, 10, 11, 12, 14, 16, 18, 19, 20, 25, 29, 30, 31, 33, 35, 38, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58, 59, ),
+ array(9, 10, 11, 12, 14, 16, 18, 19, 20, 25, 29, 30, 31, 33, 35, 38, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58, 59, ),
+ array(9, 10, 11, 12, 14, 16, 18, 19, 20, 25, 29, 30, 31, 33, 35, 38, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58, 59, ),
+ array(9, 10, 11, 12, 14, 16, 18, 19, 20, 25, 29, 30, 31, 33, 35, 38, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58, 59, ),
+ array(9, 10, 11, 12, 14, 16, 18, 19, 20, 25, 29, 30, 31, 33, 35, 38, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58, 59, ),
+ array(9, 10, 11, 12, 14, 16, 18, 19, 20, 25, 29, 30, 31, 33, 35, 38, 41, 42, 43, 44, 46, 48, 50, 51, 53, 58, 59, ),
+ array(24, 26, 32, 37, 38, 39, 54, 55, 56, 57, ),
+ array(26, 32, 37, 38, 39, 54, 55, 56, 57, ),
+ array(26, 32, 37, 38, 39, 54, 55, 56, 57, ),
+ array(14, 16, 48, 50, 53, ),
+ array(3, 9, 10, 11, 12, 14, 18, 19, 20, 25, 29, 30, 31, 59, 60, ),
+ array(1, 13, 17, 26, 32, 35, 47, ),
+ array(14, 16, 50, 53, ),
+ array(1, 26, 32, ),
+ array(14, 35, 53, ),
+ array(3, 9, 10, 11, 12, 14, 18, 19, 20, 25, 29, 30, 31, 59, 60, ),
+ array(36, 37, 38, 39, 54, 55, 56, 57, ),
+ array(37, 38, 39, 52, 54, 55, 56, 57, ),
+ array(36, 37, 38, 39, 54, 55, 56, 57, ),
+ array(13, 37, 38, 39, 54, 55, 56, 57, ),
+ array(13, 37, 38, 39, 54, 55, 56, 57, ),
+ array(13, 37, 38, 39, 54, 55, 56, 57, ),
+ array(27, 37, 38, 39, 54, 55, 56, 57, ),
+ array(13, 37, 38, 39, 54, 55, 56, 57, ),
+ array(13, 37, 38, 39, 54, 55, 56, 57, ),
+ array(2, 37, 38, 39, 54, 55, 56, 57, ),
+ array(21, 37, 38, 39, 54, 55, 56, 57, ),
+ array(37, 38, 39, 54, 55, 56, 57, 60, ),
+ array(37, 38, 39, 54, 55, 56, 57, ),
+ array(37, 38, 39, 54, 55, 56, 57, ),
+ array(37, 38, 39, 54, 55, 56, 57, ),
+ array(37, 38, 39, 54, 55, 56, 57, ),
+ array(37, 38, 39, 54, 55, 56, 57, ),
+ array(37, 38, 39, 54, 55, 56, 57, ),
+ array(37, 38, 39, 54, 55, 56, 57, ),
+ array(37, 38, 39, 54, 55, 56, 57, ),
+ array(37, 38, 39, 54, 55, 56, 57, ),
+ array(37, 38, 39, 54, 55, 56, 57, ),
+ array(37, 38, 39, 54, 55, 56, 57, ),
+ array(37, 38, 39, 54, 55, 56, 57, ),
+ array(37, 38, 39, 54, 55, 56, 57, ),
+ array(37, 38, 39, 54, 55, 56, 57, ),
+ array(37, 38, 39, 54, 55, 56, 57, ),
+ array(9, 12, 16, 26, 28, 32, ),
+ array(9, 12, 16, 26, 32, ),
+ array(17, 44, 51, ),
+ array(1, 26, 32, ),
+ array(1, 26, 32, ),
+ array(15, 17, 47, ),
+ array(14, 35, 53, ),
+ array(14, 35, 53, ),
+ array(1, 2, ),
+ array(3, 4, 5, 6, 9, 10, 11, 12, 18, 19, 20, 25, 29, 30, 31, ),
+ array(2, 9, 12, 15, 16, 17, 44, 47, 49, 51, ),
+ array(12, 14, 16, 53, ),
+ array(9, 12, 16, 49, ),
+ array(1, 13, 26, 32, ),
+ array(1, 13, 26, 32, ),
+ array(1, 13, 26, 32, ),
+ array(15, 17, 47, ),
+ array(9, 12, 16, ),
+ array(9, 12, 16, ),
+ array(14, 16, ),
+ array(17, 47, ),
+ array(1, 28, ),
+ array(26, 32, ),
+ array(14, 16, ),
+ array(26, 32, ),
+ array(26, 32, ),
+ array(1, 52, ),
+ array(14, 53, ),
+ array(1, 17, ),
+ array(26, 32, ),
+ array(1, ),
+ array(1, ),
+ array(1, ),
+ array(1, ),
+ array(17, ),
+ array(1, ),
+ array(1, ),
+ array(1, ),
+ array(1, ),
+ array(17, ),
+ array(1, ),
+ array(1, ),
+ array(),
+ array(),
+ array(2, 9, 12, 16, 17, 44, 47, 49, 51, 52, ),
+ array(2, 9, 12, 15, 16, 17, 44, 47, 49, 51, ),
+ array(2, 9, 12, 16, 17, 44, 47, 49, 51, ),
+ array(2, 9, 12, 16, 17, 44, 47, 49, 51, ),
+ array(9, 12, 16, 17, 44, 47, 49, 51, ),
+ array(12, 14, 16, 33, 53, ),
+ array(9, 12, 16, 49, ),
+ array(9, 12, 16, ),
+ array(15, 44, 51, ),
+ array(14, 53, ),
+ array(26, 32, ),
+ array(44, 51, ),
+ array(26, 32, ),
+ array(44, 51, ),
+ array(44, 51, ),
+ array(44, 51, ),
+ array(44, 51, ),
+ array(26, 32, ),
+ array(26, 32, ),
+ array(26, 32, ),
+ array(44, 51, ),
+ array(26, 32, ),
+ array(26, 32, ),
+ array(44, 51, ),
+ array(26, 32, ),
+ array(15, 22, ),
+ array(26, 32, ),
+ array(26, 32, ),
+ array(26, 32, ),
+ array(44, 51, ),
+ array(44, 51, ),
+ array(26, 32, ),
+ array(44, 51, ),
+ array(12, 35, ),
+ array(26, 32, ),
+ array(14, 53, ),
+ array(1, ),
+ array(17, ),
+ array(2, ),
+ array(17, ),
+ array(2, ),
+ array(17, ),
+ array(1, ),
+ array(1, ),
+ array(35, ),
+ array(1, ),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(2, 35, 37, 38, 39, 47, 54, 55, 56, 57, ),
+ array(13, 21, 23, 26, 32, 34, 36, 44, ),
+ array(13, 15, 26, 32, 35, 47, ),
+ array(13, 22, 26, 32, 45, ),
+ array(13, 22, 26, 32, 45, ),
+ array(35, 44, 47, 52, ),
+ array(9, 12, 16, 49, ),
+ array(22, 45, 52, ),
+ array(28, 35, 47, ),
+ array(22, 45, 60, ),
+ array(35, 47, ),
+ array(21, 34, ),
+ array(34, 36, ),
+ array(16, 49, ),
+ array(6, 8, ),
+ array(44, 52, ),
+ array(7, 8, ),
+ array(34, 52, ),
+ array(35, 47, ),
+ array(35, 47, ),
+ array(22, 45, ),
+ array(34, 36, ),
+ array(15, 44, ),
+ array(34, 36, ),
+ array(34, 36, ),
+ array(13, ),
+ array(16, ),
+ array(50, ),
+ array(7, ),
+ array(16, ),
+ array(52, ),
+ array(23, ),
+ array(36, ),
+ array(50, ),
+ array(14, ),
+ array(13, ),
+ array(52, ),
+ array(15, ),
+ array(16, ),
+ array(40, ),
+ array(16, ),
+ array(35, ),
+ array(16, ),
+ array(33, ),
+ array(16, ),
+ array(33, ),
+ array(35, ),
+ array(44, ),
+ array(16, ),
+ array(16, ),
+ array(16, ),
+ array(16, ),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+);
+ public static $yy_default = array(
+ 336, 512, 512, 512, 497, 497, 512, 474, 474, 474,
+ 512, 512, 512, 512, 512, 512, 512, 512, 512, 512,
+ 512, 512, 512, 512, 512, 512, 512, 512, 512, 512,
+ 512, 512, 512, 512, 512, 512, 512, 512, 512, 512,
+ 512, 512, 512, 512, 512, 512, 377, 377, 356, 512,
+ 512, 413, 512, 377, 512, 512, 512, 512, 512, 512,
+ 512, 512, 382, 512, 349, 512, 512, 512, 382, 379,
+ 389, 388, 384, 402, 473, 397, 498, 500, 401, 361,
+ 472, 499, 349, 377, 377, 487, 377, 377, 429, 512,
+ 512, 368, 326, 428, 512, 439, 391, 391, 391, 429,
+ 439, 439, 512, 429, 391, 377, 512, 377, 377, 391,
+ 512, 371, 358, 395, 394, 396, 373, 429, 400, 404,
+ 391, 404, 484, 406, 405, 481, 334, 428, 428, 428,
+ 428, 428, 512, 441, 439, 455, 512, 363, 435, 354,
+ 434, 437, 433, 432, 359, 357, 364, 436, 353, 367,
+ 466, 365, 512, 352, 350, 360, 467, 465, 346, 464,
+ 439, 366, 512, 369, 461, 475, 488, 476, 485, 372,
+ 422, 439, 374, 480, 439, 480, 480, 439, 334, 413,
+ 409, 413, 403, 403, 413, 440, 403, 413, 403, 413,
+ 512, 512, 512, 332, 409, 512, 512, 512, 423, 403,
+ 512, 409, 512, 512, 512, 512, 512, 512, 512, 418,
+ 385, 512, 512, 512, 512, 512, 512, 512, 415, 512,
+ 455, 512, 512, 512, 411, 486, 409, 512, 512, 512,
+ 512, 419, 407, 362, 445, 418, 425, 424, 420, 339,
+ 460, 421, 483, 398, 416, 340, 399, 455, 378, 337,
+ 338, 330, 328, 329, 442, 443, 444, 438, 392, 393,
+ 427, 426, 386, 417, 408, 390, 410, 331, 333, 335,
+ 412, 470, 414, 415, 503, 478, 495, 471, 459, 458,
+ 375, 457, 344, 462, 508, 493, 376, 496, 456, 509,
+ 494, 501, 504, 511, 510, 507, 505, 502, 506, 345,
+ 468, 469, 446, 355, 341, 452, 450, 454, 448, 453,
+ 447, 489, 490, 491, 463, 449, 492, 451, 327, 342,
+ 343, 370, 430, 431, 479, 477,
+);
+ const YYNOCODE = 109;
+ const YYSTACKDEPTH = 500;
+ const YYNSTATE = 326;
+ const YYNRULE = 186;
+ const YYERRORSYMBOL = 61;
+ const YYERRSYMDT = 'yy0';
+ const YYFALLBACK = 0;
+ public static $yyFallback = array(
+ );
+ public function Trace($TraceFILE, $zTracePrompt)
+ {
+ if (!$TraceFILE) {
+ $zTracePrompt = 0;
+ } elseif (!$zTracePrompt) {
+ $TraceFILE = 0;
+ }
+ $this->yyTraceFILE = $TraceFILE;
+ $this->yyTracePrompt = $zTracePrompt;
+ }
+
+ public function PrintTrace()
+ {
+ $this->yyTraceFILE = fopen('php://output', 'w');
+ $this->yyTracePrompt = ' ';
+ }
+
+ public $yyTraceFILE;
+ public $yyTracePrompt;
+ public $yyidx; /* Index of top element in stack */
+ public $yyerrcnt; /* Shifts left before out of the error */
+ public $yystack = array(); /* The parser's stack */
+
+ public $yyTokenName = array(
+ '$', 'VERT', 'COLON', 'TEXT',
+ 'STRIPON', 'STRIPOFF', 'LITERALSTART', 'LITERALEND',
+ 'LITERAL', 'SIMPELOUTPUT', 'SIMPLETAG', 'SMARTYBLOCKCHILDPARENT',
+ 'LDEL', 'RDEL', 'DOLLARID', 'EQUAL',
+ 'ID', 'PTR', 'LDELMAKENOCACHE', 'LDELIF',
+ 'LDELFOR', 'SEMICOLON', 'INCDEC', 'TO',
+ 'STEP', 'LDELFOREACH', 'SPACE', 'AS',
+ 'APTR', 'LDELSETFILTER', 'CLOSETAG', 'LDELSLASH',
+ 'ATTR', 'INTEGER', 'COMMA', 'OPENP',
+ 'CLOSEP', 'MATH', 'UNIMATH', 'ISIN',
+ 'QMARK', 'NOT', 'TYPECAST', 'HEX',
+ 'DOT', 'INSTANCEOF', 'SINGLEQUOTESTRING', 'DOUBLECOLON',
+ 'NAMESPACE', 'AT', 'HATCH', 'OPENB',
+ 'CLOSEB', 'DOLLAR', 'LOGOP', 'SLOGOP',
+ 'TLOGOP', 'SINGLECOND', 'ARRAYOPEN', 'QUOTE',
+ 'BACKTICK', 'error', 'start', 'template',
+ 'literal_e2', 'literal_e1', 'smartytag', 'tagbody',
+ 'tag', 'outattr', 'eqoutattr', 'varindexed',
+ 'output', 'attributes', 'variable', 'value',
+ 'expr', 'modifierlist', 'statement', 'statements',
+ 'foraction', 'varvar', 'modparameters', 'attribute',
+ 'ternary', 'tlop', 'lop', 'scond',
+ 'array', 'function', 'ns1', 'doublequoted_with_quotes',
+ 'static_class_access', 'arraydef', 'object', 'arrayindex',
+ 'indexdef', 'varvarele', 'objectchain', 'objectelement',
+ 'method', 'params', 'modifier', 'modparameter',
+ 'arrayelements', 'arrayelement', 'doublequoted', 'doublequotedcontent',
+ );
+
+ public static $yyRuleName = array(
+ 'start ::= template',
+ 'template ::= template TEXT',
+ 'template ::= template STRIPON',
+ 'template ::= template STRIPOFF',
+ 'template ::= template LITERALSTART literal_e2 LITERALEND',
+ 'literal_e2 ::= literal_e1 LITERALSTART literal_e1 LITERALEND',
+ 'literal_e2 ::= literal_e1',
+ 'literal_e1 ::= literal_e1 LITERAL',
+ 'literal_e1 ::=',
+ 'template ::= template smartytag',
+ 'template ::=',
+ 'smartytag ::= SIMPELOUTPUT',
+ 'smartytag ::= SIMPLETAG',
+ 'smartytag ::= SMARTYBLOCKCHILDPARENT',
+ 'smartytag ::= LDEL tagbody RDEL',
+ 'smartytag ::= tag RDEL',
+ 'tagbody ::= outattr',
+ 'tagbody ::= DOLLARID eqoutattr',
+ 'tagbody ::= varindexed eqoutattr',
+ 'eqoutattr ::= EQUAL outattr',
+ 'outattr ::= output attributes',
+ 'output ::= variable',
+ 'output ::= value',
+ 'output ::= expr',
+ 'tag ::= LDEL ID attributes',
+ 'tag ::= LDEL ID',
+ 'tag ::= LDEL ID modifierlist attributes',
+ 'tag ::= LDEL ID PTR ID attributes',
+ 'tag ::= LDEL ID PTR ID modifierlist attributes',
+ 'tag ::= LDELMAKENOCACHE DOLLARID',
+ 'tag ::= LDELIF expr',
+ 'tag ::= LDELIF expr attributes',
+ 'tag ::= LDELIF statement',
+ 'tag ::= LDELIF statement attributes',
+ 'tag ::= LDELFOR statements SEMICOLON expr SEMICOLON varindexed foraction attributes',
+ 'foraction ::= EQUAL expr',
+ 'foraction ::= INCDEC',
+ 'tag ::= LDELFOR statement TO expr attributes',
+ 'tag ::= LDELFOR statement TO expr STEP expr attributes',
+ 'tag ::= LDELFOREACH SPACE expr AS varvar attributes',
+ 'tag ::= LDELFOREACH SPACE expr AS varvar APTR varvar attributes',
+ 'tag ::= LDELFOREACH attributes',
+ 'tag ::= LDELSETFILTER ID modparameters',
+ 'tag ::= LDELSETFILTER ID modparameters modifierlist',
+ 'smartytag ::= CLOSETAG',
+ 'tag ::= LDELSLASH ID',
+ 'tag ::= LDELSLASH ID modifierlist',
+ 'tag ::= LDELSLASH ID PTR ID',
+ 'tag ::= LDELSLASH ID PTR ID modifierlist',
+ 'attributes ::= attributes attribute',
+ 'attributes ::= attribute',
+ 'attributes ::=',
+ 'attribute ::= SPACE ID EQUAL ID',
+ 'attribute ::= ATTR expr',
+ 'attribute ::= ATTR value',
+ 'attribute ::= SPACE ID',
+ 'attribute ::= SPACE expr',
+ 'attribute ::= SPACE value',
+ 'attribute ::= SPACE INTEGER EQUAL expr',
+ 'statements ::= statement',
+ 'statements ::= statements COMMA statement',
+ 'statement ::= DOLLARID EQUAL INTEGER',
+ 'statement ::= DOLLARID EQUAL expr',
+ 'statement ::= varindexed EQUAL expr',
+ 'statement ::= OPENP statement CLOSEP',
+ 'expr ::= value',
+ 'expr ::= ternary',
+ 'expr ::= DOLLARID COLON ID',
+ 'expr ::= expr MATH value',
+ 'expr ::= expr UNIMATH value',
+ 'expr ::= expr tlop value',
+ 'expr ::= expr lop expr',
+ 'expr ::= expr scond',
+ 'expr ::= expr ISIN array',
+ 'expr ::= expr ISIN value',
+ 'ternary ::= OPENP expr CLOSEP QMARK DOLLARID COLON expr',
+ 'ternary ::= OPENP expr CLOSEP QMARK expr COLON expr',
+ 'value ::= variable',
+ 'value ::= UNIMATH value',
+ 'value ::= NOT value',
+ 'value ::= TYPECAST value',
+ 'value ::= variable INCDEC',
+ 'value ::= HEX',
+ 'value ::= INTEGER',
+ 'value ::= INTEGER DOT INTEGER',
+ 'value ::= INTEGER DOT',
+ 'value ::= DOT INTEGER',
+ 'value ::= ID',
+ 'value ::= function',
+ 'value ::= OPENP expr CLOSEP',
+ 'value ::= variable INSTANCEOF ns1',
+ 'value ::= variable INSTANCEOF variable',
+ 'value ::= SINGLEQUOTESTRING',
+ 'value ::= doublequoted_with_quotes',
+ 'value ::= varindexed DOUBLECOLON static_class_access',
+ 'value ::= smartytag',
+ 'value ::= value modifierlist',
+ 'value ::= NAMESPACE',
+ 'value ::= arraydef',
+ 'value ::= ns1 DOUBLECOLON static_class_access',
+ 'ns1 ::= ID',
+ 'ns1 ::= NAMESPACE',
+ 'variable ::= DOLLARID',
+ 'variable ::= varindexed',
+ 'variable ::= varvar AT ID',
+ 'variable ::= object',
+ 'variable ::= HATCH ID HATCH',
+ 'variable ::= HATCH ID HATCH arrayindex',
+ 'variable ::= HATCH variable HATCH',
+ 'variable ::= HATCH variable HATCH arrayindex',
+ 'varindexed ::= DOLLARID arrayindex',
+ 'varindexed ::= varvar arrayindex',
+ 'arrayindex ::= arrayindex indexdef',
+ 'arrayindex ::=',
+ 'indexdef ::= DOT DOLLARID',
+ 'indexdef ::= DOT varvar',
+ 'indexdef ::= DOT varvar AT ID',
+ 'indexdef ::= DOT ID',
+ 'indexdef ::= DOT INTEGER',
+ 'indexdef ::= DOT LDEL expr RDEL',
+ 'indexdef ::= OPENB ID CLOSEB',
+ 'indexdef ::= OPENB ID DOT ID CLOSEB',
+ 'indexdef ::= OPENB SINGLEQUOTESTRING CLOSEB',
+ 'indexdef ::= OPENB INTEGER CLOSEB',
+ 'indexdef ::= OPENB DOLLARID CLOSEB',
+ 'indexdef ::= OPENB variable CLOSEB',
+ 'indexdef ::= OPENB value CLOSEB',
+ 'indexdef ::= OPENB expr CLOSEB',
+ 'indexdef ::= OPENB CLOSEB',
+ 'varvar ::= DOLLARID',
+ 'varvar ::= DOLLAR',
+ 'varvar ::= varvar varvarele',
+ 'varvarele ::= ID',
+ 'varvarele ::= SIMPELOUTPUT',
+ 'varvarele ::= LDEL expr RDEL',
+ 'object ::= varindexed objectchain',
+ 'objectchain ::= objectelement',
+ 'objectchain ::= objectchain objectelement',
+ 'objectelement ::= PTR ID arrayindex',
+ 'objectelement ::= PTR varvar arrayindex',
+ 'objectelement ::= PTR LDEL expr RDEL arrayindex',
+ 'objectelement ::= PTR ID LDEL expr RDEL arrayindex',
+ 'objectelement ::= PTR method',
+ 'function ::= ns1 OPENP params CLOSEP',
+ 'method ::= ID OPENP params CLOSEP',
+ 'method ::= DOLLARID OPENP params CLOSEP',
+ 'params ::= params COMMA expr',
+ 'params ::= expr',
+ 'params ::=',
+ 'modifierlist ::= modifierlist modifier modparameters',
+ 'modifierlist ::= modifier modparameters',
+ 'modifier ::= VERT AT ID',
+ 'modifier ::= VERT ID',
+ 'modparameters ::= modparameters modparameter',
+ 'modparameters ::=',
+ 'modparameter ::= COLON value',
+ 'modparameter ::= COLON UNIMATH value',
+ 'modparameter ::= COLON array',
+ 'static_class_access ::= method',
+ 'static_class_access ::= method objectchain',
+ 'static_class_access ::= ID',
+ 'static_class_access ::= DOLLARID arrayindex',
+ 'static_class_access ::= DOLLARID arrayindex objectchain',
+ 'lop ::= LOGOP',
+ 'lop ::= SLOGOP',
+ 'tlop ::= TLOGOP',
+ 'scond ::= SINGLECOND',
+ 'arraydef ::= OPENB arrayelements CLOSEB',
+ 'arraydef ::= ARRAYOPEN arrayelements CLOSEP',
+ 'arrayelements ::= arrayelement',
+ 'arrayelements ::= arrayelements COMMA arrayelement',
+ 'arrayelements ::=',
+ 'arrayelement ::= value APTR expr',
+ 'arrayelement ::= ID APTR expr',
+ 'arrayelement ::= expr',
+ 'doublequoted_with_quotes ::= QUOTE QUOTE',
+ 'doublequoted_with_quotes ::= QUOTE doublequoted QUOTE',
+ 'doublequoted ::= doublequoted doublequotedcontent',
+ 'doublequoted ::= doublequotedcontent',
+ 'doublequotedcontent ::= BACKTICK variable BACKTICK',
+ 'doublequotedcontent ::= BACKTICK expr BACKTICK',
+ 'doublequotedcontent ::= DOLLARID',
+ 'doublequotedcontent ::= LDEL variable RDEL',
+ 'doublequotedcontent ::= LDEL expr RDEL',
+ 'doublequotedcontent ::= smartytag',
+ 'doublequotedcontent ::= TEXT',
+ );
+
+ public function tokenName($tokenType)
+ {
+ if ($tokenType === 0) {
+ return 'End of Input';
+ }
+ if ($tokenType > 0 && $tokenType < count($this->yyTokenName)) {
+ return $this->yyTokenName[$tokenType];
+ } else {
+ return 'Unknown';
+ }
+ }
+
+ public static function yy_destructor($yymajor, $yypminor)
+ {
+ switch ($yymajor) {
+ default: break; /* If no destructor action specified: do nothing */
+ }
+ }
+
+ public function yy_pop_parser_stack()
+ {
+ if (empty($this->yystack)) {
+ return;
+ }
+ $yytos = array_pop($this->yystack);
+ if ($this->yyTraceFILE && $this->yyidx >= 0) {
+ fwrite($this->yyTraceFILE,
+ $this->yyTracePrompt . 'Popping ' . $this->yyTokenName[$yytos->major] .
+ "\n");
+ }
+ $yymajor = $yytos->major;
+ self::yy_destructor($yymajor, $yytos->minor);
+ $this->yyidx--;
+
+ return $yymajor;
+ }
+
+ public function __destruct()
+ {
+ while ($this->yystack !== Array()) {
+ $this->yy_pop_parser_stack();
+ }
+ if (is_resource($this->yyTraceFILE)) {
+ fclose($this->yyTraceFILE);
+ }
+ }
+
+ public function yy_get_expected_tokens($token)
+ {
+ static $res3 = array();
+ static $res4 = array();
+ $state = $this->yystack[$this->yyidx]->stateno;
+ $expected = self::$yyExpectedTokens[$state];
+ if (isset($res3[$state][$token])) {
+ if ($res3[$state][$token]) {
+ return $expected;
+ }
+ } else {
+ if ($res3[$state][$token] = in_array($token, self::$yyExpectedTokens[$state], true)) {
+ return $expected;
+ }
+ }
+ $stack = $this->yystack;
+ $yyidx = $this->yyidx;
+ do {
+ $yyact = $this->yy_find_shift_action($token);
+ if ($yyact >= self::YYNSTATE && $yyact < self::YYNSTATE + self::YYNRULE) {
+ // reduce action
+ $done = 0;
+ do {
+ if ($done++ === 100) {
+ $this->yyidx = $yyidx;
+ $this->yystack = $stack;
+ // too much recursion prevents proper detection
+ // so give up
+ return array_unique($expected);
+ }
+ $yyruleno = $yyact - self::YYNSTATE;
+ $this->yyidx -= self::$yyRuleInfo[$yyruleno][1];
+ $nextstate = $this->yy_find_reduce_action(
+ $this->yystack[$this->yyidx]->stateno,
+ self::$yyRuleInfo[$yyruleno][0]);
+ if (isset(self::$yyExpectedTokens[$nextstate])) {
+ $expected = array_merge($expected, self::$yyExpectedTokens[$nextstate]);
+ if (isset($res4[$nextstate][$token])) {
+ if ($res4[$nextstate][$token]) {
+ $this->yyidx = $yyidx;
+ $this->yystack = $stack;
+ return array_unique($expected);
+ }
+ } else {
+ if ($res4[$nextstate][$token] = in_array($token, self::$yyExpectedTokens[$nextstate], true)) {
+ $this->yyidx = $yyidx;
+ $this->yystack = $stack;
+ return array_unique($expected);
+ }
+ }
+ }
+ if ($nextstate < self::YYNSTATE) {
+ // we need to shift a non-terminal
+ $this->yyidx++;
+ $x = new TP_yyStackEntry;
+ $x->stateno = $nextstate;
+ $x->major = self::$yyRuleInfo[$yyruleno][0];
+ $this->yystack[$this->yyidx] = $x;
+ continue 2;
+ } elseif ($nextstate === self::YYNSTATE + self::YYNRULE + 1) {
+ $this->yyidx = $yyidx;
+ $this->yystack = $stack;
+ // the last token was just ignored, we can't accept
+ // by ignoring input, this is in essence ignoring a
+ // syntax error!
+ return array_unique($expected);
+ } elseif ($nextstate === self::YY_NO_ACTION) {
+ $this->yyidx = $yyidx;
+ $this->yystack = $stack;
+ // input accepted, but not shifted (I guess)
+ return $expected;
+ } else {
+ $yyact = $nextstate;
+ }
+ } while (true);
+ }
+ break;
+ } while (true);
+ $this->yyidx = $yyidx;
+ $this->yystack = $stack;
+
+ return array_unique($expected);
+ }
+
+ public function yy_is_expected_token($token)
+ {
+ static $res = array();
+ static $res2 = array();
+ if ($token === 0) {
+ return true; // 0 is not part of this
+ }
+ $state = $this->yystack[$this->yyidx]->stateno;
+ if (isset($res[$state][$token])) {
+ if ($res[$state][$token]) {
+ return true;
+ }
+ } else {
+ if ($res[$state][$token] = in_array($token, self::$yyExpectedTokens[$state], true)) {
+ return true;
+ }
+ }
+ $stack = $this->yystack;
+ $yyidx = $this->yyidx;
+ do {
+ $yyact = $this->yy_find_shift_action($token);
+ if ($yyact >= self::YYNSTATE && $yyact < self::YYNSTATE + self::YYNRULE) {
+ // reduce action
+ $done = 0;
+ do {
+ if ($done++ === 100) {
+ $this->yyidx = $yyidx;
+ $this->yystack = $stack;
+ // too much recursion prevents proper detection
+ // so give up
+ return true;
+ }
+ $yyruleno = $yyact - self::YYNSTATE;
+ $this->yyidx -= self::$yyRuleInfo[$yyruleno][1];
+ $nextstate = $this->yy_find_reduce_action(
+ $this->yystack[$this->yyidx]->stateno,
+ self::$yyRuleInfo[$yyruleno][0]);
+ if (isset($res2[$nextstate][$token])) {
+ if ($res2[$nextstate][$token]) {
+ $this->yyidx = $yyidx;
+ $this->yystack = $stack;
+ return true;
+ }
+ } else {
+ if ($res2[$nextstate][$token] = (isset(self::$yyExpectedTokens[$nextstate]) && in_array($token, self::$yyExpectedTokens[$nextstate], true))) {
+ $this->yyidx = $yyidx;
+ $this->yystack = $stack;
+ return true;
+ }
+ }
+ if ($nextstate < self::YYNSTATE) {
+ // we need to shift a non-terminal
+ $this->yyidx++;
+ $x = new TP_yyStackEntry;
+ $x->stateno = $nextstate;
+ $x->major = self::$yyRuleInfo[$yyruleno][0];
+ $this->yystack[$this->yyidx] = $x;
+ continue 2;
+ } elseif ($nextstate === self::YYNSTATE + self::YYNRULE + 1) {
+ $this->yyidx = $yyidx;
+ $this->yystack = $stack;
+ if (!$token) {
+ // end of input: this is valid
+ return true;
+ }
+ // the last token was just ignored, we can't accept
+ // by ignoring input, this is in essence ignoring a
+ // syntax error!
+ return false;
+ } elseif ($nextstate === self::YY_NO_ACTION) {
+ $this->yyidx = $yyidx;
+ $this->yystack = $stack;
+ // input accepted, but not shifted (I guess)
+ return true;
+ } else {
+ $yyact = $nextstate;
+ }
+ } while (true);
+ }
+ break;
+ } while (true);
+ $this->yyidx = $yyidx;
+ $this->yystack = $stack;
+
+ return true;
+ }
+
+ public function yy_find_shift_action($iLookAhead)
+ {
+ $stateno = $this->yystack[$this->yyidx]->stateno;
+
+ /* if ($this->yyidx < 0) return self::YY_NO_ACTION; */
+ if (!isset(self::$yy_shift_ofst[$stateno])) {
+ // no shift actions
+ return self::$yy_default[$stateno];
+ }
+ $i = self::$yy_shift_ofst[$stateno];
+ if ($i === self::YY_SHIFT_USE_DFLT) {
+ return self::$yy_default[$stateno];
+ }
+ if ($iLookAhead === self::YYNOCODE) {
+ return self::YY_NO_ACTION;
+ }
+ $i += $iLookAhead;
+ if ($i < 0 || $i >= self::YY_SZ_ACTTAB ||
+ self::$yy_lookahead[$i] != $iLookAhead) {
+ if (count(self::$yyFallback) && $iLookAhead < count(self::$yyFallback)
+ && ($iFallback = self::$yyFallback[$iLookAhead]) != 0) {
+ if ($this->yyTraceFILE) {
+ fwrite($this->yyTraceFILE, $this->yyTracePrompt . 'FALLBACK ' .
+ $this->yyTokenName[$iLookAhead] . ' => ' .
+ $this->yyTokenName[$iFallback] . "\n");
+ }
+
+ return $this->yy_find_shift_action($iFallback);
+ }
+
+ return self::$yy_default[$stateno];
+ } else {
+ return self::$yy_action[$i];
+ }
+ }
+
+ public function yy_find_reduce_action($stateno, $iLookAhead)
+ {
+ /* $stateno = $this->yystack[$this->yyidx]->stateno; */
+
+ if (!isset(self::$yy_reduce_ofst[$stateno])) {
+ return self::$yy_default[$stateno];
+ }
+ $i = self::$yy_reduce_ofst[$stateno];
+ if ($i === self::YY_REDUCE_USE_DFLT) {
+ return self::$yy_default[$stateno];
+ }
+ if ($iLookAhead === self::YYNOCODE) {
+ return self::YY_NO_ACTION;
+ }
+ $i += $iLookAhead;
+ if ($i < 0 || $i >= self::YY_SZ_ACTTAB ||
+ self::$yy_lookahead[$i] != $iLookAhead) {
+ return self::$yy_default[$stateno];
+ } else {
+ return self::$yy_action[$i];
+ }
+ }
+
+ public function yy_shift($yyNewState, $yyMajor, $yypMinor)
+ {
+ $this->yyidx++;
+ if ($this->yyidx >= self::YYSTACKDEPTH) {
+ $this->yyidx--;
+ if ($this->yyTraceFILE) {
+ fprintf($this->yyTraceFILE, "%sStack Overflow!\n", $this->yyTracePrompt);
+ }
+ while ($this->yyidx >= 0) {
+ $this->yy_pop_parser_stack();
+ }
+// line 220 "../smarty/lexer/smarty_internal_templateparser.y"
+
+ $this->internalError = true;
+ $this->compiler->trigger_template_error('Stack overflow in template parser');
+
+ return;
+ }
+ $yytos = new TP_yyStackEntry;
+ $yytos->stateno = $yyNewState;
+ $yytos->major = $yyMajor;
+ $yytos->minor = $yypMinor;
+ $this->yystack[] = $yytos;
+ if ($this->yyTraceFILE && $this->yyidx > 0) {
+ fprintf($this->yyTraceFILE, "%sShift %d\n", $this->yyTracePrompt,
+ $yyNewState);
+ fprintf($this->yyTraceFILE, "%sStack:", $this->yyTracePrompt);
+ for ($i = 1; $i <= $this->yyidx; $i++) {
+ fprintf($this->yyTraceFILE, " %s",
+ $this->yyTokenName[$this->yystack[$i]->major]);
+ }
+ fwrite($this->yyTraceFILE,"\n");
+ }
+ }
+
+ public static $yyRuleInfo = array(
+ array( 0 => 62, 1 => 1 ),
+ array( 0 => 63, 1 => 2 ),
+ array( 0 => 63, 1 => 2 ),
+ array( 0 => 63, 1 => 2 ),
+ array( 0 => 63, 1 => 4 ),
+ array( 0 => 64, 1 => 4 ),
+ array( 0 => 64, 1 => 1 ),
+ array( 0 => 65, 1 => 2 ),
+ array( 0 => 65, 1 => 0 ),
+ array( 0 => 63, 1 => 2 ),
+ array( 0 => 63, 1 => 0 ),
+ array( 0 => 66, 1 => 1 ),
+ array( 0 => 66, 1 => 1 ),
+ array( 0 => 66, 1 => 1 ),
+ array( 0 => 66, 1 => 3 ),
+ array( 0 => 66, 1 => 2 ),
+ array( 0 => 67, 1 => 1 ),
+ array( 0 => 67, 1 => 2 ),
+ array( 0 => 67, 1 => 2 ),
+ array( 0 => 70, 1 => 2 ),
+ array( 0 => 69, 1 => 2 ),
+ array( 0 => 72, 1 => 1 ),
+ array( 0 => 72, 1 => 1 ),
+ array( 0 => 72, 1 => 1 ),
+ array( 0 => 68, 1 => 3 ),
+ array( 0 => 68, 1 => 2 ),
+ array( 0 => 68, 1 => 4 ),
+ array( 0 => 68, 1 => 5 ),
+ array( 0 => 68, 1 => 6 ),
+ array( 0 => 68, 1 => 2 ),
+ array( 0 => 68, 1 => 2 ),
+ array( 0 => 68, 1 => 3 ),
+ array( 0 => 68, 1 => 2 ),
+ array( 0 => 68, 1 => 3 ),
+ array( 0 => 68, 1 => 8 ),
+ array( 0 => 80, 1 => 2 ),
+ array( 0 => 80, 1 => 1 ),
+ array( 0 => 68, 1 => 5 ),
+ array( 0 => 68, 1 => 7 ),
+ array( 0 => 68, 1 => 6 ),
+ array( 0 => 68, 1 => 8 ),
+ array( 0 => 68, 1 => 2 ),
+ array( 0 => 68, 1 => 3 ),
+ array( 0 => 68, 1 => 4 ),
+ array( 0 => 66, 1 => 1 ),
+ array( 0 => 68, 1 => 2 ),
+ array( 0 => 68, 1 => 3 ),
+ array( 0 => 68, 1 => 4 ),
+ array( 0 => 68, 1 => 5 ),
+ array( 0 => 73, 1 => 2 ),
+ array( 0 => 73, 1 => 1 ),
+ array( 0 => 73, 1 => 0 ),
+ array( 0 => 83, 1 => 4 ),
+ array( 0 => 83, 1 => 2 ),
+ array( 0 => 83, 1 => 2 ),
+ array( 0 => 83, 1 => 2 ),
+ array( 0 => 83, 1 => 2 ),
+ array( 0 => 83, 1 => 2 ),
+ array( 0 => 83, 1 => 4 ),
+ array( 0 => 79, 1 => 1 ),
+ array( 0 => 79, 1 => 3 ),
+ array( 0 => 78, 1 => 3 ),
+ array( 0 => 78, 1 => 3 ),
+ array( 0 => 78, 1 => 3 ),
+ array( 0 => 78, 1 => 3 ),
+ array( 0 => 76, 1 => 1 ),
+ array( 0 => 76, 1 => 1 ),
+ array( 0 => 76, 1 => 3 ),
+ array( 0 => 76, 1 => 3 ),
+ array( 0 => 76, 1 => 3 ),
+ array( 0 => 76, 1 => 3 ),
+ array( 0 => 76, 1 => 3 ),
+ array( 0 => 76, 1 => 2 ),
+ array( 0 => 76, 1 => 3 ),
+ array( 0 => 76, 1 => 3 ),
+ array( 0 => 84, 1 => 7 ),
+ array( 0 => 84, 1 => 7 ),
+ array( 0 => 75, 1 => 1 ),
+ array( 0 => 75, 1 => 2 ),
+ array( 0 => 75, 1 => 2 ),
+ array( 0 => 75, 1 => 2 ),
+ array( 0 => 75, 1 => 2 ),
+ array( 0 => 75, 1 => 1 ),
+ array( 0 => 75, 1 => 1 ),
+ array( 0 => 75, 1 => 3 ),
+ array( 0 => 75, 1 => 2 ),
+ array( 0 => 75, 1 => 2 ),
+ array( 0 => 75, 1 => 1 ),
+ array( 0 => 75, 1 => 1 ),
+ array( 0 => 75, 1 => 3 ),
+ array( 0 => 75, 1 => 3 ),
+ array( 0 => 75, 1 => 3 ),
+ array( 0 => 75, 1 => 1 ),
+ array( 0 => 75, 1 => 1 ),
+ array( 0 => 75, 1 => 3 ),
+ array( 0 => 75, 1 => 1 ),
+ array( 0 => 75, 1 => 2 ),
+ array( 0 => 75, 1 => 1 ),
+ array( 0 => 75, 1 => 1 ),
+ array( 0 => 75, 1 => 3 ),
+ array( 0 => 90, 1 => 1 ),
+ array( 0 => 90, 1 => 1 ),
+ array( 0 => 74, 1 => 1 ),
+ array( 0 => 74, 1 => 1 ),
+ array( 0 => 74, 1 => 3 ),
+ array( 0 => 74, 1 => 1 ),
+ array( 0 => 74, 1 => 3 ),
+ array( 0 => 74, 1 => 4 ),
+ array( 0 => 74, 1 => 3 ),
+ array( 0 => 74, 1 => 4 ),
+ array( 0 => 71, 1 => 2 ),
+ array( 0 => 71, 1 => 2 ),
+ array( 0 => 95, 1 => 2 ),
+ array( 0 => 95, 1 => 0 ),
+ array( 0 => 96, 1 => 2 ),
+ array( 0 => 96, 1 => 2 ),
+ array( 0 => 96, 1 => 4 ),
+ array( 0 => 96, 1 => 2 ),
+ array( 0 => 96, 1 => 2 ),
+ array( 0 => 96, 1 => 4 ),
+ array( 0 => 96, 1 => 3 ),
+ array( 0 => 96, 1 => 5 ),
+ array( 0 => 96, 1 => 3 ),
+ array( 0 => 96, 1 => 3 ),
+ array( 0 => 96, 1 => 3 ),
+ array( 0 => 96, 1 => 3 ),
+ array( 0 => 96, 1 => 3 ),
+ array( 0 => 96, 1 => 3 ),
+ array( 0 => 96, 1 => 2 ),
+ array( 0 => 81, 1 => 1 ),
+ array( 0 => 81, 1 => 1 ),
+ array( 0 => 81, 1 => 2 ),
+ array( 0 => 97, 1 => 1 ),
+ array( 0 => 97, 1 => 1 ),
+ array( 0 => 97, 1 => 3 ),
+ array( 0 => 94, 1 => 2 ),
+ array( 0 => 98, 1 => 1 ),
+ array( 0 => 98, 1 => 2 ),
+ array( 0 => 99, 1 => 3 ),
+ array( 0 => 99, 1 => 3 ),
+ array( 0 => 99, 1 => 5 ),
+ array( 0 => 99, 1 => 6 ),
+ array( 0 => 99, 1 => 2 ),
+ array( 0 => 89, 1 => 4 ),
+ array( 0 => 100, 1 => 4 ),
+ array( 0 => 100, 1 => 4 ),
+ array( 0 => 101, 1 => 3 ),
+ array( 0 => 101, 1 => 1 ),
+ array( 0 => 101, 1 => 0 ),
+ array( 0 => 77, 1 => 3 ),
+ array( 0 => 77, 1 => 2 ),
+ array( 0 => 102, 1 => 3 ),
+ array( 0 => 102, 1 => 2 ),
+ array( 0 => 82, 1 => 2 ),
+ array( 0 => 82, 1 => 0 ),
+ array( 0 => 103, 1 => 2 ),
+ array( 0 => 103, 1 => 3 ),
+ array( 0 => 103, 1 => 2 ),
+ array( 0 => 92, 1 => 1 ),
+ array( 0 => 92, 1 => 2 ),
+ array( 0 => 92, 1 => 1 ),
+ array( 0 => 92, 1 => 2 ),
+ array( 0 => 92, 1 => 3 ),
+ array( 0 => 86, 1 => 1 ),
+ array( 0 => 86, 1 => 1 ),
+ array( 0 => 85, 1 => 1 ),
+ array( 0 => 87, 1 => 1 ),
+ array( 0 => 93, 1 => 3 ),
+ array( 0 => 93, 1 => 3 ),
+ array( 0 => 104, 1 => 1 ),
+ array( 0 => 104, 1 => 3 ),
+ array( 0 => 104, 1 => 0 ),
+ array( 0 => 105, 1 => 3 ),
+ array( 0 => 105, 1 => 3 ),
+ array( 0 => 105, 1 => 1 ),
+ array( 0 => 91, 1 => 2 ),
+ array( 0 => 91, 1 => 3 ),
+ array( 0 => 106, 1 => 2 ),
+ array( 0 => 106, 1 => 1 ),
+ array( 0 => 107, 1 => 3 ),
+ array( 0 => 107, 1 => 3 ),
+ array( 0 => 107, 1 => 1 ),
+ array( 0 => 107, 1 => 3 ),
+ array( 0 => 107, 1 => 3 ),
+ array( 0 => 107, 1 => 1 ),
+ array( 0 => 107, 1 => 1 ),
+ );
+
+ public static $yyReduceMap = array(
+ 0 => 0,
+ 1 => 1,
+ 2 => 2,
+ 3 => 3,
+ 4 => 4,
+ 5 => 5,
+ 6 => 6,
+ 21 => 6,
+ 22 => 6,
+ 23 => 6,
+ 36 => 6,
+ 56 => 6,
+ 57 => 6,
+ 65 => 6,
+ 66 => 6,
+ 77 => 6,
+ 82 => 6,
+ 83 => 6,
+ 88 => 6,
+ 92 => 6,
+ 93 => 6,
+ 97 => 6,
+ 98 => 6,
+ 100 => 6,
+ 105 => 6,
+ 169 => 6,
+ 174 => 6,
+ 7 => 7,
+ 8 => 8,
+ 9 => 9,
+ 11 => 11,
+ 12 => 12,
+ 13 => 13,
+ 14 => 14,
+ 15 => 15,
+ 16 => 16,
+ 17 => 17,
+ 18 => 18,
+ 19 => 19,
+ 20 => 20,
+ 24 => 24,
+ 25 => 25,
+ 26 => 26,
+ 27 => 27,
+ 28 => 28,
+ 29 => 29,
+ 30 => 30,
+ 31 => 31,
+ 33 => 31,
+ 32 => 32,
+ 34 => 34,
+ 35 => 35,
+ 37 => 37,
+ 38 => 38,
+ 39 => 39,
+ 40 => 40,
+ 41 => 41,
+ 42 => 42,
+ 43 => 43,
+ 44 => 44,
+ 45 => 45,
+ 46 => 46,
+ 47 => 47,
+ 48 => 48,
+ 49 => 49,
+ 50 => 50,
+ 59 => 50,
+ 147 => 50,
+ 151 => 50,
+ 155 => 50,
+ 157 => 50,
+ 51 => 51,
+ 148 => 51,
+ 154 => 51,
+ 52 => 52,
+ 53 => 53,
+ 54 => 53,
+ 55 => 55,
+ 132 => 55,
+ 58 => 58,
+ 60 => 60,
+ 61 => 61,
+ 62 => 61,
+ 63 => 63,
+ 64 => 64,
+ 67 => 67,
+ 68 => 68,
+ 69 => 68,
+ 70 => 70,
+ 71 => 71,
+ 72 => 72,
+ 73 => 73,
+ 74 => 74,
+ 75 => 75,
+ 76 => 76,
+ 78 => 78,
+ 80 => 78,
+ 81 => 78,
+ 112 => 78,
+ 79 => 79,
+ 84 => 84,
+ 85 => 85,
+ 86 => 86,
+ 87 => 87,
+ 89 => 89,
+ 90 => 90,
+ 91 => 90,
+ 94 => 94,
+ 95 => 95,
+ 96 => 96,
+ 99 => 99,
+ 101 => 101,
+ 102 => 102,
+ 103 => 103,
+ 104 => 104,
+ 106 => 106,
+ 107 => 107,
+ 108 => 108,
+ 109 => 109,
+ 110 => 110,
+ 111 => 111,
+ 113 => 113,
+ 171 => 113,
+ 114 => 114,
+ 115 => 115,
+ 116 => 116,
+ 117 => 117,
+ 118 => 118,
+ 119 => 119,
+ 127 => 119,
+ 120 => 120,
+ 121 => 121,
+ 122 => 122,
+ 123 => 122,
+ 125 => 122,
+ 126 => 122,
+ 124 => 124,
+ 128 => 128,
+ 129 => 129,
+ 130 => 130,
+ 175 => 130,
+ 131 => 131,
+ 133 => 133,
+ 134 => 134,
+ 135 => 135,
+ 136 => 136,
+ 137 => 137,
+ 138 => 138,
+ 139 => 139,
+ 140 => 140,
+ 141 => 141,
+ 142 => 142,
+ 143 => 143,
+ 144 => 144,
+ 145 => 145,
+ 146 => 146,
+ 149 => 149,
+ 150 => 150,
+ 152 => 152,
+ 153 => 153,
+ 156 => 156,
+ 158 => 158,
+ 159 => 159,
+ 160 => 160,
+ 161 => 161,
+ 162 => 162,
+ 163 => 163,
+ 164 => 164,
+ 165 => 165,
+ 166 => 166,
+ 167 => 167,
+ 168 => 167,
+ 170 => 170,
+ 172 => 172,
+ 173 => 173,
+ 176 => 176,
+ 177 => 177,
+ 178 => 178,
+ 179 => 179,
+ 182 => 179,
+ 180 => 180,
+ 183 => 180,
+ 181 => 181,
+ 184 => 184,
+ 185 => 185,
+ );
+// line 233 "../smarty/lexer/smarty_internal_templateparser.y"
+ public function yy_r0(){
+ $this->root_buffer->prepend_array($this, $this->template_prefix);
+ $this->root_buffer->append_array($this, $this->template_postfix);
+ $this->_retvalue = $this->root_buffer->to_smarty_php($this);
+ }
+// line 240 "../smarty/lexer/smarty_internal_templateparser.y"
+ public function yy_r1(){
+ $text = $this->yystack[ $this->yyidx + 0 ]->minor;
+
+ if ((string)$text == '') {
+ $this->current_buffer->append_subtree($this, null);
+ }
+
+ $this->current_buffer->append_subtree($this, new Smarty_Internal_ParseTree_Text($text, $this->strip));
+ }
+// line 250 "../smarty/lexer/smarty_internal_templateparser.y"
+ public function yy_r2(){
+ $this->strip = true;
+ }
+// line 254 "../smarty/lexer/smarty_internal_templateparser.y"
+ public function yy_r3(){
+ $this->strip = false;
+ }
+// line 259 "../smarty/lexer/smarty_internal_templateparser.y"
+ public function yy_r4(){
+ $this->current_buffer->append_subtree($this, new Smarty_Internal_ParseTree_Text($this->yystack[$this->yyidx + -1]->minor));
+ }
+// line 264 "../smarty/lexer/smarty_internal_templateparser.y"
+ public function yy_r5(){
+ $this->_retvalue = $this->yystack[$this->yyidx + -3]->minor.$this->yystack[$this->yyidx + -1]->minor;
+ }
+// line 267 "../smarty/lexer/smarty_internal_templateparser.y"
+ public function yy_r6(){
+ $this->_retvalue = $this->yystack[$this->yyidx + 0]->minor;
+ }
+// line 271 "../smarty/lexer/smarty_internal_templateparser.y"
+ public function yy_r7(){
+ $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor;
+
+ }
+// line 276 "../smarty/lexer/smarty_internal_templateparser.y"
+ public function yy_r8(){
+ $this->_retvalue = '';
+ }
+// line 280 "../smarty/lexer/smarty_internal_templateparser.y"
+ public function yy_r9(){
+ if ($this->compiler->has_code) {
+ $this->current_buffer->append_subtree($this, $this->mergePrefixCode($this->yystack[$this->yyidx + 0]->minor));
+ }
+ $this->compiler->has_variable_string = false;
+ $this->block_nesting_level = count($this->compiler->_tag_stack);
+ }
+// line 292 "../smarty/lexer/smarty_internal_templateparser.y"
+ public function yy_r11(){
+ $var = trim(substr($this->yystack[$this->yyidx + 0]->minor, $this->compiler->getLdelLength(), -$this->compiler->getRdelLength()), ' $');
+ if (preg_match('/^(.*)(\s+nocache)$/', $var, $match)) {
+ $this->_retvalue = $this->compiler->compileTag('private_print_expression',array('nocache'),array('value'=>$this->compiler->compileVariable('\''.$match[1].'\'')));
+ } else {
+ $this->_retvalue = $this->compiler->compileTag('private_print_expression',array(),array('value'=>$this->compiler->compileVariable('\''.$var.'\'')));
+ }
+ }
+// line 302 "../smarty/lexer/smarty_internal_templateparser.y"
+ public function yy_r12(){
+ $tag = trim(substr($this->yystack[$this->yyidx + 0]->minor, $this->compiler->getLdelLength(), -$this->compiler->getRdelLength()));
+ if ($tag == 'strip') {
+ $this->strip = true;
+ $this->_retvalue = null;
+ } else {
+ if (defined($tag)) {
+ if ($this->security) {
+ $this->security->isTrustedConstant($tag, $this->compiler);
+ }
+ $this->_retvalue = $this->compiler->compileTag('private_print_expression',array(),array('value'=>$tag));
+ } else {
+ if (preg_match('/^(.*)(\s+nocache)$/', $tag, $match)) {
+ $this->_retvalue = $this->compiler->compileTag($match[1],array('\'nocache\''));
+ } else {
+ $this->_retvalue = $this->compiler->compileTag($tag,array());
+ }
+ }
+ }
+ }
+// line 323 "../smarty/lexer/smarty_internal_templateparser.y"
+ public function yy_r13(){
+ $j = strrpos($this->yystack[$this->yyidx + 0]->minor,'.');
+ if ($this->yystack[$this->yyidx + 0]->minor[$j+1] == 'c') {
+ // {$smarty.block.child}
+ $this->_retvalue = $this->compiler->compileTag('child',array(),array($this->yystack[$this->yyidx + 0]->minor));
+ } else {
+ // {$smarty.block.parent}
+ $this->_retvalue = $this->compiler->compileTag('parent',array(),array($this->yystack[$this->yyidx + 0]->minor));
+ }
+ }
+// line 334 "../smarty/lexer/smarty_internal_templateparser.y"
+ public function yy_r14(){
+ $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor;
+ }
+// line 338 "../smarty/lexer/smarty_internal_templateparser.y"
+ public function yy_r15(){
+ $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor;
+ }
+// line 342 "../smarty/lexer/smarty_internal_templateparser.y"
+ public function yy_r16(){
+ $this->_retvalue = $this->compiler->compileTag('private_print_expression',$this->yystack[$this->yyidx + 0]->minor[1],array('value'=>$this->yystack[$this->yyidx + 0]->minor[0]));
+ }
+// line 351 "../smarty/lexer/smarty_internal_templateparser.y"
+ public function yy_r17(){
+ $this->_retvalue = $this->compiler->compileTag('assign',array_merge(array(array('value'=>$this->yystack[$this->yyidx + 0]->minor[0]),array('var'=>'\''.substr($this->yystack[$this->yyidx + -1]->minor,1).'\'')),$this->yystack[$this->yyidx + 0]->minor[1]));
+ }
+// line 355 "../smarty/lexer/smarty_internal_templateparser.y"
+ public function yy_r18(){
+ $this->_retvalue = $this->compiler->compileTag('assign',array_merge(array(array('value'=>$this->yystack[$this->yyidx + 0]->minor[0]),array('var'=>$this->yystack[$this->yyidx + -1]->minor['var'])),$this->yystack[$this->yyidx + 0]->minor[1]),array('smarty_internal_index'=>$this->yystack[$this->yyidx + -1]->minor['smarty_internal_index']));
+ }
+// line 359 "../smarty/lexer/smarty_internal_templateparser.y"
+ public function yy_r19(){
+ $this->_retvalue = $this->yystack[$this->yyidx + 0]->minor;
+ }
+// line 363 "../smarty/lexer/smarty_internal_templateparser.y"
+ public function yy_r20(){
+ $this->_retvalue = array($this->yystack[$this->yyidx + -1]->minor,$this->yystack[$this->yyidx + 0]->minor);
+ }
+// line 378 "../smarty/lexer/smarty_internal_templateparser.y"
+ public function yy_r24(){
+ if (defined($this->yystack[$this->yyidx + -1]->minor)) {
+ if ($this->security) {
+ $this->security->isTrustedConstant($this->yystack[$this->yyidx + -1]->minor, $this->compiler);
+ }
+ $this->_retvalue = $this->compiler->compileTag('private_print_expression',$this->yystack[$this->yyidx + 0]->minor,array('value'=>$this->yystack[$this->yyidx + -1]->minor));
+ } else {
+ $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + -1]->minor,$this->yystack[$this->yyidx + 0]->minor);
+ }
+ }
+// line 388 "../smarty/lexer/smarty_internal_templateparser.y"
+ public function yy_r25(){
+ if (defined($this->yystack[$this->yyidx + 0]->minor)) {
+ if ($this->security) {
+ $this->security->isTrustedConstant($this->yystack[$this->yyidx + 0]->minor, $this->compiler);
+ }
+ $this->_retvalue = $this->compiler->compileTag('private_print_expression',array(),array('value'=>$this->yystack[$this->yyidx + 0]->minor));
+ } else {
+ $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + 0]->minor,array());
+ }
+ }
+// line 401 "../smarty/lexer/smarty_internal_templateparser.y"
+ public function yy_r26(){
+ if (defined($this->yystack[$this->yyidx + -2]->minor)) {
+ if ($this->security) {
+ $this->security->isTrustedConstant($this->yystack[$this->yyidx + -2]->minor, $this->compiler);
+ }
+ $this->_retvalue = $this->compiler->compileTag('private_print_expression',$this->yystack[$this->yyidx + 0]->minor,array('value'=>$this->yystack[$this->yyidx + -2]->minor, 'modifierlist'=>$this->yystack[$this->yyidx + -1]->minor));
+ } else {
+ $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + -2]->minor,$this->yystack[$this->yyidx + 0]->minor, array('modifierlist'=>$this->yystack[$this->yyidx + -1]->minor));
+ }
+ }
+// line 413 "../smarty/lexer/smarty_internal_templateparser.y"
+ public function yy_r27(){
+ $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + -3]->minor,$this->yystack[$this->yyidx + 0]->minor,array('object_method'=>$this->yystack[$this->yyidx + -1]->minor));
+ }
+// line 418 "../smarty/lexer/smarty_internal_templateparser.y"
+ public function yy_r28(){
+ $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + -4]->minor,$this->yystack[$this->yyidx + 0]->minor,array('modifierlist'=>$this->yystack[$this->yyidx + -1]->minor, 'object_method'=>$this->yystack[$this->yyidx + -2]->minor));
+ }
+// line 423 "../smarty/lexer/smarty_internal_templateparser.y"
+ public function yy_r29(){
+ $this->_retvalue = $this->compiler->compileTag('make_nocache',array(array('var'=>'\''.substr($this->yystack[$this->yyidx + 0]->minor,1).'\'')));
+ }
+// line 428 "../smarty/lexer/smarty_internal_templateparser.y"
+ public function yy_r30(){
+ $tag = trim(substr($this->yystack[$this->yyidx + -1]->minor,$this->compiler->getLdelLength()));
+ $this->_retvalue = $this->compiler->compileTag(($tag === 'else if')? 'elseif' : $tag,array(),array('if condition'=>$this->yystack[$this->yyidx + 0]->minor));
+ }
+// line 433 "../smarty/lexer/smarty_internal_templateparser.y"
+ public function yy_r31(){
+ $tag = trim(substr($this->yystack[$this->yyidx + -2]->minor,$this->compiler->getLdelLength()));
+ $this->_retvalue = $this->compiler->compileTag(($tag === 'else if')? 'elseif' : $tag,$this->yystack[$this->yyidx + 0]->minor,array('if condition'=>$this->yystack[$this->yyidx + -1]->minor));
+ }
+// line 438 "../smarty/lexer/smarty_internal_templateparser.y"
+ public function yy_r32(){
+ $tag = trim(substr($this->yystack[$this->yyidx + -1]->minor,$this->compiler->getLdelLength()));
+ $this->_retvalue = $this->compiler->compileTag(($tag === 'else if')? 'elseif' : $tag,array(),array('if condition'=>$this->yystack[$this->yyidx + 0]->minor));
+ }
+// line 449 "../smarty/lexer/smarty_internal_templateparser.y"
+ public function yy_r34(){
+ $this->_retvalue = $this->compiler->compileTag('for',array_merge($this->yystack[$this->yyidx + 0]->minor,array(array('start'=>$this->yystack[$this->yyidx + -6]->minor),array('ifexp'=>$this->yystack[$this->yyidx + -4]->minor),array('var'=>$this->yystack[$this->yyidx + -2]->minor),array('step'=>$this->yystack[$this->yyidx + -1]->minor))),1);
+ }
+// line 453 "../smarty/lexer/smarty_internal_templateparser.y"
+ public function yy_r35(){
+ $this->_retvalue = '='.$this->yystack[$this->yyidx + 0]->minor;
+ }
+// line 461 "../smarty/lexer/smarty_internal_templateparser.y"
+ public function yy_r37(){
+ $this->_retvalue = $this->compiler->compileTag('for',array_merge($this->yystack[$this->yyidx + 0]->minor,array(array('start'=>$this->yystack[$this->yyidx + -3]->minor),array('to'=>$this->yystack[$this->yyidx + -1]->minor))),0);
+ }
+// line 465 "../smarty/lexer/smarty_internal_templateparser.y"
+ public function yy_r38(){
+ $this->_retvalue = $this->compiler->compileTag('for',array_merge($this->yystack[$this->yyidx + 0]->minor,array(array('start'=>$this->yystack[$this->yyidx + -5]->minor),array('to'=>$this->yystack[$this->yyidx + -3]->minor),array('step'=>$this->yystack[$this->yyidx + -1]->minor))),0);
+ }
+// line 470 "../smarty/lexer/smarty_internal_templateparser.y"
+ public function yy_r39(){
+ $this->_retvalue = $this->compiler->compileTag('foreach',array_merge($this->yystack[$this->yyidx + 0]->minor,array(array('from'=>$this->yystack[$this->yyidx + -3]->minor),array('item'=>$this->yystack[$this->yyidx + -1]->minor))));
+ }
+// line 474 "../smarty/lexer/smarty_internal_templateparser.y"
+ public function yy_r40(){
+ $this->_retvalue = $this->compiler->compileTag('foreach',array_merge($this->yystack[$this->yyidx + 0]->minor,array(array('from'=>$this->yystack[$this->yyidx + -5]->minor),array('item'=>$this->yystack[$this->yyidx + -1]->minor),array('key'=>$this->yystack[$this->yyidx + -3]->minor))));
+ }
+// line 477 "../smarty/lexer/smarty_internal_templateparser.y"
+ public function yy_r41(){
+ $this->_retvalue = $this->compiler->compileTag('foreach',$this->yystack[$this->yyidx + 0]->minor);
+ }
+// line 482 "../smarty/lexer/smarty_internal_templateparser.y"
+ public function yy_r42(){
+ $this->_retvalue = $this->compiler->compileTag('setfilter',array(),array('modifier_list'=>array(array_merge(array($this->yystack[$this->yyidx + -1]->minor),$this->yystack[$this->yyidx + 0]->minor))));
+ }
+// line 486 "../smarty/lexer/smarty_internal_templateparser.y"
+ public function yy_r43(){
+ $this->_retvalue = $this->compiler->compileTag('setfilter',array(),array('modifier_list'=>array_merge(array(array_merge(array($this->yystack[$this->yyidx + -2]->minor),$this->yystack[$this->yyidx + -1]->minor)),$this->yystack[$this->yyidx + 0]->minor)));
+ }
+// line 492 "../smarty/lexer/smarty_internal_templateparser.y"
+ public function yy_r44(){
+ $tag = trim(substr($this->yystack[$this->yyidx + 0]->minor, $this->compiler->getLdelLength(), -$this->compiler->getRdelLength()), ' /');
+ if ($tag === 'strip') {
+ $this->strip = false;
+ $this->_retvalue = null;
+ } else {
+ $this->_retvalue = $this->compiler->compileTag($tag.'close',array());
+ }
+ }
+// line 501 "../smarty/lexer/smarty_internal_templateparser.y"
+ public function yy_r45(){
+ $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + 0]->minor.'close',array());
+ }
+// line 505 "../smarty/lexer/smarty_internal_templateparser.y"
+ public function yy_r46(){
+ $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + -1]->minor.'close',array(),array('modifier_list'=>$this->yystack[$this->yyidx + 0]->minor));
+ }
+// line 510 "../smarty/lexer/smarty_internal_templateparser.y"
+ public function yy_r47(){
+ $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + -2]->minor.'close',array(),array('object_method'=>$this->yystack[$this->yyidx + 0]->minor));
+ }
+// line 514 "../smarty/lexer/smarty_internal_templateparser.y"
+ public function yy_r48(){
+ $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + -3]->minor.'close',array(),array('object_method'=>$this->yystack[$this->yyidx + -1]->minor, 'modifier_list'=>$this->yystack[$this->yyidx + 0]->minor));
+ }
+// line 522 "../smarty/lexer/smarty_internal_templateparser.y"
+ public function yy_r49(){
+ $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor;
+ $this->_retvalue[] = $this->yystack[$this->yyidx + 0]->minor;
+ }
+// line 528 "../smarty/lexer/smarty_internal_templateparser.y"
+ public function yy_r50(){
+ $this->_retvalue = array($this->yystack[$this->yyidx + 0]->minor);
+ }
+// line 533 "../smarty/lexer/smarty_internal_templateparser.y"
+ public function yy_r51(){
+ $this->_retvalue = array();
+ }
+// line 538 "../smarty/lexer/smarty_internal_templateparser.y"
+ public function yy_r52(){
+ if (defined($this->yystack[$this->yyidx + 0]->minor)) {
+ if ($this->security) {
+ $this->security->isTrustedConstant($this->yystack[$this->yyidx + 0]->minor, $this->compiler);
+ }
+ $this->_retvalue = array($this->yystack[$this->yyidx + -2]->minor=>$this->yystack[$this->yyidx + 0]->minor);
+ } else {
+ $this->_retvalue = array($this->yystack[$this->yyidx + -2]->minor=>'\''.$this->yystack[$this->yyidx + 0]->minor.'\'');
+ }
+ }
+// line 549 "../smarty/lexer/smarty_internal_templateparser.y"
+ public function yy_r53(){
+ $this->_retvalue = array(trim($this->yystack[$this->yyidx + -1]->minor," =\n\r\t")=>$this->yystack[$this->yyidx + 0]->minor);
+ }
+// line 557 "../smarty/lexer/smarty_internal_templateparser.y"
+ public function yy_r55(){
+ $this->_retvalue = '\''.$this->yystack[$this->yyidx + 0]->minor.'\'';
+ }
+// line 569 "../smarty/lexer/smarty_internal_templateparser.y"
+ public function yy_r58(){
+ $this->_retvalue = array($this->yystack[$this->yyidx + -2]->minor=>$this->yystack[$this->yyidx + 0]->minor);
+ }
+// line 582 "../smarty/lexer/smarty_internal_templateparser.y"
+ public function yy_r60(){
+ $this->yystack[$this->yyidx + -2]->minor[]=$this->yystack[$this->yyidx + 0]->minor;
+ $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor;
+ }
+// line 587 "../smarty/lexer/smarty_internal_templateparser.y"
+ public function yy_r61(){
+ $this->_retvalue = array('var' => '\''.substr($this->yystack[$this->yyidx + -2]->minor,1).'\'', 'value'=>$this->yystack[$this->yyidx + 0]->minor);
+ }
+// line 594 "../smarty/lexer/smarty_internal_templateparser.y"
+ public function yy_r63(){
+ $this->_retvalue = array('var' => $this->yystack[$this->yyidx + -2]->minor, 'value'=>$this->yystack[$this->yyidx + 0]->minor);
+ }
+// line 598 "../smarty/lexer/smarty_internal_templateparser.y"
+ public function yy_r64(){
+ $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor;
+ }
+// line 618 "../smarty/lexer/smarty_internal_templateparser.y"
+ public function yy_r67(){
+ $this->_retvalue = '$_smarty_tpl->getStreamVariable(\''.substr($this->yystack[$this->yyidx + -2]->minor,1).'://' . $this->yystack[$this->yyidx + 0]->minor . '\')';
+ }
+// line 623 "../smarty/lexer/smarty_internal_templateparser.y"
+ public function yy_r68(){
+ $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor . trim($this->yystack[$this->yyidx + -1]->minor) . $this->yystack[$this->yyidx + 0]->minor;
+ }
+// line 633 "../smarty/lexer/smarty_internal_templateparser.y"
+ public function yy_r70(){
+ $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor['pre']. $this->yystack[$this->yyidx + -2]->minor.$this->yystack[$this->yyidx + -1]->minor['op'].$this->yystack[$this->yyidx + 0]->minor .')';
+ }
+// line 637 "../smarty/lexer/smarty_internal_templateparser.y"
+ public function yy_r71(){
+ $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor.$this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor;
+ }
+// line 641 "../smarty/lexer/smarty_internal_templateparser.y"
+ public function yy_r72(){
+ $this->_retvalue = $this->yystack[$this->yyidx + 0]->minor . $this->yystack[$this->yyidx + -1]->minor . ')';
+ }
+// line 645 "../smarty/lexer/smarty_internal_templateparser.y"
+ public function yy_r73(){
+ $this->_retvalue = 'in_array('.$this->yystack[$this->yyidx + -2]->minor.','.$this->yystack[$this->yyidx + 0]->minor.')';
+ }
+// line 649 "../smarty/lexer/smarty_internal_templateparser.y"
+ public function yy_r74(){
+ $this->_retvalue = 'in_array('.$this->yystack[$this->yyidx + -2]->minor.',(array)'.$this->yystack[$this->yyidx + 0]->minor.')';
+ }
+// line 657 "../smarty/lexer/smarty_internal_templateparser.y"
+ public function yy_r75(){
+ $this->_retvalue = $this->yystack[$this->yyidx + -5]->minor.' ? '. $this->compiler->compileVariable('\''.substr($this->yystack[$this->yyidx + -2]->minor,1).'\'') . ' : '.$this->yystack[$this->yyidx + 0]->minor;
+ }
+// line 661 "../smarty/lexer/smarty_internal_templateparser.y"
+ public function yy_r76(){
+ $this->_retvalue = $this->yystack[$this->yyidx + -5]->minor.' ? '.$this->yystack[$this->yyidx + -2]->minor.' : '.$this->yystack[$this->yyidx + 0]->minor;
+ }
+// line 671 "../smarty/lexer/smarty_internal_templateparser.y"
+ public function yy_r78(){
+ $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor;
+ }
+// line 676 "../smarty/lexer/smarty_internal_templateparser.y"
+ public function yy_r79(){
+ $this->_retvalue = '!'.$this->yystack[$this->yyidx + 0]->minor;
+ }
+// line 697 "../smarty/lexer/smarty_internal_templateparser.y"
+ public function yy_r84(){
+ $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor.'.'.$this->yystack[$this->yyidx + 0]->minor;
+ }
+// line 701 "../smarty/lexer/smarty_internal_templateparser.y"
+ public function yy_r85(){
+ $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor.'.';
+ }
+// line 705 "../smarty/lexer/smarty_internal_templateparser.y"
+ public function yy_r86(){
+ $this->_retvalue = '.'.$this->yystack[$this->yyidx + 0]->minor;
+ }
+// line 710 "../smarty/lexer/smarty_internal_templateparser.y"
+ public function yy_r87(){
+ if (defined($this->yystack[$this->yyidx + 0]->minor)) {
+ if ($this->security) {
+ $this->security->isTrustedConstant($this->yystack[$this->yyidx + 0]->minor, $this->compiler);
+ }
+ $this->_retvalue = $this->yystack[$this->yyidx + 0]->minor;
+ } else {
+ $this->_retvalue = '\''.$this->yystack[$this->yyidx + 0]->minor.'\'';
+ }
+ }
+// line 727 "../smarty/lexer/smarty_internal_templateparser.y"
+ public function yy_r89(){
+ $this->_retvalue = '('. $this->yystack[$this->yyidx + -1]->minor .')';
+ }
+// line 731 "../smarty/lexer/smarty_internal_templateparser.y"
+ public function yy_r90(){
+ $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor.$this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor;
+ }
+// line 749 "../smarty/lexer/smarty_internal_templateparser.y"
+ public function yy_r94(){
+ if ($this->security && $this->security->static_classes !== array()) {
+ $this->compiler->trigger_template_error('dynamic static class not allowed by security setting');
+ }
+ $prefixVar = $this->compiler->getNewPrefixVariable();
+ if ($this->yystack[$this->yyidx + -2]->minor['var'] === '\'smarty\'') {
+ $this->compiler->appendPrefixCode("compiler->compileTag('private_special_variable',array(),$this->yystack[$this->yyidx + -2]->minor['smarty_internal_index']).';?>');
+ } else {
+ $this->compiler->appendPrefixCode("compiler->compileVariable($this->yystack[$this->yyidx + -2]->minor['var']).$this->yystack[$this->yyidx + -2]->minor['smarty_internal_index'].';?>');
+ }
+ $this->_retvalue = $prefixVar .'::'.$this->yystack[$this->yyidx + 0]->minor[0].$this->yystack[$this->yyidx + 0]->minor[1];
+ }
+// line 760 "../smarty/lexer/smarty_internal_templateparser.y"
+ public function yy_r95(){
+ $prefixVar = $this->compiler->getNewPrefixVariable();
+ $tmp = $this->compiler->appendCode('', $this->yystack[$this->yyidx + 0]->minor);
+ $this->compiler->appendPrefixCode($this->compiler->appendCode($tmp, ""));
+ $this->_retvalue = $prefixVar;
+ }
+// line 767 "../smarty/lexer/smarty_internal_templateparser.y"
+ public function yy_r96(){
+ $this->_retvalue = $this->compiler->compileTag('private_modifier',array(),array('value'=>$this->yystack[$this->yyidx + -1]->minor,'modifierlist'=>$this->yystack[$this->yyidx + 0]->minor));
+ }
+// line 780 "../smarty/lexer/smarty_internal_templateparser.y"
+ public function yy_r99(){
+ if (!in_array(strtolower($this->yystack[$this->yyidx + -2]->minor), array('self', 'parent')) && (!$this->security || $this->security->isTrustedStaticClassAccess($this->yystack[$this->yyidx + -2]->minor, $this->yystack[$this->yyidx + 0]->minor, $this->compiler))) {
+ if (isset($this->smarty->registered_classes[$this->yystack[$this->yyidx + -2]->minor])) {
+ $this->_retvalue = $this->smarty->registered_classes[$this->yystack[$this->yyidx + -2]->minor].'::'.$this->yystack[$this->yyidx + 0]->minor[0].$this->yystack[$this->yyidx + 0]->minor[1];
+ } else {
+ trigger_error('Using unregistered static method "' . $this->yystack[$this->yyidx + -2]->minor.'::'.$this->yystack[$this->yyidx + 0]->minor[0] . '" in a template is deprecated and will be ' .
+ 'removed in a future release. Use Smarty::registerClass to explicitly register ' .
+ 'a class for access.', E_USER_DEPRECATED);
+ $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor.'::'.$this->yystack[$this->yyidx + 0]->minor[0].$this->yystack[$this->yyidx + 0]->minor[1];
+ }
+ } else {
+ $this->compiler->trigger_template_error ('static class \''.$this->yystack[$this->yyidx + -2]->minor.'\' is undefined or not allowed by security setting');
+ }
+ }
+// line 799 "../smarty/lexer/smarty_internal_templateparser.y"
+ public function yy_r101(){
+ $this->_retvalue = $this->yystack[$this->yyidx + 0]->minor;
+ }
+// line 810 "../smarty/lexer/smarty_internal_templateparser.y"
+ public function yy_r102(){
+ $this->_retvalue = $this->compiler->compileVariable('\''.substr($this->yystack[$this->yyidx + 0]->minor,1).'\'');
+ }
+// line 813 "../smarty/lexer/smarty_internal_templateparser.y"
+ public function yy_r103(){
+ if ($this->yystack[$this->yyidx + 0]->minor['var'] === '\'smarty\'') {
+ $smarty_var = $this->compiler->compileTag('private_special_variable',array(),$this->yystack[$this->yyidx + 0]->minor['smarty_internal_index']);
+ $this->_retvalue = $smarty_var;
+ } else {
+ // used for array reset,next,prev,end,current
+ $this->last_variable = $this->yystack[$this->yyidx + 0]->minor['var'];
+ $this->last_index = $this->yystack[$this->yyidx + 0]->minor['smarty_internal_index'];
+ $this->_retvalue = $this->compiler->compileVariable($this->yystack[$this->yyidx + 0]->minor['var']).$this->yystack[$this->yyidx + 0]->minor['smarty_internal_index'];
+ }
+ }
+// line 826 "../smarty/lexer/smarty_internal_templateparser.y"
+ public function yy_r104(){
+ $this->_retvalue = '$_smarty_tpl->tpl_vars['. $this->yystack[$this->yyidx + -2]->minor .']->'.$this->yystack[$this->yyidx + 0]->minor;
+ }
+// line 836 "../smarty/lexer/smarty_internal_templateparser.y"
+ public function yy_r106(){
+ $this->_retvalue = $this->compiler->compileConfigVariable('\'' . $this->yystack[$this->yyidx + -1]->minor . '\'');
+ }
+// line 840 "../smarty/lexer/smarty_internal_templateparser.y"
+ public function yy_r107(){
+ $this->_retvalue = '(is_array($tmp = ' . $this->compiler->compileConfigVariable('\'' . $this->yystack[$this->yyidx + -2]->minor . '\'') . ') ? $tmp'.$this->yystack[$this->yyidx + 0]->minor.' :null)';
+ }
+// line 844 "../smarty/lexer/smarty_internal_templateparser.y"
+ public function yy_r108(){
+ $this->_retvalue = $this->compiler->compileConfigVariable($this->yystack[$this->yyidx + -1]->minor);
+ }
+// line 848 "../smarty/lexer/smarty_internal_templateparser.y"
+ public function yy_r109(){
+ $this->_retvalue = '(is_array($tmp = ' . $this->compiler->compileConfigVariable($this->yystack[$this->yyidx + -2]->minor) . ') ? $tmp'.$this->yystack[$this->yyidx + 0]->minor.' : null)';
+ }
+// line 852 "../smarty/lexer/smarty_internal_templateparser.y"
+ public function yy_r110(){
+ $this->_retvalue = array('var'=>'\''.substr($this->yystack[$this->yyidx + -1]->minor,1).'\'', 'smarty_internal_index'=>$this->yystack[$this->yyidx + 0]->minor);
+ }
+// line 855 "../smarty/lexer/smarty_internal_templateparser.y"
+ public function yy_r111(){
+ $this->_retvalue = array('var'=>$this->yystack[$this->yyidx + -1]->minor, 'smarty_internal_index'=>$this->yystack[$this->yyidx + 0]->minor);
+ }
+// line 868 "../smarty/lexer/smarty_internal_templateparser.y"
+ public function yy_r113(){
+ return;
+ }
+// line 874 "../smarty/lexer/smarty_internal_templateparser.y"
+ public function yy_r114(){
+ $this->_retvalue = '['.$this->compiler->compileVariable('\''.substr($this->yystack[$this->yyidx + 0]->minor,1).'\'').']';
+ }
+// line 877 "../smarty/lexer/smarty_internal_templateparser.y"
+ public function yy_r115(){
+ $this->_retvalue = '['.$this->compiler->compileVariable($this->yystack[$this->yyidx + 0]->minor).']';
+ }
+// line 881 "../smarty/lexer/smarty_internal_templateparser.y"
+ public function yy_r116(){
+ $this->_retvalue = '['.$this->compiler->compileVariable($this->yystack[$this->yyidx + -2]->minor).'->'.$this->yystack[$this->yyidx + 0]->minor.']';
+ }
+// line 885 "../smarty/lexer/smarty_internal_templateparser.y"
+ public function yy_r117(){
+ $this->_retvalue = '[\''. $this->yystack[$this->yyidx + 0]->minor .'\']';
+ }
+// line 889 "../smarty/lexer/smarty_internal_templateparser.y"
+ public function yy_r118(){
+ $this->_retvalue = '['. $this->yystack[$this->yyidx + 0]->minor .']';
+ }
+// line 894 "../smarty/lexer/smarty_internal_templateparser.y"
+ public function yy_r119(){
+ $this->_retvalue = '['. $this->yystack[$this->yyidx + -1]->minor .']';
+ }
+// line 899 "../smarty/lexer/smarty_internal_templateparser.y"
+ public function yy_r120(){
+ $this->_retvalue = '['.$this->compiler->compileTag('private_special_variable',array(),'[\'section\'][\''.$this->yystack[$this->yyidx + -1]->minor.'\'][\'index\']').']';
+ }
+// line 903 "../smarty/lexer/smarty_internal_templateparser.y"
+ public function yy_r121(){
+ $this->_retvalue = '['.$this->compiler->compileTag('private_special_variable',array(),'[\'section\'][\''.$this->yystack[$this->yyidx + -3]->minor.'\'][\''.$this->yystack[$this->yyidx + -1]->minor.'\']').']';
+ }
+// line 906 "../smarty/lexer/smarty_internal_templateparser.y"
+ public function yy_r122(){
+ $this->_retvalue = '['.$this->yystack[$this->yyidx + -1]->minor.']';
+ }
+// line 912 "../smarty/lexer/smarty_internal_templateparser.y"
+ public function yy_r124(){
+ $this->_retvalue = '['.$this->compiler->compileVariable('\''.substr($this->yystack[$this->yyidx + -1]->minor,1).'\'').']';
+ }
+// line 928 "../smarty/lexer/smarty_internal_templateparser.y"
+ public function yy_r128(){
+ $this->_retvalue = '[]';
+ }
+// line 938 "../smarty/lexer/smarty_internal_templateparser.y"
+ public function yy_r129(){
+ $this->_retvalue = '\''.substr($this->yystack[$this->yyidx + 0]->minor,1).'\'';
+ }
+// line 942 "../smarty/lexer/smarty_internal_templateparser.y"
+ public function yy_r130(){
+ $this->_retvalue = '\'\'';
+ }
+// line 947 "../smarty/lexer/smarty_internal_templateparser.y"
+ public function yy_r131(){
+ $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor.'.'.$this->yystack[$this->yyidx + 0]->minor;
+ }
+// line 955 "../smarty/lexer/smarty_internal_templateparser.y"
+ public function yy_r133(){
+ $var = trim(substr($this->yystack[$this->yyidx + 0]->minor, $this->compiler->getLdelLength(), -$this->compiler->getRdelLength()), ' $');
+ $this->_retvalue = $this->compiler->compileVariable('\''.$var.'\'');
+ }
+// line 961 "../smarty/lexer/smarty_internal_templateparser.y"
+ public function yy_r134(){
+ $this->_retvalue = '('.$this->yystack[$this->yyidx + -1]->minor.')';
+ }
+// line 968 "../smarty/lexer/smarty_internal_templateparser.y"
+ public function yy_r135(){
+ if ($this->yystack[$this->yyidx + -1]->minor['var'] === '\'smarty\'') {
+ $this->_retvalue = $this->compiler->compileTag('private_special_variable',array(),$this->yystack[$this->yyidx + -1]->minor['smarty_internal_index']).$this->yystack[$this->yyidx + 0]->minor;
+ } else {
+ $this->_retvalue = $this->compiler->compileVariable($this->yystack[$this->yyidx + -1]->minor['var']).$this->yystack[$this->yyidx + -1]->minor['smarty_internal_index'].$this->yystack[$this->yyidx + 0]->minor;
+ }
+ }
+// line 977 "../smarty/lexer/smarty_internal_templateparser.y"
+ public function yy_r136(){
+ $this->_retvalue = $this->yystack[$this->yyidx + 0]->minor;
+ }
+// line 982 "../smarty/lexer/smarty_internal_templateparser.y"
+ public function yy_r137(){
+ $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor;
+ }
+// line 987 "../smarty/lexer/smarty_internal_templateparser.y"
+ public function yy_r138(){
+ if ($this->security && substr($this->yystack[$this->yyidx + -1]->minor,0,1) === '_') {
+ $this->compiler->trigger_template_error (self::ERR1);
+ }
+ $this->_retvalue = '->'.$this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor;
+ }
+// line 994 "../smarty/lexer/smarty_internal_templateparser.y"
+ public function yy_r139(){
+ if ($this->security) {
+ $this->compiler->trigger_template_error (self::ERR2);
+ }
+ $this->_retvalue = '->{'.$this->compiler->compileVariable($this->yystack[$this->yyidx + -1]->minor).$this->yystack[$this->yyidx + 0]->minor.'}';
+ }
+// line 1001 "../smarty/lexer/smarty_internal_templateparser.y"
+ public function yy_r140(){
+ if ($this->security) {
+ $this->compiler->trigger_template_error (self::ERR2);
+ }
+ $this->_retvalue = '->{'.$this->yystack[$this->yyidx + -2]->minor.$this->yystack[$this->yyidx + 0]->minor.'}';
+ }
+// line 1008 "../smarty/lexer/smarty_internal_templateparser.y"
+ public function yy_r141(){
+ if ($this->security) {
+ $this->compiler->trigger_template_error (self::ERR2);
+ }
+ $this->_retvalue = '->{\''.$this->yystack[$this->yyidx + -4]->minor.'\'.'.$this->yystack[$this->yyidx + -2]->minor.$this->yystack[$this->yyidx + 0]->minor.'}';
+ }
+// line 1016 "../smarty/lexer/smarty_internal_templateparser.y"
+ public function yy_r142(){
+ $this->_retvalue = '->'.$this->yystack[$this->yyidx + 0]->minor;
+ }
+// line 1024 "../smarty/lexer/smarty_internal_templateparser.y"
+ public function yy_r143(){
+ $this->_retvalue = $this->compiler->compilePHPFunctionCall($this->yystack[$this->yyidx + -3]->minor, $this->yystack[$this->yyidx + -1]->minor);
+ }
+// line 1032 "../smarty/lexer/smarty_internal_templateparser.y"
+ public function yy_r144(){
+ if ($this->security && substr($this->yystack[$this->yyidx + -3]->minor,0,1) === '_') {
+ $this->compiler->trigger_template_error (self::ERR1);
+ }
+ $this->_retvalue = $this->yystack[$this->yyidx + -3]->minor . '('. implode(',',$this->yystack[$this->yyidx + -1]->minor) .')';
+ }
+// line 1039 "../smarty/lexer/smarty_internal_templateparser.y"
+ public function yy_r145(){
+ if ($this->security) {
+ $this->compiler->trigger_template_error (self::ERR2);
+ }
+ $prefixVar = $this->compiler->getNewPrefixVariable();
+ $this->compiler->appendPrefixCode("compiler->compileVariable('\''.substr($this->yystack[$this->yyidx + -3]->minor,1).'\'').';?>');
+ $this->_retvalue = $prefixVar .'('. implode(',',$this->yystack[$this->yyidx + -1]->minor) .')';
+ }
+// line 1050 "../smarty/lexer/smarty_internal_templateparser.y"
+ public function yy_r146(){
+ $this->_retvalue = array_merge($this->yystack[$this->yyidx + -2]->minor,array($this->yystack[$this->yyidx + 0]->minor));
+ }
+// line 1067 "../smarty/lexer/smarty_internal_templateparser.y"
+ public function yy_r149(){
+ $this->_retvalue = array_merge($this->yystack[$this->yyidx + -2]->minor,array(array_merge($this->yystack[$this->yyidx + -1]->minor,$this->yystack[$this->yyidx + 0]->minor)));
+ }
+// line 1071 "../smarty/lexer/smarty_internal_templateparser.y"
+ public function yy_r150(){
+ $this->_retvalue = array(array_merge($this->yystack[$this->yyidx + -1]->minor,$this->yystack[$this->yyidx + 0]->minor));
+ }
+// line 1079 "../smarty/lexer/smarty_internal_templateparser.y"
+ public function yy_r152(){
+ $this->_retvalue = array($this->yystack[$this->yyidx + 0]->minor);
+ }
+// line 1087 "../smarty/lexer/smarty_internal_templateparser.y"
+ public function yy_r153(){
+ $this->_retvalue = array_merge($this->yystack[$this->yyidx + -1]->minor,$this->yystack[$this->yyidx + 0]->minor);
+ }
+// line 1100 "../smarty/lexer/smarty_internal_templateparser.y"
+ public function yy_r156(){
+ $this->_retvalue = array(trim($this->yystack[$this->yyidx + -1]->minor).$this->yystack[$this->yyidx + 0]->minor);
+ }
+// line 1109 "../smarty/lexer/smarty_internal_templateparser.y"
+ public function yy_r158(){
+ $this->_retvalue = array($this->yystack[$this->yyidx + 0]->minor, '', 'method');
+ }
+// line 1114 "../smarty/lexer/smarty_internal_templateparser.y"
+ public function yy_r159(){
+ $this->_retvalue = array($this->yystack[$this->yyidx + -1]->minor, $this->yystack[$this->yyidx + 0]->minor, 'method');
+ }
+// line 1119 "../smarty/lexer/smarty_internal_templateparser.y"
+ public function yy_r160(){
+ $this->_retvalue = array($this->yystack[$this->yyidx + 0]->minor, '');
+ }
+// line 1124 "../smarty/lexer/smarty_internal_templateparser.y"
+ public function yy_r161(){
+ $this->_retvalue = array($this->yystack[$this->yyidx + -1]->minor, $this->yystack[$this->yyidx + 0]->minor, 'property');
+ }
+// line 1129 "../smarty/lexer/smarty_internal_templateparser.y"
+ public function yy_r162(){
+ $this->_retvalue = array($this->yystack[$this->yyidx + -2]->minor, $this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor, 'property');
+ }
+// line 1135 "../smarty/lexer/smarty_internal_templateparser.y"
+ public function yy_r163(){
+ $this->_retvalue = ' '. trim($this->yystack[$this->yyidx + 0]->minor) . ' ';
+ }
+// line 1139 "../smarty/lexer/smarty_internal_templateparser.y"
+ public function yy_r164(){
+ static $lops = array(
+ 'eq' => ' == ',
+ 'ne' => ' != ',
+ 'neq' => ' != ',
+ 'gt' => ' > ',
+ 'ge' => ' >= ',
+ 'gte' => ' >= ',
+ 'lt' => ' < ',
+ 'le' => ' <= ',
+ 'lte' => ' <= ',
+ 'mod' => ' % ',
+ 'and' => ' && ',
+ 'or' => ' || ',
+ 'xor' => ' xor ',
+ );
+ $op = strtolower(preg_replace('/\s*/', '', $this->yystack[$this->yyidx + 0]->minor));
+ $this->_retvalue = $lops[$op];
+ }
+// line 1158 "../smarty/lexer/smarty_internal_templateparser.y"
+ public function yy_r165(){
+ static $tlops = array(
+ 'isdivby' => array('op' => ' % ', 'pre' => '!('),
+ 'isnotdivby' => array('op' => ' % ', 'pre' => '('),
+ 'isevenby' => array('op' => ' / ', 'pre' => '!(1 & '),
+ 'isnotevenby' => array('op' => ' / ', 'pre' => '(1 & '),
+ 'isoddby' => array('op' => ' / ', 'pre' => '(1 & '),
+ 'isnotoddby' => array('op' => ' / ', 'pre' => '!(1 & '),
+ );
+ $op = strtolower(preg_replace('/\s*/', '', $this->yystack[$this->yyidx + 0]->minor));
+ $this->_retvalue = $tlops[$op];
+ }
+// line 1171 "../smarty/lexer/smarty_internal_templateparser.y"
+ public function yy_r166(){
+ static $scond = array (
+ 'iseven' => '!(1 & ',
+ 'isnoteven' => '(1 & ',
+ 'isodd' => '(1 & ',
+ 'isnotodd' => '!(1 & ',
+ );
+ $op = strtolower(str_replace(' ', '', $this->yystack[$this->yyidx + 0]->minor));
+ $this->_retvalue = $scond[$op];
+ }
+// line 1185 "../smarty/lexer/smarty_internal_templateparser.y"
+ public function yy_r167(){
+ $this->_retvalue = 'array('.$this->yystack[$this->yyidx + -1]->minor.')';
+ }
+// line 1196 "../smarty/lexer/smarty_internal_templateparser.y"
+ public function yy_r170(){
+ $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor.','.$this->yystack[$this->yyidx + 0]->minor;
+ }
+// line 1204 "../smarty/lexer/smarty_internal_templateparser.y"
+ public function yy_r172(){
+ $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor.'=>'.$this->yystack[$this->yyidx + 0]->minor;
+ }
+// line 1208 "../smarty/lexer/smarty_internal_templateparser.y"
+ public function yy_r173(){
+ $this->_retvalue = '\''.$this->yystack[$this->yyidx + -2]->minor.'\'=>'.$this->yystack[$this->yyidx + 0]->minor;
+ }
+// line 1224 "../smarty/lexer/smarty_internal_templateparser.y"
+ public function yy_r176(){
+ $this->compiler->leaveDoubleQuote();
+ $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor->to_smarty_php($this);
+ }
+// line 1230 "../smarty/lexer/smarty_internal_templateparser.y"
+ public function yy_r177(){
+ $this->yystack[$this->yyidx + -1]->minor->append_subtree($this, $this->yystack[$this->yyidx + 0]->minor);
+ $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor;
+ }
+// line 1235 "../smarty/lexer/smarty_internal_templateparser.y"
+ public function yy_r178(){
+ $this->_retvalue = new Smarty_Internal_ParseTree_Dq($this, $this->yystack[$this->yyidx + 0]->minor);
+ }
+// line 1239 "../smarty/lexer/smarty_internal_templateparser.y"
+ public function yy_r179(){
+ $this->_retvalue = new Smarty_Internal_ParseTree_Code('(string)'.$this->yystack[$this->yyidx + -1]->minor);
+ }
+// line 1243 "../smarty/lexer/smarty_internal_templateparser.y"
+ public function yy_r180(){
+ $this->_retvalue = new Smarty_Internal_ParseTree_Code('(string)('.$this->yystack[$this->yyidx + -1]->minor.')');
+ }
+// line 1247 "../smarty/lexer/smarty_internal_templateparser.y"
+ public function yy_r181(){
+ $this->_retvalue = new Smarty_Internal_ParseTree_Code('(string)$_smarty_tpl->tpl_vars[\''. substr($this->yystack[$this->yyidx + 0]->minor,1) .'\']->value');
+ }
+// line 1259 "../smarty/lexer/smarty_internal_templateparser.y"
+ public function yy_r184(){
+ $this->_retvalue = new Smarty_Internal_ParseTree_Tag($this, $this->yystack[$this->yyidx + 0]->minor);
+ }
+// line 1263 "../smarty/lexer/smarty_internal_templateparser.y"
+ public function yy_r185(){
+ $this->_retvalue = new Smarty_Internal_ParseTree_DqContent($this->yystack[$this->yyidx + 0]->minor);
+ }
+
+ private $_retvalue;
+
+ public function yy_reduce($yyruleno)
+ {
+ if ($this->yyTraceFILE && $yyruleno >= 0
+ && $yyruleno < count(self::$yyRuleName)) {
+ fprintf($this->yyTraceFILE, "%sReduce (%d) [%s].\n",
+ $this->yyTracePrompt, $yyruleno,
+ self::$yyRuleName[$yyruleno]);
+ }
+
+ $this->_retvalue = $yy_lefthand_side = null;
+ if (isset(self::$yyReduceMap[$yyruleno])) {
+ // call the action
+ $this->_retvalue = null;
+ $this->{'yy_r' . self::$yyReduceMap[$yyruleno]}();
+ $yy_lefthand_side = $this->_retvalue;
+ }
+ $yygoto = self::$yyRuleInfo[$yyruleno][0];
+ $yysize = self::$yyRuleInfo[$yyruleno][1];
+ $this->yyidx -= $yysize;
+ for ($i = $yysize; $i; $i--) {
+ // pop all of the right-hand side parameters
+ array_pop($this->yystack);
+ }
+ $yyact = $this->yy_find_reduce_action($this->yystack[$this->yyidx]->stateno, $yygoto);
+ if ($yyact < self::YYNSTATE) {
+ if (!$this->yyTraceFILE && $yysize) {
+ $this->yyidx++;
+ $x = new TP_yyStackEntry;
+ $x->stateno = $yyact;
+ $x->major = $yygoto;
+ $x->minor = $yy_lefthand_side;
+ $this->yystack[$this->yyidx] = $x;
+ } else {
+ $this->yy_shift($yyact, $yygoto, $yy_lefthand_side);
+ }
+ } elseif ($yyact === self::YYNSTATE + self::YYNRULE + 1) {
+ $this->yy_accept();
+ }
+ }
+
+ public function yy_parse_failed()
+ {
+ if ($this->yyTraceFILE) {
+ fprintf($this->yyTraceFILE, "%sFail!\n", $this->yyTracePrompt);
+ } while ($this->yyidx >= 0) {
+ $this->yy_pop_parser_stack();
+ }
+ }
+
+ public function yy_syntax_error($yymajor, $TOKEN)
+ {
+// line 213 "../smarty/lexer/smarty_internal_templateparser.y"
+
+ $this->internalError = true;
+ $this->yymajor = $yymajor;
+ $this->compiler->trigger_template_error();
+ }
+
+ public function yy_accept()
+ {
+ if ($this->yyTraceFILE) {
+ fprintf($this->yyTraceFILE, "%sAccept!\n", $this->yyTracePrompt);
+ } while ($this->yyidx >= 0) {
+ $this->yy_pop_parser_stack();
+ }
+// line 206 "../smarty/lexer/smarty_internal_templateparser.y"
+
+ $this->successful = !$this->internalError;
+ $this->internalError = false;
+ $this->retvalue = $this->_retvalue;
+ }
+
+ public function doParse($yymajor, $yytokenvalue)
+ {
+ $yyerrorhit = 0; /* True if yymajor has invoked an error */
+
+ if ($this->yyidx === null || $this->yyidx < 0) {
+ $this->yyidx = 0;
+ $this->yyerrcnt = -1;
+ $x = new TP_yyStackEntry;
+ $x->stateno = 0;
+ $x->major = 0;
+ $this->yystack = array();
+ $this->yystack[] = $x;
+ }
+ $yyendofinput = ($yymajor==0);
+
+ if ($this->yyTraceFILE) {
+ fprintf($this->yyTraceFILE, "%sInput %s\n",
+ $this->yyTracePrompt, $this->yyTokenName[$yymajor]);
+ }
+
+ do {
+ $yyact = $this->yy_find_shift_action($yymajor);
+ if ($yymajor < self::YYERRORSYMBOL &&
+ !$this->yy_is_expected_token($yymajor)) {
+ // force a syntax error
+ $yyact = self::YY_ERROR_ACTION;
+ }
+ if ($yyact < self::YYNSTATE) {
+ $this->yy_shift($yyact, $yymajor, $yytokenvalue);
+ $this->yyerrcnt--;
+ if ($yyendofinput && $this->yyidx >= 0) {
+ $yymajor = 0;
+ } else {
+ $yymajor = self::YYNOCODE;
+ }
+ } elseif ($yyact < self::YYNSTATE + self::YYNRULE) {
+ $this->yy_reduce($yyact - self::YYNSTATE);
+ } elseif ($yyact === self::YY_ERROR_ACTION) {
+ if ($this->yyTraceFILE) {
+ fprintf($this->yyTraceFILE, "%sSyntax Error!\n",
+ $this->yyTracePrompt);
+ }
+ if (self::YYERRORSYMBOL) {
+ if ($this->yyerrcnt < 0) {
+ $this->yy_syntax_error($yymajor, $yytokenvalue);
+ }
+ $yymx = $this->yystack[$this->yyidx]->major;
+ if ($yymx === self::YYERRORSYMBOL || $yyerrorhit) {
+ if ($this->yyTraceFILE) {
+ fprintf($this->yyTraceFILE, "%sDiscard input token %s\n",
+ $this->yyTracePrompt, $this->yyTokenName[$yymajor]);
+ }
+ $this->yy_destructor($yymajor, $yytokenvalue);
+ $yymajor = self::YYNOCODE;
+ } else {
+ while ($this->yyidx >= 0 &&
+ $yymx !== self::YYERRORSYMBOL &&
+ ($yyact = $this->yy_find_shift_action(self::YYERRORSYMBOL)) >= self::YYNSTATE
+ ){
+ $this->yy_pop_parser_stack();
+ }
+ if ($this->yyidx < 0 || $yymajor==0) {
+ $this->yy_destructor($yymajor, $yytokenvalue);
+ $this->yy_parse_failed();
+ $yymajor = self::YYNOCODE;
+ } elseif ($yymx !== self::YYERRORSYMBOL) {
+ $u2 = 0;
+ $this->yy_shift($yyact, self::YYERRORSYMBOL, $u2);
+ }
+ }
+ $this->yyerrcnt = 3;
+ $yyerrorhit = 1;
+ } else {
+ if ($this->yyerrcnt <= 0) {
+ $this->yy_syntax_error($yymajor, $yytokenvalue);
+ }
+ $this->yyerrcnt = 3;
+ $this->yy_destructor($yymajor, $yytokenvalue);
+ if ($yyendofinput) {
+ $this->yy_parse_failed();
+ }
+ $yymajor = self::YYNOCODE;
+ }
+ } else {
+ $this->yy_accept();
+ $yymajor = self::YYNOCODE;
+ }
+ } while ($yymajor !== self::YYNOCODE && $this->yyidx >= 0);
+ }
+}
+
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_testinstall.php b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_testinstall.php
new file mode 100644
index 000000000..c8ffd4cc6
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_testinstall.php
@@ -0,0 +1,605 @@
+\n";
+ echo "Smarty Installation test...\n";
+ echo "Testing template directory...\n";
+ }
+ $_stream_resolve_include_path = function_exists('stream_resolve_include_path');
+ // test if all registered template_dir are accessible
+ foreach ($smarty->getTemplateDir() as $template_dir) {
+ $_template_dir = $template_dir;
+ $template_dir = realpath($template_dir);
+ // resolve include_path or fail existence
+ if (!$template_dir) {
+ if ($smarty->use_include_path && !preg_match('/^([\/\\\\]|[a-zA-Z]:[\/\\\\])/', $_template_dir)) {
+ // try PHP include_path
+ if ($_stream_resolve_include_path) {
+ $template_dir = stream_resolve_include_path($_template_dir);
+ } else {
+ $template_dir = $smarty->ext->_getIncludePath->getIncludePath($_template_dir, null, $smarty);
+ }
+ if ($template_dir !== false) {
+ if ($errors === null) {
+ echo "$template_dir is OK.\n";
+ }
+ continue;
+ } else {
+ $status = false;
+ $message =
+ "FAILED: $_template_dir does not exist (and couldn't be found in include_path either)";
+ if ($errors === null) {
+ echo $message . ".\n";
+ } else {
+ $errors[ 'template_dir' ] = $message;
+ }
+ continue;
+ }
+ } else {
+ $status = false;
+ $message = "FAILED: $_template_dir does not exist";
+ if ($errors === null) {
+ echo $message . ".\n";
+ } else {
+ $errors[ 'template_dir' ] = $message;
+ }
+ continue;
+ }
+ }
+ if (!is_dir($template_dir)) {
+ $status = false;
+ $message = "FAILED: $template_dir is not a directory";
+ if ($errors === null) {
+ echo $message . ".\n";
+ } else {
+ $errors[ 'template_dir' ] = $message;
+ }
+ } elseif (!is_readable($template_dir)) {
+ $status = false;
+ $message = "FAILED: $template_dir is not readable";
+ if ($errors === null) {
+ echo $message . ".\n";
+ } else {
+ $errors[ 'template_dir' ] = $message;
+ }
+ } else {
+ if ($errors === null) {
+ echo "$template_dir is OK.\n";
+ }
+ }
+ }
+ if ($errors === null) {
+ echo "Testing compile directory...\n";
+ }
+ // test if registered compile_dir is accessible
+ $__compile_dir = $smarty->getCompileDir();
+ $_compile_dir = realpath($__compile_dir);
+ if (!$_compile_dir) {
+ $status = false;
+ $message = "FAILED: {$__compile_dir} does not exist";
+ if ($errors === null) {
+ echo $message . ".\n";
+ } else {
+ $errors[ 'compile_dir' ] = $message;
+ }
+ } elseif (!is_dir($_compile_dir)) {
+ $status = false;
+ $message = "FAILED: {$_compile_dir} is not a directory";
+ if ($errors === null) {
+ echo $message . ".\n";
+ } else {
+ $errors[ 'compile_dir' ] = $message;
+ }
+ } elseif (!is_readable($_compile_dir)) {
+ $status = false;
+ $message = "FAILED: {$_compile_dir} is not readable";
+ if ($errors === null) {
+ echo $message . ".\n";
+ } else {
+ $errors[ 'compile_dir' ] = $message;
+ }
+ } elseif (!is_writable($_compile_dir)) {
+ $status = false;
+ $message = "FAILED: {$_compile_dir} is not writable";
+ if ($errors === null) {
+ echo $message . ".\n";
+ } else {
+ $errors[ 'compile_dir' ] = $message;
+ }
+ } else {
+ if ($errors === null) {
+ echo "{$_compile_dir} is OK.\n";
+ }
+ }
+ if ($errors === null) {
+ echo "Testing plugins directory...\n";
+ }
+ // test if all registered plugins_dir are accessible
+ // and if core plugins directory is still registered
+ $_core_plugins_dir = realpath(__DIR__ . '/../plugins');
+ $_core_plugins_available = false;
+ foreach ($smarty->getPluginsDir() as $plugin_dir) {
+ $_plugin_dir = $plugin_dir;
+ $plugin_dir = realpath($plugin_dir);
+ // resolve include_path or fail existence
+ if (!$plugin_dir) {
+ if ($smarty->use_include_path && !preg_match('/^([\/\\\\]|[a-zA-Z]:[\/\\\\])/', $_plugin_dir)) {
+ // try PHP include_path
+ if ($_stream_resolve_include_path) {
+ $plugin_dir = stream_resolve_include_path($_plugin_dir);
+ } else {
+ $plugin_dir = $smarty->ext->_getIncludePath->getIncludePath($_plugin_dir, null, $smarty);
+ }
+ if ($plugin_dir !== false) {
+ if ($errors === null) {
+ echo "$plugin_dir is OK.\n";
+ }
+ continue;
+ } else {
+ $status = false;
+ $message = "FAILED: $_plugin_dir does not exist (and couldn't be found in include_path either)";
+ if ($errors === null) {
+ echo $message . ".\n";
+ } else {
+ $errors[ 'plugins_dir' ] = $message;
+ }
+ continue;
+ }
+ } else {
+ $status = false;
+ $message = "FAILED: $_plugin_dir does not exist";
+ if ($errors === null) {
+ echo $message . ".\n";
+ } else {
+ $errors[ 'plugins_dir' ] = $message;
+ }
+ continue;
+ }
+ }
+ if (!is_dir($plugin_dir)) {
+ $status = false;
+ $message = "FAILED: $plugin_dir is not a directory";
+ if ($errors === null) {
+ echo $message . ".\n";
+ } else {
+ $errors[ 'plugins_dir' ] = $message;
+ }
+ } elseif (!is_readable($plugin_dir)) {
+ $status = false;
+ $message = "FAILED: $plugin_dir is not readable";
+ if ($errors === null) {
+ echo $message . ".\n";
+ } else {
+ $errors[ 'plugins_dir' ] = $message;
+ }
+ } elseif ($_core_plugins_dir && $_core_plugins_dir == realpath($plugin_dir)) {
+ $_core_plugins_available = true;
+ if ($errors === null) {
+ echo "$plugin_dir is OK.\n";
+ }
+ } else {
+ if ($errors === null) {
+ echo "$plugin_dir is OK.\n";
+ }
+ }
+ }
+ if (!$_core_plugins_available) {
+ $status = false;
+ $message = "WARNING: Smarty's own libs/plugins is not available";
+ if ($errors === null) {
+ echo $message . ".\n";
+ } elseif (!isset($errors[ 'plugins_dir' ])) {
+ $errors[ 'plugins_dir' ] = $message;
+ }
+ }
+ if ($errors === null) {
+ echo "Testing cache directory...\n";
+ }
+ // test if all registered cache_dir is accessible
+ $__cache_dir = $smarty->getCacheDir();
+ $_cache_dir = realpath($__cache_dir);
+ if (!$_cache_dir) {
+ $status = false;
+ $message = "FAILED: {$__cache_dir} does not exist";
+ if ($errors === null) {
+ echo $message . ".\n";
+ } else {
+ $errors[ 'cache_dir' ] = $message;
+ }
+ } elseif (!is_dir($_cache_dir)) {
+ $status = false;
+ $message = "FAILED: {$_cache_dir} is not a directory";
+ if ($errors === null) {
+ echo $message . ".\n";
+ } else {
+ $errors[ 'cache_dir' ] = $message;
+ }
+ } elseif (!is_readable($_cache_dir)) {
+ $status = false;
+ $message = "FAILED: {$_cache_dir} is not readable";
+ if ($errors === null) {
+ echo $message . ".\n";
+ } else {
+ $errors[ 'cache_dir' ] = $message;
+ }
+ } elseif (!is_writable($_cache_dir)) {
+ $status = false;
+ $message = "FAILED: {$_cache_dir} is not writable";
+ if ($errors === null) {
+ echo $message . ".\n";
+ } else {
+ $errors[ 'cache_dir' ] = $message;
+ }
+ } else {
+ if ($errors === null) {
+ echo "{$_cache_dir} is OK.\n";
+ }
+ }
+ if ($errors === null) {
+ echo "Testing configs directory...\n";
+ }
+ // test if all registered config_dir are accessible
+ foreach ($smarty->getConfigDir() as $config_dir) {
+ $_config_dir = $config_dir;
+ // resolve include_path or fail existence
+ if (!$config_dir) {
+ if ($smarty->use_include_path && !preg_match('/^([\/\\\\]|[a-zA-Z]:[\/\\\\])/', $_config_dir)) {
+ // try PHP include_path
+ if ($_stream_resolve_include_path) {
+ $config_dir = stream_resolve_include_path($_config_dir);
+ } else {
+ $config_dir = $smarty->ext->_getIncludePath->getIncludePath($_config_dir, null, $smarty);
+ }
+ if ($config_dir !== false) {
+ if ($errors === null) {
+ echo "$config_dir is OK.\n";
+ }
+ continue;
+ } else {
+ $status = false;
+ $message = "FAILED: $_config_dir does not exist (and couldn't be found in include_path either)";
+ if ($errors === null) {
+ echo $message . ".\n";
+ } else {
+ $errors[ 'config_dir' ] = $message;
+ }
+ continue;
+ }
+ } else {
+ $status = false;
+ $message = "FAILED: $_config_dir does not exist";
+ if ($errors === null) {
+ echo $message . ".\n";
+ } else {
+ $errors[ 'config_dir' ] = $message;
+ }
+ continue;
+ }
+ }
+ if (!is_dir($config_dir)) {
+ $status = false;
+ $message = "FAILED: $config_dir is not a directory";
+ if ($errors === null) {
+ echo $message . ".\n";
+ } else {
+ $errors[ 'config_dir' ] = $message;
+ }
+ } elseif (!is_readable($config_dir)) {
+ $status = false;
+ $message = "FAILED: $config_dir is not readable";
+ if ($errors === null) {
+ echo $message . ".\n";
+ } else {
+ $errors[ 'config_dir' ] = $message;
+ }
+ } else {
+ if ($errors === null) {
+ echo "$config_dir is OK.\n";
+ }
+ }
+ }
+ if ($errors === null) {
+ echo "Testing sysplugin files...\n";
+ }
+ // test if sysplugins are available
+ $source = SMARTY_SYSPLUGINS_DIR;
+ if (is_dir($source)) {
+ $expectedSysplugins = array(
+ 'smartycompilerexception.php' => true,
+ 'smartyexception.php' => true,
+ 'smarty_cacheresource.php' => true,
+ 'smarty_cacheresource_custom.php' => true,
+ 'smarty_cacheresource_keyvaluestore.php' => true,
+ 'smarty_data.php' => true,
+ 'smarty_internal_block.php' => true,
+ 'smarty_internal_cacheresource_file.php' => true,
+ 'smarty_internal_compilebase.php' => true,
+ 'smarty_internal_compile_append.php' => true,
+ 'smarty_internal_compile_assign.php' => true,
+ 'smarty_internal_compile_block.php' => true,
+ 'smarty_internal_compile_block_child.php' => true,
+ 'smarty_internal_compile_block_parent.php' => true,
+ 'smarty_internal_compile_child.php' => true,
+ 'smarty_internal_compile_parent.php' => true,
+ 'smarty_internal_compile_break.php' => true,
+ 'smarty_internal_compile_call.php' => true,
+ 'smarty_internal_compile_capture.php' => true,
+ 'smarty_internal_compile_config_load.php' => true,
+ 'smarty_internal_compile_continue.php' => true,
+ 'smarty_internal_compile_debug.php' => true,
+ 'smarty_internal_compile_eval.php' => true,
+ 'smarty_internal_compile_extends.php' => true,
+ 'smarty_internal_compile_for.php' => true,
+ 'smarty_internal_compile_foreach.php' => true,
+ 'smarty_internal_compile_function.php' => true,
+ 'smarty_internal_compile_if.php' => true,
+ 'smarty_internal_compile_include.php' => true,
+ 'smarty_internal_compile_insert.php' => true,
+ 'smarty_internal_compile_ldelim.php' => true,
+ 'smarty_internal_compile_make_nocache.php' => true,
+ 'smarty_internal_compile_nocache.php' => true,
+ 'smarty_internal_compile_private_block_plugin.php' => true,
+ 'smarty_internal_compile_private_foreachsection.php' => true,
+ 'smarty_internal_compile_private_function_plugin.php' => true,
+ 'smarty_internal_compile_private_modifier.php' => true,
+ 'smarty_internal_compile_private_object_block_function.php' => true,
+ 'smarty_internal_compile_private_object_function.php' => true,
+ 'smarty_internal_compile_private_print_expression.php' => true,
+ 'smarty_internal_compile_private_registered_block.php' => true,
+ 'smarty_internal_compile_private_registered_function.php' => true,
+ 'smarty_internal_compile_private_special_variable.php' => true,
+ 'smarty_internal_compile_rdelim.php' => true,
+ 'smarty_internal_compile_section.php' => true,
+ 'smarty_internal_compile_setfilter.php' => true,
+ 'smarty_internal_compile_shared_inheritance.php' => true,
+ 'smarty_internal_compile_while.php' => true,
+ 'smarty_internal_configfilelexer.php' => true,
+ 'smarty_internal_configfileparser.php' => true,
+ 'smarty_internal_config_file_compiler.php' => true,
+ 'smarty_internal_data.php' => true,
+ 'smarty_internal_debug.php' => true,
+ 'smarty_internal_extension_handler.php' => true,
+ 'smarty_internal_method_addautoloadfilters.php' => true,
+ 'smarty_internal_method_adddefaultmodifiers.php' => true,
+ 'smarty_internal_method_append.php' => true,
+ 'smarty_internal_method_appendbyref.php' => true,
+ 'smarty_internal_method_assignbyref.php' => true,
+ 'smarty_internal_method_assignglobal.php' => true,
+ 'smarty_internal_method_clearallassign.php' => true,
+ 'smarty_internal_method_clearallcache.php' => true,
+ 'smarty_internal_method_clearassign.php' => true,
+ 'smarty_internal_method_clearcache.php' => true,
+ 'smarty_internal_method_clearcompiledtemplate.php' => true,
+ 'smarty_internal_method_clearconfig.php' => true,
+ 'smarty_internal_method_compileallconfig.php' => true,
+ 'smarty_internal_method_compilealltemplates.php' => true,
+ 'smarty_internal_method_configload.php' => true,
+ 'smarty_internal_method_createdata.php' => true,
+ 'smarty_internal_method_getautoloadfilters.php' => true,
+ 'smarty_internal_method_getconfigvariable.php' => true,
+ 'smarty_internal_method_getconfigvars.php' => true,
+ 'smarty_internal_method_getdebugtemplate.php' => true,
+ 'smarty_internal_method_getdefaultmodifiers.php' => true,
+ 'smarty_internal_method_getglobal.php' => true,
+ 'smarty_internal_method_getregisteredobject.php' => true,
+ 'smarty_internal_method_getstreamvariable.php' => true,
+ 'smarty_internal_method_gettags.php' => true,
+ 'smarty_internal_method_gettemplatevars.php' => true,
+ 'smarty_internal_method_literals.php' => true,
+ 'smarty_internal_method_loadfilter.php' => true,
+ 'smarty_internal_method_loadplugin.php' => true,
+ 'smarty_internal_method_mustcompile.php' => true,
+ 'smarty_internal_method_registercacheresource.php' => true,
+ 'smarty_internal_method_registerclass.php' => true,
+ 'smarty_internal_method_registerdefaultconfighandler.php' => true,
+ 'smarty_internal_method_registerdefaultpluginhandler.php' => true,
+ 'smarty_internal_method_registerdefaulttemplatehandler.php' => true,
+ 'smarty_internal_method_registerfilter.php' => true,
+ 'smarty_internal_method_registerobject.php' => true,
+ 'smarty_internal_method_registerplugin.php' => true,
+ 'smarty_internal_method_registerresource.php' => true,
+ 'smarty_internal_method_setautoloadfilters.php' => true,
+ 'smarty_internal_method_setdebugtemplate.php' => true,
+ 'smarty_internal_method_setdefaultmodifiers.php' => true,
+ 'smarty_internal_method_unloadfilter.php' => true,
+ 'smarty_internal_method_unregistercacheresource.php' => true,
+ 'smarty_internal_method_unregisterfilter.php' => true,
+ 'smarty_internal_method_unregisterobject.php' => true,
+ 'smarty_internal_method_unregisterplugin.php' => true,
+ 'smarty_internal_method_unregisterresource.php' => true,
+ 'smarty_internal_nocache_insert.php' => true,
+ 'smarty_internal_parsetree.php' => true,
+ 'smarty_internal_parsetree_code.php' => true,
+ 'smarty_internal_parsetree_dq.php' => true,
+ 'smarty_internal_parsetree_dqcontent.php' => true,
+ 'smarty_internal_parsetree_tag.php' => true,
+ 'smarty_internal_parsetree_template.php' => true,
+ 'smarty_internal_parsetree_text.php' => true,
+ 'smarty_internal_resource_eval.php' => true,
+ 'smarty_internal_resource_extends.php' => true,
+ 'smarty_internal_resource_file.php' => true,
+ 'smarty_internal_resource_php.php' => true,
+ 'smarty_internal_resource_stream.php' => true,
+ 'smarty_internal_resource_string.php' => true,
+ 'smarty_internal_runtime_cachemodify.php' => true,
+ 'smarty_internal_runtime_cacheresourcefile.php' => true,
+ 'smarty_internal_runtime_capture.php' => true,
+ 'smarty_internal_runtime_codeframe.php' => true,
+ 'smarty_internal_runtime_filterhandler.php' => true,
+ 'smarty_internal_runtime_foreach.php' => true,
+ 'smarty_internal_runtime_getincludepath.php' => true,
+ 'smarty_internal_runtime_inheritance.php' => true,
+ 'smarty_internal_runtime_make_nocache.php' => true,
+ 'smarty_internal_runtime_tplfunction.php' => true,
+ 'smarty_internal_runtime_updatecache.php' => true,
+ 'smarty_internal_runtime_updatescope.php' => true,
+ 'smarty_internal_runtime_writefile.php' => true,
+ 'smarty_internal_smartytemplatecompiler.php' => true,
+ 'smarty_internal_template.php' => true,
+ 'smarty_internal_templatebase.php' => true,
+ 'smarty_internal_templatecompilerbase.php' => true,
+ 'smarty_internal_templatelexer.php' => true,
+ 'smarty_internal_templateparser.php' => true,
+ 'smarty_internal_testinstall.php' => true,
+ 'smarty_internal_undefined.php' => true,
+ 'smarty_resource.php' => true,
+ 'smarty_resource_custom.php' => true,
+ 'smarty_resource_recompiled.php' => true,
+ 'smarty_resource_uncompiled.php' => true,
+ 'smarty_security.php' => true,
+ 'smarty_template_cached.php' => true,
+ 'smarty_template_compiled.php' => true,
+ 'smarty_template_config.php' => true,
+ 'smarty_template_resource_base.php' => true,
+ 'smarty_template_source.php' => true,
+ 'smarty_undefined_variable.php' => true,
+ 'smarty_variable.php' => true,
+ );
+ $iterator = new DirectoryIterator($source);
+ foreach ($iterator as $file) {
+ if (!$file->isDot()) {
+ $filename = $file->getFilename();
+ if (isset($expectedSysplugins[ $filename ])) {
+ unset($expectedSysplugins[ $filename ]);
+ }
+ }
+ }
+ if ($expectedSysplugins) {
+ $status = false;
+ $message = "FAILED: files missing from libs/sysplugins: " . join(', ', array_keys($expectedSysplugins));
+ if ($errors === null) {
+ echo $message . ".\n";
+ } else {
+ $errors[ 'sysplugins' ] = $message;
+ }
+ } elseif ($errors === null) {
+ echo "... OK\n";
+ }
+ } else {
+ $status = false;
+ $message = "FAILED: " . SMARTY_SYSPLUGINS_DIR . ' is not a directory';
+ if ($errors === null) {
+ echo $message . ".\n";
+ } else {
+ $errors[ 'sysplugins_dir_constant' ] = $message;
+ }
+ }
+ if ($errors === null) {
+ echo "Testing plugin files...\n";
+ }
+ // test if core plugins are available
+ $source = SMARTY_PLUGINS_DIR;
+ if (is_dir($source)) {
+ $expectedPlugins = array(
+ 'block.textformat.php' => true,
+ 'function.counter.php' => true,
+ 'function.cycle.php' => true,
+ 'function.fetch.php' => true,
+ 'function.html_checkboxes.php' => true,
+ 'function.html_image.php' => true,
+ 'function.html_options.php' => true,
+ 'function.html_radios.php' => true,
+ 'function.html_select_date.php' => true,
+ 'function.html_select_time.php' => true,
+ 'function.html_table.php' => true,
+ 'function.mailto.php' => true,
+ 'function.math.php' => true,
+ 'modifier.capitalize.php' => true,
+ 'modifier.date_format.php' => true,
+ 'modifier.debug_print_var.php' => true,
+ 'modifier.escape.php' => true,
+ 'modifier.mb_wordwrap.php' => true,
+ 'modifier.regex_replace.php' => true,
+ 'modifier.replace.php' => true,
+ 'modifier.spacify.php' => true,
+ 'modifier.truncate.php' => true,
+ 'modifiercompiler.cat.php' => true,
+ 'modifiercompiler.count_characters.php' => true,
+ 'modifiercompiler.count_paragraphs.php' => true,
+ 'modifiercompiler.count_sentences.php' => true,
+ 'modifiercompiler.count_words.php' => true,
+ 'modifiercompiler.default.php' => true,
+ 'modifiercompiler.escape.php' => true,
+ 'modifiercompiler.from_charset.php' => true,
+ 'modifiercompiler.indent.php' => true,
+ 'modifiercompiler.lower.php' => true,
+ 'modifiercompiler.noprint.php' => true,
+ 'modifiercompiler.string_format.php' => true,
+ 'modifiercompiler.strip.php' => true,
+ 'modifiercompiler.strip_tags.php' => true,
+ 'modifiercompiler.to_charset.php' => true,
+ 'modifiercompiler.unescape.php' => true,
+ 'modifiercompiler.upper.php' => true,
+ 'modifiercompiler.wordwrap.php' => true,
+ 'outputfilter.trimwhitespace.php' => true,
+ 'shared.escape_special_chars.php' => true,
+ 'shared.literal_compiler_param.php' => true,
+ 'shared.make_timestamp.php' => true,
+ 'shared.mb_str_replace.php' => true,
+ 'shared.mb_unicode.php' => true,
+ 'variablefilter.htmlspecialchars.php' => true,
+ );
+ $iterator = new DirectoryIterator($source);
+ foreach ($iterator as $file) {
+ if (!$file->isDot()) {
+ $filename = $file->getFilename();
+ if (isset($expectedPlugins[ $filename ])) {
+ unset($expectedPlugins[ $filename ]);
+ }
+ }
+ }
+ if ($expectedPlugins) {
+ $status = false;
+ $message = "FAILED: files missing from libs/plugins: " . join(', ', array_keys($expectedPlugins));
+ if ($errors === null) {
+ echo $message . ".\n";
+ } else {
+ $errors[ 'plugins' ] = $message;
+ }
+ } elseif ($errors === null) {
+ echo "... OK\n";
+ }
+ } else {
+ $status = false;
+ $message = "FAILED: " . SMARTY_PLUGINS_DIR . ' is not a directory';
+ if ($errors === null) {
+ echo $message . ".\n";
+ } else {
+ $errors[ 'plugins_dir_constant' ] = $message;
+ }
+ }
+ if ($errors === null) {
+ echo "Tests complete.\n";
+ echo "\n";
+ }
+ return $status;
+ }
+}
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_undefined.php b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_undefined.php
new file mode 100644
index 000000000..7df0acc2d
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_internal_undefined.php
@@ -0,0 +1,67 @@
+class = $class;
+ }
+
+ /**
+ * Wrapper for obsolete class Smarty_Internal_Runtime_ValidateCompiled
+ *
+ * @param \Smarty_Internal_Template $tpl
+ * @param array $properties special template properties
+ * @param bool $cache flag if called from cache file
+ *
+ * @return bool false
+ */
+ public function decodeProperties(Smarty_Internal_Template $tpl, $properties, $cache = false)
+ {
+ if ($cache) {
+ $tpl->cached->valid = false;
+ } else {
+ $tpl->mustCompile = true;
+ }
+ return false;
+ }
+
+ /**
+ * Call error handler for undefined method
+ *
+ * @param string $name unknown method-name
+ * @param array $args argument array
+ *
+ * @return mixed
+ * @throws SmartyException
+ */
+ public function __call($name, $args)
+ {
+ if (isset($this->class)) {
+ throw new SmartyException("undefined extension class '{$this->class}'");
+ } else {
+ throw new SmartyException(get_class($args[ 0 ]) . "->{$name}() undefined method");
+ }
+ }
+}
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_resource.php b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_resource.php
new file mode 100644
index 000000000..3c43a9f46
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_resource.php
@@ -0,0 +1,260 @@
+ 'smarty_internal_resource_file.php',
+ 'string' => 'smarty_internal_resource_string.php',
+ 'extends' => 'smarty_internal_resource_extends.php',
+ 'stream' => 'smarty_internal_resource_stream.php',
+ 'eval' => 'smarty_internal_resource_eval.php',
+ 'php' => 'smarty_internal_resource_php.php'
+ );
+
+ /**
+ * Source is bypassing compiler
+ *
+ * @var boolean
+ */
+ public $uncompiled = false;
+
+ /**
+ * Source must be recompiled on every occasion
+ *
+ * @var boolean
+ */
+ public $recompiled = false;
+
+ /**
+ * Flag if resource does implement populateCompiledFilepath() method
+ *
+ * @var bool
+ */
+ public $hasCompiledHandler = false;
+
+ /**
+ * Load Resource Handler
+ *
+ * @param Smarty $smarty smarty object
+ * @param string $type name of the resource
+ *
+ * @throws SmartyException
+ * @return Smarty_Resource Resource Handler
+ */
+ public static function load(Smarty $smarty, $type)
+ {
+ // try smarty's cache
+ if (isset($smarty->_cache[ 'resource_handlers' ][ $type ])) {
+ return $smarty->_cache[ 'resource_handlers' ][ $type ];
+ }
+ // try registered resource
+ if (isset($smarty->registered_resources[ $type ])) {
+ return $smarty->_cache[ 'resource_handlers' ][ $type ] = $smarty->registered_resources[ $type ];
+ }
+ // try sysplugins dir
+ if (isset(self::$sysplugins[ $type ])) {
+ $_resource_class = 'Smarty_Internal_Resource_' . smarty_ucfirst_ascii($type);
+ return $smarty->_cache[ 'resource_handlers' ][ $type ] = new $_resource_class();
+ }
+ // try plugins dir
+ $_resource_class = 'Smarty_Resource_' . smarty_ucfirst_ascii($type);
+ if ($smarty->loadPlugin($_resource_class)) {
+ if (class_exists($_resource_class, false)) {
+ return $smarty->_cache[ 'resource_handlers' ][ $type ] = new $_resource_class();
+ } else {
+ $smarty->registerResource(
+ $type,
+ array(
+ "smarty_resource_{$type}_source", "smarty_resource_{$type}_timestamp",
+ "smarty_resource_{$type}_secure", "smarty_resource_{$type}_trusted"
+ )
+ );
+ // give it another try, now that the resource is registered properly
+ return self::load($smarty, $type);
+ }
+ }
+ // try streams
+ $_known_stream = stream_get_wrappers();
+ if (in_array($type, $_known_stream)) {
+ // is known stream
+ if (is_object($smarty->security_policy)) {
+ $smarty->security_policy->isTrustedStream($type);
+ }
+ return $smarty->_cache[ 'resource_handlers' ][ $type ] = new Smarty_Internal_Resource_Stream();
+ }
+ // TODO: try default_(template|config)_handler
+ // give up
+ throw new SmartyException("Unknown resource type '{$type}'");
+ }
+
+ /**
+ * extract resource_type and resource_name from template_resource and config_resource
+ *
+ * @note "C:/foo.tpl" was forced to file resource up till Smarty 3.1.3 (including).
+ *
+ * @param string $resource_name template_resource or config_resource to parse
+ * @param string $default_resource the default resource_type defined in $smarty
+ *
+ * @return array with parsed resource name and type
+ */
+ public static function parseResourceName($resource_name, $default_resource)
+ {
+ if (preg_match('/^([A-Za-z0-9_\-]{2,})[:]/', $resource_name, $match)) {
+ $type = $match[ 1 ];
+ $name = substr($resource_name, strlen($match[ 0 ]));
+ } else {
+ // no resource given, use default
+ // or single character before the colon is not a resource type, but part of the filepath
+ $type = $default_resource;
+ $name = $resource_name;
+ }
+ return array($name, $type);
+ }
+
+ /**
+ * modify template_resource according to resource handlers specifications
+ *
+ * @param \Smarty_Internal_Template|\Smarty $obj Smarty instance
+ * @param string $template_resource template_resource to extract resource handler and
+ * name of
+ *
+ * @return string unique resource name
+ * @throws \SmartyException
+ */
+ public static function getUniqueTemplateName($obj, $template_resource)
+ {
+ $smarty = $obj->_getSmartyObj();
+ list($name, $type) = self::parseResourceName($template_resource, $smarty->default_resource_type);
+ // TODO: optimize for Smarty's internal resource types
+ $resource = Smarty_Resource::load($smarty, $type);
+ // go relative to a given template?
+ $_file_is_dotted = $name[ 0 ] === '.' && ($name[ 1 ] === '.' || $name[ 1 ] === '/');
+ if ($obj->_isTplObj() && $_file_is_dotted
+ && ($obj->source->type === 'file' || $obj->parent->source->type === 'extends')
+ ) {
+ $name = $smarty->_realpath(dirname($obj->parent->source->filepath) . DIRECTORY_SEPARATOR . $name);
+ }
+ return $resource->buildUniqueResourceName($smarty, $name);
+ }
+
+ /**
+ * initialize Source Object for given resource
+ * wrapper for backward compatibility to versions < 3.1.22
+ * Either [$_template] or [$smarty, $template_resource] must be specified
+ *
+ * @param Smarty_Internal_Template $_template template object
+ * @param Smarty $smarty smarty object
+ * @param string $template_resource resource identifier
+ *
+ * @return \Smarty_Template_Source Source Object
+ * @throws \SmartyException
+ */
+ public static function source(
+ Smarty_Internal_Template $_template = null,
+ Smarty $smarty = null,
+ $template_resource = null
+ ) {
+ return Smarty_Template_Source::load($_template, $smarty, $template_resource);
+ }
+
+ /**
+ * Load template's source into current template object
+ *
+ * @param Smarty_Template_Source $source source object
+ *
+ * @return string template source
+ * @throws SmartyException if source cannot be loaded
+ */
+ abstract public function getContent(Smarty_Template_Source $source);
+
+ /**
+ * populate Source Object with meta data from Resource
+ *
+ * @param Smarty_Template_Source $source source object
+ * @param Smarty_Internal_Template $_template template object
+ */
+ abstract public function populate(Smarty_Template_Source $source, Smarty_Internal_Template $_template = null);
+
+ /**
+ * populate Source Object with timestamp and exists from Resource
+ *
+ * @param Smarty_Template_Source $source source object
+ */
+ public function populateTimestamp(Smarty_Template_Source $source)
+ {
+ // intentionally left blank
+ }
+
+ /**
+ * modify resource_name according to resource handlers specifications
+ *
+ * @param Smarty $smarty Smarty instance
+ * @param string $resource_name resource_name to make unique
+ * @param boolean $isConfig flag for config resource
+ *
+ * @return string unique resource name
+ */
+ public function buildUniqueResourceName(Smarty $smarty, $resource_name, $isConfig = false)
+ {
+ if ($isConfig) {
+ if (!isset($smarty->_joined_config_dir)) {
+ $smarty->getTemplateDir(null, true);
+ }
+ return get_class($this) . '#' . $smarty->_joined_config_dir . '#' . $resource_name;
+ } else {
+ if (!isset($smarty->_joined_template_dir)) {
+ $smarty->getTemplateDir();
+ }
+ return get_class($this) . '#' . $smarty->_joined_template_dir . '#' . $resource_name;
+ }
+ }
+
+ /*
+ * Check if resource must check time stamps when when loading complied or cached templates.
+ * Resources like 'extends' which use source components my disable timestamp checks on own resource.
+ *
+ * @return bool
+ */
+ /**
+ * Determine basename for compiled filename
+ *
+ * @param Smarty_Template_Source $source source object
+ *
+ * @return string resource's basename
+ */
+ public function getBasename(Smarty_Template_Source $source)
+ {
+ return basename(preg_replace('![^\w]+!', '_', $source->name));
+ }
+
+ /**
+ * @return bool
+ */
+ public function checkTimestamps()
+ {
+ return true;
+ }
+}
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_resource_custom.php b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_resource_custom.php
new file mode 100644
index 000000000..191fa7c90
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_resource_custom.php
@@ -0,0 +1,104 @@
+filepath = $source->type . ':' . $this->generateSafeName($source->name);
+ $source->uid = sha1($source->type . ':' . $source->name);
+ $mtime = $this->fetchTimestamp($source->name);
+ if ($mtime !== null) {
+ $source->timestamp = $mtime;
+ } else {
+ $this->fetch($source->name, $content, $timestamp);
+ $source->timestamp = isset($timestamp) ? $timestamp : false;
+ if (isset($content)) {
+ $source->content = $content;
+ }
+ }
+ $source->exists = !!$source->timestamp;
+ }
+
+ /**
+ * Load template's source into current template object
+ *
+ * @param Smarty_Template_Source $source source object
+ *
+ * @return string template source
+ * @throws SmartyException if source cannot be loaded
+ */
+ public function getContent(Smarty_Template_Source $source)
+ {
+ $this->fetch($source->name, $content, $timestamp);
+ if (isset($content)) {
+ return $content;
+ }
+ throw new SmartyException("Unable to read template {$source->type} '{$source->name}'");
+ }
+
+ /**
+ * Determine basename for compiled filename
+ *
+ * @param Smarty_Template_Source $source source object
+ *
+ * @return string resource's basename
+ */
+ public function getBasename(Smarty_Template_Source $source)
+ {
+ return basename($this->generateSafeName($source->name));
+ }
+
+ /**
+ * Removes special characters from $name and limits its length to 127 characters.
+ *
+ * @param $name
+ *
+ * @return string
+ */
+ private function generateSafeName($name): string {
+ return substr(preg_replace('/[^A-Za-z0-9._]/', '', (string) $name), 0, 127);
+ }
+}
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_resource_recompiled.php b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_resource_recompiled.php
new file mode 100644
index 000000000..760c4dd33
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_resource_recompiled.php
@@ -0,0 +1,94 @@
+compiled;
+ $compiled->file_dependency = array();
+ $compiled->includes = array();
+ $compiled->nocache_hash = null;
+ $compiled->unifunc = null;
+ $level = ob_get_level();
+ ob_start();
+ $_smarty_tpl->loadCompiler();
+ // call compiler
+ try {
+ eval('?>' . $_smarty_tpl->compiler->compileTemplate($_smarty_tpl));
+ } catch (Exception $e) {
+ unset($_smarty_tpl->compiler);
+ while (ob_get_level() > $level) {
+ ob_end_clean();
+ }
+ throw $e;
+ }
+ // release compiler object to free memory
+ unset($_smarty_tpl->compiler);
+ ob_get_clean();
+ $compiled->timestamp = time();
+ $compiled->exists = true;
+ }
+
+ /**
+ * populate Compiled Object with compiled filepath
+ *
+ * @param Smarty_Template_Compiled $compiled compiled object
+ * @param Smarty_Internal_Template $_template template object
+ *
+ * @return void
+ */
+ public function populateCompiledFilepath(Smarty_Template_Compiled $compiled, Smarty_Internal_Template $_template)
+ {
+ $compiled->filepath = false;
+ $compiled->timestamp = false;
+ $compiled->exists = false;
+ }
+
+ /*
+ * Disable timestamp checks for recompiled resource.
+ *
+ * @return bool
+ */
+ /**
+ * @return bool
+ */
+ public function checkTimestamps()
+ {
+ return false;
+ }
+}
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_resource_uncompiled.php b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_resource_uncompiled.php
new file mode 100644
index 000000000..a11e2c14c
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_resource_uncompiled.php
@@ -0,0 +1,49 @@
+filepath = $_template->source->filepath;
+ $compiled->timestamp = $_template->source->timestamp;
+ $compiled->exists = $_template->source->exists;
+ if ($_template->smarty->merge_compiled_includes || $_template->source->handler->checkTimestamps()) {
+ $compiled->file_dependency[ $_template->source->uid ] =
+ array($compiled->filepath, $compiled->timestamp, $_template->source->type,);
+ }
+ }
+}
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_security.php b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_security.php
new file mode 100644
index 000000000..49ae2a386
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_security.php
@@ -0,0 +1,680 @@
+ array('method_1', 'method_2'), // allowed methods listed
+ * 'class_2' => array(), // all methods of class allowed
+ * )
+ * If set to null none is allowed.
+ *
+ * @var array
+ */
+ public $trusted_static_methods = array();
+
+ /**
+ * This is an array of trusted static properties.
+ * If empty access to all static classes and properties is allowed.
+ * Format:
+ * array (
+ * 'class_1' => array('prop_1', 'prop_2'), // allowed properties listed
+ * 'class_2' => array(), // all properties of class allowed
+ * )
+ * If set to null none is allowed.
+ *
+ * @var array
+ */
+ public $trusted_static_properties = array();
+
+ /**
+ * This is an array of trusted PHP functions.
+ * If empty all functions are allowed.
+ * To disable all PHP functions set $php_functions = null.
+ *
+ * @var array
+ */
+ public $php_functions = array('isset', 'empty', 'count', 'sizeof', 'in_array', 'is_array', 'time',);
+
+ /**
+ * This is an array of trusted PHP modifiers.
+ * If empty all modifiers are allowed.
+ * To disable all modifier set $php_modifiers = null.
+ *
+ * @var array
+ */
+ public $php_modifiers = array('escape', 'count', 'sizeof', 'nl2br',);
+
+ /**
+ * This is an array of allowed tags.
+ * If empty no restriction by allowed_tags.
+ *
+ * @var array
+ */
+ public $allowed_tags = array();
+
+ /**
+ * This is an array of disabled tags.
+ * If empty no restriction by disabled_tags.
+ *
+ * @var array
+ */
+ public $disabled_tags = array();
+
+ /**
+ * This is an array of allowed modifier plugins.
+ * If empty no restriction by allowed_modifiers.
+ *
+ * @var array
+ */
+ public $allowed_modifiers = array();
+
+ /**
+ * This is an array of disabled modifier plugins.
+ * If empty no restriction by disabled_modifiers.
+ *
+ * @var array
+ */
+ public $disabled_modifiers = array();
+
+ /**
+ * This is an array of disabled special $smarty variables.
+ *
+ * @var array
+ */
+ public $disabled_special_smarty_vars = array();
+
+ /**
+ * This is an array of trusted streams.
+ * If empty all streams are allowed.
+ * To disable all streams set $streams = null.
+ *
+ * @var array
+ */
+ public $streams = array('file');
+
+ /**
+ * + flag if constants can be accessed from template
+ *
+ * @var boolean
+ */
+ public $allow_constants = true;
+
+ /**
+ * + flag if super globals can be accessed from template
+ *
+ * @var boolean
+ */
+ public $allow_super_globals = true;
+
+ /**
+ * max template nesting level
+ *
+ * @var int
+ */
+ public $max_template_nesting = 0;
+
+ /**
+ * current template nesting level
+ *
+ * @var int
+ */
+ private $_current_template_nesting = 0;
+
+ /**
+ * Cache for $resource_dir lookup
+ *
+ * @var array
+ */
+ protected $_resource_dir = array();
+
+ /**
+ * Cache for $template_dir lookup
+ *
+ * @var array
+ */
+ protected $_template_dir = array();
+
+ /**
+ * Cache for $config_dir lookup
+ *
+ * @var array
+ */
+ protected $_config_dir = array();
+
+ /**
+ * Cache for $secure_dir lookup
+ *
+ * @var array
+ */
+ protected $_secure_dir = array();
+
+ /**
+ * Cache for $php_resource_dir lookup
+ *
+ * @var array
+ */
+ protected $_php_resource_dir = null;
+
+ /**
+ * Cache for $trusted_dir lookup
+ *
+ * @var array
+ */
+ protected $_trusted_dir = null;
+
+ /**
+ * Cache for include path status
+ *
+ * @var bool
+ */
+ protected $_include_path_status = false;
+
+ /**
+ * Cache for $_include_array lookup
+ *
+ * @var array
+ */
+ protected $_include_dir = array();
+
+ /**
+ * @param Smarty $smarty
+ */
+ public function __construct($smarty)
+ {
+ $this->smarty = $smarty;
+ }
+
+ /**
+ * Check if PHP function is trusted.
+ *
+ * @param string $function_name
+ * @param object $compiler compiler object
+ * @deprecated
+ * @return boolean true if function is trusted
+ */
+ public function isTrustedPhpFunction($function_name, $compiler)
+ {
+ if (isset($this->php_functions)
+ && (empty($this->php_functions) || in_array($function_name, $this->php_functions))
+ ) {
+ return true;
+ }
+ $compiler->trigger_template_error("PHP function '{$function_name}' not allowed by security setting");
+ return false; // should not, but who knows what happens to the compiler in the future?
+ }
+
+ /**
+ * Check if static class is trusted.
+ *
+ * @param string $class_name
+ * @param object $compiler compiler object
+ *
+ * @return boolean true if class is trusted
+ */
+ public function isTrustedStaticClass($class_name, $compiler)
+ {
+ if (isset($this->static_classes)
+ && (empty($this->static_classes) || in_array($class_name, $this->static_classes))
+ ) {
+ return true;
+ }
+ $compiler->trigger_template_error("access to static class '{$class_name}' not allowed by security setting");
+ return false; // should not, but who knows what happens to the compiler in the future?
+ }
+
+ /**
+ * Check if static class method/property is trusted.
+ *
+ * @param string $class_name
+ * @param string $params
+ * @param object $compiler compiler object
+ *
+ * @return boolean true if class method is trusted
+ */
+ public function isTrustedStaticClassAccess($class_name, $params, $compiler)
+ {
+ if (!isset($params[ 2 ])) {
+ // fall back
+ return $this->isTrustedStaticClass($class_name, $compiler);
+ }
+ if ($params[ 2 ] === 'method') {
+ $allowed = $this->trusted_static_methods;
+ $name = substr($params[ 0 ], 0, strpos($params[ 0 ], '('));
+ } else {
+ $allowed = $this->trusted_static_properties;
+ // strip '$'
+ $name = substr($params[ 0 ], 1);
+ }
+ if (isset($allowed)) {
+ if (empty($allowed)) {
+ // fall back
+ return $this->isTrustedStaticClass($class_name, $compiler);
+ }
+ if (isset($allowed[ $class_name ])
+ && (empty($allowed[ $class_name ]) || in_array($name, $allowed[ $class_name ]))
+ ) {
+ return true;
+ }
+ }
+ $compiler->trigger_template_error("access to static class '{$class_name}' {$params[2]} '{$name}' not allowed by security setting");
+ return false; // should not, but who knows what happens to the compiler in the future?
+ }
+
+ /**
+ * Check if PHP modifier is trusted.
+ *
+ * @param string $modifier_name
+ * @param object $compiler compiler object
+ * @deprecated
+ * @return boolean true if modifier is trusted
+ */
+ public function isTrustedPhpModifier($modifier_name, $compiler)
+ {
+ if (isset($this->php_modifiers)
+ && (empty($this->php_modifiers) || in_array($modifier_name, $this->php_modifiers))
+ ) {
+ return true;
+ }
+ $compiler->trigger_template_error("modifier '{$modifier_name}' not allowed by security setting");
+ return false; // should not, but who knows what happens to the compiler in the future?
+ }
+
+ /**
+ * Check if tag is trusted.
+ *
+ * @param string $tag_name
+ * @param object $compiler compiler object
+ *
+ * @return boolean true if tag is trusted
+ */
+ public function isTrustedTag($tag_name, $compiler)
+ {
+ // check for internal always required tags
+ if (in_array(
+ $tag_name,
+ array(
+ 'assign', 'call', 'private_filter', 'private_block_plugin', 'private_function_plugin',
+ 'private_object_block_function', 'private_object_function', 'private_registered_function',
+ 'private_registered_block', 'private_special_variable', 'private_print_expression',
+ 'private_modifier'
+ )
+ )
+ ) {
+ return true;
+ }
+ // check security settings
+ if (empty($this->allowed_tags)) {
+ if (empty($this->disabled_tags) || !in_array($tag_name, $this->disabled_tags)) {
+ return true;
+ } else {
+ $compiler->trigger_template_error("tag '{$tag_name}' disabled by security setting", null, true);
+ }
+ } elseif (in_array($tag_name, $this->allowed_tags) && !in_array($tag_name, $this->disabled_tags)) {
+ return true;
+ } else {
+ $compiler->trigger_template_error("tag '{$tag_name}' not allowed by security setting", null, true);
+ }
+ return false; // should not, but who knows what happens to the compiler in the future?
+ }
+
+ /**
+ * Check if special $smarty variable is trusted.
+ *
+ * @param string $var_name
+ * @param object $compiler compiler object
+ *
+ * @return boolean true if tag is trusted
+ */
+ public function isTrustedSpecialSmartyVar($var_name, $compiler)
+ {
+ if (!in_array($var_name, $this->disabled_special_smarty_vars)) {
+ return true;
+ } else {
+ $compiler->trigger_template_error(
+ "special variable '\$smarty.{$var_name}' not allowed by security setting",
+ null,
+ true
+ );
+ }
+ return false; // should not, but who knows what happens to the compiler in the future?
+ }
+
+ /**
+ * Check if modifier plugin is trusted.
+ *
+ * @param string $modifier_name
+ * @param object $compiler compiler object
+ *
+ * @return boolean true if tag is trusted
+ */
+ public function isTrustedModifier($modifier_name, $compiler)
+ {
+ // check for internal always allowed modifier
+ if (in_array($modifier_name, array('default'))) {
+ return true;
+ }
+ // check security settings
+ if (empty($this->allowed_modifiers)) {
+ if (empty($this->disabled_modifiers) || !in_array($modifier_name, $this->disabled_modifiers)) {
+ return true;
+ } else {
+ $compiler->trigger_template_error(
+ "modifier '{$modifier_name}' disabled by security setting",
+ null,
+ true
+ );
+ }
+ } elseif (in_array($modifier_name, $this->allowed_modifiers)
+ && !in_array($modifier_name, $this->disabled_modifiers)
+ ) {
+ return true;
+ } else {
+ $compiler->trigger_template_error(
+ "modifier '{$modifier_name}' not allowed by security setting",
+ null,
+ true
+ );
+ }
+ return false; // should not, but who knows what happens to the compiler in the future?
+ }
+
+ /**
+ * Check if constants are enabled or trusted
+ *
+ * @param string $const constant name
+ * @param object $compiler compiler object
+ *
+ * @return bool
+ */
+ public function isTrustedConstant($const, $compiler)
+ {
+ if (in_array($const, array('true', 'false', 'null'))) {
+ return true;
+ }
+ if (!empty($this->trusted_constants)) {
+ if (!in_array(strtolower($const), $this->trusted_constants)) {
+ $compiler->trigger_template_error("Security: access to constant '{$const}' not permitted");
+ return false;
+ }
+ return true;
+ }
+ if ($this->allow_constants) {
+ return true;
+ }
+ $compiler->trigger_template_error("Security: access to constants not permitted");
+ return false;
+ }
+
+ /**
+ * Check if stream is trusted.
+ *
+ * @param string $stream_name
+ *
+ * @return boolean true if stream is trusted
+ * @throws SmartyException if stream is not trusted
+ */
+ public function isTrustedStream($stream_name)
+ {
+ if (isset($this->streams) && (empty($this->streams) || in_array($stream_name, $this->streams))) {
+ return true;
+ }
+ throw new SmartyException("stream '{$stream_name}' not allowed by security setting");
+ }
+
+ /**
+ * Check if directory of file resource is trusted.
+ *
+ * @param string $filepath
+ * @param null|bool $isConfig
+ *
+ * @return bool true if directory is trusted
+ * @throws \SmartyException if directory is not trusted
+ */
+ public function isTrustedResourceDir($filepath, $isConfig = null)
+ {
+ if ($this->_include_path_status !== $this->smarty->use_include_path) {
+ $_dir =
+ $this->smarty->use_include_path ? $this->smarty->ext->_getIncludePath->getIncludePathDirs($this->smarty) : array();
+ if ($this->_include_dir !== $_dir) {
+ $this->_updateResourceDir($this->_include_dir, $_dir);
+ $this->_include_dir = $_dir;
+ }
+ $this->_include_path_status = $this->smarty->use_include_path;
+ }
+ $_dir = $this->smarty->getTemplateDir();
+ if ($this->_template_dir !== $_dir) {
+ $this->_updateResourceDir($this->_template_dir, $_dir);
+ $this->_template_dir = $_dir;
+ }
+ $_dir = $this->smarty->getConfigDir();
+ if ($this->_config_dir !== $_dir) {
+ $this->_updateResourceDir($this->_config_dir, $_dir);
+ $this->_config_dir = $_dir;
+ }
+ if ($this->_secure_dir !== $this->secure_dir) {
+ $this->secure_dir = (array)$this->secure_dir;
+ foreach ($this->secure_dir as $k => $d) {
+ $this->secure_dir[ $k ] = $this->smarty->_realpath($d . DIRECTORY_SEPARATOR, true);
+ }
+ $this->_updateResourceDir($this->_secure_dir, $this->secure_dir);
+ $this->_secure_dir = $this->secure_dir;
+ }
+ $addPath = $this->_checkDir($filepath, $this->_resource_dir);
+ if ($addPath !== false) {
+ $this->_resource_dir = array_merge($this->_resource_dir, $addPath);
+ }
+ return true;
+ }
+
+ /**
+ * Check if URI (e.g. {fetch} or {html_image}) is trusted
+ * To simplify things, isTrustedUri() resolves all input to "{$PROTOCOL}://{$HOSTNAME}".
+ * So "http://username:password@hello.world.example.org:8080/some-path?some=query-string"
+ * is reduced to "http://hello.world.example.org" prior to applying the patters from {@link $trusted_uri}.
+ *
+ * @param string $uri
+ *
+ * @return boolean true if URI is trusted
+ * @throws SmartyException if URI is not trusted
+ * @uses $trusted_uri for list of patterns to match against $uri
+ */
+ public function isTrustedUri($uri)
+ {
+ $_uri = parse_url($uri);
+ if (!empty($_uri[ 'scheme' ]) && !empty($_uri[ 'host' ])) {
+ $_uri = $_uri[ 'scheme' ] . '://' . $_uri[ 'host' ];
+ foreach ($this->trusted_uri as $pattern) {
+ if (preg_match($pattern, $_uri)) {
+ return true;
+ }
+ }
+ }
+ throw new SmartyException("URI '{$uri}' not allowed by security setting");
+ }
+
+ /**
+ * Remove old directories and its sub folders, add new directories
+ *
+ * @param array $oldDir
+ * @param array $newDir
+ */
+ private function _updateResourceDir($oldDir, $newDir)
+ {
+ foreach ($oldDir as $directory) {
+ // $directory = $this->smarty->_realpath($directory, true);
+ $length = strlen($directory);
+ foreach ($this->_resource_dir as $dir) {
+ if (substr($dir, 0, $length) === $directory) {
+ unset($this->_resource_dir[ $dir ]);
+ }
+ }
+ }
+ foreach ($newDir as $directory) {
+ // $directory = $this->smarty->_realpath($directory, true);
+ $this->_resource_dir[ $directory ] = true;
+ }
+ }
+
+ /**
+ * Check if file is inside a valid directory
+ *
+ * @param string $filepath
+ * @param array $dirs valid directories
+ *
+ * @return array|bool
+ * @throws \SmartyException
+ */
+ private function _checkDir($filepath, $dirs)
+ {
+ $directory = dirname($this->smarty->_realpath($filepath, true)) . DIRECTORY_SEPARATOR;
+ $_directory = array();
+ if (!preg_match('#[\\\\/][.][.][\\\\/]#', $directory)) {
+ while (true) {
+ // test if the directory is trusted
+ if (isset($dirs[ $directory ])) {
+ return $_directory;
+ }
+ // abort if we've reached root
+ if (!preg_match('#[\\\\/][^\\\\/]+[\\\\/]$#', $directory)) {
+ // give up
+ break;
+ }
+ // remember the directory to add it to _resource_dir in case we're successful
+ $_directory[ $directory ] = true;
+ // bubble up one level
+ $directory = preg_replace('#[\\\\/][^\\\\/]+[\\\\/]$#', DIRECTORY_SEPARATOR, $directory);
+ }
+ }
+ // give up
+ throw new SmartyException(sprintf('Smarty Security: not trusted file path \'%s\' ', $filepath));
+ }
+
+ /**
+ * Loads security class and enables security
+ *
+ * @param \Smarty $smarty
+ * @param string|Smarty_Security $security_class if a string is used, it must be class-name
+ *
+ * @return \Smarty current Smarty instance for chaining
+ * @throws \SmartyException when an invalid class name is provided
+ */
+ public static function enableSecurity(Smarty $smarty, $security_class)
+ {
+ if ($security_class instanceof Smarty_Security) {
+ $smarty->security_policy = $security_class;
+ return $smarty;
+ } elseif (is_object($security_class)) {
+ throw new SmartyException("Class '" . get_class($security_class) . "' must extend Smarty_Security.");
+ }
+ if ($security_class === null) {
+ $security_class = $smarty->security_class;
+ }
+ if (!class_exists($security_class)) {
+ throw new SmartyException("Security class '$security_class' is not defined");
+ } elseif ($security_class !== 'Smarty_Security' && !is_subclass_of($security_class, 'Smarty_Security')) {
+ throw new SmartyException("Class '$security_class' must extend Smarty_Security.");
+ } else {
+ $smarty->security_policy = new $security_class($smarty);
+ }
+ return $smarty;
+ }
+
+ /**
+ * Start template processing
+ *
+ * @param $template
+ *
+ * @throws SmartyException
+ */
+ public function startTemplate($template)
+ {
+ if ($this->max_template_nesting > 0 && $this->_current_template_nesting++ >= $this->max_template_nesting) {
+ throw new SmartyException("maximum template nesting level of '{$this->max_template_nesting}' exceeded when calling '{$template->template_resource}'");
+ }
+ }
+
+ /**
+ * Exit template processing
+ */
+ public function endTemplate()
+ {
+ if ($this->max_template_nesting > 0) {
+ $this->_current_template_nesting--;
+ }
+ }
+
+ /**
+ * Register callback functions call at start/end of template rendering
+ *
+ * @param \Smarty_Internal_Template $template
+ */
+ public function registerCallBacks(Smarty_Internal_Template $template)
+ {
+ $template->startRenderCallbacks[] = array($this, 'startTemplate');
+ $template->endRenderCallbacks[] = array($this, 'endTemplate');
+ }
+}
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_template_cached.php b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_template_cached.php
new file mode 100644
index 000000000..508d27f36
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_template_cached.php
@@ -0,0 +1,257 @@
+compile_id = $_template->compile_id;
+ $this->cache_id = $_template->cache_id;
+ $this->source = $_template->source;
+ if (!class_exists('Smarty_CacheResource', false)) {
+ include SMARTY_SYSPLUGINS_DIR . 'smarty_cacheresource.php';
+ }
+ $this->handler = Smarty_CacheResource::load($_template->smarty);
+ }
+
+ /**
+ * @param Smarty_Internal_Template $_template
+ *
+ * @return Smarty_Template_Cached
+ */
+ public static function load(Smarty_Internal_Template $_template)
+ {
+ $_template->cached = new Smarty_Template_Cached($_template);
+ $_template->cached->handler->populate($_template->cached, $_template);
+ // caching enabled ?
+ if (!$_template->caching || $_template->source->handler->recompiled
+ ) {
+ $_template->cached->valid = false;
+ }
+ return $_template->cached;
+ }
+
+ /**
+ * Render cache template
+ *
+ * @param \Smarty_Internal_Template $_template
+ * @param bool $no_output_filter
+ *
+ * @throws \Exception
+ */
+ public function render(Smarty_Internal_Template $_template, $no_output_filter = true)
+ {
+ if ($this->isCached($_template)) {
+ if ($_template->smarty->debugging) {
+ if (!isset($_template->smarty->_debug)) {
+ $_template->smarty->_debug = new Smarty_Internal_Debug();
+ }
+ $_template->smarty->_debug->start_cache($_template);
+ }
+ if (!$this->processed) {
+ $this->process($_template);
+ }
+ $this->getRenderedTemplateCode($_template);
+ if ($_template->smarty->debugging) {
+ $_template->smarty->_debug->end_cache($_template);
+ }
+ return;
+ } else {
+ $_template->smarty->ext->_updateCache->updateCache($this, $_template, $no_output_filter);
+ }
+ }
+
+ /**
+ * Check if cache is valid, lock cache if required
+ *
+ * @param \Smarty_Internal_Template $_template
+ *
+ * @return bool flag true if cache is valid
+ */
+ public function isCached(Smarty_Internal_Template $_template)
+ {
+ if ($this->valid !== null) {
+ return $this->valid;
+ }
+ while (true) {
+ while (true) {
+ if ($this->exists === false || $_template->smarty->force_compile || $_template->smarty->force_cache) {
+ $this->valid = false;
+ } else {
+ $this->valid = true;
+ }
+ if ($this->valid && $_template->caching === Smarty::CACHING_LIFETIME_CURRENT
+ && $_template->cache_lifetime >= 0 && time() > ($this->timestamp + $_template->cache_lifetime)
+ ) {
+ // lifetime expired
+ $this->valid = false;
+ }
+ if ($this->valid && $_template->compile_check === Smarty::COMPILECHECK_ON
+ && $_template->source->getTimeStamp() > $this->timestamp
+ ) {
+ $this->valid = false;
+ }
+ if ($this->valid || !$_template->smarty->cache_locking) {
+ break;
+ }
+ if (!$this->handler->locked($_template->smarty, $this)) {
+ $this->handler->acquireLock($_template->smarty, $this);
+ break 2;
+ }
+ $this->handler->populate($this, $_template);
+ }
+ if ($this->valid) {
+ if (!$_template->smarty->cache_locking || $this->handler->locked($_template->smarty, $this) === null) {
+ // load cache file for the following checks
+ if ($_template->smarty->debugging) {
+ $_template->smarty->_debug->start_cache($_template);
+ }
+ if ($this->handler->process($_template, $this) === false) {
+ $this->valid = false;
+ } else {
+ $this->processed = true;
+ }
+ if ($_template->smarty->debugging) {
+ $_template->smarty->_debug->end_cache($_template);
+ }
+ } else {
+ $this->is_locked = true;
+ continue;
+ }
+ } else {
+ return $this->valid;
+ }
+ if ($this->valid && $_template->caching === Smarty::CACHING_LIFETIME_SAVED
+ && $_template->cached->cache_lifetime >= 0
+ && (time() > ($_template->cached->timestamp + $_template->cached->cache_lifetime))
+ ) {
+ $this->valid = false;
+ }
+ if ($_template->smarty->cache_locking) {
+ if (!$this->valid) {
+ $this->handler->acquireLock($_template->smarty, $this);
+ } elseif ($this->is_locked) {
+ $this->handler->releaseLock($_template->smarty, $this);
+ }
+ }
+ return $this->valid;
+ }
+ return $this->valid;
+ }
+
+ /**
+ * Process cached template
+ *
+ * @param Smarty_Internal_Template $_template template object
+ * @param bool $update flag if called because cache update
+ */
+ public function process(Smarty_Internal_Template $_template, $update = false)
+ {
+ if ($this->handler->process($_template, $this, $update) === false) {
+ $this->valid = false;
+ }
+ if ($this->valid) {
+ $this->processed = true;
+ } else {
+ $this->processed = false;
+ }
+ }
+
+ /**
+ * Read cache content from handler
+ *
+ * @param Smarty_Internal_Template $_template template object
+ *
+ * @return string|false content
+ */
+ public function read(Smarty_Internal_Template $_template)
+ {
+ if (!$_template->source->handler->recompiled) {
+ return $this->handler->readCachedContent($_template);
+ }
+ return false;
+ }
+}
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_template_compiled.php b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_template_compiled.php
new file mode 100644
index 000000000..b78a3b600
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_template_compiled.php
@@ -0,0 +1,257 @@
+source->handler->hasCompiledHandler) {
+ $_template->source->handler->populateCompiledFilepath($compiled, $_template);
+ } else {
+ $compiled->populateCompiledFilepath($_template);
+ }
+ return $compiled;
+ }
+
+ /**
+ * populate Compiled Object with compiled filepath
+ *
+ * @param Smarty_Internal_Template $_template template object
+ **/
+ public function populateCompiledFilepath(Smarty_Internal_Template $_template)
+ {
+ $source = &$_template->source;
+ $smarty = &$_template->smarty;
+ $this->filepath = $smarty->getCompileDir();
+ if (isset($_template->compile_id)) {
+ $this->filepath .= preg_replace('![^\w]+!', '_', $_template->compile_id) .
+ ($smarty->use_sub_dirs ? DIRECTORY_SEPARATOR : '^');
+ }
+ // if use_sub_dirs, break file into directories
+ if ($smarty->use_sub_dirs) {
+ $this->filepath .= $source->uid[ 0 ] . $source->uid[ 1 ] . DIRECTORY_SEPARATOR . $source->uid[ 2 ] .
+ $source->uid[ 3 ] . DIRECTORY_SEPARATOR . $source->uid[ 4 ] . $source->uid[ 5 ] .
+ DIRECTORY_SEPARATOR;
+ }
+ $this->filepath .= $source->uid . '_';
+ if ($source->isConfig) {
+ $this->filepath .= (int)$smarty->config_read_hidden + (int)$smarty->config_booleanize * 2 +
+ (int)$smarty->config_overwrite * 4;
+ } else {
+ $this->filepath .= (int)$smarty->merge_compiled_includes + (int)$smarty->escape_html * 2 +
+ (($smarty->merge_compiled_includes && $source->type === 'extends') ?
+ (int)$smarty->extends_recursion * 4 : 0);
+ }
+ $this->filepath .= '.' . $source->type;
+ $basename = $source->handler->getBasename($source);
+ if (!empty($basename)) {
+ $this->filepath .= '.' . $basename;
+ }
+ if ($_template->caching) {
+ $this->filepath .= '.cache';
+ }
+ $this->filepath .= '.php';
+ $this->timestamp = $this->exists = is_file($this->filepath);
+ if ($this->exists) {
+ $this->timestamp = filemtime($this->filepath);
+ }
+ }
+
+ /**
+ * render compiled template code
+ *
+ * @param Smarty_Internal_Template $_template
+ *
+ * @return void
+ * @throws Exception
+ */
+ public function render(Smarty_Internal_Template $_template)
+ {
+ // checks if template exists
+ if (!$_template->source->exists) {
+ $type = $_template->source->isConfig ? 'config' : 'template';
+ throw new SmartyException("Unable to load {$type} '{$_template->source->type}:{$_template->source->name}'");
+ }
+ if ($_template->smarty->debugging) {
+ if (!isset($_template->smarty->_debug)) {
+ $_template->smarty->_debug = new Smarty_Internal_Debug();
+ }
+ $_template->smarty->_debug->start_render($_template);
+ }
+ if (!$this->processed) {
+ $this->process($_template);
+ }
+ if (isset($_template->cached)) {
+ $_template->cached->file_dependency =
+ array_merge($_template->cached->file_dependency, $this->file_dependency);
+ }
+ if ($_template->source->handler->uncompiled) {
+ $_template->source->handler->renderUncompiled($_template->source, $_template);
+ } else {
+ $this->getRenderedTemplateCode($_template);
+ }
+ if ($_template->caching && $this->has_nocache_code) {
+ $_template->cached->hashes[ $this->nocache_hash ] = true;
+ }
+ if ($_template->smarty->debugging) {
+ $_template->smarty->_debug->end_render($_template);
+ }
+ }
+
+ /**
+ * load compiled template or compile from source
+ *
+ * @param Smarty_Internal_Template $_smarty_tpl do not change variable name, is used by compiled template
+ *
+ * @throws Exception
+ */
+ public function process(Smarty_Internal_Template $_smarty_tpl)
+ {
+ $source = &$_smarty_tpl->source;
+ $smarty = &$_smarty_tpl->smarty;
+ if ($source->handler->recompiled) {
+ $source->handler->process($_smarty_tpl);
+ } elseif (!$source->handler->uncompiled) {
+ if (!$this->exists || $smarty->force_compile
+ || ($_smarty_tpl->compile_check && $source->getTimeStamp() > $this->getTimeStamp())
+ ) {
+ $this->compileTemplateSource($_smarty_tpl);
+ $compileCheck = $_smarty_tpl->compile_check;
+ $_smarty_tpl->compile_check = Smarty::COMPILECHECK_OFF;
+ $this->loadCompiledTemplate($_smarty_tpl);
+ $_smarty_tpl->compile_check = $compileCheck;
+ } else {
+ $_smarty_tpl->mustCompile = true;
+ @include $this->filepath;
+ if ($_smarty_tpl->mustCompile) {
+ $this->compileTemplateSource($_smarty_tpl);
+ $compileCheck = $_smarty_tpl->compile_check;
+ $_smarty_tpl->compile_check = Smarty::COMPILECHECK_OFF;
+ $this->loadCompiledTemplate($_smarty_tpl);
+ $_smarty_tpl->compile_check = $compileCheck;
+ }
+ }
+ $_smarty_tpl->_subTemplateRegister();
+ $this->processed = true;
+ }
+ }
+
+ /**
+ * compile template from source
+ *
+ * @param Smarty_Internal_Template $_template
+ *
+ * @throws Exception
+ */
+ public function compileTemplateSource(Smarty_Internal_Template $_template)
+ {
+ $this->file_dependency = array();
+ $this->includes = array();
+ $this->nocache_hash = null;
+ $this->unifunc = null;
+ // compile locking
+ if ($saved_timestamp = (!$_template->source->handler->recompiled && is_file($this->filepath))) {
+ $saved_timestamp = $this->getTimeStamp();
+ touch($this->filepath);
+ }
+ // compile locking
+ try {
+ // call compiler
+ $_template->loadCompiler();
+ $this->write($_template, $_template->compiler->compileTemplate($_template));
+ } catch (Exception $e) {
+ // restore old timestamp in case of error
+ if ($saved_timestamp && is_file($this->filepath)) {
+ touch($this->filepath, $saved_timestamp);
+ }
+ unset($_template->compiler);
+ throw $e;
+ }
+ // release compiler object to free memory
+ unset($_template->compiler);
+ }
+
+ /**
+ * Write compiled code by handler
+ *
+ * @param Smarty_Internal_Template $_template template object
+ * @param string $code compiled code
+ *
+ * @return bool success
+ * @throws \SmartyException
+ */
+ public function write(Smarty_Internal_Template $_template, $code)
+ {
+ if (!$_template->source->handler->recompiled) {
+ if ($_template->smarty->ext->_writeFile->writeFile($this->filepath, $code, $_template->smarty) === true) {
+ $this->timestamp = $this->exists = is_file($this->filepath);
+ if ($this->exists) {
+ $this->timestamp = filemtime($this->filepath);
+ return true;
+ }
+ }
+ return false;
+ }
+ return true;
+ }
+
+ /**
+ * Read compiled content from handler
+ *
+ * @param Smarty_Internal_Template $_template template object
+ *
+ * @return string content
+ */
+ public function read(Smarty_Internal_Template $_template)
+ {
+ if (!$_template->source->handler->recompiled) {
+ return file_get_contents($this->filepath);
+ }
+ return isset($this->content) ? $this->content : false;
+ }
+
+ /**
+ * Load fresh compiled template by including the PHP file
+ * HHVM requires a work around because of a PHP incompatibility
+ *
+ * @param \Smarty_Internal_Template $_smarty_tpl do not change variable name, is used by compiled template
+ */
+ private function loadCompiledTemplate(Smarty_Internal_Template $_smarty_tpl)
+ {
+ if (function_exists('opcache_invalidate')
+ && (!function_exists('ini_get') || strlen(ini_get("opcache.restrict_api")) < 1)
+ ) {
+ opcache_invalidate($this->filepath, true);
+ } elseif (function_exists('apc_compile_file')) {
+ apc_compile_file($this->filepath);
+ }
+ if (defined('HHVM_VERSION')) {
+ eval('?>' . file_get_contents($this->filepath));
+ } else {
+ include $this->filepath;
+ }
+ }
+}
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_template_config.php b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_template_config.php
new file mode 100644
index 000000000..850ae32e7
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_template_config.php
@@ -0,0 +1,100 @@
+ true, 'php' => true);
+ if ($_template) {
+ $smarty = $_template->smarty;
+ $template_resource = $_template->template_resource;
+ }
+ if (empty($template_resource)) {
+ throw new SmartyException('Source: Missing name');
+ }
+ // parse resource_name, load resource handler
+ list($name, $type) = Smarty_Resource::parseResourceName($template_resource, $smarty->default_config_type);
+ // make sure configs are not loaded via anything smarty can't handle
+ if (isset($_incompatible_resources[ $type ])) {
+ throw new SmartyException("Unable to use resource '{$type}' for config");
+ }
+ $source = new Smarty_Template_Config($smarty, $template_resource, $type, $name);
+ $source->handler->populate($source, $_template);
+ if (!$source->exists && isset($smarty->default_config_handler_func)) {
+ Smarty_Internal_Method_RegisterDefaultTemplateHandler::_getDefaultTemplate($source);
+ $source->handler->populate($source, $_template);
+ }
+ return $source;
+ }
+}
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_template_resource_base.php b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_template_resource_base.php
new file mode 100644
index 000000000..52bfba252
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_template_resource_base.php
@@ -0,0 +1,152 @@
+smarty;
+ $_template->isRenderingCache = $this->isCache;
+ $level = ob_get_level();
+ try {
+ if (!isset($unifunc)) {
+ $unifunc = $this->unifunc;
+ }
+ if (empty($unifunc) || !function_exists($unifunc)) {
+ throw new SmartyException("Invalid compiled template for '{$_template->template_resource}'");
+ }
+ if ($_template->startRenderCallbacks) {
+ foreach ($_template->startRenderCallbacks as $callback) {
+ call_user_func($callback, $_template);
+ }
+ }
+ $unifunc($_template);
+ foreach ($_template->endRenderCallbacks as $callback) {
+ call_user_func($callback, $_template);
+ }
+ $_template->isRenderingCache = false;
+ } catch (Exception $e) {
+ $_template->isRenderingCache = false;
+ while (ob_get_level() > $level) {
+ ob_end_clean();
+ }
+ if (isset($smarty->security_policy)) {
+ $smarty->security_policy->endTemplate();
+ }
+ throw $e;
+ }
+ }
+
+ /**
+ * Get compiled time stamp
+ *
+ * @return int
+ */
+ public function getTimeStamp()
+ {
+ if ($this->exists && !$this->timestamp) {
+ $this->timestamp = filemtime($this->filepath);
+ }
+ return $this->timestamp;
+ }
+}
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_template_source.php b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_template_source.php
new file mode 100644
index 000000000..16b47f23c
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_template_source.php
@@ -0,0 +1,213 @@
+handler =
+ isset($smarty->_cache[ 'resource_handlers' ][ $type ]) ? $smarty->_cache[ 'resource_handlers' ][ $type ] :
+ Smarty_Resource::load($smarty, $type);
+ $this->smarty = $smarty;
+ $this->resource = $resource;
+ $this->type = $type;
+ $this->name = $name;
+ }
+
+ /**
+ * initialize Source Object for given resource
+ * Either [$_template] or [$smarty, $template_resource] must be specified
+ *
+ * @param Smarty_Internal_Template $_template template object
+ * @param Smarty $smarty smarty object
+ * @param string $template_resource resource identifier
+ *
+ * @return Smarty_Template_Source Source Object
+ * @throws SmartyException
+ */
+ public static function load(
+ Smarty_Internal_Template $_template = null,
+ Smarty $smarty = null,
+ $template_resource = null
+ ) {
+ if ($_template) {
+ $smarty = $_template->smarty;
+ $template_resource = $_template->template_resource;
+ }
+ if (empty($template_resource)) {
+ throw new SmartyException('Source: Missing name');
+ }
+ // parse resource_name, load resource handler, identify unique resource name
+ if (preg_match('/^([A-Za-z0-9_\-]{2,})[:]([\s\S]*)$/', $template_resource, $match)) {
+ $type = $match[ 1 ];
+ $name = $match[ 2 ];
+ } else {
+ // no resource given, use default
+ // or single character before the colon is not a resource type, but part of the filepath
+ $type = $smarty->default_resource_type;
+ $name = $template_resource;
+ }
+ // create new source object
+ $source = new Smarty_Template_Source($smarty, $template_resource, $type, $name);
+ $source->handler->populate($source, $_template);
+ if (!$source->exists && isset($_template->smarty->default_template_handler_func)) {
+ Smarty_Internal_Method_RegisterDefaultTemplateHandler::_getDefaultTemplate($source);
+ $source->handler->populate($source, $_template);
+ }
+ return $source;
+ }
+
+ /**
+ * Get source time stamp
+ *
+ * @return int
+ */
+ public function getTimeStamp()
+ {
+ if (!isset($this->timestamp)) {
+ $this->handler->populateTimestamp($this);
+ }
+ return $this->timestamp;
+ }
+
+ /**
+ * Get source content
+ *
+ * @return string
+ * @throws \SmartyException
+ */
+ public function getContent()
+ {
+ return isset($this->content) ? $this->content : $this->handler->getContent($this);
+ }
+}
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_undefined_variable.php b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_undefined_variable.php
new file mode 100644
index 000000000..6d31a8a05
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smarty_undefined_variable.php
@@ -0,0 +1,33 @@
+value = $value;
+ $this->nocache = $nocache;
+ }
+
+ /**
+ * <> String conversion
+ *
+ * @return string
+ */
+ public function __toString()
+ {
+ return (string)$this->value;
+ }
+}
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smartycompilerexception.php b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smartycompilerexception.php
new file mode 100644
index 000000000..0a0a32351
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smartycompilerexception.php
@@ -0,0 +1,73 @@
+file = $filename;
+ }
+ if ($line) {
+ $this->line = $line;
+ }
+ }
+
+ /**
+ * @return string
+ */
+ public function __toString()
+ {
+ return ' --> Smarty Compiler: ' . $this->message . ' <-- ';
+ }
+
+ /**
+ * @param int $line
+ */
+ public function setLine($line)
+ {
+ $this->line = $line;
+ }
+
+ /**
+ * The template source snippet relating to the error
+ *
+ * @type string|null
+ */
+ public $source = null;
+
+ /**
+ * The raw text of the error message
+ *
+ * @type string|null
+ */
+ public $desc = null;
+
+ /**
+ * The resource identifier or template name
+ *
+ * @type string|null
+ */
+ public $template = null;
+}
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smartyexception.php b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smartyexception.php
new file mode 100644
index 000000000..7f7b9aa43
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/libs/sysplugins/smartyexception.php
@@ -0,0 +1,19 @@
+ Smarty: ' . (self::$escape ? htmlentities($this->message) : $this->message) . ' <-- ';
+ }
+}
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/mkdocs.yml b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/mkdocs.yml
new file mode 100644
index 000000000..66949b809
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/mkdocs.yml
@@ -0,0 +1,125 @@
+site_name: Smarty Documentation
+theme:
+ name: material
+ palette:
+ primary: amber
+ features:
+ - content.code.copy
+ - navigation.tabs
+ - navigation.tabs.sticky
+ - navigation.instant
+ - navigation.tracking
+ icon:
+ logo: material/lightbulb-on
+ favicon: images/favicon.ico
+
+extra:
+ version:
+ provider: mike
+
+markdown_extensions:
+ - pymdownx.highlight:
+ anchor_linenums: true
+ - pymdownx.inlinehilite
+ - pymdownx.snippets
+ - pymdownx.superfences
+
+nav:
+ - Home: 'index.md'
+ - 'Getting started':
+ - Introduction: 'getting-started.md'
+ - 'Upgrading from an older version': 'upgrading.md'
+ - 'Designers':
+ - 'Basic Syntax':
+ - Introduction: 'designers/language-basic-syntax/index.md'
+ - Comments: 'designers/language-basic-syntax/language-syntax-comments.md'
+ - Variables: 'designers/language-basic-syntax/language-syntax-variables.md'
+ - Functions: 'designers/language-basic-syntax/language-syntax-functions.md'
+ - Attributes: 'designers/language-basic-syntax/language-syntax-attributes.md'
+ - Quotes: 'designers/language-basic-syntax/language-syntax-quotes.md'
+ - Math: 'designers/language-basic-syntax/language-math.md'
+ - 'Escaping Smarty parsing': 'designers/language-basic-syntax/language-escaping.md'
+ - 'Variables':
+ - 'Introduction': 'designers/language-variables/index.md'
+ - 'Assigned from PHP': 'designers/language-variables/language-assigned-variables.md'
+ - 'Variable scopes': 'designers/language-variables/language-variable-scopes.md'
+ - 'From config files': 'designers/language-variables/language-config-variables.md'
+ - '{$smarty}': 'designers/language-variables/language-variables-smarty.md'
+ - 'Modifiers':
+ - 'Introduction': 'designers/language-modifiers/index.md'
+ - 'capitalize': 'designers/language-modifiers/language-modifier-capitalize.md'
+ - 'cat': 'designers/language-modifiers/language-modifier-cat.md'
+ - 'count_characters': 'designers/language-modifiers/language-modifier-count-characters.md'
+ - 'count_paragraphs': 'designers/language-modifiers/language-modifier-count-paragraphs.md'
+ - 'count_sentences': 'designers/language-modifiers/language-modifier-count-sentences.md'
+ - 'count_words': 'designers/language-modifiers/language-modifier-count-words.md'
+ - 'date_format': 'designers/language-modifiers/language-modifier-date-format.md'
+ - 'default': 'designers/language-modifiers/language-modifier-default.md'
+ - 'escape': 'designers/language-modifiers/language-modifier-escape.md'
+ - 'from_charset': 'designers/language-modifiers/language-modifier-from-charset.md'
+ - 'indent': 'designers/language-modifiers/language-modifier-indent.md'
+ - 'lower': 'designers/language-modifiers/language-modifier-lower.md'
+ - 'nl2br': 'designers/language-modifiers/language-modifier-nl2br.md'
+ - 'regex_replace': 'designers/language-modifiers/language-modifier-regex-replace.md'
+ - 'replace': 'designers/language-modifiers/language-modifier-replace.md'
+ - 'spacify': 'designers/language-modifiers/language-modifier-spacify.md'
+ - 'string_format': 'designers/language-modifiers/language-modifier-string-format.md'
+ - 'strip': 'designers/language-modifiers/language-modifier-strip.md'
+ - 'strip_tags': 'designers/language-modifiers/language-modifier-strip-tags.md'
+ - 'to_charset': 'designers/language-modifiers/language-modifier-to-charset.md'
+ - 'truncate': 'designers/language-modifiers/language-modifier-truncate.md'
+ - 'unescape': 'designers/language-modifiers/language-modifier-unescape.md'
+ - 'upper': 'designers/language-modifiers/language-modifier-upper.md'
+ - 'wordwrap': 'designers/language-modifiers/language-modifier-wordwrap.md'
+ - 'designers/language-combining-modifiers.md'
+ - 'Builtin Functions':
+ - 'Introduction': 'designers/language-builtin-functions/index.md'
+ - '{append}': 'designers/language-builtin-functions/language-function-append.md'
+ - '{assign}': 'designers/language-builtin-functions/language-function-assign.md'
+ - '{block}': 'designers/language-builtin-functions/language-function-block.md'
+ - '{call}': 'designers/language-builtin-functions/language-function-call.md'
+ - '{capture}': 'designers/language-builtin-functions/language-function-capture.md'
+ - '{config_load}': 'designers/language-builtin-functions/language-function-config-load.md'
+ - '{debug}': 'designers/language-builtin-functions/language-function-debug.md'
+ - '{extends}': 'designers/language-builtin-functions/language-function-extends.md'
+ - '{for}': 'designers/language-builtin-functions/language-function-for.md'
+ - '{foreach}': 'designers/language-builtin-functions/language-function-foreach.md'
+ - '{function}': 'designers/language-builtin-functions/language-function-function.md'
+ - '{if},{elseif},{else}': 'designers/language-builtin-functions/language-function-if.md'
+ - '{include}': 'designers/language-builtin-functions/language-function-include.md'
+ - '{insert}': 'designers/language-builtin-functions/language-function-insert.md'
+ - '{ldelim},{rdelim}': 'designers/language-builtin-functions/language-function-ldelim.md'
+ - '{literal}': 'designers/language-builtin-functions/language-function-literal.md'
+ - '{nocache}': 'designers/language-builtin-functions/language-function-nocache.md'
+ - '{section}': 'designers/language-builtin-functions/language-function-section.md'
+ - '{setfilter}': 'designers/language-builtin-functions/language-function-setfilter.md'
+ - '{strip}': 'designers/language-builtin-functions/language-function-strip.md'
+ - '{while}': 'designers/language-builtin-functions/language-function-while.md'
+ - 'Custom Functions':
+ - 'Introduction': 'designers/language-custom-functions/index.md'
+ - '{counter}': 'designers/language-custom-functions/language-function-counter.md'
+ - '{cycle}': 'designers/language-custom-functions/language-function-cycle.md'
+ - '{debug}': 'designers/language-custom-functions/language-function-debug.md'
+ - '{eval}': 'designers/language-custom-functions/language-function-eval.md'
+ - '{fetch}': 'designers/language-custom-functions/language-function-fetch.md'
+ - '{html_checkboxes}': 'designers/language-custom-functions/language-function-html-checkboxes.md'
+ - '{html_image}': 'designers/language-custom-functions/language-function-html-image.md'
+ - '{html_options}': 'designers/language-custom-functions/language-function-html-options.md'
+ - '{html_radios}': 'designers/language-custom-functions/language-function-html-radios.md'
+ - '{html_select_date}': 'designers/language-custom-functions/language-function-html-select-date.md'
+ - '{html_select_time}': 'designers/language-custom-functions/language-function-html-select-time.md'
+ - '{html_table}': 'designers/language-custom-functions/language-function-html-table.md'
+ - '{mailto}': 'designers/language-custom-functions/language-function-mailto.md'
+ - '{math}': 'designers/language-custom-functions/language-function-math.md'
+ - '{textformat}': 'designers/language-custom-functions/language-function-textformat.md'
+ - 'designers/config-files.md'
+ - 'designers/chapter-debugging-console.md'
+ - 'Programmers':
+ - 'programmers/charset.md'
+ - 'programmers/smarty-constants.md'
+ - 'programmers/api-variables.md'
+ - 'programmers/api-functions.md'
+ - 'programmers/caching.md'
+ - 'programmers/resources.md'
+ - 'programmers/advanced-features.md'
+ - 'programmers/plugins.md'
\ No newline at end of file
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/run-tests-for-all-php-versions.sh b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/run-tests-for-all-php-versions.sh
new file mode 100755
index 000000000..23541b519
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/run-tests-for-all-php-versions.sh
@@ -0,0 +1,17 @@
+#!/bin/bash
+
+# Runs tests for all supported PHP versions
+# Usage examples:
+# - ./run-tests-for-all-php-versions.sh --group 20221124
+# - ./run-tests-for-all-php-versions.sh --exclude-group slow
+
+COMPOSE_CMD="mutagen-compose"
+
+$COMPOSE_CMD run --rm php71 ./run-tests.sh $@ && \
+$COMPOSE_CMD run --rm php72 ./run-tests.sh $@ && \
+$COMPOSE_CMD run --rm php73 ./run-tests.sh $@ && \
+$COMPOSE_CMD run --rm php74 ./run-tests.sh $@ && \
+$COMPOSE_CMD run --rm php80 ./run-tests.sh $@ && \
+$COMPOSE_CMD run --rm php81 ./run-tests.sh $@ && \
+$COMPOSE_CMD run --rm php82 ./run-tests.sh $@ && \
+$COMPOSE_CMD run --rm php83 ./run-tests.sh $@
diff --git a/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/run-tests.sh b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/run-tests.sh
new file mode 100755
index 000000000..1990a07f1
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty4/vendor/smarty/smarty/run-tests.sh
@@ -0,0 +1,10 @@
+#!/bin/sh
+
+# Runs composer update, echoes php version and runs PHPUnit
+# Usage examples:
+# - ./run-tests.sh --group 20221124
+# - ./run-tests.sh --exclude-group slow
+
+composer update --quiet
+#php -r 'echo "\nPHP version " . phpversion() . ". ";'
+php ./vendor/phpunit/phpunit/phpunit $@
diff --git a/www/modules/civicrm/packages/smarty5/Smarty.php b/www/modules/civicrm/packages/smarty5/Smarty.php
new file mode 100644
index 000000000..a35ad58f2
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/Smarty.php
@@ -0,0 +1,79 @@
+smarty = new Smarty\Smarty();
+ }
+
+ public function __call($name, $arguments) {
+ return call_user_func_array([$this->smarty, $name], $arguments);
+ }
+
+ public function __get($name) {
+ // Quick form accesses these in HTML_QuickForm_Renderer_ArraySmarty->_renderRequired()
+ if ($name === 'left_delimiter') {
+ return $this->smarty->getLeftDelimiter();
+ }
+ if ($name === 'right_delimiter') {
+ return $this->smarty->getRightDelimiter();
+ }
+ return $this->smarty->$name;
+ }
+
+ public function __set($name, $value) {
+ $this->smarty->$name = $value;
+ }
+
+ /**
+ * @throws \Smarty\Exception
+ */
+ public function loadFilter($type, $name) {
+ if ($type === 'pre') {
+ $this->smarty->registerFilter($type, 'smarty_prefilter_' . $name);
+ }
+ else {
+ $this->smarty->loadFilter($type, $name);
+ }
+ }
+
+ /**
+ * @param null|string|array $pluginsDirectory
+ *
+ * @return void
+ * @throws \Smarty\Exception
+ */
+ public function addPluginsDir($pluginsDirectories): void {
+ foreach ((array) $pluginsDirectories as $pluginsDirectory) {
+ if (in_array($pluginsDirectory, $this->registeredPluginDirectories, TRUE)) {
+ continue;
+ }
+ $files = scandir($pluginsDirectory);
+ foreach ($files as $file) {
+ if (str_starts_with($file, '.')) {
+ continue;
+ }
+ $registeredPlugins = $this->smarty->registered_plugins;
+ if (CRM_Utils_File::isIncludable($pluginsDirectory . DIRECTORY_SEPARATOR . $file)) {
+ require_once $pluginsDirectory . DIRECTORY_SEPARATOR . $file;
+ $parts = explode('.', $file);
+ if (!empty($registeredPlugins[$parts[0]][$parts[1]])) {
+ continue;
+ }
+ $this->smarty->registerPlugin($parts[0], $parts[1], 'smarty_' . $parts[0] . '_' . $parts[1]);
+ }
+ }
+ $this->registeredPluginDirectories[] = $pluginsDirectory;
+ }
+ }
+
+ public function getVersion(): ?int {
+ return 5;
+ }
+
+}
diff --git a/www/modules/civicrm/packages/smarty5/composer.json b/www/modules/civicrm/packages/smarty5/composer.json
new file mode 100644
index 000000000..96a6b91c5
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/composer.json
@@ -0,0 +1,5 @@
+{
+ "require": {
+ "smarty/smarty": "^5"
+ }
+}
diff --git a/www/modules/civicrm/packages/smarty5/composer.lock b/www/modules/civicrm/packages/smarty5/composer.lock
new file mode 100644
index 000000000..9f7d6a08c
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/composer.lock
@@ -0,0 +1,169 @@
+{
+ "_readme": [
+ "This file locks the dependencies of your project to a known state",
+ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
+ "This file is @generated automatically"
+ ],
+ "content-hash": "a4cb83c948020f1527c8984f1c481914",
+ "packages": [
+ {
+ "name": "smarty/smarty",
+ "version": "v5.2.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/smarty-php/smarty.git",
+ "reference": "cdee97d3f1dff597be8583625adb42710da2c885"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/smarty-php/smarty/zipball/cdee97d3f1dff597be8583625adb42710da2c885",
+ "reference": "cdee97d3f1dff597be8583625adb42710da2c885",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.2 || ^8.0",
+ "symfony/polyfill-mbstring": "^1.27"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^8.5 || ^7.5",
+ "smarty/smarty-lexer": "^4.0.2"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "5.0.x-dev"
+ }
+ },
+ "autoload": {
+ "files": [
+ "src/functions.php"
+ ],
+ "psr-4": {
+ "Smarty\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "LGPL-3.0"
+ ],
+ "authors": [
+ {
+ "name": "Monte Ohrt",
+ "email": "monte@ohrt.com"
+ },
+ {
+ "name": "Uwe Tews",
+ "email": "uwe.tews@googlemail.com"
+ },
+ {
+ "name": "Rodney Rehm",
+ "email": "rodney.rehm@medialize.de"
+ },
+ {
+ "name": "Simon Wisselink",
+ "homepage": "https://www.iwink.nl/"
+ }
+ ],
+ "description": "Smarty - the compiling PHP template engine",
+ "homepage": "https://smarty-php.github.io/smarty/",
+ "keywords": [
+ "templating"
+ ],
+ "support": {
+ "forum": "https://github.com/smarty-php/smarty/discussions",
+ "issues": "https://github.com/smarty-php/smarty/issues",
+ "source": "https://github.com/smarty-php/smarty/tree/v5.2.0"
+ },
+ "time": "2024-05-28T21:45:16+00:00"
+ },
+ {
+ "name": "symfony/polyfill-mbstring",
+ "version": "v1.29.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-mbstring.git",
+ "reference": "9773676c8a1bb1f8d4340a62efe641cf76eda7ec"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/9773676c8a1bb1f8d4340a62efe641cf76eda7ec",
+ "reference": "9773676c8a1bb1f8d4340a62efe641cf76eda7ec",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.1"
+ },
+ "provide": {
+ "ext-mbstring": "*"
+ },
+ "suggest": {
+ "ext-mbstring": "For best performance"
+ },
+ "type": "library",
+ "extra": {
+ "thanks": {
+ "name": "symfony/polyfill",
+ "url": "https://github.com/symfony/polyfill"
+ }
+ },
+ "autoload": {
+ "files": [
+ "bootstrap.php"
+ ],
+ "psr-4": {
+ "Symfony\\Polyfill\\Mbstring\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony polyfill for the Mbstring extension",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "mbstring",
+ "polyfill",
+ "portable",
+ "shim"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.29.0"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2024-01-29T20:11:03+00:00"
+ }
+ ],
+ "packages-dev": [],
+ "aliases": [],
+ "minimum-stability": "stable",
+ "stability-flags": [],
+ "prefer-stable": false,
+ "prefer-lowest": false,
+ "platform": [],
+ "platform-dev": [],
+ "plugin-api-version": "2.3.0"
+}
diff --git a/www/modules/civicrm/packages/smarty5/vendor/autoload.php b/www/modules/civicrm/packages/smarty5/vendor/autoload.php
new file mode 100644
index 000000000..2b6cc3e5a
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/autoload.php
@@ -0,0 +1,12 @@
+
+ * Jordi Boggiano
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Composer\Autoload;
+
+/**
+ * ClassLoader implements a PSR-0, PSR-4 and classmap class loader.
+ *
+ * $loader = new \Composer\Autoload\ClassLoader();
+ *
+ * // register classes with namespaces
+ * $loader->add('Symfony\Component', __DIR__.'/component');
+ * $loader->add('Symfony', __DIR__.'/framework');
+ *
+ * // activate the autoloader
+ * $loader->register();
+ *
+ * // to enable searching the include path (eg. for PEAR packages)
+ * $loader->setUseIncludePath(true);
+ *
+ * In this example, if you try to use a class in the Symfony\Component
+ * namespace or one of its children (Symfony\Component\Console for instance),
+ * the autoloader will first look for the class under the component/
+ * directory, and it will then fallback to the framework/ directory if not
+ * found before giving up.
+ *
+ * This class is loosely based on the Symfony UniversalClassLoader.
+ *
+ * @author Fabien Potencier
+ * @author Jordi Boggiano
+ * @see https://www.php-fig.org/psr/psr-0/
+ * @see https://www.php-fig.org/psr/psr-4/
+ */
+class ClassLoader
+{
+ /** @var ?string */
+ private $vendorDir;
+
+ // PSR-4
+ /**
+ * @var array[]
+ * @psalm-var array>
+ */
+ private $prefixLengthsPsr4 = array();
+ /**
+ * @var array[]
+ * @psalm-var array>
+ */
+ private $prefixDirsPsr4 = array();
+ /**
+ * @var array[]
+ * @psalm-var array
+ */
+ private $fallbackDirsPsr4 = array();
+
+ // PSR-0
+ /**
+ * @var array[]
+ * @psalm-var array>
+ */
+ private $prefixesPsr0 = array();
+ /**
+ * @var array[]
+ * @psalm-var array
+ */
+ private $fallbackDirsPsr0 = array();
+
+ /** @var bool */
+ private $useIncludePath = false;
+
+ /**
+ * @var string[]
+ * @psalm-var array
+ */
+ private $classMap = array();
+
+ /** @var bool */
+ private $classMapAuthoritative = false;
+
+ /**
+ * @var bool[]
+ * @psalm-var array
+ */
+ private $missingClasses = array();
+
+ /** @var ?string */
+ private $apcuPrefix;
+
+ /**
+ * @var self[]
+ */
+ private static $registeredLoaders = array();
+
+ /**
+ * @param ?string $vendorDir
+ */
+ public function __construct($vendorDir = null)
+ {
+ $this->vendorDir = $vendorDir;
+ }
+
+ /**
+ * @return string[]
+ */
+ public function getPrefixes()
+ {
+ if (!empty($this->prefixesPsr0)) {
+ return call_user_func_array('array_merge', array_values($this->prefixesPsr0));
+ }
+
+ return array();
+ }
+
+ /**
+ * @return array[]
+ * @psalm-return array>
+ */
+ public function getPrefixesPsr4()
+ {
+ return $this->prefixDirsPsr4;
+ }
+
+ /**
+ * @return array[]
+ * @psalm-return array
+ */
+ public function getFallbackDirs()
+ {
+ return $this->fallbackDirsPsr0;
+ }
+
+ /**
+ * @return array[]
+ * @psalm-return array
+ */
+ public function getFallbackDirsPsr4()
+ {
+ return $this->fallbackDirsPsr4;
+ }
+
+ /**
+ * @return string[] Array of classname => path
+ * @psalm-return array
+ */
+ public function getClassMap()
+ {
+ return $this->classMap;
+ }
+
+ /**
+ * @param string[] $classMap Class to filename map
+ * @psalm-param array $classMap
+ *
+ * @return void
+ */
+ public function addClassMap(array $classMap)
+ {
+ if ($this->classMap) {
+ $this->classMap = array_merge($this->classMap, $classMap);
+ } else {
+ $this->classMap = $classMap;
+ }
+ }
+
+ /**
+ * Registers a set of PSR-0 directories for a given prefix, either
+ * appending or prepending to the ones previously set for this prefix.
+ *
+ * @param string $prefix The prefix
+ * @param string[]|string $paths The PSR-0 root directories
+ * @param bool $prepend Whether to prepend the directories
+ *
+ * @return void
+ */
+ public function add($prefix, $paths, $prepend = false)
+ {
+ if (!$prefix) {
+ if ($prepend) {
+ $this->fallbackDirsPsr0 = array_merge(
+ (array) $paths,
+ $this->fallbackDirsPsr0
+ );
+ } else {
+ $this->fallbackDirsPsr0 = array_merge(
+ $this->fallbackDirsPsr0,
+ (array) $paths
+ );
+ }
+
+ return;
+ }
+
+ $first = $prefix[0];
+ if (!isset($this->prefixesPsr0[$first][$prefix])) {
+ $this->prefixesPsr0[$first][$prefix] = (array) $paths;
+
+ return;
+ }
+ if ($prepend) {
+ $this->prefixesPsr0[$first][$prefix] = array_merge(
+ (array) $paths,
+ $this->prefixesPsr0[$first][$prefix]
+ );
+ } else {
+ $this->prefixesPsr0[$first][$prefix] = array_merge(
+ $this->prefixesPsr0[$first][$prefix],
+ (array) $paths
+ );
+ }
+ }
+
+ /**
+ * Registers a set of PSR-4 directories for a given namespace, either
+ * appending or prepending to the ones previously set for this namespace.
+ *
+ * @param string $prefix The prefix/namespace, with trailing '\\'
+ * @param string[]|string $paths The PSR-4 base directories
+ * @param bool $prepend Whether to prepend the directories
+ *
+ * @throws \InvalidArgumentException
+ *
+ * @return void
+ */
+ public function addPsr4($prefix, $paths, $prepend = false)
+ {
+ if (!$prefix) {
+ // Register directories for the root namespace.
+ if ($prepend) {
+ $this->fallbackDirsPsr4 = array_merge(
+ (array) $paths,
+ $this->fallbackDirsPsr4
+ );
+ } else {
+ $this->fallbackDirsPsr4 = array_merge(
+ $this->fallbackDirsPsr4,
+ (array) $paths
+ );
+ }
+ } elseif (!isset($this->prefixDirsPsr4[$prefix])) {
+ // Register directories for a new namespace.
+ $length = strlen($prefix);
+ if ('\\' !== $prefix[$length - 1]) {
+ throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator.");
+ }
+ $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length;
+ $this->prefixDirsPsr4[$prefix] = (array) $paths;
+ } elseif ($prepend) {
+ // Prepend directories for an already registered namespace.
+ $this->prefixDirsPsr4[$prefix] = array_merge(
+ (array) $paths,
+ $this->prefixDirsPsr4[$prefix]
+ );
+ } else {
+ // Append directories for an already registered namespace.
+ $this->prefixDirsPsr4[$prefix] = array_merge(
+ $this->prefixDirsPsr4[$prefix],
+ (array) $paths
+ );
+ }
+ }
+
+ /**
+ * Registers a set of PSR-0 directories for a given prefix,
+ * replacing any others previously set for this prefix.
+ *
+ * @param string $prefix The prefix
+ * @param string[]|string $paths The PSR-0 base directories
+ *
+ * @return void
+ */
+ public function set($prefix, $paths)
+ {
+ if (!$prefix) {
+ $this->fallbackDirsPsr0 = (array) $paths;
+ } else {
+ $this->prefixesPsr0[$prefix[0]][$prefix] = (array) $paths;
+ }
+ }
+
+ /**
+ * Registers a set of PSR-4 directories for a given namespace,
+ * replacing any others previously set for this namespace.
+ *
+ * @param string $prefix The prefix/namespace, with trailing '\\'
+ * @param string[]|string $paths The PSR-4 base directories
+ *
+ * @throws \InvalidArgumentException
+ *
+ * @return void
+ */
+ public function setPsr4($prefix, $paths)
+ {
+ if (!$prefix) {
+ $this->fallbackDirsPsr4 = (array) $paths;
+ } else {
+ $length = strlen($prefix);
+ if ('\\' !== $prefix[$length - 1]) {
+ throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator.");
+ }
+ $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length;
+ $this->prefixDirsPsr4[$prefix] = (array) $paths;
+ }
+ }
+
+ /**
+ * Turns on searching the include path for class files.
+ *
+ * @param bool $useIncludePath
+ *
+ * @return void
+ */
+ public function setUseIncludePath($useIncludePath)
+ {
+ $this->useIncludePath = $useIncludePath;
+ }
+
+ /**
+ * Can be used to check if the autoloader uses the include path to check
+ * for classes.
+ *
+ * @return bool
+ */
+ public function getUseIncludePath()
+ {
+ return $this->useIncludePath;
+ }
+
+ /**
+ * Turns off searching the prefix and fallback directories for classes
+ * that have not been registered with the class map.
+ *
+ * @param bool $classMapAuthoritative
+ *
+ * @return void
+ */
+ public function setClassMapAuthoritative($classMapAuthoritative)
+ {
+ $this->classMapAuthoritative = $classMapAuthoritative;
+ }
+
+ /**
+ * Should class lookup fail if not found in the current class map?
+ *
+ * @return bool
+ */
+ public function isClassMapAuthoritative()
+ {
+ return $this->classMapAuthoritative;
+ }
+
+ /**
+ * APCu prefix to use to cache found/not-found classes, if the extension is enabled.
+ *
+ * @param string|null $apcuPrefix
+ *
+ * @return void
+ */
+ public function setApcuPrefix($apcuPrefix)
+ {
+ $this->apcuPrefix = function_exists('apcu_fetch') && filter_var(ini_get('apc.enabled'), FILTER_VALIDATE_BOOLEAN) ? $apcuPrefix : null;
+ }
+
+ /**
+ * The APCu prefix in use, or null if APCu caching is not enabled.
+ *
+ * @return string|null
+ */
+ public function getApcuPrefix()
+ {
+ return $this->apcuPrefix;
+ }
+
+ /**
+ * Registers this instance as an autoloader.
+ *
+ * @param bool $prepend Whether to prepend the autoloader or not
+ *
+ * @return void
+ */
+ public function register($prepend = false)
+ {
+ spl_autoload_register(array($this, 'loadClass'), true, $prepend);
+
+ if (null === $this->vendorDir) {
+ return;
+ }
+
+ if ($prepend) {
+ self::$registeredLoaders = array($this->vendorDir => $this) + self::$registeredLoaders;
+ } else {
+ unset(self::$registeredLoaders[$this->vendorDir]);
+ self::$registeredLoaders[$this->vendorDir] = $this;
+ }
+ }
+
+ /**
+ * Unregisters this instance as an autoloader.
+ *
+ * @return void
+ */
+ public function unregister()
+ {
+ spl_autoload_unregister(array($this, 'loadClass'));
+
+ if (null !== $this->vendorDir) {
+ unset(self::$registeredLoaders[$this->vendorDir]);
+ }
+ }
+
+ /**
+ * Loads the given class or interface.
+ *
+ * @param string $class The name of the class
+ * @return true|null True if loaded, null otherwise
+ */
+ public function loadClass($class)
+ {
+ if ($file = $this->findFile($class)) {
+ includeFile($file);
+
+ return true;
+ }
+
+ return null;
+ }
+
+ /**
+ * Finds the path to the file where the class is defined.
+ *
+ * @param string $class The name of the class
+ *
+ * @return string|false The path if found, false otherwise
+ */
+ public function findFile($class)
+ {
+ // class map lookup
+ if (isset($this->classMap[$class])) {
+ return $this->classMap[$class];
+ }
+ if ($this->classMapAuthoritative || isset($this->missingClasses[$class])) {
+ return false;
+ }
+ if (null !== $this->apcuPrefix) {
+ $file = apcu_fetch($this->apcuPrefix.$class, $hit);
+ if ($hit) {
+ return $file;
+ }
+ }
+
+ $file = $this->findFileWithExtension($class, '.php');
+
+ // Search for Hack files if we are running on HHVM
+ if (false === $file && defined('HHVM_VERSION')) {
+ $file = $this->findFileWithExtension($class, '.hh');
+ }
+
+ if (null !== $this->apcuPrefix) {
+ apcu_add($this->apcuPrefix.$class, $file);
+ }
+
+ if (false === $file) {
+ // Remember that this class does not exist.
+ $this->missingClasses[$class] = true;
+ }
+
+ return $file;
+ }
+
+ /**
+ * Returns the currently registered loaders indexed by their corresponding vendor directories.
+ *
+ * @return self[]
+ */
+ public static function getRegisteredLoaders()
+ {
+ return self::$registeredLoaders;
+ }
+
+ /**
+ * @param string $class
+ * @param string $ext
+ * @return string|false
+ */
+ private function findFileWithExtension($class, $ext)
+ {
+ // PSR-4 lookup
+ $logicalPathPsr4 = strtr($class, '\\', DIRECTORY_SEPARATOR) . $ext;
+
+ $first = $class[0];
+ if (isset($this->prefixLengthsPsr4[$first])) {
+ $subPath = $class;
+ while (false !== $lastPos = strrpos($subPath, '\\')) {
+ $subPath = substr($subPath, 0, $lastPos);
+ $search = $subPath . '\\';
+ if (isset($this->prefixDirsPsr4[$search])) {
+ $pathEnd = DIRECTORY_SEPARATOR . substr($logicalPathPsr4, $lastPos + 1);
+ foreach ($this->prefixDirsPsr4[$search] as $dir) {
+ if (file_exists($file = $dir . $pathEnd)) {
+ return $file;
+ }
+ }
+ }
+ }
+ }
+
+ // PSR-4 fallback dirs
+ foreach ($this->fallbackDirsPsr4 as $dir) {
+ if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr4)) {
+ return $file;
+ }
+ }
+
+ // PSR-0 lookup
+ if (false !== $pos = strrpos($class, '\\')) {
+ // namespaced class name
+ $logicalPathPsr0 = substr($logicalPathPsr4, 0, $pos + 1)
+ . strtr(substr($logicalPathPsr4, $pos + 1), '_', DIRECTORY_SEPARATOR);
+ } else {
+ // PEAR-like class name
+ $logicalPathPsr0 = strtr($class, '_', DIRECTORY_SEPARATOR) . $ext;
+ }
+
+ if (isset($this->prefixesPsr0[$first])) {
+ foreach ($this->prefixesPsr0[$first] as $prefix => $dirs) {
+ if (0 === strpos($class, $prefix)) {
+ foreach ($dirs as $dir) {
+ if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) {
+ return $file;
+ }
+ }
+ }
+ }
+ }
+
+ // PSR-0 fallback dirs
+ foreach ($this->fallbackDirsPsr0 as $dir) {
+ if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) {
+ return $file;
+ }
+ }
+
+ // PSR-0 include paths.
+ if ($this->useIncludePath && $file = stream_resolve_include_path($logicalPathPsr0)) {
+ return $file;
+ }
+
+ return false;
+ }
+}
+
+/**
+ * Scope isolated include.
+ *
+ * Prevents access to $this/self from included files.
+ *
+ * @param string $file
+ * @return void
+ * @private
+ */
+function includeFile($file)
+{
+ include $file;
+}
diff --git a/www/modules/civicrm/packages/smarty5/vendor/composer/InstalledVersions.php b/www/modules/civicrm/packages/smarty5/vendor/composer/InstalledVersions.php
new file mode 100644
index 000000000..c6b54af7b
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/composer/InstalledVersions.php
@@ -0,0 +1,352 @@
+
+ * Jordi Boggiano
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Composer;
+
+use Composer\Autoload\ClassLoader;
+use Composer\Semver\VersionParser;
+
+/**
+ * This class is copied in every Composer installed project and available to all
+ *
+ * See also https://getcomposer.org/doc/07-runtime.md#installed-versions
+ *
+ * To require its presence, you can require `composer-runtime-api ^2.0`
+ *
+ * @final
+ */
+class InstalledVersions
+{
+ /**
+ * @var mixed[]|null
+ * @psalm-var array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array}|array{}|null
+ */
+ private static $installed;
+
+ /**
+ * @var bool|null
+ */
+ private static $canGetVendors;
+
+ /**
+ * @var array[]
+ * @psalm-var array}>
+ */
+ private static $installedByVendor = array();
+
+ /**
+ * Returns a list of all package names which are present, either by being installed, replaced or provided
+ *
+ * @return string[]
+ * @psalm-return list
+ */
+ public static function getInstalledPackages()
+ {
+ $packages = array();
+ foreach (self::getInstalled() as $installed) {
+ $packages[] = array_keys($installed['versions']);
+ }
+
+ if (1 === \count($packages)) {
+ return $packages[0];
+ }
+
+ return array_keys(array_flip(\call_user_func_array('array_merge', $packages)));
+ }
+
+ /**
+ * Returns a list of all package names with a specific type e.g. 'library'
+ *
+ * @param string $type
+ * @return string[]
+ * @psalm-return list
+ */
+ public static function getInstalledPackagesByType($type)
+ {
+ $packagesByType = array();
+
+ foreach (self::getInstalled() as $installed) {
+ foreach ($installed['versions'] as $name => $package) {
+ if (isset($package['type']) && $package['type'] === $type) {
+ $packagesByType[] = $name;
+ }
+ }
+ }
+
+ return $packagesByType;
+ }
+
+ /**
+ * Checks whether the given package is installed
+ *
+ * This also returns true if the package name is provided or replaced by another package
+ *
+ * @param string $packageName
+ * @param bool $includeDevRequirements
+ * @return bool
+ */
+ public static function isInstalled($packageName, $includeDevRequirements = true)
+ {
+ foreach (self::getInstalled() as $installed) {
+ if (isset($installed['versions'][$packageName])) {
+ return $includeDevRequirements || empty($installed['versions'][$packageName]['dev_requirement']);
+ }
+ }
+
+ return false;
+ }
+
+ /**
+ * Checks whether the given package satisfies a version constraint
+ *
+ * e.g. If you want to know whether version 2.3+ of package foo/bar is installed, you would call:
+ *
+ * Composer\InstalledVersions::satisfies(new VersionParser, 'foo/bar', '^2.3')
+ *
+ * @param VersionParser $parser Install composer/semver to have access to this class and functionality
+ * @param string $packageName
+ * @param string|null $constraint A version constraint to check for, if you pass one you have to make sure composer/semver is required by your package
+ * @return bool
+ */
+ public static function satisfies(VersionParser $parser, $packageName, $constraint)
+ {
+ $constraint = $parser->parseConstraints($constraint);
+ $provided = $parser->parseConstraints(self::getVersionRanges($packageName));
+
+ return $provided->matches($constraint);
+ }
+
+ /**
+ * Returns a version constraint representing all the range(s) which are installed for a given package
+ *
+ * It is easier to use this via isInstalled() with the $constraint argument if you need to check
+ * whether a given version of a package is installed, and not just whether it exists
+ *
+ * @param string $packageName
+ * @return string Version constraint usable with composer/semver
+ */
+ public static function getVersionRanges($packageName)
+ {
+ foreach (self::getInstalled() as $installed) {
+ if (!isset($installed['versions'][$packageName])) {
+ continue;
+ }
+
+ $ranges = array();
+ if (isset($installed['versions'][$packageName]['pretty_version'])) {
+ $ranges[] = $installed['versions'][$packageName]['pretty_version'];
+ }
+ if (array_key_exists('aliases', $installed['versions'][$packageName])) {
+ $ranges = array_merge($ranges, $installed['versions'][$packageName]['aliases']);
+ }
+ if (array_key_exists('replaced', $installed['versions'][$packageName])) {
+ $ranges = array_merge($ranges, $installed['versions'][$packageName]['replaced']);
+ }
+ if (array_key_exists('provided', $installed['versions'][$packageName])) {
+ $ranges = array_merge($ranges, $installed['versions'][$packageName]['provided']);
+ }
+
+ return implode(' || ', $ranges);
+ }
+
+ throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
+ }
+
+ /**
+ * @param string $packageName
+ * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as version, use satisfies or getVersionRanges if you need to know if a given version is present
+ */
+ public static function getVersion($packageName)
+ {
+ foreach (self::getInstalled() as $installed) {
+ if (!isset($installed['versions'][$packageName])) {
+ continue;
+ }
+
+ if (!isset($installed['versions'][$packageName]['version'])) {
+ return null;
+ }
+
+ return $installed['versions'][$packageName]['version'];
+ }
+
+ throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
+ }
+
+ /**
+ * @param string $packageName
+ * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as version, use satisfies or getVersionRanges if you need to know if a given version is present
+ */
+ public static function getPrettyVersion($packageName)
+ {
+ foreach (self::getInstalled() as $installed) {
+ if (!isset($installed['versions'][$packageName])) {
+ continue;
+ }
+
+ if (!isset($installed['versions'][$packageName]['pretty_version'])) {
+ return null;
+ }
+
+ return $installed['versions'][$packageName]['pretty_version'];
+ }
+
+ throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
+ }
+
+ /**
+ * @param string $packageName
+ * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as reference
+ */
+ public static function getReference($packageName)
+ {
+ foreach (self::getInstalled() as $installed) {
+ if (!isset($installed['versions'][$packageName])) {
+ continue;
+ }
+
+ if (!isset($installed['versions'][$packageName]['reference'])) {
+ return null;
+ }
+
+ return $installed['versions'][$packageName]['reference'];
+ }
+
+ throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
+ }
+
+ /**
+ * @param string $packageName
+ * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as install path. Packages of type metapackages also have a null install path.
+ */
+ public static function getInstallPath($packageName)
+ {
+ foreach (self::getInstalled() as $installed) {
+ if (!isset($installed['versions'][$packageName])) {
+ continue;
+ }
+
+ return isset($installed['versions'][$packageName]['install_path']) ? $installed['versions'][$packageName]['install_path'] : null;
+ }
+
+ throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
+ }
+
+ /**
+ * @return array
+ * @psalm-return array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}
+ */
+ public static function getRootPackage()
+ {
+ $installed = self::getInstalled();
+
+ return $installed[0]['root'];
+ }
+
+ /**
+ * Returns the raw installed.php data for custom implementations
+ *
+ * @deprecated Use getAllRawData() instead which returns all datasets for all autoloaders present in the process. getRawData only returns the first dataset loaded, which may not be what you expect.
+ * @return array[]
+ * @psalm-return array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array}
+ */
+ public static function getRawData()
+ {
+ @trigger_error('getRawData only returns the first dataset loaded, which may not be what you expect. Use getAllRawData() instead which returns all datasets for all autoloaders present in the process.', E_USER_DEPRECATED);
+
+ if (null === self::$installed) {
+ // only require the installed.php file if this file is loaded from its dumped location,
+ // and not from its source location in the composer/composer package, see https://github.com/composer/composer/issues/9937
+ if (substr(__DIR__, -8, 1) !== 'C') {
+ self::$installed = include __DIR__ . '/installed.php';
+ } else {
+ self::$installed = array();
+ }
+ }
+
+ return self::$installed;
+ }
+
+ /**
+ * Returns the raw data of all installed.php which are currently loaded for custom implementations
+ *
+ * @return array[]
+ * @psalm-return list}>
+ */
+ public static function getAllRawData()
+ {
+ return self::getInstalled();
+ }
+
+ /**
+ * Lets you reload the static array from another file
+ *
+ * This is only useful for complex integrations in which a project needs to use
+ * this class but then also needs to execute another project's autoloader in process,
+ * and wants to ensure both projects have access to their version of installed.php.
+ *
+ * A typical case would be PHPUnit, where it would need to make sure it reads all
+ * the data it needs from this class, then call reload() with
+ * `require $CWD/vendor/composer/installed.php` (or similar) as input to make sure
+ * the project in which it runs can then also use this class safely, without
+ * interference between PHPUnit's dependencies and the project's dependencies.
+ *
+ * @param array[] $data A vendor/composer/installed.php data set
+ * @return void
+ *
+ * @psalm-param array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array} $data
+ */
+ public static function reload($data)
+ {
+ self::$installed = $data;
+ self::$installedByVendor = array();
+ }
+
+ /**
+ * @return array[]
+ * @psalm-return list}>
+ */
+ private static function getInstalled()
+ {
+ if (null === self::$canGetVendors) {
+ self::$canGetVendors = method_exists('Composer\Autoload\ClassLoader', 'getRegisteredLoaders');
+ }
+
+ $installed = array();
+
+ if (self::$canGetVendors) {
+ foreach (ClassLoader::getRegisteredLoaders() as $vendorDir => $loader) {
+ if (isset(self::$installedByVendor[$vendorDir])) {
+ $installed[] = self::$installedByVendor[$vendorDir];
+ } elseif (is_file($vendorDir.'/composer/installed.php')) {
+ $installed[] = self::$installedByVendor[$vendorDir] = require $vendorDir.'/composer/installed.php';
+ if (null === self::$installed && strtr($vendorDir.'/composer', '\\', '/') === strtr(__DIR__, '\\', '/')) {
+ self::$installed = $installed[count($installed) - 1];
+ }
+ }
+ }
+ }
+
+ if (null === self::$installed) {
+ // only require the installed.php file if this file is loaded from its dumped location,
+ // and not from its source location in the composer/composer package, see https://github.com/composer/composer/issues/9937
+ if (substr(__DIR__, -8, 1) !== 'C') {
+ self::$installed = require __DIR__ . '/installed.php';
+ } else {
+ self::$installed = array();
+ }
+ }
+ $installed[] = self::$installed;
+
+ return $installed;
+ }
+}
diff --git a/www/modules/civicrm/packages/smarty5/vendor/composer/LICENSE b/www/modules/civicrm/packages/smarty5/vendor/composer/LICENSE
new file mode 100644
index 000000000..f27399a04
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/composer/LICENSE
@@ -0,0 +1,21 @@
+
+Copyright (c) Nils Adermann, Jordi Boggiano
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is furnished
+to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+
diff --git a/www/modules/civicrm/packages/smarty5/vendor/composer/autoload_classmap.php b/www/modules/civicrm/packages/smarty5/vendor/composer/autoload_classmap.php
new file mode 100644
index 000000000..0fb0a2c19
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/composer/autoload_classmap.php
@@ -0,0 +1,10 @@
+ $vendorDir . '/composer/InstalledVersions.php',
+);
diff --git a/www/modules/civicrm/packages/smarty5/vendor/composer/autoload_files.php b/www/modules/civicrm/packages/smarty5/vendor/composer/autoload_files.php
new file mode 100644
index 000000000..cc0e3f7b9
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/composer/autoload_files.php
@@ -0,0 +1,11 @@
+ $vendorDir . '/symfony/polyfill-mbstring/bootstrap.php',
+ 'c15d4a1253e33e055d05e547c61dcb71' => $vendorDir . '/smarty/smarty/src/functions.php',
+);
diff --git a/www/modules/civicrm/packages/smarty5/vendor/composer/autoload_namespaces.php b/www/modules/civicrm/packages/smarty5/vendor/composer/autoload_namespaces.php
new file mode 100644
index 000000000..15a2ff3ad
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/composer/autoload_namespaces.php
@@ -0,0 +1,9 @@
+ array($vendorDir . '/symfony/polyfill-mbstring'),
+ 'Smarty\\' => array($vendorDir . '/smarty/smarty/src'),
+);
diff --git a/www/modules/civicrm/packages/smarty5/vendor/composer/autoload_real.php b/www/modules/civicrm/packages/smarty5/vendor/composer/autoload_real.php
new file mode 100644
index 000000000..a9824d2ac
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/composer/autoload_real.php
@@ -0,0 +1,57 @@
+register(true);
+
+ $includeFiles = \Composer\Autoload\ComposerStaticInit5806e57ddeefa9cb5aaaeceac0cec391::$files;
+ foreach ($includeFiles as $fileIdentifier => $file) {
+ composerRequire5806e57ddeefa9cb5aaaeceac0cec391($fileIdentifier, $file);
+ }
+
+ return $loader;
+ }
+}
+
+/**
+ * @param string $fileIdentifier
+ * @param string $file
+ * @return void
+ */
+function composerRequire5806e57ddeefa9cb5aaaeceac0cec391($fileIdentifier, $file)
+{
+ if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
+ $GLOBALS['__composer_autoload_files'][$fileIdentifier] = true;
+
+ require $file;
+ }
+}
diff --git a/www/modules/civicrm/packages/smarty5/vendor/composer/autoload_static.php b/www/modules/civicrm/packages/smarty5/vendor/composer/autoload_static.php
new file mode 100644
index 000000000..668db201b
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/composer/autoload_static.php
@@ -0,0 +1,46 @@
+ __DIR__ . '/..' . '/symfony/polyfill-mbstring/bootstrap.php',
+ 'c15d4a1253e33e055d05e547c61dcb71' => __DIR__ . '/..' . '/smarty/smarty/src/functions.php',
+ );
+
+ public static $prefixLengthsPsr4 = array (
+ 'S' =>
+ array (
+ 'Symfony\\Polyfill\\Mbstring\\' => 26,
+ 'Smarty\\' => 7,
+ ),
+ );
+
+ public static $prefixDirsPsr4 = array (
+ 'Symfony\\Polyfill\\Mbstring\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/symfony/polyfill-mbstring',
+ ),
+ 'Smarty\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/smarty/smarty/src',
+ ),
+ );
+
+ public static $classMap = array (
+ 'Composer\\InstalledVersions' => __DIR__ . '/..' . '/composer/InstalledVersions.php',
+ );
+
+ public static function getInitializer(ClassLoader $loader)
+ {
+ return \Closure::bind(function () use ($loader) {
+ $loader->prefixLengthsPsr4 = ComposerStaticInit5806e57ddeefa9cb5aaaeceac0cec391::$prefixLengthsPsr4;
+ $loader->prefixDirsPsr4 = ComposerStaticInit5806e57ddeefa9cb5aaaeceac0cec391::$prefixDirsPsr4;
+ $loader->classMap = ComposerStaticInit5806e57ddeefa9cb5aaaeceac0cec391::$classMap;
+
+ }, null, ClassLoader::class);
+ }
+}
diff --git a/www/modules/civicrm/packages/smarty5/vendor/composer/installed.json b/www/modules/civicrm/packages/smarty5/vendor/composer/installed.json
new file mode 100644
index 000000000..56cb4d328
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/composer/installed.json
@@ -0,0 +1,162 @@
+{
+ "packages": [
+ {
+ "name": "smarty/smarty",
+ "version": "v5.2.0",
+ "version_normalized": "5.2.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/smarty-php/smarty.git",
+ "reference": "cdee97d3f1dff597be8583625adb42710da2c885"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/smarty-php/smarty/zipball/cdee97d3f1dff597be8583625adb42710da2c885",
+ "reference": "cdee97d3f1dff597be8583625adb42710da2c885",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.2 || ^8.0",
+ "symfony/polyfill-mbstring": "^1.27"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^8.5 || ^7.5",
+ "smarty/smarty-lexer": "^4.0.2"
+ },
+ "time": "2024-05-28T21:45:16+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "5.0.x-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "files": [
+ "src/functions.php"
+ ],
+ "psr-4": {
+ "Smarty\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "LGPL-3.0"
+ ],
+ "authors": [
+ {
+ "name": "Monte Ohrt",
+ "email": "monte@ohrt.com"
+ },
+ {
+ "name": "Uwe Tews",
+ "email": "uwe.tews@googlemail.com"
+ },
+ {
+ "name": "Rodney Rehm",
+ "email": "rodney.rehm@medialize.de"
+ },
+ {
+ "name": "Simon Wisselink",
+ "homepage": "https://www.iwink.nl/"
+ }
+ ],
+ "description": "Smarty - the compiling PHP template engine",
+ "homepage": "https://smarty-php.github.io/smarty/",
+ "keywords": [
+ "templating"
+ ],
+ "support": {
+ "forum": "https://github.com/smarty-php/smarty/discussions",
+ "issues": "https://github.com/smarty-php/smarty/issues",
+ "source": "https://github.com/smarty-php/smarty/tree/v5.2.0"
+ },
+ "install-path": "../smarty/smarty"
+ },
+ {
+ "name": "symfony/polyfill-mbstring",
+ "version": "v1.29.0",
+ "version_normalized": "1.29.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-mbstring.git",
+ "reference": "9773676c8a1bb1f8d4340a62efe641cf76eda7ec"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/9773676c8a1bb1f8d4340a62efe641cf76eda7ec",
+ "reference": "9773676c8a1bb1f8d4340a62efe641cf76eda7ec",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.1"
+ },
+ "provide": {
+ "ext-mbstring": "*"
+ },
+ "suggest": {
+ "ext-mbstring": "For best performance"
+ },
+ "time": "2024-01-29T20:11:03+00:00",
+ "type": "library",
+ "extra": {
+ "thanks": {
+ "name": "symfony/polyfill",
+ "url": "https://github.com/symfony/polyfill"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "files": [
+ "bootstrap.php"
+ ],
+ "psr-4": {
+ "Symfony\\Polyfill\\Mbstring\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony polyfill for the Mbstring extension",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "mbstring",
+ "polyfill",
+ "portable",
+ "shim"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.29.0"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "install-path": "../symfony/polyfill-mbstring"
+ }
+ ],
+ "dev": true,
+ "dev-package-names": []
+}
diff --git a/www/modules/civicrm/packages/smarty5/vendor/composer/installed.php b/www/modules/civicrm/packages/smarty5/vendor/composer/installed.php
new file mode 100644
index 000000000..0f3523f38
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/composer/installed.php
@@ -0,0 +1,41 @@
+ array(
+ 'name' => '__root__',
+ 'pretty_version' => 'dev-master',
+ 'version' => 'dev-master',
+ 'reference' => 'bfa3c101f9cdda54c10fa607846ea1bafe388fce',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../../',
+ 'aliases' => array(),
+ 'dev' => true,
+ ),
+ 'versions' => array(
+ '__root__' => array(
+ 'pretty_version' => 'dev-master',
+ 'version' => 'dev-master',
+ 'reference' => 'bfa3c101f9cdda54c10fa607846ea1bafe388fce',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../../',
+ 'aliases' => array(),
+ 'dev_requirement' => false,
+ ),
+ 'smarty/smarty' => array(
+ 'pretty_version' => 'v5.2.0',
+ 'version' => '5.2.0.0',
+ 'reference' => 'cdee97d3f1dff597be8583625adb42710da2c885',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../smarty/smarty',
+ 'aliases' => array(),
+ 'dev_requirement' => false,
+ ),
+ 'symfony/polyfill-mbstring' => array(
+ 'pretty_version' => 'v1.29.0',
+ 'version' => '1.29.0.0',
+ 'reference' => '9773676c8a1bb1f8d4340a62efe641cf76eda7ec',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../symfony/polyfill-mbstring',
+ 'aliases' => array(),
+ 'dev_requirement' => false,
+ ),
+ ),
+);
diff --git a/www/modules/civicrm/packages/smarty5/vendor/composer/platform_check.php b/www/modules/civicrm/packages/smarty5/vendor/composer/platform_check.php
new file mode 100644
index 000000000..589e9e770
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/composer/platform_check.php
@@ -0,0 +1,26 @@
+= 70200)) {
+ $issues[] = 'Your Composer dependencies require a PHP version ">= 7.2.0". You are running ' . PHP_VERSION . '.';
+}
+
+if ($issues) {
+ if (!headers_sent()) {
+ header('HTTP/1.1 500 Internal Server Error');
+ }
+ if (!ini_get('display_errors')) {
+ if (PHP_SAPI === 'cli' || PHP_SAPI === 'phpdbg') {
+ fwrite(STDERR, 'Composer detected issues in your platform:' . PHP_EOL.PHP_EOL . implode(PHP_EOL, $issues) . PHP_EOL.PHP_EOL);
+ } elseif (!headers_sent()) {
+ echo 'Composer detected issues in your platform:' . PHP_EOL.PHP_EOL . str_replace('You are running '.PHP_VERSION.'.', '', implode(PHP_EOL, $issues)) . PHP_EOL.PHP_EOL;
+ }
+ }
+ trigger_error(
+ 'Composer detected issues in your platform: ' . implode(' ', $issues),
+ E_USER_ERROR
+ );
+}
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/CHANGELOG.md b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/CHANGELOG.md
new file mode 100644
index 000000000..f359cec2c
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/CHANGELOG.md
@@ -0,0 +1,3713 @@
+# Changelog
+All notable changes to this project will be documented in this file.
+
+The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
+and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
+
+## [Unreleased]
+
+## [5.2.0] - 2024-05-28
+- Fixed a code injection vulnerability in extends-tag. This addresses CVE-2024-35226.
+- Added `$smarty->setCacheModifiedCheck()` setter for cache_modified_check
+- Added a PSR-4 loading script to allow Smarty to be used without Composer [#1017](https://github.com/smarty-php/smarty/pull/1017)
+
+
+## [5.1.0] - 2024-04-22
+- Prevent deprecation notices during compilation in PHP8.3 [#996](https://github.com/smarty-php/smarty/issues/996)
+- Fix that getTemplateVars would return an array of objects instead of the assigned variables values [#994](https://github.com/smarty-php/smarty/issues/994)
+- Fix Smarty::assign() not returning $this when called with an array as first parameter [#972](https://github.com/smarty-php/smarty/pull/972)
+- Documented support for `{if $element is in $array}` syntax [#937](https://github.com/smarty-php/smarty/issues/937)
+- Added support for `{if $element is not in $array}` syntax [#937](https://github.com/smarty-php/smarty/issues/937)
+- Using stream variables in templates now throws a deprecation notice [#933](https://github.com/smarty-php/smarty/pull/933)
+- Internal compiler classes always return a string (the internal has_code flag has been removed for simplicity) [#918](https://github.com/smarty-php/smarty/pull/918)
+- Fix invalid classnames in Runtime code for foreach [#1000](https://github.com/smarty-php/smarty/issues/1000)
+
+
+## [5.0.1] - 2024-03-27
+- Fix error in Smarty\Smarty::compileAllTemplates() by including missing FilesystemIterator class [#966](https://github.com/smarty-php/smarty/issues/966)
+
+
+## [5.0.0] - 2024-03-25
+- Fixed that scoped variables would overwrite parent scope [#952](https://github.com/smarty-php/smarty/issues/952)
+- Removed publicly accessible `$tpl->_var_stack` variable
+
+
+### Fixed
+- Too many shorthand attributes error when using a modifier as a function with more than 3 parameters in an expression [#949](https://github.com/smarty-php/smarty/issues/949)
+
+### Removed
+- Dropped support for undocumented `{time()}` added in v5.0.0 since we already have the documented `{$smarty.now}`
+
+## [5.0.0-rc3] - 2024-02-26
+
+### Added
+- PHP8.3 support [#925](https://github.com/smarty-php/smarty/issues/925)
+- Backlink to GitHub in docs
+- Explain how to do escaping and set-up auto-escaping in docs [#865](https://github.com/smarty-php/smarty/issues/865)
+- Link to variable scope page in the documentation for the assign tag [#878](https://github.com/smarty-php/smarty/issues/878)
+- Add support for implode, substr and json_encode as modifiers/functions in templates [#939](https://github.com/smarty-php/smarty/issues/939)
+- Add template path to CompilerException to enable rich debug features [#935](https://github.com/smarty-php/smarty/issues/935)
+
+### Fixed
+- The {debug} tag was broken in v5 [#922](https://github.com/smarty-php/smarty/issues/922)
+- Documentation on `{if $x is even by $y}` syntax
+- Fix incorrect compilation of expressions when escape_html=true [#930](https://github.com/smarty-php/smarty/pull/930)
+
+## [5.0.0-rc2] - 2023-11-11
+
+### Fixed
+- Registered output filters wouldn't run [#899](https://github.com/smarty-php/smarty/issues/899)
+- Use of negative numbers in {math} equations [#895](https://github.com/smarty-php/smarty/issues/895)
+- Do not auto-html-escape custom function results [#906](https://github.com/smarty-php/smarty/issues/906)
+- Fix case-sensitive tag names [#907](https://github.com/smarty-php/smarty/issues/907)
+
+### Removed
+- Removed `$smarty->registered_filters` array
+
+## [5.0.0-rc1] - 2023-08-08
+
+### Added
+- Added support for PHP8.2
+- Added a new way to extend Smarty functionality using `Smarty::addExtension()` or `Smarty::setExtensions()`. Please see the docs for more information.
+- Custom tags can accept positional parameters, so you can write a block compiler that support this: `{trans "Jack" "dull boy"}All work and no play makes %s a %s.{/trans}` [#164](https://github.com/smarty-php/smarty/issues/164)
+- Full support for ternary operator: `{$test ? $a : $b}` and `{$var ?: $value_if_falsy}` [#881](https://github.com/smarty-php/smarty/issues/881)
+- Full support for null coalescing operator: `{$var ?? $value_if_null}` [#882](https://github.com/smarty-php/smarty/issues/882)
+
+### Changed
+- All Smarty code is now in the \Smarty namespace. For simple use-cases, you only need to add
+ `use \Smarty\Smarty;` to your script and everything will work. If you extend Smarty or use
+ Smarty plug-ins, please review your code to see if they assume specific class or method names.
+ E.g.: `Smarty_Internal_Template` is now `\Smarty\Template\`, `SmartyException` is now `\Smarty\Exception`.
+- Template variable scope bubbling has been simplified and made more consistent.
+ The global scope now equals the Smarty scope in order to avoid global state side effects. Please read
+ the documentation for more details.
+- Lexers and Parsers PHP files are reliably generated from sources (.y and .plex) using the make file
+- Smarty now always runs in multibyte mode, using `symfony/polyfill-mbstring` if required. Please use the
+ multibyte extension for optimal performance.
+- Smarty no longer calls `mb_internal_encoding()` and doesn't check for deprecated `mbstring.func_overload` ini directive [#480](https://github.com/smarty-php/smarty/issues/480)
+- Generated `
+{/block}
+```
+
+mypage.tpl (grandchild)
+
+```smarty
+{extends file='myproject.tpl'}
+{block name=title}My Page Title{/block}
+{block name=head}
+
+
+{/block}
+{block name=body}My HTML Page Body goes here{/block}
+```
+
+
+To render the above, you would use:
+
+```php
+display('mypage.tpl');
+```
+
+The resulting output is:
+
+```html
+
+
+ My Page Title
+
+
+
+
+ My HTML Page Body goes here
+
+
+```
+
+> **Note**
+>
+> When [compile-check](./configuring.md#disabling-compile-check) is enabled, all files
+> in the inheritance tree
+> are checked for modifications upon each invocation. You may want to
+> disable compile-check on production servers for this reason.
+
+> **Note**
+>
+> If you have a subtemplate which is included with
+> [`{include}`](../designers/language-builtin-functions/language-function-include.md) and it contains
+> [`{block}`](../designers/language-builtin-functions/language-function-block.md) areas it works only if the
+> [`{include}`](../designers/language-builtin-functions/language-function-include.md) itself is called from within
+> a surrounding [`{block}`](../designers/language-builtin-functions/language-function-block.md). In the final
+> parent template you may need a dummy
+> [`{block}`](../designers/language-builtin-functions/language-function-block.md) for it.
+
+
+## Using append and prepend
+The content of [`{block}`](../designers/language-builtin-functions/language-function-block.md) tags from child
+and parent templates can be merged by the `append` or `prepend`
+[`{block}`](../designers/language-builtin-functions/language-function-block.md) tag option flags and
+`{$smarty.block.parent}` or `{$smarty.block.child}` placeholders.
+
+## Extends resource type
+Instead of using [`{extends}`](../designers/language-builtin-functions/language-function-extends.md) tags in the
+template files you can define the inheritance tree in your PHP script by
+using the [`extends:` resource](resources.md#the-extends-resource) type.
+
+The code below will return same result as the example above.
+
+```php
+display('extends:layout.tpl|myproject.tpl|mypage.tpl');
+```
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/api/rendering.md b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/api/rendering.md
new file mode 100644
index 000000000..a66b61269
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/api/rendering.md
@@ -0,0 +1,86 @@
+# Rendering templates
+
+## Fetching or rendering templates directly
+As explained in [basics](basics.md), you can use `$smarty->fetch()` or `$smarty->display()`
+to render a template directly.
+
+```php
+display('homepage.tpl');
+
+// or
+
+$output = $smarty->fetch('homepage.tpl');
+```
+
+When you use `display()`, Smarty renders the template to the standard output stream.
+`fetch()` returns the output instead of echoing it.
+
+The example above uses simple filenames to load the template. Smarty also supports
+[loading templates from resources](resources.md).
+
+## Creating a template object
+You can also create a template object which later can be prepared first,
+and rendered later. This can be useful, for example if you plan to re-use several
+templates.
+
+```php
+createTemplate('index.tpl');
+
+// assign a variable (available only to this template)
+$tpl->assign('title', 'My Homepage!');
+
+// display the template
+$tpl->display();
+```
+
+More on assigning variables in [using data in templates](variables/assigning.md).
+
+
+## Testing if a template exists
+You can use `templateExists()` to check whether a template exists before you attempt to use it.
+
+It accepts either a path to the template on the filesystem or a
+resource string specifying the template.
+
+This example uses `$_GET['page']` to
+[`{include}`](../designers/language-builtin-functions/language-function-include.md) a content template. If the
+template does not exist then an error page is displayed instead. First,
+the `page_container.tpl`
+
+```smarty
+
+
+ {$title|escape}
+
+
+ {* include middle content page *}
+ {include file=$content_template}
+
+
+```
+
+And the php script:
+
+```php
+templateExists($mid_template)){
+ $mid_template = 'page_not_found.tpl';
+}
+$smarty->assign('content_template', $mid_template);
+
+$smarty->display('page_container.tpl');
+```
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/api/resources.md b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/api/resources.md
new file mode 100644
index 000000000..5ca52b12d
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/api/resources.md
@@ -0,0 +1,322 @@
+# Template resources
+
+## The filesystem resource
+
+So far in our examples, we have used simple filenames or paths when loading a template.
+
+For example, to load a template file called `homepage.tpl`, from the filesystem, you could write:
+```php
+display('homepage.tpl');
+```
+
+The filesystem is the default resource. Templates, however, may come
+from a variety of sources. When you render a template, or
+when you include a template from within another template, you supply a
+resource type, followed by `:` and the appropriate path and template name.
+
+If a resource is not explicitly given, the default resource type is assumed.
+The resource type for the filesystem is `file`, which means that the previous example
+can be rewritten as follows:
+```php
+display('file:homepage.tpl');
+```
+
+The file resource pulls templates source files from the directories
+specified using `Smarty::setTemplateDir()` (see [Configuring Smarty](configuring.md)).
+
+`setTemplateDir` accepts a single path, but can also ben called with an array of paths.
+In that case, the list of directories is traversed in the order they appear in the array. The
+first template found is the one to process.
+
+### Templates from a specific directory
+
+Smarty 3.1 introduced the bracket-syntax for specifying an element from
+`Smarty::setTemplateDir()`. This allows websites
+employing multiple sets of templates better control over which template
+to access.
+
+The bracket-syntax can be used as follows:
+```php
+setTemplateDir([
+ './templates', // element: 0, index: 0
+ './templates_2', // element: 1, index: 1
+ '10' => 'templates_10', // element: 2, index: '10'
+ 'foo' => 'templates_foo', // element: 3, index: 'foo'
+]);
+
+/*
+ assume the template structure
+ ./templates/foo.tpl
+ ./templates_2/foo.tpl
+ ./templates_2/bar.tpl
+ ./templates_10/foo.tpl
+ ./templates_10/bar.tpl
+ ./templates_foo/foo.tpl
+*/
+
+// regular access
+$smarty->display('file:foo.tpl');
+// will load ./templates/foo.tpl
+
+// using numeric index
+$smarty->display('file:[1]foo.tpl');
+// will load ./templates_2/foo.tpl
+
+// using numeric string index
+$smarty->display('file:[10]foo.tpl');
+// will load ./templates_10/foo.tpl
+
+// using string index
+$smarty->display('file:[foo]foo.tpl');
+// will load ./templates_foo/foo.tpl
+
+// using "unknown" numeric index (using element number)
+$smarty->display('file:[2]foo.tpl');
+// will load ./templates_10/foo.tpl
+```
+
+And, from within a Smarty template:
+
+```smarty
+{include file="file:foo.tpl"}
+{* will load ./templates/foo.tpl *}
+
+{include file="file:[1]foo.tpl"}
+{* will load ./templates_2/foo.tpl *}
+
+{include file="file:[foo]foo.tpl"}
+{* will load ./templates_foo/foo.tpl *}
+```
+
+### Using absolute paths
+
+Templates outside the specified template directories
+require the `file:` template resource type, followed by the absolute
+path to the template (with leading slash).
+
+```php
+display('file:/export/templates/index.tpl');
+$smarty->display('file:/path/to/my/templates/menu.tpl');
+````
+
+And from within a Smarty template:
+```smarty
+{include file='file:/usr/local/share/templates/navigation.tpl'}
+```
+
+> **Note**
+>
+> With [`Security`](security.md) enabled, access to
+> templates outside of the specified templates directories is
+> not allowed unless you whitelist those directories.
+
+### Windows file paths
+If you are running on Windows, file paths usually include a drive
+letter (such as `C:`) at the beginning of the pathname. Be sure to use `file:` in
+the path to avoid namespace conflicts and get the desired results.
+```php
+display('file:C:/export/templates/index.tpl');
+$smarty->display('file:F:/path/to/my/templates/menu.tpl');
+```
+
+And from within Smarty template:
+```smarty
+{include file='file:D:/usr/local/share/templates/navigation.tpl'}
+```
+
+### Handling missing templates
+If the file resource cannot find the requested template, it will check if there is
+a default template handler to call. By default, there is none, and Smarty will return an error,
+but you can register a default template handler calling `Smarty::registerDefaultTemplateHandler`
+with any [callable](https://www.php.net/manual/en/language.types.callable.php).
+
+```php
+registerDefaultTemplateHandler([$this, 'handleMissingTemplate']);
+
+// ...
+
+public function handleMissingTemplate($type, $name, &$content, &$modified, Smarty $smarty) {
+ if (/* ... */) {
+ // return corrected filepath
+ return "/tmp/some/foobar.tpl";
+ } elseif (/* ... */) {
+ // return a template directly
+ $content = "the template source";
+ $modified = time();
+ return true;
+ } else {
+ // tell smarty that we failed
+ return false;
+ }
+}
+
+```
+
+## The string and eval resources
+
+Smarty can render templates from a string by using the `string:` or
+`eval:` resource.
+
+- The `string:` resource behaves much the same as a template file. The
+ template source is compiled from a string and stores the compiled
+ template code for later reuse. Each unique template string will
+ create a new compiled template file. If your template strings are
+ accessed frequently, this is a good choice. If you have frequently
+ changing template strings (or strings with low reuse value), the
+ `eval:` resource may be a better choice, as it doesn\'t save
+ compiled templates to disk.
+
+- The `eval:` resource evaluates the template source every time a page
+ is rendered. This is a good choice for strings with low reuse value.
+ If the same string is accessed frequently, the `string:` resource
+ may be a better choice.
+
+> **Note**
+>
+> With a `string:` resource type, each unique string generates a
+> compiled file. Smarty cannot detect a string that has changed, and
+> therefore will generate a new compiled file for each unique string. It
+> is important to choose the correct resource so that you do not fill
+> your disk space with wasted compiled strings.
+
+```php
+assign('foo', 'value');
+$template_string = 'display {$foo} here';
+$smarty->display('string:' . $template_string); // compiles for later reuse
+$smarty->display('eval:' . $template_string); // compiles every time
+```
+From within a Smarty template:
+```smarty
+{include file="string:$template_string"} {* compiles for later reuse *}
+{include file="eval:$template_string"} {* compiles every time *}
+```
+
+Both `string:` and `eval:` resources may be encoded with
+[`urlencode()`](https://www.php.net/urlencode) or
+[`base64_encode()`](https://www.php.net/urlencode). This is not necessary
+for the usual use of `string:` and `eval:`, but is required when using
+either of them in conjunction with the [`extends resource`](#the-extends-resource).
+
+```php
+ assign('foo','value');
+ $template_string_urlencode = urlencode('display {$foo} here');
+ $template_string_base64 = base64_encode('display {$foo} here');
+ $smarty->display('eval:urlencode:' . $template_string_urlencode); // will decode string using urldecode()
+ $smarty->display('eval:base64:' . $template_string_base64); // will decode string using base64_decode()
+```
+
+From within a Smarty template:
+```smarty
+ {include file="string:urlencode:$template_string_urlencode"} {* will decode string using urldecode() *}
+ {include file="eval:base64:$template_string_base64"} {* will decode string using base64_decode() *}
+```
+
+## The extends resource
+
+The `extends:` resource is used to define child/parent relationships. For details see section of
+[Template inheritance](inheritance.md).
+
+> **Note**
+>
+> Using the extends resource is usually not necessary. If you have a choice, it is normally more flexible and
+> intuitive to handle inheritance chains from within the templates using the [{extends} tag](inheritance.md).
+
+When `string:` and `eval:` templates are used, make sure they are properly url or base64 encoded.
+
+The templates within an inheritance chain are not compiled separately. Only a single compiled template will be generated.
+(If an `eval:` resource is found within an inheritance chain, its "don't save a compile file" property is superseded by
+the `extends:` resource.)
+
+Example:
+```php
+display('extends:parent.tpl|child.tpl|grandchild.tpl');
+
+// inheritance from multiple template sources
+$smarty->display('extends:db:parent.tpl|file:child.tpl|grandchild.tpl|eval:{block name="fooBazVar_"}hello world{/block}');
+```
+
+## The stream resource
+
+Smarty allow you to use [PHP streams](https://www.php.net/manual/en/function.stream-wrapper-register.php)
+as a template resource. Smarty will first look for a registered template resource. If nothing is
+found, it will check if a PHP stream is available. If a stream is available, Smarty will use it
+to fetch the template.
+
+For example,
+```php
+display('myresource:bar.tpl');
+```
+
+Or, from within a template:
+```smarty
+ {include file="myresource:bar.tpl"}
+```
+
+## Adding your own resource type
+You can create a class that extends `Smarty\Resource\CustomPlugin` to add your own resource type,
+for example to load template from a database.
+
+For example:
+```php
+registerResource('helloworld', new HelloWorldResource());
+```
+
+If a Resource's templates should not be run through the Smarty
+compiler, the Custom Resource may extend `\Smarty\Resource\UncompiledPlugin`.
+The Resource Handler must then implement the function
+`renderUncompiled(\Smarty\Template $_template)`. `$_template` is
+a reference to the current template and contains all assigned variables
+which the implementor can access via
+`$_template->getSmarty()->getTemplateVars()`. These Resources simply echo
+their rendered content to the output stream. The rendered output will be
+output-cached if the Smarty instance was configured accordingly. See
+`src/Resource/PhpPlugin.php` for an example.
+
+If the Resource's compiled templates should not be cached on disk, the
+Custom Resource may extend `\Smarty\Resource\RecompiledPlugin`. These Resources
+are compiled every time they are accessed. This may be an expensive
+overhead. See `src/Resource/StringEval.php` for an
+example.
+
+## Changing the default resource type
+The default resource type is `file`. If you want to change it, use `Smarty::setDefaultResourceType`.
+
+The following example will change the default resource type to `mysql`:
+```php
+setDefaultResourceType('mysql');
+```
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/api/security.md b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/api/security.md
new file mode 100644
index 000000000..07120afdb
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/api/security.md
@@ -0,0 +1,119 @@
+# Security
+
+Security is good for situations when you have untrusted parties editing
+the templates, and you want to reduce the risk of system
+security compromises through the template language.
+
+The settings of the security policy are defined by overriding public properties of an
+instance of the \Smarty\Security class. These are the possible settings:
+
+- `$secure_dir` is an array of template directories that are
+ considered secure. A directory configured using `$smarty->setTemplateDir()` is
+ considered secure implicitly. The default is an empty array.
+- `$trusted_uri` is an array of regular expressions matching URIs that
+ are considered trusted. This security directive is used by
+ [`{fetch}`](../designers/language-custom-functions/language-function-fetch.md) and
+ [`{html_image}`](../designers/language-custom-functions/language-function-html-image.md). URIs passed to
+ these functions are reduced to `{$PROTOCOL}://{$HOSTNAME}` to allow
+ simple regular expressions (without having to deal with edge cases
+ like authentication-tokens).
+
+ The expression `'#https?://.*smarty.net$#i'` would allow accessing
+ the following URIs:
+
+ - `http://smarty.net/foo`
+ - `http://smarty.net/foo`
+ - `http://www.smarty.net/foo`
+ - `http://smarty.net/foo`
+ - `https://foo.bar.www.smarty.net/foo/bla?blubb=1`
+
+ but deny access to these URIs:
+
+ - `http://smarty.com/foo` (not matching top-level domain \"com\")
+ - `ftp://www.smarty.net/foo` (not matching protocol \"ftp\")
+ - `http://www.smarty.net.otherdomain.com/foo` (not matching end of
+ domain \"smarty.net\")
+
+- `$static_classes` is an array of classes that are considered
+ trusted. The default is an empty array which allows access to all
+ static classes. To disable access to all static classes set
+ $static_classes = null.
+
+- `$streams` is an array of streams that are considered trusted and
+ can be used from within template. To disable access to all streams
+ set $streams = null. An empty array ( $streams = [] ) will
+ allow all streams. The default is array('file').
+
+- `$allowed_modifiers` is an array of (registered / autoloaded)
+ modifiers that should be accessible to the template. If this array
+ is non-empty, only the herein listed modifiers may be used. This is
+ a whitelist.
+
+- `$disabled_modifiers` is an array of (registered / autoloaded)
+ modifiers that may not be accessible to the template.
+
+- `$allowed_tags` is a boolean flag which controls if constants can
+ function-, block and filter plugins that should be accessible to the
+ template. If this array is non-empty, only the herein listed
+ modifiers may be used. This is a whitelist.
+
+- `$disabled_tags` is an array of (registered / autoloaded) function-,
+ block and filter plugins that may not be accessible to the template.
+
+- `$allow_constants` is a boolean flag which controls if constants can
+ be accessed by the template. The default is "true".
+
+- `$allow_super_globals` is a boolean flag which controls if the PHP
+ super globals can be accessed by the template. The default is
+ "true".
+
+If security is enabled, no private methods, functions or properties of
+static classes or assigned objects can be accessed (beginning with
+'_') by the template.
+
+To customize the security policy settings you can extend the
+\Smarty\Security class or create an instance of it.
+
+```php
+enableSecurity('My_Security_Policy');
+```
+
+```php
+allow_constants = false;
+
+$smarty->enableSecurity($my_security_policy);
+```
+
+```php
+enableSecurity();
+```
+
+> **Note**
+>
+> Most security policy settings are only checked when the template gets
+> compiled. For that reason you should delete all cached and compiled
+> template files when you change your security settings.
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/api/variables/assigning.md b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/api/variables/assigning.md
new file mode 100644
index 000000000..40a02c13b
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/api/variables/assigning.md
@@ -0,0 +1,139 @@
+# Assigning variables
+
+Templates start to become really useful once you know how to use variables.
+
+## Basic assigning
+Let's revisit the example from the [basics section](../basics.md). The following script assigns a value to
+the 'companyName' variable and renders the template:
+
+```php
+assign('companyName', 'AC & ME Corp.');
+
+$smarty->display('footer.tpl');
+```
+
+footer.tpl:
+```smarty
+Copyright {$companyName|escape}
+```
+
+Smarty will apply the [escape modifier](../../designers/language-modifiers/language-modifier-escape.md)
+to the value assigned to the variable
+`companyName` and replace `{$companyName|escape}` with the result.
+
+```html
+Copyright AC & ME Corp.
+```
+
+Using `$smarty->assign()` is the most common way of assigning data to templates, but there are several other methods.
+
+## Appending data to an existing variable
+Using `append()`, you can add data to an existing variable, usually an array.
+
+If you append to a string value, it is converted to an array value and
+then appended to. You can explicitly pass name/value pairs, or
+associative arrays containing the name/value pairs. If you pass the
+optional third parameter of TRUE, the value will be merged with the
+current array instead of appended.
+
+Examples:
+
+```php
+append('foo', 'Fred');
+// After this line, foo will now be seen as an array in the template
+$smarty->append('foo', 'Albert');
+
+$array = [1 => 'one', 2 => 'two'];
+$smarty->append('X', $array);
+$array2 = [3 => 'three', 4 => 'four'];
+// The following line will add a second element to the X array
+$smarty->append('X', $array2);
+
+// passing an associative array
+$smarty->append(['city' => 'Lincoln', 'state' => 'Nebraska']);
+```
+
+## Assigning to template objects
+When you use a template objects, as explained in [rendering a template](../rendering.md#creating-a-template-object),
+you can assign data to the template objects directly instead of assigning it to Smarty. This way, you can use different
+sets of data for different templates.
+
+For example:
+```php
+createTemplate('blue.tpl');
+$tplBlue->assign('name', 'The one');
+$tplBlue->display();
+
+$tplRed = $smarty->createTemplate('red.tpl');
+$tplRed->assign('name', 'Neo');
+$tplRed->display();
+```
+
+## Using data objects
+For more complex use cases, Smarty supports the concept of data objects.
+Data objects are containers to hold data. Data objects can be attached to templates when creating them.
+This allows for fine-grained re-use of data.
+
+For example:
+```php
+createData();
+
+// assign variable to the data object
+$data->assign('name', 'Neo');
+
+// create template object which will use variables from the data object
+$tpl = $smarty->createTemplate('index.tpl', $data);
+
+// display the template
+$tpl->display();
+```
+
+## Clearing assigned data
+When re-using templates, you may need to clear data assigned in a previous run. Use `clearAllAssign()` to
+clear the values of all assigned variables on data objects, template objects or the Smarty object.
+
+Examples:
+```php
+assign('Name', 'Fred');
+// ...
+$smarty->clearAllAssign();
+
+// using a data object
+$data = $smarty->createData();
+$data->assign('name', 'Neo');
+// ...
+$data->clearAllAssign();
+
+// using a template
+$tplBlue = $smarty->createTemplate('blue.tpl');
+$tplBlue->assign('name', 'The one');
+// ...
+$tplBlue->clearAllAssign();
+```
+
+Note that there it's only useful to clear assigned data if you:
+
+1. repeatedly re-use templates, and
+2. the variables used may change on each repetition
+
+If your script simply runs once and then ends, or you always assign the same variables, clearing assigned data
+is of no use.
\ No newline at end of file
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/api/variables/config-files.md b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/api/variables/config-files.md
new file mode 100644
index 000000000..107353bb7
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/api/variables/config-files.md
@@ -0,0 +1,88 @@
+# Loading data from config files
+
+Instead of [assigning data to templates from PHP](assigning.md), you can also
+use a config file.
+
+## Example config file
+Config files are best suited to manage template settings
+from one file. One example is a multi-language application.
+Instead of writing multiple templates to support different languages,
+you can write a single template file and load your language dependent strings
+from config files.
+
+Example `lang.en.ini`:
+```ini
+# global variables
+pageTitle = "Main Menu"
+
+[Customer]
+pageTitle = "Customer Info"
+
+[Login]
+pageTitle = "Login"
+focus = "username"
+Intro = """This is a value that spans more
+ than one line. you must enclose
+ it in triple quotes."""
+
+```
+
+Values of [config file variables](../../designers/language-variables/language-config-variables.md) can be in
+quotes, but not necessary. You can use either single or double quotes.
+If you have a value that spans more than one line, enclose the entire
+value with triple quotes \("""\). You can put comments into config
+files by any syntax that is not a valid config file syntax. We recommend
+using a `#` (hash) at the beginning of the line.
+
+The example config file above has two sections. Section names are
+enclosed in \[brackets\]. Section names can be arbitrary strings not
+containing `[` or `]` symbols. The variable at the top is a global
+variable. Global variables are always
+loaded from the config file. If a particular section is loaded, then the
+global variables and the variables from that section are also loaded. If
+a variable exists both as a global and in a section, the section
+variable is used.
+
+## Loading a config file
+
+Config files are loaded into templates with the built-in template
+function [`{config_load}`](../../designers/language-builtin-functions/language-function-config-load.md) or by calling
+`configLoad()` from PHP:
+
+```php
+configLoad('lang.en.ini');
+```
+
+Load a specific section with:
+
+```php
+configLoad('lang.en.ini', 'Customer');
+```
+
+Note that the global section will always be loaded.
+
+## Retrieving config variables in PHP
+
+
+## Loading from a resource
+Config files (or resources) are loaded by the same resource facilities
+as templates. That means that a config file can also be loaded from a db. See [resources](../resources.md)
+for more information.
+
+## Config overwrite
+If you name two variables the same within a section,
+the last one will be used unless you call:
+```php
+setConfigOverwrite(false);
+```
+When config overwrite is disabled, Smarty will create arrays of config file variables when it encounters
+multiple entries with the same name.
+
+See also [`{config_load}`](../../designers/language-builtin-functions/language-function-config-load.md),
+[`$default_config_handler_func`](../../programmers/api-variables/variable-default-config-handler-func.md),
+[`getConfigVars()`](../../programmers/api-functions/api-get-config-vars.md),
+[`clearConfig()`](../../programmers/api-functions/api-clear-config.md) and
+[`configLoad()`](../../programmers/api-functions/api-config-load.md)
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/api/variables/objects.md b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/api/variables/objects.md
new file mode 100644
index 000000000..9befcb18e
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/api/variables/objects.md
@@ -0,0 +1,106 @@
+# Objects
+
+Smarty allows access to PHP [objects](https://www.php.net/object) through
+the templates.
+
+> **Note**
+>
+> When you assign/register objects to templates, be sure that all
+> properties and methods accessed from the template are for presentation
+> purposes only. It is very easy to inject application logic through
+> objects, and this leads to poor designs that are difficult to manage.
+> See the Best Practices section of the Smarty website.
+
+There are two ways to access them.
+
+## Assign the object
+You can assign objects to a template and access them much like any other assigned variable.
+
+Example:
+```php
+assign('myobj', new My_Object());
+
+$smarty->display('index.tpl');
+```
+
+And here's how to access your object in `index.tpl`:
+
+```smarty
+{$myobj->meth1('foo',$bar)}
+```
+
+
+
+## Register the object
+Registerd objects use a different template syntax. Also, a registered object
+can be restricted to certain methods or
+properties. However, **a registered object cannot be looped over or
+assigned in arrays of objects**, etc.
+
+If security is enabled, no private methods or functions can be accessed
+(beginning with '_'). If a method and property of the same name exist,
+the method will be used.
+
+You can restrict the methods and properties that can be accessed by
+listing them in an array as the third registration parameter.
+
+By default, parameters passed to objects through the templates are
+passed the same way [custom tags](../../designers/language-custom-functions/index.md) get
+them. An associative array is passed as the first parameter, and the
+smarty object as the second. If you want the parameters passed one at a
+time for each argument like traditional object parameter passing, set
+the fourth registration parameter to FALSE.
+
+The optional fifth parameter has only effect with `format` being TRUE
+and contains a list of methods that should be treated as blocks. That
+means these methods have a closing tag in the template
+(`{foobar->meth2}...{/foobar->meth2}`) and the parameters to the methods
+have the same synopsis as the parameters for
+[`block tags`](../extending/block-tags.md): They get the four
+parameters `$params`, `$content`, `$smarty` and `&$repeat` and they also
+behave like block tags.
+
+```php
+registerObject('foobar', $myobj);
+
+// if we want to restrict access to certain methods or properties, list them
+$smarty->registerObject('foobar', $myobj, array('meth1','meth2','prop1'));
+
+// if you want to use the traditional object parameter format, pass a boolean of false
+$smarty->registerObject('foobar', $myobj, null, false);
+
+$smarty->display('index.tpl');
+```
+
+And here's how to access your objects in `index.tpl`:
+
+```smarty
+{* access our registered object *}
+{foobar->meth1 p1='foo' p2=$bar}
+
+{* you can also assign the output *}
+{foobar->meth1 p1='foo' p2=$bar assign='output'}
+the output was {$output}
+```
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/api/variables/static-class-methods.md b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/api/variables/static-class-methods.md
new file mode 100644
index 000000000..fd3fea4c8
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/api/variables/static-class-methods.md
@@ -0,0 +1,39 @@
+# Static Classes
+
+You can directly access static classes. The syntax is roughly the same as in
+PHP.
+
+> **Note**
+>
+> Direct access to PHP classes is not recommended. This ties the
+> underlying application code structure directly to the presentation,
+> and also complicates template syntax. It is recommended to register
+> plugins which insulate templates from PHP classes/objects. Use at your
+> own discretion.
+
+## Examples
+
+**class constant BAR**
+```smarty
+{assign var=foo value=myclass::BAR}
+```
+
+**method result**
+```smarty
+{assign var=foo value=myclass::method()}
+```
+
+**method chaining**
+```smarty
+{assign var=foo value=myclass::method1()->method2}
+```
+
+**property bar of class myclass**
+```smarty
+{assign var=foo value=myclass::$bar}
+```
+
+**using Smarty variable bar as class name**
+```smarty
+{assign var=foo value=$bar::method}
+```
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/api/variables/streams.md b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/api/variables/streams.md
new file mode 100644
index 000000000..c872cf8bb
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/api/variables/streams.md
@@ -0,0 +1,16 @@
+# Streams
+
+You can also use streams to call variables. *{$foo:bar}* will use the
+*foo://bar* stream to get the template variable.
+
+Using a PHP stream for a template variable resource from within a
+template.
+
+```smarty
+{$foo:bar}
+```
+
+NB. Support for using streams to call variables is deprecated since Smarty v5.1 and will be removed
+in a future version.
+
+See also [`Template Resources`](../resources.md)
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/appendixes/tips.md b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/appendixes/tips.md
new file mode 100644
index 000000000..e4e38d4be
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/appendixes/tips.md
@@ -0,0 +1,273 @@
+# Tips & Tricks
+
+## Blank Variable Handling
+
+There may be times when you want to print a default value for an empty
+variable instead of printing nothing, such as printing ` ` so that
+html table backgrounds work properly. Many would use an
+[`{if}`](../designers/language-builtin-functions/language-function-if.md) statement to handle this, but there is a
+shorthand way with Smarty, using the
+[`default`](../designers/language-modifiers/language-modifier-default.md) variable modifier.
+
+> **Note**
+>
+> "Undefined variable" errors will show an E\_NOTICE if not disabled in
+> PHP's [`error_reporting()`](https://www.php.net/error_reporting) level or
+> Smarty's [`$error_reporting`](../programmers/api-variables/variable-error-reporting.md) property and
+> a variable had not been assigned to Smarty.
+
+```smarty
+
+ {* the long way *}
+ {if $title eq ''}
+
+ {else}
+ {$title}
+ {/if}
+
+ {* the short way *}
+ {$title|default:' '}
+
+```
+
+See also [`default`](../designers/language-modifiers/language-modifier-default.md) modifier and [default
+variable handling](#default-variable-handling).
+
+## Default Variable Handling
+
+If a variable is used frequently throughout your templates, applying the
+[`default`](../designers/language-modifiers/language-modifier-default.md) modifier every time it is
+mentioned can get a bit ugly. You can remedy this by assigning the
+variable its default value with the
+[`{assign}`](../designers/language-builtin-functions/language-function-assign.md) function.
+
+
+ {* do this somewhere at the top of your template *}
+ {assign var='title' value=$title|default:'no title'}
+
+ {* if $title was empty, it now contains the value "no title" when you use it *}
+ {$title}
+
+
+
+See also [`default`](../designers/language-modifiers/language-modifier-default.md) modifier and [blank
+variable handling](#blank-variable-handling).
+
+## Passing variable title to header template
+
+When the majority of your templates use the same headers and footers, it
+is common to split those out into their own templates and
+[`{include}`](../designers/language-builtin-functions/language-function-include.md) them. But what if the header
+needs to have a different title, depending on what page you are coming
+from? You can pass the title to the header as an
+[attribute](../designers/language-basic-syntax/language-syntax-attributes.md) when it is included.
+
+`mainpage.tpl` - When the main page is drawn, the title of "Main Page"
+is passed to the `header.tpl`, and will subsequently be used as the
+title.
+
+```smarty
+
+{include file='header.tpl' title='Main Page'}
+{* template body goes here *}
+{include file='footer.tpl'}
+
+```
+
+`archives.tpl` - When the archives page is drawn, the title will be
+"Archives". Notice in the archive example, we are using a variable from
+the `archives_page.conf` file instead of a hard coded variable.
+
+```smarty
+
+{config_load file='archive_page.conf'}
+
+{include file='header.tpl' title=#archivePageTitle#}
+{* template body goes here *}
+{include file='footer.tpl'}
+
+```
+
+
+`header.tpl` - Notice that "Smarty News" is printed if the `$title`
+variable is not set, using the [`default`](../designers/language-modifiers/language-modifier-default.md)
+variable modifier.
+
+```smarty
+
+
+
+ {$title|default:'Smarty News'}
+
+
+
+```
+
+
+`footer.tpl`
+
+```smarty
+
+
+
+
+```
+
+
+## Dates
+
+As a rule of thumb, always pass dates to Smarty as
+[timestamps](https://www.php.net/time). This allows template designers to
+use the [`date_format`](../designers/language-modifiers/language-modifier-date-format.md) modifier for
+full control over date formatting, and also makes it easy to compare
+dates if necessary.
+
+```smarty
+{$startDate|date_format}
+```
+
+
+This will output:
+
+```
+Jan 4, 2009
+```
+
+```smarty
+
+{$startDate|date_format:"%Y/%m/%d"}
+
+```
+
+
+This will output:
+
+```
+2009/01/04
+```
+
+Dates can be compared in the template by timestamps with:
+
+```smarty
+
+{if $order_date < $invoice_date}
+ ...do something..
+{/if}
+
+```
+
+When using [`{html_select_date}`](../designers/language-custom-functions/language-function-html-select-date.md)
+in a template, the programmer will most likely want to convert the
+output from the form back into timestamp format. Here is a function to
+help you with that.
+
+```php
+
+assign($params['assign'], $ticker_info);
+}
+
+```
+
+`index.tpl`
+
+```smarty
+
+{load_ticker symbol='SMARTY' assign='ticker'}
+
+Stock Name: {$ticker.name} Stock Price: {$ticker.price}
+
+```
+
+See also: [`{include}`](../designers/language-builtin-functions/language-function-include.md).
+
+## Obfuscating E-mail Addresses
+
+Do you ever wonder how your email address gets on so many spam mailing
+lists? One way spammers collect email addresses is from web pages. To
+help combat this problem, you can make your email address show up in
+scrambled javascript in the HTML source, yet it it will look and work
+correctly in the browser. This is done with the
+[`{mailto}`](../designers/language-custom-functions/language-function-mailto.md) plugin.
+
+```smarty
+
+Send inquiries to
+{mailto address=$EmailAddress encode='javascript' subject='Hello'}
+
+
+```
+
+> **Note**
+>
+> This method isn\'t 100% foolproof. A spammer could conceivably program
+> his e-mail collector to decode these values, but not likely\....
+> hopefully..yet \... wheres that quantum computer :-?.
+
+See also [`escape`](../designers/language-modifiers/language-modifier-escape.md) modifier and
+[`{mailto}`](../designers/language-custom-functions/language-function-mailto.md).
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/appendixes/troubleshooting.md b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/appendixes/troubleshooting.md
new file mode 100644
index 000000000..8364534af
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/appendixes/troubleshooting.md
@@ -0,0 +1,104 @@
+# Troubleshooting
+
+## Smarty/PHP errors
+
+Smarty can catch many errors such as missing tag attributes or malformed
+variable names. If this happens, you will see an error similar to the
+following:
+
+```
+Warning: Smarty: [in index.tpl line 4]: syntax error: unknown tag - '%blah'
+ in /path/to/smarty/Smarty.class.php on line 1041
+
+Fatal error: Smarty: [in index.tpl line 28]: syntax error: missing section name
+ in /path/to/smarty/Smarty.class.php on line 1041
+```
+
+
+Smarty shows you the template name, the line number and the error. After
+that, the error consists of the actual line number in the Smarty class
+that the error occurred.
+
+There are certain errors that Smarty cannot catch, such as missing close
+tags. These types of errors usually end up in PHP compile-time parsing
+errors.
+
+`Parse error: parse error in /path/to/smarty/templates_c/index.tpl.php on line 75`
+
+When you encounter a PHP parsing error, the error line number will
+correspond to the compiled PHP script, NOT the template itself. Usually
+you can look at the template and spot the syntax error. Here are some
+common things to look for: missing close tags for
+[`{if}{/if}`](../designers/language-builtin-functions/language-function-if.md) or
+[`{section}{/section}`](../designers/language-builtin-functions/language-function-section.md),
+or syntax of logic within an `{if}` tag. If you can\'t find the error, you might have to
+open the compiled PHP file and go to the line number to figure out where
+the corresponding error is in the template.
+
+```
+Warning: Smarty error: unable to read resource: "index.tpl" in...
+```
+or
+```
+Warning: Smarty error: unable to read resource: "site.conf" in...
+```
+
+- The [`$template_dir`](../programmers/api-variables/variable-template-dir.md) is incorrect, doesn't
+ exist or the file `index.tpl` is not in the `templates/` directory
+
+- A [`{config_load}`](../designers/language-builtin-functions/language-function-config-load.md) function is
+ within a template (or [`configLoad()`](../programmers/api-functions/api-config-load.md) has been
+ called) and either [`$config_dir`](../programmers/api-variables/variable-config-dir.md) is
+ incorrect, does not exist or `site.conf` is not in the directory.
+
+```
+Fatal error: Smarty error: the $compile_dir 'templates_c' does not exist,
+or is not a directory...
+```
+
+- Either the [`$compile_dir`](../programmers/api-variables/variable-compile-dir.md)is incorrectly
+ set, the directory does not exist, or `templates_c` is a file and
+ not a directory.
+
+```
+Fatal error: Smarty error: unable to write to $compile_dir '....
+```
+
+
+- The [`$compile_dir`](../programmers/api-variables/variable-compile-dir.md) is not writable by the
+ web server. See the bottom of the [installing
+ smarty](../getting-started.md#installation) page for more about permissions.
+
+```
+Fatal error: Smarty error: the $cache_dir 'cache' does not exist,
+or is not a directory. in /..
+```
+
+- This means that [`$caching`](../programmers/api-variables/variable-caching.md) is enabled and
+ either; the [`$cache_dir`](../programmers/api-variables/variable-cache-dir.md) is incorrectly set,
+ the directory does not exist, or `cache/` is a file and not a
+ directory.
+
+```
+Fatal error: Smarty error: unable to write to $cache_dir '/...
+```
+
+- This means that [`$caching`](../programmers/api-variables/variable-caching.md) is enabled and the
+ [`$cache_dir`](../programmers/api-variables/variable-cache-dir.md) is not writable by the web
+ server. See the bottom of the [installing
+ smarty](../getting-started.md#installation) page for permissions.
+
+```
+Warning: filemtime(): stat failed for /path/to/smarty/cache/3ab50a623e65185c49bf17c63c90cc56070ea85c.one.tpl.php
+in /path/to/smarty/libs/sysplugins/smarty_resource.php
+```
+
+- This means that your application registered a custom error handler
+ (using [set_error_handler()](https://www.php.net/set_error_handler))
+ which is not respecting the given `$errno` as it should. If, for
+ whatever reason, this is the desired behaviour of your custom error
+ handler, please call
+ [`muteExpectedErrors()`](../programmers/api-functions/api-mute-expected-errors.md) after you've
+ registered your custom error handler.
+
+See also [debugging](../designers/chapter-debugging-console.md).
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/chapter-debugging-console.md b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/chapter-debugging-console.md
new file mode 100644
index 000000000..50acd1950
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/chapter-debugging-console.md
@@ -0,0 +1,39 @@
+# Debugging Console
+
+There is a debugging console included with Smarty. The console informs
+you of all the [included](./language-builtin-functions/language-function-include.md) templates,
+[assigned](../programmers/api-functions/api-assign.md) variables and
+[config](./language-variables/language-config-variables.md) file variables for the current
+invocation of the template. A template file named `debug.tpl` is
+included with the distribution of Smarty which controls the formatting
+of the console.
+
+Set [`$debugging`](../programmers/api-variables/variable-debugging.md) to TRUE in Smarty, and if needed
+set [`$debug_tpl`](../programmers/api-variables/variable-debug-template.md) to the template resource
+path to `debug.tpl`. When you load the page, a Javascript console window will pop
+up and give you the names of all the included templates and assigned
+variables for the current page.
+
+To see the available variables for a particular template, see the
+[`{debug}`](./language-builtin-functions/language-function-debug.md) template function. To disable the
+debugging console, set [`$debugging`](../programmers/api-variables/variable-debugging.md) to FALSE. You
+can also temporarily turn on the debugging console by putting
+`SMARTY_DEBUG` in the URL if you enable this option with
+[`$debugging_ctrl`](../programmers/api-variables/variable-debugging-ctrl.md).
+
+> **Note**
+>
+> The debugging console does not work when you use the
+> [`fetch()`](../programmers/api-functions/api-fetch.md) API, only when using
+> [`display()`](../programmers/api-functions/api-display.md). It is a set of javascript statements
+> added to the very bottom of the generated template. If you do not like
+> javascript, you can edit the `debug.tpl` template to format the output
+> however you like. Debug data is not cached and `debug.tpl` info is not
+> included in the output of the debug console.
+
+> **Note**
+>
+> The load times of each template and config file are in seconds, or
+> fractions thereof.
+
+See also [troubleshooting](../appendixes/troubleshooting.md).
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/config-files.md b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/config-files.md
new file mode 100644
index 000000000..1e1db2d5a
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/config-files.md
@@ -0,0 +1,74 @@
+# Config Files
+
+Config files are handy for designers to manage global template variables
+from one file. One example is template colors. Normally if you wanted to
+change the color scheme of an application, you would have to go through
+each and every template file and change the colors. With a config file,
+the colors can be kept in one place, and only one file needs to be
+updated.
+
+```ini
+# global variables
+pageTitle = "Main Menu"
+bodyBgColor = #000000
+tableBgColor = #000000
+rowBgColor = #00ff00
+
+[Customer]
+pageTitle = "Customer Info"
+
+[Login]
+pageTitle = "Login"
+focus = "username"
+Intro = """This is a value that spans more
+ than one line. you must enclose
+ it in triple quotes."""
+
+# hidden section
+[.Database]
+host=my.example.com
+db=ADDRESSBOOK
+user=php-user
+pass=foobar
+```
+
+
+Values of [config file variables](./language-variables/language-config-variables.md) can be in
+quotes, but not necessary. You can use either single or double quotes.
+If you have a value that spans more than one line, enclose the entire
+value with triple quotes \("""\). You can put comments into config
+files by any syntax that is not a valid config file syntax. We recommend
+using a `#` (hash) at the beginning of the line.
+
+The example config file above has two sections. Section names are
+enclosed in \[brackets\]. Section names can be arbitrary strings not
+containing `[` or `]` symbols. The four variables at the top are global
+variables, or variables not within a section. These variables are always
+loaded from the config file. If a particular section is loaded, then the
+global variables and the variables from that section are also loaded. If
+a variable exists both as a global and in a section, the section
+variable is used. If you name two variables the same within a section,
+the last one will be used unless
+[`$config_overwrite`](../programmers/api-variables/variable-config-overwrite.md) is disabled.
+
+Config files are loaded into templates with the built-in template
+function [`{config_load}`](./language-builtin-functions/language-function-config-load.md) or the API
+[`configLoad()`](../programmers/api-functions/api-config-load.md) function.
+
+You can hide variables or entire sections by prepending the variable
+name or section name with a period(.) eg `[.hidden]`. This is useful if
+your application reads the config files and gets sensitive data from
+them that the template engine does not need. If you have third parties
+doing template editing, you can be certain that they cannot read
+sensitive data from the config file by loading it into the template.
+
+Config files (or resources) are loaded by the same resource facilities
+as templates. That means that a config file can also be loaded from a db
+`$smarty->configLoad("db:my.conf")`.
+
+See also [`{config_load}`](./language-builtin-functions/language-function-config-load.md),
+[`$config_overwrite`](../programmers/api-variables/variable-config-overwrite.md),
+[`$default_config_handler_func`](../programmers/api-variables/variable-default-config-handler-func.md),
+[`getConfigVars()`](../programmers/api-functions/api-get-config-vars.md),
+[`clearConfig()`](../programmers/api-functions/api-clear-config.md) and
+[`configLoad()`](../programmers/api-functions/api-config-load.md)
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-basic-syntax/index.md b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-basic-syntax/index.md
new file mode 100644
index 000000000..e054d143c
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-basic-syntax/index.md
@@ -0,0 +1,33 @@
+# Basic Syntax
+
+A simple Smarty template could look like this:
+```smarty
+{$title|escape}
+
+ {foreach $cities as $city}
+ {$city.name|escape} ({$city.population})
+ {foreachelse}
+ no cities found
+ {/foreach}
+
+```
+
+All Smarty template tags are enclosed within delimiters. By default
+these are `{` and `}`, but they can be
+[changed](../../designers/language-basic-syntax/language-escaping.md).
+
+For the examples in this manual, we will assume that you are using the
+default delimiters. In Smarty, all content outside of delimiters is
+displayed as static content, or unchanged. When Smarty encounters
+template tags, it attempts to interpret them, and displays the
+appropriate output in their place.
+
+The basic components of the Smarty syntax are:
+
+- [Comments](language-syntax-comments.md)
+- [Variables](language-syntax-variables.md)
+- [Operators](language-syntax-operators.md)
+- [Tags](language-syntax-tags.md)
+- [Attributes](language-syntax-attributes.md)
+- [Quotes](language-syntax-quotes.md)
+- [Escaping](language-escaping.md)
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-basic-syntax/language-escaping.md b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-basic-syntax/language-escaping.md
new file mode 100644
index 000000000..9132b8c02
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-basic-syntax/language-escaping.md
@@ -0,0 +1,78 @@
+# Escaping Smarty parsing
+
+It is sometimes desirable or even necessary to have Smarty ignore
+sections it would otherwise parse. A classic example is embedding
+Javascript or CSS code in a template. The problem arises as those
+languages use the { and } characters which are also the default
+[delimiters](../language-builtin-functions/language-function-ldelim.md) for Smarty.
+
+> **Note**
+>
+> A good practice for avoiding escapement altogether is by separating
+> your Javascript/CSS into their own files and use standard HTML methods
+> to access them. This will also take advantage of browser script
+> caching. When you need to embed Smarty variables/functions into your
+> Javascript/CSS, then the following applies.
+
+In Smarty templates, the { and } braces will be ignored so long as they
+are surrounded by white space. This behavior can be disabled by setting
+the Smarty class variable [`$auto_literal`](../../programmers/api-variables/variable-auto-literal.md) to
+false.
+
+## Examples
+
+```smarty
+
+```
+
+[`{literal}..{/literal}`](../language-builtin-functions/language-function-literal.md) blocks are used
+for escaping blocks of template logic. You can also escape the braces
+individually with
+[`{ldelim}`, `{rdelim}`](../language-builtin-functions/language-function-ldelim.md) tags or
+[`{$smarty.ldelim}`,`{$smarty.rdelim}`](../language-variables/language-variables-smarty.md#smartyldelim-smartyrdelim-languagevariablessmartyldelim)
+variables.
+
+Smarty's default delimiters { and } cleanly represent presentational
+content. However, if another set of delimiters suit your needs better,
+you can change them with Smarty's
+`setLeftDelimiter()` and `setRightDelimiter()` methods.
+
+> **Note**
+>
+> Changing delimiters affects ALL template syntax and escapement. Be
+> sure to clear out cache and compiled files if you decide to change
+> them.
+
+```php
+setLeftDelimiter('');
+
+$smarty->assign('foo', 'bar');
+$smarty->assign('name', 'Albert');
+$smarty->display('example.tpl');
+```
+
+Where the template is:
+
+```smarty
+Welcome to Smarty
+
+```
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-basic-syntax/language-syntax-attributes.md b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-basic-syntax/language-syntax-attributes.md
new file mode 100644
index 000000000..e3c7d58b2
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-basic-syntax/language-syntax-attributes.md
@@ -0,0 +1,49 @@
+# Attributes
+
+Most of the [tags](./language-syntax-tags.md) take attributes that
+specify or modify their behavior. Attributes to Smarty functions are
+much like HTML attributes. Static values don't have to be enclosed in
+quotes, but it is required for literal strings. Variables with or
+without modifiers may also be used, and should not be in quotes. You can
+even use PHP function results, plugin results and complex expressions.
+
+Some attributes require boolean values (TRUE or FALSE). These can be
+specified as `true` and `false`. If an attribute has no value assigned
+it gets the default boolean value of true.
+
+## Examples
+```smarty
+{include file="header.tpl"}
+
+{include file="header.tpl" nocache} // is equivalent to nocache=true
+
+{include file="header.tpl" attrib_name="attrib value"}
+
+{include file=$includeFile}
+
+{include file=#includeFile# title="My Title"}
+
+{assign var=foo value={counter}} // plugin result
+
+{assign var=foo value=substr($bar,2,5)} // PHP function result
+
+{assign var=foo value=$bar|strlen} // using modifier
+
+{assign var=foo value=$buh+$bar|strlen} // more complex expression
+
+{html_select_date display_days=true}
+
+{mailto address="smarty@example.com"}
+
+
+ {html_options options=$companies selected=$company_id}
+
+```
+
+> **Note**
+>
+> Although Smarty can handle some very complex expressions and syntax,
+> it is a good rule of thumb to keep the template syntax minimal and
+> focused on presentation. If you find your template syntax getting too
+> complex, it may be a good idea to move the bits that do not deal
+> explicitly with presentation to PHP by way of plugins or modifiers.
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-basic-syntax/language-syntax-comments.md b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-basic-syntax/language-syntax-comments.md
new file mode 100644
index 000000000..379418efb
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-basic-syntax/language-syntax-comments.md
@@ -0,0 +1,69 @@
+# Comments
+
+Template comments are surrounded by asterisks, and that is surrounded by
+the [delimiter](../../designers/language-basic-syntax/language-escaping.md) tags like so:
+
+## Examples
+
+```smarty
+{* this is a comment *}
+```
+
+Smarty comments are NOT displayed in the final output of the template,
+unlike ``. These are useful for making internal
+notes in the templates which no one will see ;-)
+
+```smarty
+{* I am a Smarty comment, I don't exist in the compiled output *}
+
+
+ {$title}
+
+
+
+ {* another single line smarty comment *}
+
+
+ {* this multiline smarty
+ comment is
+ not sent to browser
+ *}
+
+ {*********************************************************
+ Multi line comment block with credits block
+ @ author: bg@example.com
+ @ maintainer: support@example.com
+ @ para: var that sets block style
+ @ css: the style output
+ **********************************************************}
+
+ {* The header file with the main logo and stuff *}
+ {include file='header.tpl'}
+
+
+ {* Dev note: the $includeFile var is assigned in foo.php script *}
+
+ {include file=$includeFile}
+
+ {* this block is redundant *}
+ {*
+
+ {html_options options=$vals selected=$selected_id}
+
+ *}
+
+
+ {* $affiliate|upper *}
+
+ {* you cannot nest comments *}
+ {*
+
+ {* -- none -- *}
+ {html_options options=$vals selected=$selected_id}
+
+ *}
+
+
+
+```
+
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-basic-syntax/language-syntax-operators.md b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-basic-syntax/language-syntax-operators.md
new file mode 100644
index 000000000..98a56538e
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-basic-syntax/language-syntax-operators.md
@@ -0,0 +1,88 @@
+# Operators
+
+## Basic
+
+Various basic operators can be applied directly to variable values.
+
+## Examples
+```smarty
+{$foo + 1}
+
+{$foo * $bar}
+
+{$foo->bar - $bar[1] * $baz->foo->bar() -3 * 7}
+
+{if ($foo + $bar.test % $baz * 134232 + 10 + $b + 10)}
+ ...
+{/if}
+
+{$foo = $foo + $bar}
+```
+
+> **Note**
+>
+> Although Smarty can handle some very complex expressions and syntax,
+> it is a good rule of thumb to keep the template syntax minimal and
+> focused on presentation. If you find your template syntax getting too
+> complex, it may be a good idea to move the bits that do not deal
+> explicitly with presentation to PHP by way of plugins or modifiers.
+
+## List
+The following is a list of recognized operators, which must be
+separated from surrounding elements by spaces. Note that items listed in
+\[brackets\] are optional. PHP equivalents are shown where applicable.
+
+| Operator | Alternates | Syntax Example | Meaning | PHP Equivalent |
+|--------------------|------------|----------------------|--------------------------------|--------------------|
+| == | eq | $a eq $b | equals | == |
+| != | ne, neq | $a neq $b | not equals | != |
+| > | gt | $a gt $b | greater than | > |
+| < | lt | $a lt $b | less than | < |
+| >= | gte, ge | $a ge $b | greater than or equal | >= |
+| <= | lte, le | $a le $b | less than or equal | <= |
+| === | | $a === 0 | check for identity | === |
+| ! | not | not $a | negation (unary) | ! |
+| % | mod | $a mod $b | modulo | % |
+| is \[not\] div by | | $a is not div by 4 | divisible by | $a % $b == 0 |
+| is \[not\] even | | $a is not even | \[not\] an even number (unary) | $a % 2 == 0 |
+| is \[not\] even by | | $a is not even by $b | grouping level \[not\] even | ($a / $b) % 2 == 0 |
+| is \[not\] odd | | $a is not odd | \[not\] an odd number (unary) | $a % 2 != 0 |
+| is \[not\] odd by | | $a is not odd by $b | \[not\] an odd grouping | ($a / $b) % 2 != 0 |
+| is in | | $a is in $b | exists in array | in_array($a, $b) |
+| is \[not\] in | | $a is not in $b | does not exist in array | !in_array($a, $b) |
+
+## Ternary
+You can use the `?:` (or ternary) operator to test one expression and present the value
+of the second or third expression, based on the result of the test.
+
+In other words:
+```smarty
+{$test ? "OK" : "FAIL"}
+```
+will result in OK if `$test` is set to true, and in FAIL otherwise.
+
+There is also a shorthand `?:` operator:
+```smarty
+{$myVar ?: "empty"}
+```
+will result in 'empty' if `$myVar` is not set or set to something that evaluates to false, such as an empty string.
+If `$myVar` is set to something that evaluates to true, the value of `$myVar` is returned. So, the following will
+return 'hello':
+```smarty
+{$myVar="hello"}
+{$myVar ?: "empty"}
+```
+
+## Testing for null
+If "something that evaluates to false" is to broad a test for you, you can use the `??` (or null coalescing) operator
+to trigger only if the tested value is undefined or set to null.
+```smarty
+{$myVar ?? "empty"}
+```
+will result in 'empty' if `$myVar` is not set or set to null.
+If `$myVar` is set to something that evaluates to anything else, the value of `$myVar` is returned. So, the following will
+return an empty string (''):
+```smarty
+{$myVar=""}
+{$myVar ?: "this is not shown"}
+```
\ No newline at end of file
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-basic-syntax/language-syntax-quotes.md b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-basic-syntax/language-syntax-quotes.md
new file mode 100644
index 000000000..e04e6da76
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-basic-syntax/language-syntax-quotes.md
@@ -0,0 +1,54 @@
+# Embedding Vars in Double Quotes
+
+- Smarty will recognize [assigned](../../programmers/api-functions/api-assign.md)
+ [variables](./language-syntax-variables.md) embedded in "double
+ quotes" so long as the variable name contains only numbers, letters
+ and under_scores. See [naming](https://www.php.net/language.variables)
+ for more detail.
+
+- With any other characters, for example a period(.) or
+ `$object->reference`, then the variable must be surrounded by `` `backticks` ``.
+
+- In addition, Smarty does allow embedded Smarty tags in double-quoted
+ strings. This is useful if you want to include variables with
+ modifiers, plugin or PHP function results.
+
+## Examples
+```smarty
+{func var="test $foo test"} // sees $foo
+{func var="test $foo_bar test"} // sees $foo_bar
+{func var="test `$foo[0]` test"} // sees $foo[0]
+{func var="test `$foo[bar]` test"} // sees $foo[bar]
+{func var="test $foo.bar test"} // sees $foo (not $foo.bar)
+{func var="test `$foo.bar` test"} // sees $foo.bar
+{func var="test `$foo.bar` test"|escape} // modifiers outside quotes!
+{func var="test {$foo|escape} test"} // modifiers inside quotes!
+{func var="test {time()} test"} // PHP function result
+{func var="test {counter} test"} // plugin result
+{func var="variable foo is {if !$foo}not {/if} defined"} // Smarty block function
+
+{* will replace $tpl_name with value *}
+{include file="subdir/$tpl_name.tpl"}
+
+{* does NOT replace $tpl_name *}
+{include file='subdir/$tpl_name.tpl'} // vars require double quotes!
+
+{* must have backticks as it contains a dot "." *}
+{cycle values="one,two,`$smarty.config.myval`"}
+
+{* must have backticks as it contains a dot "." *}
+{include file="`$module.contact`.tpl"}
+
+{* can use variable with dot syntax *}
+{include file="`$module.$view`.tpl"}
+```
+
+> **Note**
+>
+> Although Smarty can handle some very complex expressions and syntax,
+> it is a good rule of thumb to keep the template syntax minimal and
+> focused on presentation. If you find your template syntax getting too
+> complex, it may be a good idea to move the bits that do not deal
+> explicitly with presentation to PHP by way of plugins or modifiers.
+
+See also [`escape`](../language-modifiers/language-modifier-escape.md).
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-basic-syntax/language-syntax-tags.md b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-basic-syntax/language-syntax-tags.md
new file mode 100644
index 000000000..7142f0da4
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-basic-syntax/language-syntax-tags.md
@@ -0,0 +1,39 @@
+# Tags
+
+Every Smarty tag either prints a [variable](./language-syntax-variables.md) or
+invokes some sort of function. These are processed and displayed by
+enclosing the function and its [attributes](./language-syntax-attributes.md)
+within delimiters like so: `{funcname attr1="val1" attr2="val2"}`.
+
+## Examples
+
+```smarty
+{config_load file="colors.conf"}
+
+{include file="header.tpl"}
+
+{if $logged_in}
+ Welcome, {$name}!
+{else}
+ hi, {$name}
+{/if}
+
+{include file="footer.tpl"}
+```
+
+- Both [built-in functions](../language-builtin-functions/index.md) and [custom
+ functions](../language-custom-functions/index.md) have the same syntax within
+ templates.
+
+- Built-in functions are the **inner** workings of Smarty, such as
+ [`{if}`](../language-builtin-functions/language-function-if.md),
+ [`{section}`](../language-builtin-functions/language-function-section.md) and
+ [`{strip}`](../language-builtin-functions/language-function-strip.md). There should be no need to
+ change or modify them.
+
+- Custom tags are **additional** tags implemented via
+ [plugins](../../api/extending/introduction.md). They can be modified to your liking, or you can
+ create new ones. [`{html_options}`](../language-custom-functions/language-function-html-options.md)
+ is an example of a custom function.
+
+See also [`registerPlugin()`](../../programmers/api-functions/api-register-plugin.md)
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-basic-syntax/language-syntax-variables.md b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-basic-syntax/language-syntax-variables.md
new file mode 100644
index 000000000..78d309ace
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-basic-syntax/language-syntax-variables.md
@@ -0,0 +1,106 @@
+# Variables
+
+Template variables start with the $dollar sign. They can contain
+numbers, letters and underscores, much like a [PHP
+variable](https://www.php.net/language.variables). You can reference arrays
+by index numerically or non-numerically. Also reference object
+properties and methods.
+
+[Config file variables](../language-variables/language-config-variables.md) are an exception to
+the \$dollar syntax and are instead referenced with surrounding
+\#hashmarks\#, or via the [`$smarty.config`](../language-variables/language-variables-smarty.md#smartyconfig-languagevariablessmartyconfig) variable.
+
+## Examples
+
+```smarty
+{$foo} <-- displaying a simple variable (non array/object)
+{$foo[4]} <-- display the 5th element of a zero-indexed array
+{$foo.bar} <-- display the "bar" key value of an array, similar to PHP $foo['bar']
+{$foo.$bar} <-- display variable key value of an array, similar to PHP $foo[$bar]
+{$foo->bar} <-- display the object property "bar"
+{$foo->bar()} <-- display the return value of object method "bar"
+{#foo#} <-- display the config file variable "foo"
+{$smarty.config.foo} <-- synonym for {#foo#}
+{$foo[bar]} <-- syntax only valid in a section loop, see {section}
+{assign var=foo value='baa'}{$foo} <-- displays "baa", see {assign}
+
+Many other combinations are allowed
+
+{$foo.bar.baz}
+{$foo.$bar.$baz}
+{$foo[4].baz}
+{$foo[4].$baz}
+{$foo.bar.baz[4]}
+{$foo->bar($baz,2,$bar)} <-- passing parameters
+{"foo"} <-- static values are allowed
+
+{* display the server variable "SERVER_NAME" ($_SERVER['SERVER_NAME'])*}
+{$smarty.server.SERVER_NAME}
+
+Math and embedding tags:
+
+{$x+$y} // will output the sum of x and y.
+{assign var=foo value=$x+$y} // in attributes
+{$foo[$x+3]} // as array index
+{$foo={counter}+3} // tags within tags
+{$foo="this is message {counter}"} // tags within double quoted strings
+
+Defining Arrays:
+
+{assign var=foo value=[1,2,3]}
+{assign var=foo value=['y'=>'yellow','b'=>'blue']}
+{assign var=foo value=[1,[9,8],3]} // can be nested
+
+Short variable assignment:
+
+{$foo=$bar+2}
+{$foo = strlen($bar)} // function in assignment
+{$foo = myfunct( ($x+$y)*3 )} // as function parameter
+{$foo.bar=1} // assign to specific array element
+{$foo.bar.baz=1}
+{$foo[]=1} // appending to an array
+
+Smarty "dot" syntax (note: embedded {} are used to address ambiguities):
+
+{$foo.a.b.c} => $foo['a']['b']['c']
+{$foo.a.$b.c} => $foo['a'][$b]['c'] // with variable index
+{$foo.a.{$b+4}.c} => $foo['a'][$b+4]['c'] // with expression as index
+{$foo.a.{$b.c}} => $foo['a'][$b['c']] // with nested index
+
+PHP-like syntax, alternative to "dot" syntax:
+
+{$foo[1]} // normal access
+{$foo['bar']}
+{$foo['bar'][1]}
+{$foo[$x+$x]} // index may contain any expression
+{$foo[$bar[1]]} // nested index
+{$foo[section_name]} // smarty {section} access, not array access!
+
+Variable variables:
+
+$foo // normal variable
+$foo_{$bar} // variable name containing other variable
+$foo_{$x+$y} // variable name containing expressions
+$foo_{$bar}_buh_{$blar} // variable name with multiple segments
+{$foo_{$x}} // will output the variable $foo_1 if $x has a value of 1.
+
+Object chaining:
+
+{$object->method1($x)->method2($y)}
+
+```
+
+> **Note**
+>
+> Although Smarty can handle some very complex expressions and syntax,
+> it is a good rule of thumb to keep the template syntax minimal and
+> focused on presentation. If you find your template syntax getting too
+> complex, it may be a good idea to move the bits that do not deal
+> explicitly with presentation to PHP by way of plugins or modifiers.
+
+Request variables such as `$_GET`, `$_SESSION`, etc are available via
+the reserved [`$smarty`](../language-variables/language-variables-smarty.md) variable.
+
+See also [`$smarty`](../language-variables/language-variables-smarty.md), [config
+variables](../language-variables/language-config-variables.md)
+[`{assign}`](../language-builtin-functions/language-function-assign.md) and [`assign()`](../../programmers/api-functions/api-assign.md).
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-builtin-functions.md b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-builtin-functions.md
new file mode 100644
index 000000000..e69de29bb
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-builtin-functions/index.md b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-builtin-functions/index.md
new file mode 100644
index 000000000..852b392fc
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-builtin-functions/index.md
@@ -0,0 +1,35 @@
+# Built-in Functions
+
+Smarty comes with several built-in functions. These built-in functions
+are the integral part of the smarty template engine. They are compiled
+into corresponding inline PHP code for maximum performance.
+
+You cannot create your own [custom tags](../language-custom-functions/index.md) with the same name; and you
+should not need to modify the built-in functions.
+
+A few of these functions have an `assign` attribute which collects the
+result the function to a named template variable instead of being
+output; much like the [`{assign}`](language-function-assign.md) function.
+
+- [{append}](language-function-append.md)
+- [{assign} or {$var=...}](language-function-assign.md)
+- [{block}](language-function-block.md)
+- [{call}](language-function-call.md)
+- [{capture}](language-function-capture.md)
+- [{config_load}](language-function-config-load.md)
+- [{debug}](language-function-debug.md)
+- [{extends}](language-function-extends.md)
+- [{for}](language-function-for.md)
+- [{foreach}, {foreachelse}](language-function-foreach.md)
+- [{function}](language-function-function.md)
+- [{if}, {elseif}, {else}](language-function-if.md)
+- [{include}](language-function-include.md)
+- [{insert}](language-function-insert.md)
+- [{ldelim}, {rdelim}](language-function-ldelim.md)
+- [{literal}](language-function-literal.md)
+- [{nocache}](language-function-nocache.md)
+- [{section}, {sectionelse}](language-function-section.md)
+- [{setfilter}](language-function-setfilter.md)
+- [{strip}](language-function-strip.md)
+- [{while}](language-function-while.md)
+
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-append.md b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-append.md
new file mode 100644
index 000000000..37e1b81e9
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-append.md
@@ -0,0 +1,49 @@
+# {append}
+
+`{append}` is used for creating or appending template variable arrays
+**during the execution of a template**.
+
+## Attributes
+
+| Attribute | Required | Description |
+|-----------|------------|----------------------------------------------------------------------------------------------------|
+| var | | The name of the variable being assigned |
+| value | | The value being assigned |
+| index | (optional) | The index for the new array element. If not specified the value is append to the end of the array. |
+| scope | (optional) | The scope of the assigned variable: parent, root or global. Defaults to local if omitted. |
+
+## Option Flags
+
+| Name | Description |
+|---------|-----------------------------------------------------|
+| nocache | Assigns the variable with the 'nocache' attribute |
+
+> **Note**
+>
+> Assignment of variables in-template is essentially placing application
+> logic into the presentation that may be better handled in PHP. Use at
+> your own discretion.
+
+## Examples
+
+```smarty
+{append var='name' value='Bob' index='first'}
+{append var='name' value='Meyer' index='last'}
+// or
+{append 'name' 'Bob' index='first'} {* short-hand *}
+{append 'name' 'Meyer' index='last'} {* short-hand *}
+
+The first name is {$name.first}.
+The last name is {$name.last}.
+```
+
+The above example will output:
+
+
+ The first name is Bob.
+ The last name is Meyer.
+
+
+
+See also [`append()`](#api.append) and
+[`getTemplateVars()`](#api.get.template.vars).
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-assign.md b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-assign.md
new file mode 100644
index 000000000..abcc8e5a6
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-assign.md
@@ -0,0 +1,148 @@
+# {assign}, {$var=...}
+
+`{assign}` or `{$var=...}` is used for assigning template variables **during the
+execution of a template**.
+
+## Attributes of the {assign} syntax
+| Attribute Name | Required | Description |
+|----------------|------------|-----------------------------------------------------------------------|
+| var | | The name of the variable being assigned |
+| value | | The value being assigned |
+| scope | (optional) | The scope of the assigned variable: 'parent','root' or 'global' |
+
+## Attributes of the {$var=...} syntax
+| Attribute Name | Required | Description |
+|----------------|------------|-----------------------------------------------------------------------|
+| scope | (optional) | The scope of the assigned variable: 'parent','root' or 'global' |
+
+## Option Flags
+| Name | Description |
+|---------|---------------------------------------------------|
+| nocache | Assigns the variable with the 'nocache' attribute |
+
+
+> **Note**
+>
+> Assignment of variables in-template is essentially placing application
+> logic into the presentation that may be better handled in PHP. Use at
+> your own discretion.
+
+## Examples
+
+```smarty
+{assign var="name" value="Bob"} {* or *}
+{assign "name" "Bob"} {* short-hand, or *}
+{$name='Bob'}
+
+The value of $name is {$name}.
+```
+
+
+The above example will output:
+
+```
+The value of $name is Bob.
+```
+
+
+```smarty
+{assign var="name" value="Bob" nocache} {* or *}
+{assign "name" "Bob" nocache} {* short-hand, or *}
+{$name='Bob' nocache}
+
+The value of $name is {$name}.
+```
+The above example will output:
+```
+The value of $name is Bob.
+```
+
+
+```smarty
+{assign var=running_total value=$running_total+$some_array[$row].some_value} {* or *}
+{$running_total=$running_total+$some_array[row].some_value}
+```
+
+Variables assigned in the included template will be seen in the
+including template.
+
+```smarty
+{include file="sub_template.tpl"}
+
+{* display variable assigned in sub_template *}
+{$foo}
+```
+
+The template above includes the example `sub_template.tpl` below:
+
+```smarty
+
+{* foo will be known also in the including template *}
+{assign var="foo" value="something" scope=parent}
+{$foo="something" scope=parent}
+
+{* bar is assigned only local in the including template *}
+{assign var="bar" value="value"} {* or *}
+{$var="value"}
+
+```
+
+You can assign a variable to root of the current root tree. The variable
+is seen by all templates using the same root tree.
+
+```smarty
+{assign var=foo value="bar" scope="root"}
+```
+
+A global variable is seen by all templates.
+
+```smarty
+{assign var=foo value="bar" scope="global"} {* or *}
+{assign "foo" "bar" scope="global"} {* short-hand, or *}
+{$foo="bar" scope="global"}
+```
+
+For more information on variable scope, please read the page on [variable scopes](../language-variables/language-variable-scopes.md).
+
+To access `{assign}` variables from a php script use
+[`getTemplateVars()`](../../programmers/api-functions/api-get-template-vars.md).
+Here's the template that creates the variable `$foo`.
+
+```smarty
+{assign var="foo" value="Smarty"} {* or *}
+{$foo="Smarty"}
+```
+
+The template variables are only available after/during template
+execution as in the following script.
+
+```php
+getTemplateVars('foo');
+
+// fetch the template to a variable
+$whole_page = $smarty->fetch('index.tpl');
+
+// this will output 'smarty' as the template has been executed
+echo $smarty->getTemplateVars('foo');
+
+$smarty->assign('foo','Even smarter');
+
+// this will output 'Even smarter'
+echo $smarty->getTemplateVars('foo');
+```
+
+The following functions can also *optionally* assign template variables: [`{capture}`](#language.function.capture),
+[`{include}`](#language.function.include),
+[`{counter}`](#language.function.counter),
+[`{cycle}`](#language.function.cycle),
+[`{eval}`](#language.function.eval),
+[`{fetch}`](#language.function.fetch),
+[`{math}`](#language.function.math) and
+[`{textformat}`](#language.function.textformat).
+
+See also [`{append}`](./language-function-append.md),
+[`assign()`](#api.assign) and
+[`getTemplateVars()`](#api.get.template.vars).
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-block.md b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-block.md
new file mode 100644
index 000000000..05334e2f6
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-block.md
@@ -0,0 +1,201 @@
+# {block}
+
+`{block}` is used to define a named area of template source for template
+inheritance. For details see section of [Template
+Inheritance](../../api/inheritance.md).
+
+The `{block}` template source area of a child template will replace the
+corresponding areas in the parent template(s).
+
+Optionally `{block}` areas of child and parent templates can be merged
+into each other. You can append or prepend the parent `{block}` content
+by using the `append` or `prepend` option flag with the child's `{block}`
+definition. With `{$smarty.block.parent}` the `{block}` content of
+the parent template can be inserted at any location of the child
+`{block}` content. `{$smarty.block.child}` inserts the `{block}` content
+of the child template at any location of the parent `{block}`.
+
+`{blocks}'s` can be nested.
+
+## Attributes
+
+| Attribute Name | Required | Description |
+|----------------|----------|----------------------------------------------------------------------------------------------------------------------|
+| name | yes | The name of the template source block |
+| assign | no | The name of variable to assign the output of the block to. |
+
+> **Note**
+>
+> The assign attribute only works on the block that actually gets executed, so you may need
+> to add it to each child block as well.
+
+
+## Option Flags (in child templates only):
+
+| Name | Description |
+|---------|-----------------------------------------------------------------------------------------|
+| append | The `{block}` content will be appended to the content of the parent template `{block}` |
+| prepend | The `{block}` content will be prepended to the content of the parent template `{block}` |
+| hide | Ignore the block content if no child block of same name is existing. |
+| nocache | Disables caching of the `{block}` content |
+
+
+## Examples
+
+parent.tpl
+
+```smarty
+
+
+ {block name="title"}Default Title{/block}
+ {block "title"}Default Title{/block} {* short-hand *}
+
+
+```
+
+
+child.tpl
+
+```smarty
+ {extends file="parent.tpl"}
+ {block name="title"}
+ Page Title
+ {/block}
+```
+
+
+The result would look like
+
+```html
+
+
+ Page Title
+
+
+```
+
+parent.tpl
+
+```smarty
+
+
+ {block name="title"}Title - {/block}
+
+
+```
+
+
+child.tpl
+
+```smarty
+ {extends file="parent.tpl"}
+ {block name="title" append}
+ Page Title
+ {/block}
+```
+
+
+The result would look like
+
+```html
+
+
+ Title - Page Title
+
+
+```
+
+parent.tpl
+
+```smarty
+
+
+ {block name="title"} is my title{/block}
+
+
+```
+
+child.tpl
+
+```smarty
+ {extends file="parent.tpl"}
+ {block name="title" prepend}
+ Page Title
+ {/block}
+```
+
+
+The result would look like
+
+```html
+
+
+ Page title is my titel
+
+
+```
+
+parent.tpl
+
+```smarty
+
+
+ {block name="title"}The {$smarty.block.child} was inserted here{/block}
+
+
+```
+
+child.tpl
+
+```smarty
+ {extends file="parent.tpl"}
+ {block name="title"}
+ Child Title
+ {/block}
+```
+
+The result would look like
+
+```html
+
+
+ The Child Title was inserted here
+
+
+```
+
+parent.tpl
+
+```smarty
+
+
+ {block name="title"}Parent Title{/block}
+
+
+```
+
+
+child.tpl
+
+```smarty
+ {extends file="parent.tpl"}
+ {block name="title"}
+ You will see now - {$smarty.block.parent} - here
+ {/block}
+```
+
+The result would look like
+
+```html
+
+
+ You will see now - Parent Title - here
+
+
+```
+
+See also [Template
+Inheritance](../../api/inheritance.md),
+[`$smarty.block.parent`](../language-variables/language-variables-smarty.md#smartyblockparent-languagevariablessmartyblockparent),
+[`$smarty.block.child`](../language-variables/language-variables-smarty.md#smartyblockchild-languagevariablessmartyblockchild), and
+[`{extends}`](./language-function-extends.md)
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-call.md b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-call.md
new file mode 100644
index 000000000..c07fb49b9
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-call.md
@@ -0,0 +1,77 @@
+# {call}
+
+`{call}` is used to call a template function defined by the
+[`{function}`](./language-function-function.md) tag just like a plugin
+function.
+
+> **Note**
+>
+> Template functions are defined global. Since the Smarty compiler is a
+> single-pass compiler, The `{call}` tag must
+> be used to call a template function defined externally from the given
+> template. Otherwise you can directly use the function as
+> `{funcname ...}` in the template.
+
+- The `{call}` tag must have the `name` attribute which contains the
+ name of the template function.
+
+- Values for variables can be passed to the template function as
+ [attributes](../language-basic-syntax/language-syntax-attributes.md).
+
+## Attributes
+
+| Attribute Name | Required | Description |
+|----------------|----------|------------------------------------------------------------------------------------------|
+| name | Yes | The name of the template function |
+| assign | No | The name of the variable that the output of called template function will be assigned to |
+| [var ...] | No | variable to pass local to template function |
+
+## Option Flags
+
+| Name | Description |
+|---------|--------------------------------------------|
+| nocache | Call the template function in nocache mode |
+
+
+## Examples
+
+```smarty
+ {* define the function *}
+ {function name=menu level=0}
+
+ {foreach $data as $entry}
+ {if is_array($entry)}
+ {$entry@key}
+ {call name=menu data=$entry level=$level+1}
+ {else}
+ {$entry}
+ {/if}
+ {/foreach}
+
+ {/function}
+
+ {* create an array to demonstrate *}
+ {$menu = ['item1','item2','item3' => ['item3-1','item3-2','item3-3' =>
+ ['item3-3-1','item3-3-2']],'item4']}
+
+ {* run the array through the function *}
+ {call name=menu data=$menu}
+ {call menu data=$menu} {* short-hand *}
+```
+
+
+Will generate the following output
+
+```
+ * item1
+ * item2
+ * item3
+ o item3-1
+ o item3-2
+ o item3-3
+ + item3-3-1
+ + item3-3-2
+ * item4
+```
+
+See also [`{function}`](./language-function-function.md).
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-capture.md b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-capture.md
new file mode 100644
index 000000000..83f4d02d7
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-capture.md
@@ -0,0 +1,75 @@
+# {capture}
+
+`{capture}` is used to collect the output of the template between the
+tags into a variable instead of displaying it. Any content between
+`{capture name='foo'}` and `{/capture}` is collected into the variable
+specified in the `name` attribute.
+
+The captured content can be used in the template from the variable
+[`$smarty.capture.foo`](../language-variables/language-variables-smarty.md#smartycapture-languagevariablessmartycapture) where "foo"
+is the value passed in the `name` attribute. If you do not supply the
+`name` attribute, then "default" will be used as the name ie
+`$smarty.capture.default`.
+
+`{capture}'s` can be nested.
+
+## Attributes
+
+| Attribute Name | Required | Description |
+|----------------|----------|----------------------------------------------------------------------|
+| name | Yes | The name of the captured block |
+| assign | No | The variable name where to assign the captured output to |
+| append | No | The name of an array variable where to append the captured output to |
+
+## Option Flags
+
+| Name | Description |
+|---------|-----------------------------------------|
+| nocache | Disables caching of this captured block |
+
+
+## Examples
+
+```smarty
+{* we don't want to print a div tag unless content is displayed *}
+{capture name="banner"}
+{capture "banner"} {* short-hand *}
+ {include file="get_banner.tpl"}
+{/capture}
+
+{if $smarty.capture.banner ne ""}
+{$smarty.capture.banner}
+{/if}
+```
+
+This example demonstrates the capture function.
+```smarty
+
+{capture name=some_content assign=popText}
+{capture some_content assign=popText} {* short-hand *}
+The server is {$my_server_name|upper} at {$my_server_addr}
+Your ip is {$my_ip}.
+{/capture}
+{$popText}
+```
+
+
+This example also demonstrates how multiple calls of capture can be used
+to create an array with captured content.
+
+```smarty
+{capture append="foo"}hello{/capture}I say just {capture append="foo"}world{/capture}
+{foreach $foo as $text}{$text} {/foreach}
+```
+
+The above example will output:
+
+```
+I say just hello world
+```
+
+
+See also [`$smarty.capture`](../language-variables/language-variables-smarty.md#smartycapture-languagevariablessmartycapture),
+[`{eval}`](../language-custom-functions/language-function-eval.md),
+[`{fetch}`](../language-custom-functions/language-function-fetch.md), [`fetch()`](../../programmers/api-functions/api-fetch.md) and
+[`{assign}`](./language-function-assign.md).
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-config-load.md b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-config-load.md
new file mode 100644
index 000000000..1972179d1
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-config-load.md
@@ -0,0 +1,87 @@
+# {config_load}
+
+`{config_load}` is used for loading config
+[`#variables#`](#language.config.variables) from a [configuration file](#config.files) into the template.
+
+## Attributes
+
+| Attribute Name | Required | Description |
+|----------------|----------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
+| file | Yes | The name of the config file to include |
+| section | No | The name of the section to load |
+
+
+## Examples
+
+The `example.conf` file.
+
+```ini
+#this is config file comment
+
+# global variables
+pageTitle = "Main Menu"
+bodyBgColor = #000000
+tableBgColor = #000000
+rowBgColor = #00ff00
+
+#customer variables section
+[Customer]
+pageTitle = "Customer Info"
+```
+
+and the template
+
+```smarty
+{config_load file="example.conf"}
+{config_load "example.conf"} {* short-hand *}
+
+
+ {#pageTitle#|default:"No title"}
+
+
+
+ First
+ Last
+ Address
+
+
+
+
+```
+
+[Config Files](#config.files) may also contain sections. You can load
+variables from within a section with the added attribute `section`. Note
+that global config variables are always loaded along with section
+variables, and same-named section variables overwrite the globals.
+
+> **Note**
+>
+> Config file *sections* and the built-in template function called
+> [`{section}`](../language-builtin-functions/language-function-section.md) have nothing to do with each
+> other, they just happen to share a common naming convention.
+
+```smarty
+{config_load file='example.conf' section='Customer'}
+{config_load 'example.conf' 'Customer'} {* short-hand *}
+
+
+ {#pageTitle#}
+
+
+
+ First
+ Last
+ Address
+
+
+
+
+```
+
+See [`$config_overwrite`](../../programmers/api-variables/variable-config-overwrite.md) to create arrays
+of config file variables.
+
+See also the [config files](../config-files.md) page, [config variables](../language-variables/language-config-variables.md) page,
+[`$config_dir`](../../programmers/api-variables/variable-config-dir.md),
+[`getConfigVars()`](../../programmers/api-functions/api-get-config-vars.md) and
+[`configLoad()`](../../programmers/api-functions/api-config-load.md).
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-debug.md b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-debug.md
new file mode 100644
index 000000000..29485d549
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-debug.md
@@ -0,0 +1,17 @@
+# {debug}
+
+`{debug}` dumps the debug console to the page. This works regardless of
+the [debug](../chapter-debugging-console.md) settings in the php script.
+Since this gets executed at runtime, this is only able to show the
+[assigned](../../programmers/api-functions/api-assign.md) variables; not the templates that are in use.
+However, you can see all the currently available variables within the
+scope of a template.
+
+If caching is enabled and a page is loaded from cache `{debug}` does
+show only the variables which assigned for the cached page.
+
+In order to see also the variables which have been locally assigned
+within the template it does make sense to place the `{debug}` tag at the
+end of the template.
+
+See also the [debugging console page](../chapter-debugging-console.md).
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-extends.md b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-extends.md
new file mode 100644
index 000000000..06241d93b
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-extends.md
@@ -0,0 +1,37 @@
+# {extends}
+
+`{extends}` tags are used in child templates in template inheritance for
+extending parent templates. For details see section of [Template
+Inheritance](../../api/inheritance.md).
+
+- The `{extends}` tag must be on the first line of the template.
+
+- If a child template extends a parent template with the `{extends}`
+ tag it may contain only `{block}` tags. Any other template content
+ is ignored.
+
+- Use the syntax for [template resources](../../api/resources.md) to extend files
+ outside the [`$template_dir`](../../programmers/api-variables/variable-template-dir.md) directory.
+
+## Attributes
+
+| Attribute | Required | Description |
+|-----------|----------|-------------------------------------------------|
+| file | Yes | The name of the template file which is extended |
+
+> **Note**
+>
+> When extending a variable parent like `{extends file=$parent_file}`,
+> make sure you include `$parent_file` in the
+> [`$compile_id`](../../programmers/api-variables/variable-compile-id.md). Otherwise, Smarty cannot
+> distinguish between different `$parent_file`s.
+
+## Examples
+
+```smarty
+{extends file='parent.tpl'}
+{extends 'parent.tpl'} {* short-hand *}
+```
+
+See also [Template Inheritance](../../api/inheritance.md)
+and [`{block}`](./language-function-block.md).
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-for.md b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-for.md
new file mode 100644
index 000000000..619b61efe
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-for.md
@@ -0,0 +1,91 @@
+# {for}
+
+The `{for}{forelse}` tag is used to create simple loops. The following different formats are supported:
+
+- `{for $var=$start to $end}` simple loop with step size of 1.
+
+- `{for $var=$start to $end step $step}` loop with individual step
+ size.
+
+`{forelse}` is executed when the loop is not iterated.
+
+## Attributes
+
+| Attribute | Required | Description |
+|-----------|----------|--------------------------------|
+| max | No | Limit the number of iterations |
+
+## Option Flags
+
+| Name | Description |
+|---------|--------------------------------------|
+| nocache | Disables caching of the `{for}` loop |
+
+## Examples
+
+```smarty
+
+ {for $foo=1 to 3}
+ {$foo}
+ {/for}
+
+```
+
+The above example will output:
+
+```html
+
+```
+
+```php
+assign('to',10);
+```
+
+```smarty
+
+ {for $foo=3 to $to max=3}
+ {$foo}
+ {/for}
+
+```
+
+The above example will output:
+
+```html
+
+```
+
+```php
+assign('start',10);
+$smarty->assign('to',5);
+```
+
+```smarty
+
+ {for $foo=$start to $to}
+ {$foo}
+ {forelse}
+ no iteration
+ {/for}
+
+```
+
+The above example will output:
+
+```
+ no iteration
+```
+
+See also [`{foreach}`](./language-function-foreach.md),
+[`{section}`](./language-function-section.md) and
+[`{while}`](./language-function-while.md)
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-foreach.md b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-foreach.md
new file mode 100644
index 000000000..38d151169
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-foreach.md
@@ -0,0 +1,389 @@
+# {foreach},{foreachelse}
+
+`{foreach}` is used for looping over arrays of data. `{foreach}` has a
+simpler and cleaner syntax than the
+[`{section}`](./language-function-section.md) loop, and can also loop over
+associative arrays.
+
+## Option Flags
+
+| Name | Description |
+|---------|------------------------------------------|
+| nocache | Disables caching of the `{foreach}` loop |
+
+
+## Examples
+
+```smarty
+
+{foreach $arrayvar as $itemvar}
+ {$itemvar|escape}
+{/foreach}
+
+{foreach $arrayvar as $keyvar=>$itemvar}
+ {$keyvar}: {$itemvar|escape}
+{/foreach}
+
+```
+> **Note**
+>
+> This foreach syntax does not accept any named attributes. This syntax
+> is new to Smarty 3, however the Smarty 2.x syntax
+> `{foreach from=$myarray key="mykey" item="myitem"}` is still
+> supported.
+
+- `{foreach}` loops can be nested.
+
+- The `array` variable, usually an array of values, determines the
+ number of times `{foreach}` will loop. You can also pass an integer
+ for arbitrary loops.
+
+- `{foreachelse}` is executed when there are no values in the `array`
+ variable.
+
+- `{foreach}` properties are [`@index`](#index),
+ [`@iteration`](#iteration),
+ [`@first`](#first),
+ [`@last`](#last),
+ [`@show`](#show),
+ [`@total`](#total).
+
+- `{foreach}` constructs are [`{break}`](#break),
+ [`{continue}`](#continue).
+
+- Instead of specifying the `key` variable you can access the current
+ key of the loop item by `{$item@key}` (see examples below).
+
+> **Note**
+>
+> The `$var@property` syntax is new to Smarty 3, however when using the
+> Smarty 2 `{foreach from=$myarray key="mykey" item="myitem"}` style
+> syntax, the `$smarty.foreach.name.property` syntax is still supported.
+
+> **Note**
+>
+> Although you can retrieve the array key with the syntax
+> `{foreach $myArray as $myKey => $myValue}`, the key is always
+> available as `$myValue@key` within the foreach loop.
+
+```php
+assign('myColors', $arr);
+```
+
+Template to output `$myColors` in an un-ordered list
+
+```smarty
+
+ {foreach $myColors as $color}
+ {$color}
+ {/foreach}
+
+```
+
+The above example will output:
+
+```html
+
+```
+
+```php
+ 'John', 'lname' => 'Doe', 'email' => 'j.doe@example.com');
+$smarty->assign('myPeople', $people);
+```
+
+Template to output `$myArray` as key/value pairs.
+
+```smarty
+
+ {foreach $myPeople as $value}
+ {$value@key}: {$value}
+ {/foreach}
+
+```
+
+The above example will output:
+
+```html
+
+ fname: John
+ lname: Doe
+ email: j.doe@example.com
+
+```
+
+Assign an array to Smarty, the key contains the key for each looped
+value.
+
+```php
+assign(
+ 'contacts',
+ [
+ ['phone' => '555-555-1234', 'fax' => '555-555-5678', 'cell' => '555-555-0357'],
+ ['phone' => '800-555-4444', 'fax' => '800-555-3333', 'cell' => '800-555-2222'],
+ ]
+ );
+```
+
+The template to output `$contact`.
+
+```smarty
+{* key always available as a property *}
+{foreach $contacts as $contact}
+ {foreach $contact as $value}
+ {$value@key}: {$value}
+ {/foreach}
+{/foreach}
+
+{* accessing key the PHP syntax alternate *}
+{foreach $contacts as $contact}
+ {foreach $contact as $key => $value}
+ {$key}: {$value}
+ {/foreach}
+{/foreach}
+```
+
+Either of the above examples will output:
+
+```
+ phone: 555-555-1234
+ fax: 555-555-5678
+ cell: 555-555-0357
+ phone: 800-555-4444
+ fax: 800-555-3333
+ cell: 800-555-2222
+```
+
+A database (PDO) example of looping over search results. This example is
+looping over a PHP iterator instead of an array().
+
+```php
+ true));
+
+ $res = $db->prepare("select * from users");
+ $res->execute();
+ $res->setFetchMode(PDO::FETCH_LAZY);
+
+ // assign to smarty
+ $smarty->assign('res',$res);
+
+ $smarty->display('index.tpl');?>
+```
+
+```smarty
+{foreach $res as $r}
+ {$r.id}
+ {$r.name}
+{foreachelse}
+ .. no results ..
+{/foreach}
+```
+
+The above is assuming the results contain the columns named `id` and
+`name`.
+
+What is the advantage of an iterator vs. looping over a plain old array?
+With an array, all the results are accumulated into memory before being
+looped. With an iterator, each result is loaded/released within the
+loop. This saves processing time and memory, especially for very large
+result sets.
+
+## @index
+
+`index` contains the current array index, starting with zero.
+
+```smarty
+{* output empty row on the 4th iteration (when index is 3) *}
+
+ {foreach $items as $i}
+ {if $i@index eq 3}
+ {* put empty table row *}
+ nbsp;
+ {/if}
+ {$i.label}
+ {/foreach}
+
+```
+
+
+## @iteration
+
+`iteration` contains the current loop iteration and always starts at
+one, unlike [`index`](#index). It is incremented by one
+on each iteration.
+
+The *"is div by"* operator can be used to detect a specific iteration.
+Here we bold-face the name every 4th iteration.
+
+```smarty
+{foreach $myNames as $name}
+ {if $name@iteration is div by 4}
+ {$name}
+ {/if}
+ {$name}
+{/foreach}
+```
+
+The *"is even by"* and *"is odd by"* operators can be used to
+alternate something every so many iterations. Choosing between even or
+odd rotates which one starts. Here we switch the font color every 3rd
+iteration.
+
+```smarty
+ {foreach $myNames as $name}
+ {if $name@index is even by 3}
+ {$name}
+ {else}
+ {$name}
+ {/if}
+ {/foreach}
+```
+
+This will output something similar to this:
+
+```html
+...
+...
+...
+...
+...
+...
+...
+...
+...
+...
+...
+...
+...
+```
+
+## @first
+
+`first` is TRUE if the current `{foreach}` iteration is the initial one.
+Here we display a table header row on the first iteration.
+
+```smarty
+{* show table header at first iteration *}
+
+ {foreach $items as $i}
+ {if $i@first}
+
+ key
+ name
+
+ {/if}
+
+ {$i@key}
+ {$i.name}
+
+ {/foreach}
+
+```
+
+## @last
+
+`last` is set to TRUE if the current `{foreach}` iteration is the final
+one. Here we display a horizontal rule on the last iteration.
+
+```smarty
+{* Add horizontal rule at end of list *}
+{foreach $items as $item}
+ {$item.name} {if $item@last} {else},{/if}
+{foreachelse}
+ ... no items to loop ...
+{/foreach}
+```
+
+## @show
+
+The show `show` property can be used after the execution of a
+`{foreach}` loop to detect if data has been displayed or not. `show` is
+a boolean value.
+
+```smarty
+
+ {foreach $myArray as $name}
+ {$name}
+ {/foreach}
+
+{if $name@show} do something here if the array contained data {/if}
+```
+
+## @total
+
+`total` contains the number of iterations that this `{foreach}` will
+loop. This can be used inside or after the `{foreach}`.
+
+```smarty
+{* show number of rows at end *}
+{foreach $items as $item}
+ {$item.name}
+ {if $item@last}
+ {$item@total} items
+ {/if}
+{foreachelse}
+ ... no items to loop ...
+{/foreach}
+```
+
+See also [`{section}`](./language-function-section.md),
+[`{for}`](./language-function-for.md) and
+[`{while}`](./language-function-while.md)
+
+## {break}
+
+`{break}` aborts the iteration of the array
+
+```smarty
+ {$data = [1,2,3,4,5]}
+ {foreach $data as $value}
+ {if $value == 3}
+ {* abort iterating the array *}
+ {break}
+ {/if}
+ {$value}
+ {/foreach}
+ {*
+ prints: 1 2
+ *}
+```
+
+## {continue}
+
+`{continue}` leaves the current iteration and begins with the next
+iteration.
+
+```smarty
+ {$data = [1,2,3,4,5]}
+ {foreach $data as $value}
+ {if $value == 3}
+ {* skip this iteration *}
+ {continue}
+ {/if}
+ {$value}
+ {/foreach}
+ {*
+ prints: 1 2 4 5
+ *}
+```
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-function.md b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-function.md
new file mode 100644
index 000000000..cee6762c8
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-function.md
@@ -0,0 +1,89 @@
+# {function}
+
+`{function}` is used to create functions within a template and call them
+just like a plugin function. Instead of writing a plugin that generates
+presentational content, keeping it in the template is often a more
+manageable choice. It also simplifies data traversal, such as deeply
+nested menus.
+
+> **Note**
+>
+> Template functions are defined global. Since the Smarty compiler is a
+> single-pass compiler, The [`{call}`](#language.function.call) tag must
+> be used to call a template function defined externally from the given
+> template. Otherwise, you can directly use the function as
+> `{funcname ...}` in the template.
+
+## Attributes
+
+| Attribute Name | Required | Description |
+|----------------|----------|---------------------------------------------------------------|
+| name | Yes | The name of the template function |
+| \[var \...\] | No | default variable value to pass local to the template function |
+
+- The `{function}` tag must have the `name` attribute which contains
+ the name of the template function. A tag with this name can be
+ used to call the template function.
+
+- Default values for variables can be passed to the template function
+ as [attributes](../language-basic-syntax/language-syntax-attributes.md). Like in PHP function
+ declarations you can only use scalar values as default. The default
+ values can be overwritten when the template function is being
+ called.
+
+- You can use all variables from the calling template inside the
+ template function. Changes to variables or new created variables
+ inside the template function have local scope and are not visible
+ inside the calling template after the template function is executed.
+
+
+
+> **Note**
+>
+> You can pass any number of parameter to the template function when it
+> is called. The parameter variables must not be declared in the
+> `{funcname ...}` tag unless you what to use default values. Default
+> values must be scalar and can not be variable. Variables must be
+> passed when the template is called.
+
+## Examples
+
+```smarty
+{* define the function *}
+{function name=menu level=0}
+{function menu level=0} {* short-hand *}
+
+ {foreach $data as $entry}
+ {if is_array($entry)}
+ {$entry@key}
+ {menu data=$entry level=$level+1}
+ {else}
+ {$entry}
+ {/if}
+ {/foreach}
+
+{/function}
+
+{* create an array to demonstrate *}
+{$menu = ['item1','item2','item3' => ['item3-1','item3-2','item3-3' =>
+['item3-3-1','item3-3-2']],'item4']}
+
+{* run the array through the function *}
+{menu data=$menu}
+```
+
+Will generate the following output
+
+```
+* item1
+* item2
+* item3
+ o item3-1
+ o item3-2
+ o item3-3
+ + item3-3-1
+ + item3-3-2
+* item4
+```
+
+See also [`{call}`](./language-function-call.md)
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-if.md b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-if.md
new file mode 100644
index 000000000..eb00cfda3
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-if.md
@@ -0,0 +1,92 @@
+# {if},{elseif},{else}
+
+`{if}` statements in Smarty have much the same flexibility as PHP
+[if](https://www.php.net/if) statements, with a few added features for the
+template engine. Every `{if}` must be paired with a matching `{/if}`.
+`{else}` and `{elseif}` are also permitted. All [operators](../language-basic-syntax/language-syntax-operators.md) are recognized, such as *==*,
+*\|\|*, *or*, *&&*, *and*, etc and you can use modifiers as functions, such as *is_array()*.
+
+## Examples
+```smarty
+{if $name eq 'Fred'}
+ Welcome Sir.
+{elseif $name eq 'Wilma'}
+ Welcome Ma'am.
+{else}
+ Welcome, whatever you are.
+{/if}
+
+{* an example with "or" logic *}
+{if $name eq 'Fred' or $name eq 'Wilma'}
+ ...
+{/if}
+
+{* same as above *}
+{if $name == 'Fred' || $name == 'Wilma'}
+ ...
+{/if}
+
+
+{* parenthesis are allowed *}
+{if ( $amount < 0 or $amount > 1000 ) and $volume >= #minVolAmt#}
+ ...
+{/if}
+
+
+{* you can also embed php function calls *}
+{if count($var) gt 0}
+ ...
+{/if}
+
+{* check for array. *}
+{if is_array($foo) }
+ .....
+{/if}
+
+{* check for not null. *}
+{if isset($foo) }
+ .....
+{/if}
+
+
+{* test if values are even or odd *}
+{if $var is even}
+ ...
+{/if}
+{if $var is odd}
+ ...
+{/if}
+{if $var is not odd}
+ ...
+{/if}
+
+
+{* test if var is divisible by 4 *}
+{if $var is div by 4}
+ ...
+{/if}
+
+
+{*
+ test if var is even, grouped by two. i.e.,
+ 0=even, 1=even, 2=odd, 3=odd, 4=even, 5=even, etc.
+*}
+{if $var is even by 2}
+ ...
+{/if}
+
+{* 0=even, 1=even, 2=even, 3=odd, 4=odd, 5=odd, etc. *}
+{if $var is even by 3}
+ ...
+{/if}
+
+{if isset($name) && $name == 'Blog'}
+ {* do something *}
+{elseif $name == $foo}
+ {* do something *}
+{/if}
+
+{if is_array($foo) && count($foo) > 0}
+ {* do a foreach loop *}
+{/if}
+```
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-include.md b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-include.md
new file mode 100644
index 000000000..0710db7d8
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-include.md
@@ -0,0 +1,187 @@
+# {include}
+
+`{include}` tags are used for including other templates in the current
+template. Any variables available in the current template are also
+available within the included template.
+
+## Attributes
+
+| Attribute Name | Required | Description |
+|----------------|----------|--------------------------------------------------------------------------------------------|
+| file | Yes | The name of the template file to include |
+| assign | No | The name of the variable that the output of include will be assigned to |
+| cache_lifetime | No | Enable caching of this subtemplate with an individual cache lifetime |
+| compile_id | No | Compile this subtemplate with an individual compile_id |
+| cache_id | No | Enable caching of this subtemplate with an individual cache_id |
+| scope | No | Define the scope of all in the subtemplate assigned variables: 'parent','root' or 'global' |
+| \[var \...\] | No | variable to pass local to template |
+
+
+- The `{include}` tag must have the `file` attribute which contains
+ the template resource path.
+
+- Setting the optional `assign` attribute specifies the template
+ variable that the output of `{include}` is assigned to, instead of
+ being displayed. Similar to [`{assign}`](./language-function-assign.md).
+
+- Variables can be passed to included templates as
+ [attributes](../language-basic-syntax/language-syntax-attributes.md). Any variables explicitly
+ passed to an included template are only available within the scope
+ of the included file. Attribute variables override current template
+ variables, in the case when they are named the same.
+
+- You can use all variables from the including template inside the
+ included template. But changes to variables or new created variables
+ inside the included template have local scope and are not visible
+ inside the including template after the `{include}` statement. This
+ default behaviour can be changed for all variables assigned in the
+ included template by using the scope attribute at the `{include}`
+ statement or for individual variables by using the scope attribute
+ at the [`{assign}`](./language-function-assign.md) statement. The later
+ is useful to return values from the included template to the
+ including template.
+
+- Use the syntax for [template resources](../../api/resources.md) to `{include}`
+ files outside of the [`$template_dir`](../../programmers/api-variables/variable-template-dir.md)
+ directory.
+
+## Option Flags
+
+| Name | Description |
+|---------|--------------------------------------------------------------------------------------|
+| nocache | Disables caching of this subtemplate |
+| caching | Enable caching of this subtemplate |
+| inline | If set, merge the compile-code of the subtemplate into the compiled calling template |
+
+## Examples
+```smarty
+
+
+ {$title}
+
+
+ {include file='page_header.tpl'}
+
+ {* body of template goes here, the $tpl_name variable
+ is replaced with a value eg 'contact.tpl'
+ *}
+ {include file="$tpl_name.tpl"}
+
+ {* using shortform file attribute *}
+ {include 'page_footer.tpl'}
+
+
+```
+
+```smarty
+
+{include 'links.tpl' title='Newest links' links=$link_array}
+{* body of template goes here *}
+{include 'footer.tpl' foo='bar'}
+
+```
+
+The template above includes the example `links.tpl` below
+
+```smarty
+
+
{$title}
+
+ {foreach from=$links item=l}
+ .. do stuff ...
+ {/foreach}
+
+
+```
+Variables assigned in the included template will be seen in the
+including template.
+
+```smarty
+{include 'sub_template.tpl' scope=parent}
+...
+{* display variables assigned in sub_template *}
+{$foo}
+{$bar}
+...
+```
+
+The template above includes the example `sub_template.tpl` below
+
+```smarty
+...
+{assign var=foo value='something'}
+{assign var=bar value='value'}
+...
+```
+
+The included template will not be cached.
+
+```smarty
+{include 'sub_template.tpl' nocache}
+...
+```
+
+In this example included template will be cached with an individual
+cache lifetime of 500 seconds.
+
+```smarty
+{include 'sub_template.tpl' cache_lifetime=500}
+...
+```
+
+In this example included template will be cached independent of the
+global caching setting.
+
+```smarty
+{include 'sub_template.tpl' caching}
+...
+```
+
+This example assigns the contents of `nav.tpl` to the `$navbar`
+variable, which is then output at both the top and bottom of the page.
+
+```smarty
+
+ {include 'nav.tpl' assign=navbar}
+ {include 'header.tpl' title='Smarty is cool'}
+ {$navbar}
+ {* body of template goes here *}
+ {$navbar}
+ {include 'footer.tpl'}
+
+```
+
+This example includes another template relative to the directory of the
+current template.
+
+```smarty
+{include 'template-in-a-template_dir-directory.tpl'}
+{include './template-in-same-directory.tpl'}
+{include '../template-in-parent-directory.tpl'}
+```
+
+```smarty
+{* absolute filepath *}
+{include file='/usr/local/include/templates/header.tpl'}
+
+{* absolute filepath (same thing) *}
+{include file='file:/usr/local/include/templates/header.tpl'}
+
+{* windows absolute filepath (MUST use "file:" prefix) *}
+{include file='file:C:/www/pub/templates/header.tpl'}
+
+{* include from template resource named "db" *}
+{include file='db:header.tpl'}
+
+{* include a $variable template - eg $module = 'contacts' *}
+{include file="$module.tpl"}
+
+{* wont work as its single quotes ie no variable substitution *}
+{include file='$module.tpl'}
+
+{* include a multi $variable template - eg amber/links.view.tpl *}
+{include file="$style_dir/$module.$view.tpl"}
+```
+
+See also [template resources](../../api/resources.md) and
+[componentized templates](../../appendixes/tips.md#componentized-templates).
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-insert.md b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-insert.md
new file mode 100644
index 000000000..e69de29bb
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-ldelim.md b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-ldelim.md
new file mode 100644
index 000000000..05bc8ecca
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-ldelim.md
@@ -0,0 +1,51 @@
+# {ldelim}, {rdelim}
+
+`{ldelim}` and `{rdelim}` are used for [escaping](../language-basic-syntax/language-escaping.md)
+template delimiters, by default **{** and **}**. You can also use
+[`{literal}{/literal}`](./language-function-literal.md) to escape blocks of
+text eg Javascript or CSS. See also the complementary
+[`{$smarty.ldelim}`](../../designers/language-basic-syntax/language-escaping.md).
+
+```smarty
+{* this will print literal delimiters out of the template *}
+
+{ldelim}funcname{rdelim} is how functions look in Smarty!
+```
+
+The above example will output:
+
+```
+{funcname} is how functions look in Smarty!
+```
+
+Another example with some Javascript
+
+```smarty
+
+```
+
+will output
+
+```html
+
+```
+
+```smarty
+
+Click here for Server Info
+```
+
+See also [`{literal}`](./language-function-literal.md) and [escaping Smarty
+parsing](../language-basic-syntax/language-escaping.md).
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-literal.md b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-literal.md
new file mode 100644
index 000000000..0253f260e
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-literal.md
@@ -0,0 +1,34 @@
+# {literal}
+
+`{literal}` tags allow a block of data to be taken literally. This is
+typically used around Javascript or stylesheet blocks where {curly
+braces} would interfere with the template
+[delimiter](../../designers/language-basic-syntax/language-escaping.md) syntax. Anything within
+`{literal}{/literal}` tags is not interpreted, but displayed as-is. If
+you need template tags embedded in a `{literal}` block, consider using
+[`{ldelim}{rdelim}`](./language-function-ldelim.md) to escape the individual
+delimiters instead.
+
+> **Note**
+>
+> `{literal}{/literal}` tags are normally not necessary, as Smarty
+> ignores delimiters that are surrounded by whitespace. Be sure your
+> javascript and CSS curly braces are surrounded by whitespace. This is
+> new behavior to Smarty 3.
+
+```smarty
+
+```
+
+See also [`{ldelim} {rdelim}`](./language-function-ldelim.md) and the
+[escaping Smarty parsing](../language-basic-syntax/language-escaping.md) page.
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-nocache.md b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-nocache.md
new file mode 100644
index 000000000..7997ecfb6
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-nocache.md
@@ -0,0 +1,20 @@
+# {nocache}
+
+`{nocache}` is used to disable caching of a template section. Every
+`{nocache}` must be paired with a matching `{/nocache}`.
+
+> **Note**
+>
+> Be sure any variables used within a non-cached section are also
+> assigned from PHP when the page is loaded from the cache.
+
+```smarty
+Today's date is
+{nocache}
+{$smarty.now|date_format}
+{/nocache}
+```
+
+The above code will output the current date on a cached page.
+
+See also the [caching section](../../api/caching/basics.md).
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-section.md b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-section.md
new file mode 100644
index 000000000..afa6366cd
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-section.md
@@ -0,0 +1,610 @@
+# {section}, {sectionelse}
+
+A `{section}` is for looping over **sequentially indexed arrays of
+data**, unlike [`{foreach}`](./language-function-foreach.md) which is used
+to loop over a **single associative array**. Every `{section}` tag must
+be paired with a closing `{/section}` tag.
+
+> **Note**
+>
+> The [`{foreach}`](./language-function-foreach.md) loop can do everything a
+> {section} loop can do, and has a simpler and easier syntax. It is
+> usually preferred over the {section} loop.
+
+> **Note**
+>
+> {section} loops cannot loop over associative arrays, they must be
+> numerically indexed, and sequential (0,1,2,\...). For associative
+> arrays, use the [`{foreach}`](./language-function-foreach.md) loop.
+
+
+## Attributes
+
+| Attribute Name | Required | Description |
+|----------------|----------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
+| name | Yes | The name of the section |
+| loop | Yes | Value to determine the number of loop iterations |
+| start | No | The index position that the section will begin looping. If the value is negative, the start position is calculated from the end of the array. For example, if there are seven values in the loop array and start is -2, the start index is 5. Invalid values (values outside of the length of the loop array) are automatically truncated to the closest valid value. Defaults to 0. |
+| step | No | The step value that will be used to traverse the loop array. For example, step=2 will loop on index 0, 2, 4, etc. If step is negative, it will step through the array backwards. Defaults to 1. |
+| max | No | Sets the maximum number of times the section will loop. |
+| show | No | Determines whether to show this section (defaults to true) |
+
+## Option Flags
+
+| Name | Description |
+|---------|------------------------------------------|
+| nocache | Disables caching of the `{section}` loop |
+
+- Required attributes are `name` and `loop`.
+
+- The `name` of the `{section}` can be anything you like, made up of
+ letters, numbers and underscores, like [PHP
+ variables](https://www.php.net/language.variables).
+
+- {section}'s can be nested, and the nested `{section}` names must be
+ unique from each other.
+
+- The `loop` attribute, usually an array of values, determines the
+ number of times the `{section}` will loop. You can also pass an
+ integer as the loop value.
+
+- When printing a variable within a `{section}`, the `{section}`
+ `name` must be given next to variable name within \[brackets\].
+
+- `{sectionelse}` is executed when there are no values in the loop
+ variable.
+
+- A `{section}` also has its own variables that handle `{section}`
+ properties. These properties are accessible as:
+ [`{$smarty.section.name.property}`](../language-variables/language-variables-smarty.md#smartysection-languagevariablessmartyloops)
+ where "name" is the attribute `name`.
+
+- `{section}` properties are [`index`](#index),
+ [`index_prev`](#index_prev),
+ [`index_next`](#index_next),
+ [`iteration`](#iteration),
+ [`first`](#first),
+ [`last`](#last),
+ [`rownum`](#rownum),
+ [`loop`](#loop), [`show`](#show),
+ [`total`](#total).
+
+[`assign()`](../../programmers/api-functions/api-assign.md) an array to Smarty
+
+## Examples
+
+```php
+assign('custid', $data);
+```
+
+The template that outputs the array
+
+```smarty
+{* this example will print out all the values of the $custid array *}
+{section name=customer loop=$custid}
+{section customer $custid} {* short-hand *}
+ id: {$custid[customer]}
+{/section}
+
+{* print out all the values of the $custid array reversed *}
+{section name=foo loop=$custid step=-1}
+{section foo $custid step=-1} {* short-hand *}
+ {$custid[foo]}
+{/section}
+```
+
+The above example will output:
+
+```html
+id: 1000
+id: 1001
+id: 1002
+
+id: 1002
+id: 1001
+id: 1000
+```
+
+```smarty
+{section name=foo start=10 loop=20 step=2}
+ {$smarty.section.foo.index}
+{/section}
+
+{section name=bar loop=21 max=6 step=-2}
+ {$smarty.section.bar.index}
+{/section}
+```
+
+The above example will output:
+
+```html
+10 12 14 16 18
+
+20 18 16 14 12 10
+```
+
+The `name` of the `{section}` can be anything you like, see [PHP
+variables](https://www.php.net/language.variables). It is used to reference
+the data within the `{section}`.
+
+```smarty
+{section name=anything loop=$myArray}
+ {$myArray[anything].foo}
+ {$name[anything]}
+ {$address[anything].bar}
+{/section}
+```
+
+This is an example of printing an associative array of data with a
+`{section}`. Following is the php script to assign the `$contacts` array
+to Smarty.
+
+```php
+ 'John Smith', 'home' => '555-555-5555',
+ 'cell' => '666-555-5555', 'email' => 'john@myexample.com'],
+ ['name' => 'Jack Jones', 'home' => '777-555-5555',
+ 'cell' => '888-555-5555', 'email' => 'jack@myexample.com'],
+ ['name' => 'Jane Munson', 'home' => '000-555-5555',
+ 'cell' => '123456', 'email' => 'jane@myexample.com']
+];
+$smarty->assign('contacts',$data);
+```
+
+The template to output `$contacts`
+
+```smarty
+{section name=customer loop=$contacts}
+
+ name: {$contacts[customer].name}
+ home: {$contacts[customer].home}
+ cell: {$contacts[customer].cell}
+ e-mail: {$contacts[customer].email}
+
+{/section}
+```
+
+The above example will output:
+
+```html
+
+ name: John Smith
+ home: 555-555-5555
+ cell: 666-555-5555
+ e-mail: john@myexample.com
+
+
+ name: Jack Jones
+ home phone: 777-555-5555
+ cell phone: 888-555-5555
+ e-mail: jack@myexample.com
+
+
+ name: Jane Munson
+ home phone: 000-555-5555
+ cell phone: 123456
+ e-mail: jane@myexample.com
+
+```
+
+This example assumes that `$custid`, `$name` and `$address` are all
+arrays containing the same number of values. First the php script that
+assign's the arrays to Smarty.
+
+```php
+assign('custid',$id);
+
+$fullnames = ['John Smith','Jack Jones','Jane Munson'];
+$smarty->assign('name',$fullnames);
+
+$addr = ['253 Abbey road', '417 Mulberry ln', '5605 apple st'];
+$smarty->assign('address',$addr);
+```
+
+The `loop` variable only determines the number of times to loop. You can
+access ANY variable from the template within the `{section}`. This is
+useful for looping multiple arrays. You can pass an array which will
+determine the loop count by the array size, or you can pass an integer
+to specify the number of loops.
+
+```smarty
+{section name=customer loop=$custid}
+
+ id: {$custid[customer]}
+ name: {$name[customer]}
+ address: {$address[customer]}
+
+{/section}
+```
+
+The above example will output:
+
+```html
+
+ id: 1000
+ name: John Smith
+ address: 253 Abbey road
+
+
+ id: 1001
+ name: Jack Jones
+ address: 417 Mulberry ln
+
+
+ id: 1002
+ name: Jane Munson
+ address: 5605 apple st
+
+```
+
+{section}'s can be nested as deep as you like. With nested
+{section}'s, you can access complex data structures, such as
+multidimensional arrays. This is an example `.php` script that
+assigns the arrays.
+
+```php
+assign('custid',$id);
+
+$fullnames = ['John Smith','Jack Jones','Jane Munson'];
+$smarty->assign('name',$fullnames);
+
+$addr = ['253 N 45th', '417 Mulberry ln', '5605 apple st'];
+$smarty->assign('address',$addr);
+
+$types = [
+ [ 'home phone', 'cell phone', 'e-mail'],
+ [ 'home phone', 'web'],
+ [ 'cell phone']
+ ];
+$smarty->assign('contact_type', $types);
+
+$info = [
+ ['555-555-5555', '666-555-5555', 'john@myexample.com'],
+ [ '123-456-4', 'www.example.com'],
+ [ '0457878']
+ ];
+$smarty->assign('contact_info', $info);
+```
+
+In this template, *$contact_type\[customer\]* is an array of contact
+types for the current customer.
+
+```smarty
+{section name=customer loop=$custid}
+
+ id: {$custid[customer]}
+ name: {$name[customer]}
+ address: {$address[customer]}
+ {section name=contact loop=$contact_type[customer]}
+ {$contact_type[customer][contact]}: {$contact_info[customer][contact]}
+ {/section}
+{/section}
+```
+
+The above example will output:
+
+```html
+
+ id: 1000
+ name: John Smith
+ address: 253 N 45th
+ home phone: 555-555-5555
+ cell phone: 666-555-5555
+ e-mail: john@myexample.com
+
+ id: 1001
+ name: Jack Jones
+ address: 417 Mulberry ln
+ home phone: 123-456-4
+ web: www.example.com
+
+ id: 1002
+ name: Jane Munson
+ address: 5605 apple st
+ cell phone: 0457878
+```
+
+Results of a database search (eg ADODB or PEAR) are assigned to Smarty
+
+```php
+assign('contacts', $db->getAll($sql));
+```
+
+The template to output the database result in a HTML table
+
+```smarty
+
+ Name Home Cell Email
+ {section name=co loop=$contacts}
+
+ view
+ {$contacts[co].name}
+ {$contacts[co].home}
+ {$contacts[co].cell}
+ {$contacts[co].email}
+
+ {sectionelse}
+ No items found
+ {/section}
+
+```
+
+## .index
+`index` contains the current array index, starting with zero or the
+`start` attribute if given. It increments by one or by the `step`
+attribute if given.
+
+> **Note**
+>
+> If the `step` and `start` properties are not modified, then this works
+> the same as the [`iteration`](#iteration) property,
+> except it starts at zero instead of one.
+
+> **Note**
+>
+> `$custid[customer.index]` and `$custid[customer]` are identical.
+
+```smarty
+{section name=customer loop=$custid}
+ {$smarty.section.customer.index} id: {$custid[customer]}
+{/section}
+```
+
+The above example will output:
+
+```html
+0 id: 1000
+1 id: 1001
+2 id: 1002
+```
+
+
+## .index_prev
+
+`index_prev` is the previous loop index. On the first loop, this is set to -1.
+
+## .index_next
+
+`index_next` is the next loop index. On the last loop, this is still one
+more than the current index, respecting the setting of the `step`
+attribute, if given.
+
+```php
+assign('rows',$data);
+```
+
+Template to output the above array in a table
+
+```smarty
+{* $rows[row.index] and $rows[row] are identical in meaning *}
+
+
+ index id
+ index_prev prev_id
+ index_next next_id
+
+{section name=row loop=$rows}
+
+ {$smarty.section.row.index} {$rows[row]}
+ {$smarty.section.row.index_prev} {$rows[row.index_prev]}
+ {$smarty.section.row.index_next} {$rows[row.index_next]}
+
+{/section}
+
+```
+
+The above example will output a table containing the following:
+
+```
+ index id index_prev prev_id index_next next_id
+ 0 1001 -1 1 1002
+ 1 1002 0 1001 2 1003
+ 2 1003 1 1002 3 1004
+ 3 1004 2 1003 4 1005
+ 4 1005 3 1004 5
+```
+
+## .iteration
+
+`iteration` contains the current loop iteration and starts at one.
+
+> **Note**
+>
+> This is not affected by the `{section}` properties `start`, `step` and
+> `max`, unlike the [`index`](#index) property.
+> `iteration` also starts with one instead of zero unlike `index`.
+> [`rownum`](#rownum) is an alias to `iteration`, they
+> are identical.
+
+```php
+assign('arr', $id);
+```
+
+Template to output every other element of the `$arr` array as `step=2`
+
+```smarty
+{section name=cu loop=$arr start=5 step=2}
+ iteration={$smarty.section.cu.iteration}
+ index={$smarty.section.cu.index}
+ id={$custid[cu]}
+{/section}
+```
+
+The above example will output:
+
+```html
+iteration=1 index=5 id=3005
+iteration=2 index=7 id=3007
+iteration=3 index=9 id=3009
+iteration=4 index=11 id=3011
+iteration=5 index=13 id=3013
+iteration=6 index=15 id=3015
+```
+
+Another example that uses the `iteration` property to output a table
+header block every five rows.
+
+```smarty
+
+ {section name=co loop=$contacts}
+ {if $smarty.section.co.iteration is div by 5}
+ Name Home Cell Email
+ {/if}
+
+ view
+ {$contacts[co].name}
+ {$contacts[co].home}
+ {$contacts[co].cell}
+ {$contacts[co].email}
+
+ {/section}
+
+```
+
+An example that uses the `index` property to alternate a text color every
+third row.
+
+```smarty
+
+ {section name=co loop=$contacts}
+ {if $smarty.section.co.index is even by 3}
+ {$contacts[co].name}
+ {else}
+ {$contacts[co].name}
+ {/if}
+ {/section}
+
+```
+
+> **Note**
+>
+> The *"is div by"* syntax is a simpler alternative to the PHP mod
+> operator syntax. The mod operator is allowed:
+> `{if $smarty.section.co.iteration % 5 == 1}` will work just the same.
+
+> **Note**
+>
+> You can also use *"is odd by"* to reverse the alternating.
+
+## .first
+
+`first` is set to TRUE if the current `{section}` iteration is the initial one.
+
+## .last
+
+`last` is set to TRUE if the current section iteration is the final one.
+
+This example loops the `$customers` array, outputs a header block on the
+first iteration and on the last outputs the footer block. Also uses the
+[`total`](#total) property.
+
+```smarty
+{section name=customer loop=$customers}
+ {if $smarty.section.customer.first}
+
+ id customer
+ {/if}
+
+
+ {$customers[customer].id}}
+ {$customers[customer].name}
+
+
+ {if $smarty.section.customer.last}
+ {$smarty.section.customer.total} customers
+
+ {/if}
+{/section}
+```
+
+## .rownum
+
+`rownum` contains the current loop iteration, starting with one. It is
+an alias to [`iteration`](#iteration), they work
+identically.
+
+## .loop
+
+`loop` contains the last index number that this {section} looped. This
+can be used inside or after the `{section}`.
+
+```smarty
+{section name=customer loop=$custid}
+ {$smarty.section.customer.index} id: {$custid[customer]}
+{/section}
+There are {$smarty.section.customer.loop} customers shown above.
+```
+
+The above example will output:
+
+```html
+0 id: 1000
+1 id: 1001
+2 id: 1002
+There are 3 customers shown above.
+```
+
+## .show
+
+`show` is used as a parameter to section and is a boolean value. If
+FALSE, the section will not be displayed. If there is a `{sectionelse}`
+present, that will be alternately displayed.
+
+Boolean `$show_customer_info` has been passed from the PHP application,
+to regulate whether this section shows.
+
+```smarty
+{section name=customer loop=$customers show=$show_customer_info}
+ {$smarty.section.customer.rownum} id: {$customers[customer]}
+{/section}
+
+{if $smarty.section.customer.show}
+ the section was shown.
+{else}
+ the section was not shown.
+{/if}
+```
+
+The above example will output:
+
+```html
+1 id: 1000
+2 id: 1001
+3 id: 1002
+
+the section was shown.
+```
+
+
+## .total
+
+`total` contains the number of iterations that this `{section}` will
+loop. This can be used inside or after a `{section}`.
+
+```smarty
+{section name=customer loop=$custid step=2}
+ {$smarty.section.customer.index} id: {$custid[customer]}
+{/section}
+ There are {$smarty.section.customer.total} customers shown above.
+```
+
+See also [`{foreach}`](./language-function-foreach.md),
+[`{for}`](./language-function-for.md), [`{while}`](./language-function-while.md)
+and [`$smarty.section`](../language-variables/language-variables-smarty.md#smartysection-languagevariablessmartyloops).
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-setfilter.md b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-setfilter.md
new file mode 100644
index 000000000..eb11cbf1e
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-setfilter.md
@@ -0,0 +1,43 @@
+# {setfilter}
+
+The `{setfilter}...{/setfilter}` block tag allows the definition of
+template instance's variable filters.
+
+SYNTAX: `{setfilter filter1\|filter2\|filter3\....}\...{/setfilter}`
+
+The filter can be:
+
+- A variable filter plugin specified by it's name.
+
+- A modifier specified by it's name and optional additional
+ parameter.
+
+`{setfilter}...{/setfilter}` blocks can be nested. The filter definition
+of inner blocks does replace the definition of the outer block.
+
+Template instance filters run in addition to other modifiers and
+filters. They run in the following order: modifier, default_modifier,
+$escape_html, registered variable filters, autoloaded variable
+filters, template instance's variable filters. Everything after
+default_modifier can be disabled with the `nofilter` flag.
+
+> **Note**
+>
+> The setting of template instance filters does not affect the output of
+> included subtemplates.
+
+## Examples
+
+```smarty
+
+```
+
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-strip.md b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-strip.md
new file mode 100644
index 000000000..800de84bf
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-strip.md
@@ -0,0 +1,45 @@
+# {strip}
+
+Many times web designers run into the issue where white space and
+carriage returns affect the output of the rendered HTML (browser
+"features"), so you must run all your tags together in the template to
+get the desired results. This usually ends up in unreadable or
+unmanageable templates.
+
+Anything within `{strip}{/strip}` tags are stripped of the extra spaces
+or carriage returns at the beginnings and ends of the lines before they
+are displayed. This way you can keep your templates readable, and not
+worry about extra white space causing problems.
+
+> **Note**
+>
+> `{strip}{/strip}` does not affect the contents of template variables,
+> see the [strip modifier](../language-modifiers/language-modifier-strip.md) instead.
+
+```smarty
+{* the following will be all run into one line upon output *}
+{strip}
+
+{/strip}
+```
+
+The above example will output:
+
+```html
+
+```
+
+Notice that in the above example, all the lines begin and end with HTML
+tags. Be aware that all the lines are run together. If you have plain
+text at the beginning or end of any line, they will be run together, and
+may not be desired results.
+
+See also the [`strip`](../language-modifiers/language-modifier-strip.md) modifier.
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-while.md b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-while.md
new file mode 100644
index 000000000..d0a4b2f3c
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-builtin-functions/language-function-while.md
@@ -0,0 +1,20 @@
+# {while}
+
+`{while}` loops in Smarty have much the same flexibility as PHP
+[while](https://www.php.net/while) statements, with a few added features for
+the template engine. Every `{while}` must be paired with a matching
+`{/while}`. All [operators](../language-basic-syntax/language-syntax-operators.md) are recognized, such as *==*,
+*\|\|*, *or*, *&&*, *and*, etc and you can use modifiers as functions, such as *is_array()*.
+
+## Examples
+```smarty
+{while $foo > 0}
+ {$foo--}
+{/while}
+```
+
+The above example will count down the value of $foo until 1 is reached.
+
+See also [`{foreach}`](./language-function-foreach.md),
+[`{for}`](./language-function-for.md) and
+[`{section}`](./language-function-section.md).
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-combining-modifiers.md b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-combining-modifiers.md
new file mode 100644
index 000000000..97903c535
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-combining-modifiers.md
@@ -0,0 +1,32 @@
+# Combining Modifiers
+
+You can apply any number of modifiers to a variable. They will be
+applied in the order they are combined, from left to right. They must be
+separated with a `|` (pipe) character.
+
+```php
+assign('articleTitle', 'Smokers are Productive, but Death Cuts Efficiency.');
+```
+
+where template is:
+
+```smarty
+{$articleTitle}
+{$articleTitle|upper|spacify}
+{$articleTitle|lower|spacify|truncate}
+{$articleTitle|lower|truncate:30|spacify}
+{$articleTitle|lower|spacify|truncate:30:". . ."}
+```
+
+
+The above example will output:
+
+```
+Smokers are Productive, but Death Cuts Efficiency.
+S M O K E R S A R ....snip.... H C U T S E F F I C I E N C Y .
+s m o k e r s a r ....snip.... b u t d e a t h c u t s...
+s m o k e r s a r e p r o d u c t i v e , b u t . . .
+s m o k e r s a r e p. . .
+```
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-custom-functions/index.md b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-custom-functions/index.md
new file mode 100644
index 000000000..2c1d9b709
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-custom-functions/index.md
@@ -0,0 +1,19 @@
+# Custom Tags
+
+Smarty comes with several custom plugin functions that you can use in
+the templates.
+
+- [{counter}](language-function-counter.md)
+- [{cycle}](language-function-cycle.md)
+- [{eval}](language-function-eval.md)
+- [{fetch}](language-function-fetch.md)
+- [{html_checkboxes}](language-function-html-checkboxes.md)
+- [{html_image}](language-function-html-image.md)
+- [{html_options}](language-function-html-options.md)
+- [{html_radios}](language-function-html-radios.md)
+- [{html_select_date}](language-function-html-select-date.md)
+- [{html_select_time}](language-function-html-select-time.md)
+- [{html_table}](language-function-html-table.md)
+- [{mailto}](language-function-mailto.md)
+- [{math}](language-function-math.md)
+- [{textformat}](language-function-textformat.md)
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-custom-functions/language-function-counter.md b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-custom-functions/language-function-counter.md
new file mode 100644
index 000000000..de04c2fee
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-custom-functions/language-function-counter.md
@@ -0,0 +1,45 @@
+# {counter}
+
+`{counter}` is used to print out a count. `{counter}` will remember the
+count on each iteration. You can adjust the number, the interval and the
+direction of the count, as well as determine whether to print the
+value. You can run multiple counters concurrently by supplying a unique
+name for each one. If you do not supply a name, the name "default" will
+be used.
+
+## Attributes
+
+| Attribute Name | Required | Description |
+|----------------|----------|-----------------------------------------------------------|
+| name | No | The name of the counter |
+| start | No | The initial number to start counting from (defaults to 1) |
+| skip | No | The interval to count by (defaults to 1) |
+| direction | No | The direction to count (up/down) (defaults to 'up') |
+| print | No | Whether or not to print the value (defaults to true) |
+| assign | No | the template variable the output will be assigned to |
+
+If you supply the `assign` attribute, the output of the `{counter}`
+function will be assigned to this template variable instead of being
+output to the template.
+
+## Examples
+
+```smarty
+
+{* initialize the count *}
+{counter start=0 skip=2}
+{counter}
+{counter}
+{counter}
+
+```
+
+this will output:
+
+```html
+0
+2
+4
+6
+```
+
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-custom-functions/language-function-cycle.md b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-custom-functions/language-function-cycle.md
new file mode 100644
index 000000000..661e490dc
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-custom-functions/language-function-cycle.md
@@ -0,0 +1,55 @@
+# {cycle}
+
+`{cycle}` is used to alternate a set of values. This makes it easy to
+for example, alternate between two or more colors in a table, or cycle
+through an array of values.
+
+## Attributes
+
+| Attribute Name | Required | Description |
+|----------------|----------|-------------------------------------------------------------------------------------------------------------|
+| name | No | The name of the cycle |
+| values | Yes | The values to cycle through, either a comma delimited list (see delimiter attribute), or an array of values |
+| print | No | Whether to print the value or not (defaults to true) |
+| advance | No | Whether or not to advance to the next value (defaults to true) |
+| delimiter | No | The delimiter to use in the values attribute (defaults to ',') |
+| assign | No | The template variable the output will be assigned to |
+| reset | No | The cycle will be set to the first value and not advanced (defaults to false) |
+
+- You can `{cycle}` through more than one set of values in a template
+ by supplying a `name` attribute. Give each `{cycle}` a unique
+ `name`.
+
+- You can force the current value not to print with the `print`
+ attribute set to FALSE. This would be useful for silently skipping a
+ value.
+
+- The `advance` attribute is used to repeat a value. When set to
+ FALSE, the next call to `{cycle}` will print the same value.
+
+- If you supply the `assign` attribute, the output of the `{cycle}`
+ function will be assigned to a template variable instead of being
+ output to the template.
+
+## Examples
+```smarty
+{section name=rows loop=$data}
+
+ {$data[rows]}
+
+{/section}
+```
+
+The above template would output:
+
+```html
+
+ 1
+
+
+ 2
+
+
+ 3
+
+```
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-custom-functions/language-function-debug.md b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-custom-functions/language-function-debug.md
new file mode 100644
index 000000000..788614537
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-custom-functions/language-function-debug.md
@@ -0,0 +1,14 @@
+# {debug}
+
+`{debug}` dumps the debug console to the page. This works regardless of
+the [debug](../chapter-debugging-console.md) settings in the php script.
+Since this gets executed at runtime, this is only able to show the
+[assigned](../../programmers/api-functions/api-assign.md) variables; not the templates that are in use.
+However, you can see all the currently available variables within the
+scope of a template.
+
+| Attribute Name | Required | Description |
+|----------------|----------|------------------------------------------------------------|
+| output | No | output type, html or javascript (defaults to 'javascript') |
+
+See also the [debugging console page](../chapter-debugging-console.md).
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-custom-functions/language-function-eval.md b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-custom-functions/language-function-eval.md
new file mode 100644
index 000000000..e44862c22
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-custom-functions/language-function-eval.md
@@ -0,0 +1,81 @@
+# {eval}
+
+`{eval}` is used to evaluate a variable as a template. This can be used
+for things like embedding template tags/variables into variables or
+tags/variables into config file variables.
+
+## Attributes
+
+| Attribute Name | Required | Description |
+|----------------|----------|------------------------------------------------------|
+| var | Yes | Variable (or string) to evaluate |
+| assign | No | The template variable the output will be assigned to |
+
+If you supply the `assign` attribute, the output of the `{eval}`
+function will be assigned to this template variable instead of being
+output to the template.
+
+> **Note**
+>
+> - Evaluated variables are treated the same as templates. They follow
+> the same escapement and security features just as if they were
+> templates.
+>
+> - Evaluated variables are compiled on every invocation, the compiled
+> versions are not saved! However, if you have [caching](../../api/caching/basics.md)
+> enabled, the output will be cached with the rest of the template.
+>
+> - If the content to evaluate doesn't change often, or is used
+> repeatedly, consider using
+> `{include file="string:{$template_code}"}` instead. This may cache
+> the compiled state and thus doesn't have to run the (comparably
+> slow) compiler on every invocation.
+
+## Examples
+
+The contents of the config file, `setup.conf`.
+
+```ini
+emphstart =
+emphend =
+title = Welcome to {$company}'s home page!
+ErrorCity = You must supply a {#emphstart#}city{#emphend#}.
+ErrorState = You must supply a {#emphstart#}state{#emphend#}.
+```
+
+Where the template is:
+
+```smarty
+{config_load file='setup.conf'}
+
+{eval var=$foo}
+{eval var=#title#}
+{eval var=#ErrorCity#}
+{eval var=#ErrorState# assign='state_error'}
+{$state_error}
+```
+
+The above template will output:
+
+```html
+This is the contents of foo.
+Welcome to Foobar Pub & Grill's home page!
+You must supply a city .
+You must supply a state .
+```
+
+This outputs the server name (in uppercase) and IP. The assigned
+variable `$str` could be from a database query.
+
+```php
+assign('foo',$str);
+```
+
+Where the template is:
+
+```smarty
+{eval var=$foo}
+```
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-custom-functions/language-function-fetch.md b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-custom-functions/language-function-fetch.md
new file mode 100644
index 000000000..a2f07f3a1
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-custom-functions/language-function-fetch.md
@@ -0,0 +1,61 @@
+# {fetch}
+
+`{fetch}` is used to retrieve files from the local file system, http, or
+ftp and display the contents.
+
+## Attributes
+| Attribute | Required | Description |
+|-----------|----------|------------------------------------------------------|
+| file | Yes | The file, http or ftp site to fetch |
+| assign | No | The template variable the output will be assigned to |
+
+- If the file name begins with `http://`, the website page will be
+ fetched and displayed.
+
+ > **Note**
+ >
+ > This will not support http redirects, be sure to include a
+ > trailing slash on your web page fetches where necessary.
+
+- If the file name begins with `ftp://`, the file will be downloaded
+ from the ftp server and displayed.
+
+- For local files, either a full system file path must be given, or a
+ path relative to the executed php script.
+
+ > **Note**
+ >
+ > If security is enabled, and you are fetching a file from the local
+ > file system, `{fetch}` will only allow files from within the
+ > `$secure_dir` path of the security policy. See the
+ > [Security](../../api/security.md) section for details.
+
+- If the `assign` attribute is set, the output of the `{fetch}`
+ function will be assigned to this template variable instead of being
+ output to the template.
+
+## Examples
+
+```smarty
+{* include some javascript in your template *}
+{fetch file='/export/httpd/www.example.com/docs/navbar.js'}
+
+{* embed some weather text in your template from another web site *}
+{fetch file='http://www.myweather.com/68502/'}
+
+{* fetch a news headline file via ftp *}
+{fetch file='ftp://user:password@ftp.example.com/path/to/currentheadlines.txt'}
+{* as above but with variables *}
+{fetch file="ftp://`$user`:`$password`@`$server`/`$path`"}
+
+{* assign the fetched contents to a template variable *}
+{fetch file='http://www.myweather.com/68502/' assign='weather'}
+{if $weather ne ''}
+ {$weather}
+{/if}
+```
+
+
+See also [`{capture}`](../language-builtin-functions/language-function-capture.md),
+[`{eval}`](language-function-eval.md),
+[`{assign}`](../language-builtin-functions/language-function-assign.md) and [`fetch()`](../../programmers/api-functions/api-fetch.md).
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-custom-functions/language-function-html-checkboxes.md b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-custom-functions/language-function-html-checkboxes.md
new file mode 100644
index 000000000..3ab36096a
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-custom-functions/language-function-html-checkboxes.md
@@ -0,0 +1,102 @@
+# {html_checkboxes}
+
+`{html_checkboxes}` is a [custom function](index.md)
+that creates an html checkbox group with provided data. It takes care of
+which item(s) are selected by default as well.
+
+## Attributes
+
+| Attribute Name | Required | Description |
+|----------------|-------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
+| name | No | Name of checkbox list (defaults to 'checkbox') |
+| values | Yes, unless using options attribute | An array of values for checkbox buttons |
+| output | Yes, unless using options attribute | An array of output for checkbox buttons |
+| selected | No | The selected checkbox element(s) as a string or array |
+| options | Yes, unless using values and output | An associative array of values and output |
+| separator | No | String of text to separate each checkbox item |
+| assign | No | Assign checkbox tags to an array instead of output |
+| labels | No | Add -tags to the output (defaults to true) |
+| label\_ids | No | Add id-attributes to and to the output (defaults to false) |
+| escape | No | Escape the output / content (values are always escaped) (defaults to true) |
+| strict | No | Will make the "extra" attributes *disabled* and *readonly* only be set, if they were supplied with either boolean *TRUE* or string *"disabled"* and *"readonly"* respectively (defaults to false) |
+
+- Required attributes are `values` and `output`, unless you use `options` instead.
+
+- All output is XHTML compliant.
+
+- All parameters that are not in the list above are printed as
+ name/value-pairs inside each of the created -tags.
+
+## Examples
+```php
+assign('cust_ids', array(1000,1001,1002,1003));
+$smarty->assign('cust_names', array(
+ 'Joe Schmoe',
+ 'Jack Smith',
+ 'Jane Johnson',
+ 'Charlie Brown')
+ );
+$smarty->assign('customer_id', 1001);
+```
+
+where template is
+
+```smarty
+{html_checkboxes name='id' values=$cust_ids output=$cust_names selected=$customer_id separator=' '}
+```
+
+or where PHP code is:
+
+```php
+assign(
+ 'cust_checkboxes',
+ [
+ 1000 => 'Joe Schmoe',
+ 1001 => 'Jack Smith',
+ 1002 => 'Jane Johnson',
+ 1003 => 'Charlie Brown',
+ ]
+);
+$smarty->assign('customer_id', 1001);
+```
+
+and the template is
+
+```smarty
+{html_checkboxes name='id' options=$cust_checkboxes selected=$customer_id separator=' '}
+```
+
+both examples will output:
+
+```html
+ Joe Schmoe
+ Jack Smith
+
+ Jane Johnson
+ Charlie Brown
+```
+
+
+```php
+assign('contact_types',$db->getAssoc($sql));
+
+$sql = 'select contact_id, contact_type_id, contact '
+ .'from contacts where contact_id=12';
+$smarty->assign('contact',$db->getRow($sql));
+```
+
+The results of the database queries above would be output with.
+
+```smarty
+{html_checkboxes name='contact_type_id' options=$contact_types selected=$contact.contact_type_id separator=' '}
+```
+
+See also [`{html_radios}`](./language-function-html-radios.md) and
+[`{html_options}`](./language-function-html-options.md)
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-custom-functions/language-function-html-image.md b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-custom-functions/language-function-html-image.md
new file mode 100644
index 000000000..0ae02cae2
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-custom-functions/language-function-html-image.md
@@ -0,0 +1,58 @@
+# {html_image}
+
+`{html_image}` is a [custom function](index.md) that
+generates an HTML ` ` tag. The `height` and `width` are
+automatically calculated from the image file if they are not supplied.
+
+## Attributes
+
+| Attribute Name | Required | Description |
+|----------------|----------|-------------------------------------------------------------------------|
+| file | Yes | name/path to image |
+| height | No | Height to display image (defaults to actual image height) |
+| width | No | Width to display image (defaults to actual image width) |
+| basedir | no | Directory to base relative paths from (defaults to web server doc root) |
+| alt | no | Alternative description of the image |
+| href | no | href value to link the image to |
+| path\_prefix | no | Prefix for output path |
+
+- `basedir` is the base directory that relative image paths are based
+ from. If not given, the web server's document root
+ `$_ENV['DOCUMENT_ROOT']` is used as the base. If security is
+ enabled, then the image must be located in the `$secure_dir` path of
+ the security policy. See the [Security](../../api/security.md)
+ section for details.
+
+- `href` is the href value to link the image to. If link is supplied,
+ an `` tag is placed around the image tag.
+
+- `path_prefix` is an optional prefix string you can give the output
+ path. This is useful if you want to supply a different server name
+ for the image.
+
+- All parameters that are not in the list above are printed as
+ name/value-pairs inside the created ` ` tag.
+
+> **Note**
+>
+> `{html_image}` requires a hit to the disk to read the image and
+> calculate the height and width. If you don't use template
+> [caching](../../api/caching/basics.md), it is generally better to avoid `{html_image}`
+> and leave image tags static for optimal performance.
+
+## Examples
+
+```smarty
+{html_image file='pumpkin.jpg'}
+{html_image file='/path/from/docroot/pumpkin.jpg'}
+{html_image file='../path/relative/to/currdir/pumpkin.jpg'}
+```
+
+Example output of the above template would be:
+
+```html
+
+
+
+```
+
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-custom-functions/language-function-html-options.md b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-custom-functions/language-function-html-options.md
new file mode 100644
index 000000000..a63ccc56b
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-custom-functions/language-function-html-options.md
@@ -0,0 +1,146 @@
+# {html_options}
+
+`{html_options}` is a [custom function](index.md) that
+creates the html `` group with the assigned data. It
+takes care of which item(s) are selected by default as well.
+
+## Attributes
+
+| Attribute Name | Required | Description |
+|----------------|-------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
+| values | Yes, unless using options attribute | An array of values for dropdown |
+| output | Yes, unless using options attribute | An array of output for dropdown |
+| selected | No | The selected option element(s) as a string or array |
+| options | Yes, unless using values and output | An associative array of values and output |
+| name | No | Name of select group |
+| strict | No | Will make the "extra" attributes *disabled* and *readonly* only be set, if they were supplied with either boolean *TRUE* or string *"disabled"* and *"readonly"* respectively (defaults to false) |
+
+- Required attributes are `values` and `output`, unless you use the
+ combined `options` instead.
+
+- If the optional `name` attribute is given, the ` `
+ tags are created, otherwise ONLY the ` ` list is generated.
+
+- If a given value is an array, it will treat it as an html
+ ` `, and display the groups. Recursion is supported with
+ ``.
+
+- All parameters that are not in the list above are printed as
+ name/value-pairs inside the `` tag. They are ignored if the
+ optional `name` is not given.
+
+- All output is XHTML compliant.
+
+## Examples
+
+```php
+assign('myOptions', [
+ 1800 => 'Joe Schmoe',
+ 9904 => 'Jack Smith',
+ 2003 => 'Charlie Brown']
+ );
+$smarty->assign('mySelect', 9904);
+```
+
+The following template will generate a drop-down list. Note the presence
+of the `name` attribute which creates the `` tags.
+
+```smarty
+{html_options name=foo options=$myOptions selected=$mySelect}
+```
+
+Output of the above example would be:
+
+```html
+
+ Joe Schmoe
+ Jack Smith
+ Charlie Brown
+
+```
+
+```php
+assign('cust_ids', [56,92,13]);
+$smarty->assign('cust_names', [
+ 'Joe Schmoe',
+ 'Jane Johnson',
+ 'Charlie Brown']);
+$smarty->assign('customer_id', 92);
+```
+
+The above arrays would be output with the following template (note the
+use of the php [`count()`](https://www.php.net/function.count) function as a
+modifier to set the select size).
+
+```smarty
+
+ {html_options values=$cust_ids output=$cust_names selected=$customer_id}
+
+```
+
+The above example would output:
+
+```html
+
+ Joe Schmoe
+ Jane Johnson
+ Charlie Brown
+
+```
+
+```php
+assign('contact_types',$db->getAssoc($sql));
+
+$sql = 'select contact_id, name, email, contact_type_id
+ from contacts where contact_id='.$contact_id;
+$smarty->assign('contact',$db->getRow($sql));
+
+```
+
+Where a template could be as follows. Note the use of the
+[`truncate`](../language-modifiers/language-modifier-truncate.md) modifier.
+
+```smarty
+
+ -- none --
+ {html_options options=$contact_types|truncate:20 selected=$contact.type_id}
+
+```
+
+```php
+ 'Golf', 9 => 'Cricket',7 => 'Swim');
+$arr['Rest'] = array(3 => 'Sauna',1 => 'Massage');
+$smarty->assign('lookups', $arr);
+$smarty->assign('fav', 7);
+```
+
+The script above and the following template
+
+```smarty
+{html_options name=foo options=$lookups selected=$fav}
+```
+
+would output:
+
+```html
+
+
+ Golf
+ Cricket
+ Swim
+
+
+ Sauna
+ Massage
+
+
+```
+
+See also [`{html_checkboxes}`](./language-function-html-checkboxes.md) and
+[`{html_radios}`](./language-function-html-radios.md)
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-custom-functions/language-function-html-radios.md b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-custom-functions/language-function-html-radios.md
new file mode 100644
index 000000000..af8ecda68
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-custom-functions/language-function-html-radios.md
@@ -0,0 +1,104 @@
+# {html_radios}
+
+`{html_radios}` is a [custom function](index.md) that
+creates an HTML radio button group. It also takes care of which item is
+selected by default as well.
+
+## Attributes
+
+| Attribute Name | Required | Description |
+|----------------|-------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
+| name | No | Name of radio list |
+| values | Yes, unless using options attribute | An array of values for radio buttons |
+| output | Yes, unless using options attribute | An array of output for radio buttons |
+| selected | No | The selected radio element |
+| options | Yes, unless using values and output | An associative array of values and output |
+| separator | No | String of text to separate each radio item |
+| assign | No | Assign radio tags to an array instead of output |
+| labels | No | Add -tags to the output (defaults to true) |
+| label\_ids | No | Add id-attributes to and to the output (defaults to false) |
+| escape | No | Escape the output / content (values are always escaped) (defaults to true) |
+| strict | No | Will make the "extra" attributes *disabled* and *readonly* only be set, if they were supplied with either boolean *TRUE* or string *"disabled"* and *"readonly"* respectively (defaults to false) |
+
+- Required attributes are `values` and `output`, unless you use
+ `options` instead.
+
+- All output is XHTML compliant.
+
+- All parameters that are not in the list above are output as
+ name/value-pairs inside each of the created ` `-tags.
+
+## Examples
+
+```php
+assign('cust_ids', array(1000,1001,1002,1003));
+$smarty->assign('cust_names', array(
+ 'Joe Schmoe',
+ 'Jack Smith',
+ 'Jane Johnson',
+ 'Charlie Brown')
+ );
+$smarty->assign('customer_id', 1001);
+```
+
+Where template is:
+
+```smarty
+{html_radios name='id' values=$cust_ids output=$cust_names
+ selected=$customer_id separator=' '}
+```
+
+
+```php
+assign('cust_radios', array(
+ 1000 => 'Joe Schmoe',
+ 1001 => 'Jack Smith',
+ 1002 => 'Jane Johnson',
+ 1003 => 'Charlie Brown'));
+$smarty->assign('customer_id', 1001);
+
+```
+
+Where template is:
+
+```smarty
+
+{html_radios name='id' options=$cust_radios
+ selected=$customer_id separator=' '}
+```
+
+Both examples will output:
+
+```html
+ Joe Schmoe
+ Jack Smith
+ Jane Johnson
+ Charlie Brown
+```
+
+```php
+
+assign('contact_types',$db->getAssoc($sql));
+
+$sql = 'select contact_id, name, email, contact_type_id '
+ .'from contacts where contact_id='.$contact_id;
+$smarty->assign('contact',$db->getRow($sql));
+
+```
+
+The variable assigned from the database above would be output with the
+template:
+
+```smarty
+{html_radios name='contact_type_id' options=$contact_types
+ selected=$contact.contact_type_id separator=' '}
+```
+
+See also [`{html_checkboxes}`](language-function-html-checkboxes.md) and
+[`{html_options}`](language-function-html-options.md)
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-custom-functions/language-function-html-select-date.md b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-custom-functions/language-function-html-select-date.md
new file mode 100644
index 000000000..2a045baf8
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-custom-functions/language-function-html-select-date.md
@@ -0,0 +1,118 @@
+# {html_select_date}
+
+`{html_select_date}` is a [custom function](index.md)
+that creates date dropdowns. It can display any or all of: year, month,
+and day. All parameters that are not in the list below are printed as
+name/value-pairs inside the `` tags of day, month and year.
+
+## Attributes
+
+| Attribute Name | Default | Description |
+|--------------------|--------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
+| prefix | Date_ | What to prefix the var name with |
+| time | | What date/time to pre-select. Accepts timestamps, DateTime objects or any string parseable by [strtotime()](https://www.php.net/strtotime). If an array is given, the attributes field_array and prefix are used to identify the array elements to extract year, month and day from. Omitting this parameter or supplying a falsy value will select the current date. To prevent date selection, pass in NULL. |
+| start_year | current year | The first year in the dropdown, either year number, or relative to current year (+/- N) |
+| end_year | same as start_year | The last year in the dropdown, either year number, or relative to current year (+/- N) |
+| display_days | TRUE | Whether to display days or not |
+| display_months | TRUE | Whether to display months or not |
+| display_years | TRUE | Whether to display years or not |
+| month_names | | List of strings to display for months. array(1 =\> 'Jan', ..., 12 =\> 'Dec') |
+| month_format | \%B | What format the month should be in (strftime) |
+| day_format | \%02d | What format the day output should be in (sprintf) |
+| day_value_format | \%d | What format the day value should be in (sprintf) |
+| year_as_text | FALSE | Whether or not to display the year as text |
+| reverse_years | FALSE | Display years in reverse order |
+| field_array | | If a name is given, the select boxes will be drawn such that the results will be returned to PHP in the form of name\[Day\], name\[Year\], name\[Month\]. |
+| day_size | | Adds size attribute to select tag if given |
+| month_size | | Adds size attribute to select tag if given |
+| year_size | | Adds size attribute to select tag if given |
+| all_extra | | Adds extra attributes to all select/input tags if given |
+| day_extra | | Adds extra attributes to select/input tags if given |
+| month_extra | | Adds extra attributes to select/input tags if given |
+| year_extra | | Adds extra attributes to select/input tags if given |
+| all_id | | Adds id-attribute to all select/input tags if given |
+| day_id | | Adds id-attribute to select/input tags if given |
+| month_id | | Adds id-attribute to select/input tags if given |
+| year_id | | Adds id-attribute to select/input tags if given |
+| field_order | MDY | The order in which to display the fields |
+| field_separator | \\n | String printed between different fields |
+| month_value_format | \%m | strftime() format of the month values, default is %m for month numbers. |
+| all_empty | | If supplied then the first element of any select-box has this value as it's label and "" as it's value. This is useful to make the select-boxes read "Please select" for example. |
+| year_empty | | If supplied then the first element of the year's select-box has this value as it's label and "" as it's value. This is useful to make the select-box read "Please select a year" for example. Note that you can use values like "-MM-DD" as time-attribute to indicate an unselected year. |
+| month_empty | | If supplied then the first element of the month's select-box has this value as it's label and "" as it's value. . Note that you can use values like "YYYY\--DD" as time-attribute to indicate an unselected month. |
+| day_empty | | If supplied then the first element of the day's select-box has this value as it's label and "" as it's value. Note that you can use values like "YYYY-MM-" as time-attribute to indicate an unselected day. |
+
+> **Note**
+>
+> There is an useful php function on the [date tips page](../../appendixes/tips.md)
+> for converting `{html_select_date}` form values to a timestamp.
+
+## Exaples
+
+Template code
+
+```smarty
+{html_select_date}
+```
+
+This will output:
+
+```html
+
+ January
+ February
+ March
+ ..... snipped .....
+ October
+ November
+ December
+
+
+ 01
+ 02
+ 03
+ ..... snipped .....
+ 11
+ 12
+ 13
+ 14
+ 15
+ ..... snipped .....
+ 29
+ 30
+ 31
+
+
+ 2006
+
+```
+
+```smarty
+{* start and end year can be relative to current year *}
+{html_select_date prefix='StartDate' time=$time start_year='-5'
+ end_year='+1' display_days=false}
+```
+
+With 2000 as the current year the output:
+
+```html
+
+ January
+ February
+ .... snipped ....
+ November
+ December
+
+
+ 1995
+ .... snipped ....
+ 1999
+ 2000
+ 2001
+
+```
+
+See also [`{html_select_time}`](language-function-html-select-time.md),
+[`date_format`](../language-modifiers/language-modifier-date-format.md),
+[`$smarty.now`](../language-variables/language-variables-smarty.md#smartynow-languagevariablessmartynow) and the [date tips
+page](../../appendixes/tips.md#dates).
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-custom-functions/language-function-html-select-time.md b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-custom-functions/language-function-html-select-time.md
new file mode 100644
index 000000000..001734523
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-custom-functions/language-function-html-select-time.md
@@ -0,0 +1,100 @@
+# {html_select_time}
+
+`{html_select_time}` is a [custom function](index.md)
+that creates time dropdowns for you. It can display any or all of: hour,
+minute, second and meridian.
+
+The `time` attribute can have different formats. It can be a unique
+timestamp, a string of the format `YYYYMMDDHHMMSS` or a string that is
+parseable by PHP's [`strtotime()`](https://www.php.net/strtotime).
+
+## Attributes
+
+| Attribute Name | Default | Description |
+|-----------------------|--------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
+| prefix | Time\_ | What to prefix the var name with |
+| time | current [timestamp](https://www.php.net/function.time) | What date/time to pre-select. Accepts [timestamp](https://www.php.net/function.time), [DateTime](https://www.php.net/class.DateTime), mysql timestamp or any string parsable by [`strtotime()`](https://www.php.net/strtotime). If an array is given, the attributes field\_array and prefix are used to identify the array elements to extract hour, minute, second and meridian from. |
+| display\_hours | TRUE | Whether or not to display hours |
+| display\_minutes | TRUE | Whether or not to display minutes |
+| display\_seconds | TRUE | Whether or not to display seconds |
+| display\_meridian | TRUE | Whether or not to display meridian (am/pm) |
+| use\_24\_hours | TRUE | Whether or not to use 24 hour clock |
+| minute\_interval | 1 | Number interval in minute dropdown |
+| second\_interval | 1 | Number interval in second dropdown |
+| hour\_format | \%02d | What format the hour label should be in (sprintf) |
+| hour\_value\_format | \%20d | What format the hour value should be in (sprintf) |
+| minute\_format | \%02d | What format the minute label should be in (sprintf) |
+| minute\_value\_format | \%20d | What format the minute value should be in (sprintf) |
+| second\_format | \%02d | What format the second label should be in (sprintf) |
+| second\_value\_format | \%20d | What format the second value should be in (sprintf) |
+| field\_array | n/a | Outputs values to array of this name |
+| all\_extra | null | Adds extra attributes to select/input tags if given |
+| hour\_extra | null | Adds extra attributes to select/input tags if given |
+| minute\_extra | null | Adds extra attributes to select/input tags if given |
+| second\_extra | null | Adds extra attributes to select/input tags if given |
+| meridian\_extra | null | Adds extra attributes to select/input tags if given |
+| field\_separator | \\n | String printed between different fields |
+| option\_separator | \\n | String printed between different options of a field |
+| all\_id | null | Adds id-attribute to all select/input tags if given |
+| hour\_id | null | Adds id-attribute to select/input tags if given |
+| minute\_id | null | Adds id-attribute to select/input tags if given |
+| second\_id | null | Adds id-attribute to select/input tags if given |
+| meridian\_id | null | Adds id-attribute to select/input tags if given |
+| all\_empty | null | If supplied then the first element of any select-box has this value as it's label and "" as it's value. This is useful to make the select-boxes read "Please select" for example. |
+| hour\_empty | null | If supplied then the first element of the hour's select-box has this value as it's label and "" as it's value. This is useful to make the select-box read "Please select an hour" for example. |
+| minute\_empty | null | If supplied then the first element of the minute's select-box has this value as it's label and "" as it's value. This is useful to make the select-box read "Please select an minute" for example. |
+| second\_empty | null | If supplied then the first element of the second's select-box has this value as it's label and "" as it's value. This is useful to make the select-box read "Please select an second" for example. |
+| meridian\_empty | null | If supplied then the first element of the meridian's select-box has this value as it's label and "" as it's value. This is useful to make the select-box read "Please select an meridian" for example. |
+
+
+## Examples
+
+```smarty
+{html_select_time use_24_hours=true}
+```
+
+At 9:20 and 23 seconds in the morning the template above would output:
+
+```html
+
+ 00
+ 01
+ ... snipped ....
+ 08
+ 09
+ 10
+ ... snipped ....
+ 22
+ 23
+
+
+ 00
+ 01
+ ... snipped ....
+ 19
+ 20
+ 21
+ ... snipped ....
+ 58
+ 59
+
+
+ 00
+ 01
+ ... snipped ....
+ 22
+ 23
+ 24
+ ... snipped ....
+ 58
+ 59
+
+
+ AM
+ PM
+
+```
+
+See also [`$smarty.now`](../language-variables/language-variables-smarty.md#smartynow-languagevariablessmartynow),
+[`{html_select_date}`](language-function-html-select-date.md) and the
+[date tips page](../../appendixes/tips.md#dates).
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-custom-functions/language-function-html-table.md b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-custom-functions/language-function-html-table.md
new file mode 100644
index 000000000..b0eaf0ddf
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-custom-functions/language-function-html-table.md
@@ -0,0 +1,93 @@
+# {html_table}
+
+`{html_table}` is a [custom function](index.md) that
+dumps an array of data into an HTML ``.
+
+## Attributes
+
+| Attribute Name | Required | Description |
+|----------------|----------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
+| loop | Yes | Array of data to loop through |
+| cols | No | Number of columns in the table or a comma-separated list of column heading names or an array of column heading names.if the cols-attribute is empty, but rows are given, then the number of cols is computed by the number of rows and the number of elements to display to be just enough cols to display all elements. If both, rows and cols, are omitted cols defaults to 3. if given as a list or array, the number of columns is computed from the number of elements in the list or array. |
+| rows | No | Number of rows in the table. if the rows-attribute is empty, but cols are given, then the number of rows is computed by the number of cols and the number of elements to display to be just enough rows to display all elements. |
+| inner | No | Direction of consecutive elements in the loop-array to be rendered. *cols* means elements are displayed col-by-col. *rows* means elements are displayed row-by-row. |
+| caption | No | Text to be used for the `` element of the table |
+| table\_attr | No | Attributes for `` tag (defaults to 'border="1"') |
+| th\_attr | No | Attributes for `` tag (arrays are cycled) |
+| tr\_attr | No | attributes for ` ` tag (arrays are cycled) |
+| td\_attr | No | Attributes for `` tag (arrays are cycled) |
+| trailpad | No | Value to pad the trailing cells on last row with (if any) (defaults to ' ') |
+| hdir | No | Direction of each row to be rendered. possible values: *right* (left-to-right), and *left* (right-to-left) (defaults to 'right') |
+| vdir | No | Direction of each column to be rendered. possible values: *down* (top-to-bottom), *up* (bottom-to-top) (defaults to 'down') |
+
+- The `cols` attribute determines how many columns will be in the
+ table.
+
+- The `table_attr`, `tr_attr` and `td_attr` values determine the
+ attributes given to the ``, `` and `` tags.
+
+- If `tr_attr` or `td_attr` are arrays, they will be cycled through.
+
+- `trailpad` is the value put into the trailing cells on the last
+ table row if there are any present.
+
+## Examples
+
+```php
+assign( 'data', array(1,2,3,4,5,6,7,8,9) );
+$smarty->assign( 'tr', array('bgcolor="#eeeeee"','bgcolor="#dddddd"') );
+$smarty->display('index.tpl');
+```
+
+The variables assigned from php could be displayed as these three
+examples demonstrate. Each example shows the template followed by
+output.
+
+** Example 1 **
+```smarty
+{html_table loop=$data}
+```
+```html
+
+```
+
+** Example 2 **
+```smarty
+{html_table loop=$data cols=4 table_attr='border="0"'}
+```
+```html
+
+```
+
+** Example 3 **
+```smarty
+{html_table loop=$data cols="first,second,third,fourth" tr_attr=$tr}
+```
+```html
+
+
+
+ first second third fourth
+
+
+
+ 1 2 3 4
+ 5 6 7 8
+ 9
+
+
+```
+
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-custom-functions/language-function-mailto.md b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-custom-functions/language-function-mailto.md
new file mode 100644
index 000000000..c32c23871
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-custom-functions/language-function-mailto.md
@@ -0,0 +1,61 @@
+# {mailto}
+
+`{mailto}` automates the creation of a `mailto:` anchor links and
+optionally encodes them. Encoding emails makes it more difficult for web
+spiders to lift email addresses off of a site.
+
+## Attributes
+
+| Attribute Name | Required | Description |
+|----------------|----------|-----------------------------------------------------------------------------------------------|
+| address | Yes | The e-mail address |
+| text | No | The text to display, default is the e-mail address |
+| encode | No | How to encode the e-mail. Can be one of `none`, `hex`, `javascript` or `javascript_charcode`. |
+| cc | No | Email addresses to carbon copy, separate entries by a comma. |
+| bcc | No | Email addresses to blind carbon copy, separate entries by a comma |
+| subject | No | Email subject |
+| newsgroups | No | Newsgroups to post to, separate entries by a comma. |
+| followupto | No | Addresses to follow up to, separate entries by a comma. |
+| extra | No | Any extra information you want passed to the link, such as style sheet classes |
+
+> **Note**
+>
+> Javascript is probably the most thorough form of encoding, although
+> you can use hex encoding too.
+
+
+## Examples
+
+```smarty
+{mailto address="me@example.com"}
+me@example.com
+
+{mailto address="me@example.com" text="send me some mail"}
+send me some mail
+
+{mailto address="me@example.com" encode="javascript"}
+
+
+{mailto address="me@example.com" encode="hex"}
+m&..snipped...#x6f;m
+
+{mailto address="me@example.com" subject="Hello to you!"}
+me@example.com
+
+{mailto address="me@example.com" cc="you@example.com,they@example.com"}
+me@example.com
+
+{mailto address="me@example.com" extra='class="email"'}
+me@example.com
+
+{mailto address="me@example.com" encode="javascript_charcode"}
+
+```
+
+See also [`escape`](../language-modifiers/language-modifier-escape.md),
+[`{textformat}`](../language-custom-functions/language-function-textformat.md) and [obfuscating email
+addresses](../../appendixes/tips.md#obfuscating-e-mail-addresses).
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-custom-functions/language-function-math.md b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-custom-functions/language-function-math.md
new file mode 100644
index 000000000..7b34fccff
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-custom-functions/language-function-math.md
@@ -0,0 +1,99 @@
+# {math}
+
+`{math}` allows the template designer to do math equations in the
+template.
+
+## Attributes
+
+| Attribute Name | Required | Description |
+|----------------|----------|--------------------------------------------------|
+| equation | Yes | The equation to execute |
+| format | No | The format of the result (sprintf) |
+| var | Yes | Equation variable value |
+| assign | No | Template variable the output will be assigned to |
+| \[var \...\] | Yes | Equation variable value |
+
+- Any numeric template variables may be used in the equations, and the
+ result is printed in place of the tag.
+
+- The variables used in the equation are passed as parameters, which
+ can be template variables or static values.
+
+- +, -, /, \*, abs, ceil, cos, exp, floor, log, log10, max, min, pi,
+ pow, rand, round, sin, sqrt, srans and tan are all valid operators.
+ Check the PHP documentation for further information on these
+ [math](https://www.php.net/eval) functions.
+
+- If you supply the `assign` attribute, the output of the `{math}`
+ function will be assigned to this template variable instead of being
+ output to the template.
+
+> **Note**
+>
+> `{math}` is an expensive function in performance due to its use of the
+> php [`eval()`](https://www.php.net/eval) function. Doing the math in PHP
+> is much more efficient, so whenever possible do the math calculations
+> in the script and [`assign()`](../../programmers/api-functions/api-assign.md) the results to the
+> template. Definitely avoid repetitive `{math}` function calls, eg
+> within [`{section}`](../language-builtin-functions/language-function-section.md) loops.
+
+## Examples
+
+**Example 1**
+```smarty
+
+{* $height=4, $width=5 *}
+
+{math equation="x + y" x=$height y=$width}
+```
+
+The above example will output:
+
+```
+9
+```
+
+
+**Example 2**
+
+```smarty
+{* $row_height = 10, $row_width = 20, #col_div# = 2, assigned in template *}
+
+{math equation="height * width / division"
+ height=$row_height
+ width=$row_width
+ division=#col_div#}
+```
+
+The above example will output:
+
+```
+100
+```
+
+**Example 3**
+
+```smarty
+{* you can use parenthesis *}
+
+{math equation="(( x + y ) / z )" x=2 y=10 z=2}
+```
+
+The above example will output:
+
+```
+6
+```
+
+**Example 4**
+
+```smarty
+{* you can supply a format parameter in sprintf format *}
+
+{math equation="x + y" x=4.4444 y=5.0000 format="%.2f"}
+```
+
+The above example will output:
+```
+9.44
+```
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-custom-functions/language-function-textformat.md b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-custom-functions/language-function-textformat.md
new file mode 100644
index 000000000..cb2a8d708
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-custom-functions/language-function-textformat.md
@@ -0,0 +1,182 @@
+# {textformat}
+
+`{textformat}` is a block tag used to
+format text. It basically cleans up spaces and special characters, and
+formats paragraphs by wrapping at a boundary and indenting lines.
+
+You can set the parameters explicitly, or use a preset style. Currently,
+"email" is the only available style.
+
+## Attributes
+
+| Attribute Name | Default | Description |
+|----------------|------------------|----------------------------------------------------------------------------------------|
+| style | *n/a* | Preset style |
+| indent | *0* | The number of chars to indent every line |
+| indent\_first | *0* | The number of chars to indent the first line |
+| indent\_char | *(single space)* | The character (or string of chars) to indent with |
+| wrap | *80* | How many characters to wrap each line to |
+| wrap\_char | *\\n* | The character (or string of chars) to break each line with |
+| wrap\_cut | *FALSE* | If TRUE, wrap will break the line at the exact character instead of at a word boundary |
+| assign | *n/a* | The template variable the output will be assigned to |
+
+## Examples
+
+```smarty
+{textformat wrap=40}
+
+This is foo.
+This is foo.
+This is foo.
+This is foo.
+This is foo.
+This is foo.
+
+This is bar.
+
+bar foo bar foo foo.
+bar foo bar foo foo.
+bar foo bar foo foo.
+bar foo bar foo foo.
+bar foo bar foo foo.
+bar foo bar foo foo.
+bar foo bar foo foo.
+
+{/textformat}
+```
+
+The above example will output:
+
+```
+This is foo. This is foo. This is foo.
+This is foo. This is foo. This is foo.
+
+This is bar.
+
+bar foo bar foo foo. bar foo bar foo
+foo. bar foo bar foo foo. bar foo bar
+foo foo. bar foo bar foo foo. bar foo
+bar foo foo. bar foo bar foo foo.
+```
+
+```smarty
+{textformat wrap=40 indent=4}
+
+This is foo.
+This is foo.
+This is foo.
+This is foo.
+This is foo.
+This is foo.
+
+This is bar.
+
+bar foo bar foo foo.
+bar foo bar foo foo.
+bar foo bar foo foo.
+bar foo bar foo foo.
+bar foo bar foo foo.
+bar foo bar foo foo.
+bar foo bar foo foo.
+
+{/textformat}
+```
+
+The above example will output:
+
+```
+ This is foo. This is foo. This is
+ foo. This is foo. This is foo. This
+ is foo.
+
+ This is bar.
+
+ bar foo bar foo foo. bar foo bar foo
+ foo. bar foo bar foo foo. bar foo
+ bar foo foo. bar foo bar foo foo.
+ bar foo bar foo foo. bar foo bar
+ foo foo.
+```
+
+
+```smarty
+{textformat wrap=40 indent=4 indent_first=4}
+
+This is foo.
+This is foo.
+This is foo.
+This is foo.
+This is foo.
+This is foo.
+
+This is bar.
+
+bar foo bar foo foo.
+bar foo bar foo foo.
+bar foo bar foo foo.
+bar foo bar foo foo.
+bar foo bar foo foo.
+bar foo bar foo foo.
+bar foo bar foo foo.
+
+{/textformat}
+```
+
+The above example will output:
+
+
+```
+ This is foo. This is foo. This
+ is foo. This is foo. This is foo.
+ This is foo.
+
+ This is bar.
+
+ bar foo bar foo foo. bar foo bar
+ foo foo. bar foo bar foo foo. bar
+ foo bar foo foo. bar foo bar foo
+ foo. bar foo bar foo foo. bar foo
+ bar foo foo.
+```
+
+
+```smarty
+{textformat style="email"}
+
+This is foo.
+This is foo.
+This is foo.
+This is foo.
+This is foo.
+This is foo.
+
+This is bar.
+
+bar foo bar foo foo.
+bar foo bar foo foo.
+bar foo bar foo foo.
+bar foo bar foo foo.
+bar foo bar foo foo.
+bar foo bar foo foo.
+bar foo bar foo foo.
+
+{/textformat}
+```
+
+The above example will output:
+
+
+```
+This is foo. This is foo. This is foo. This is foo. This is foo. This is
+foo.
+
+This is bar.
+
+bar foo bar foo foo. bar foo bar foo foo. bar foo bar foo foo. bar foo
+bar foo foo. bar foo bar foo foo. bar foo bar foo foo. bar foo bar foo
+foo.
+```
+
+
+See also [`{strip}`](../language-builtin-functions/language-function-strip.md) and
+[`wordwrap`](../language-modifiers/language-modifier-wordwrap.md).
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-modifiers/index.md b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-modifiers/index.md
new file mode 100644
index 000000000..3f52c2e77
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-modifiers/index.md
@@ -0,0 +1,104 @@
+# Variable Modifiers
+
+Variable modifiers can be applied to
+[variables](../language-variables/index.md), [custom tags](../language-custom-functions/index.md)
+or strings. To apply a modifier,
+specify the value followed by a `|` (pipe) and the modifier name. A
+modifier may accept additional parameters that affect its behavior.
+These parameters follow the modifier name and are separated by a `:`
+(colon).
+
+Modifiers can be applied to any type of variables, including arrays
+and objects.
+
+## Examples
+
+```smarty
+{* apply modifier to a variable *}
+{$title|upper}
+
+{* modifier with parameters *}
+{$title|truncate:40:"..."}
+
+{* apply modifier to a function parameter *}
+{html_table loop=$myvar|upper}
+
+{* with parameters *}
+{html_table loop=$myvar|truncate:40:"..."}
+
+{* apply modifier to literal string *}
+{"foobar"|upper}
+
+{* using date_format to format the current date *}
+{$smarty.now|date_format:"%Y/%m/%d"}
+
+{* apply modifier to a custom function *}
+{mailto|upper address="smarty@example.com"}
+
+{* using php's str_repeat *}
+{"="|str_repeat:80}
+
+{* php's count *}
+{$myArray|@count}
+
+{* this will uppercase the whole array *}
+
+{html_options output=$my_array|upper}
+
+```
+
+## Combining Modifiers
+
+You can apply any number of modifiers to a variable. They will be
+applied in the order they are combined, from left to right. They must be
+separated with a `|` (pipe) character.
+
+```php
+assign('articleTitle', 'Smokers are Productive, but Death Cuts Efficiency.');
+```
+
+where template is:
+
+```smarty
+{$articleTitle}
+{$articleTitle|upper|spacify}
+{$articleTitle|lower|spacify|truncate}
+{$articleTitle|lower|truncate:30|spacify}
+{$articleTitle|lower|spacify|truncate:30:". . ."}
+```
+
+
+The above example will output:
+
+```
+Smokers are Productive, but Death Cuts Efficiency.
+S M O K E R S A R ....snip.... H C U T S E F F I C I E N C Y .
+s m o k e r s a r ....snip.... b u t d e a t h c u t s...
+s m o k e r s a r e p r o d u c t i v e , b u t . . .
+s m o k e r s a r e p. . .
+```
+
+## Using modifiers in expressions
+
+Modifiers can also be used in expressions. For example, you can use the [isset modifier](./language-modifier-isset.md)
+to test if a variable holds a value different from null.
+
+```smarty
+{if $varA|isset}
+ variable A is set
+{/if}
+```
+
+You can also use modifiers in expressions in a PHP-style syntax:
+
+```smarty
+{if isset($varA)}
+ variable A is set
+{/if}
+```
+
+See also [`registerPlugin()`](../../programmers/api-functions/api-register-plugin.md), [combining
+modifiers](../language-combining-modifiers.md). and [extending smarty with
+plugins](../../api/extending/introduction.md)
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-capitalize.md b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-capitalize.md
new file mode 100644
index 000000000..0368c7b3b
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-capitalize.md
@@ -0,0 +1,49 @@
+# capitalize
+
+This is used to capitalize the first letter of all words in a variable.
+This is similar to the PHP [`ucwords()`](https://www.php.net/ucwords)
+function.
+
+## Basic usage
+```smarty
+{$myVar|capitalize}
+```
+
+## Parameters
+
+| Parameter | Type | Required | Description |
+|-----------|---------|----------|-------------------------------------------------------------------------------------------------------|
+| 1 | boolean | No | This determines whether or not words with digits will be uppercased |
+| 2 | boolean | No | This determines whether or not Capital letters within words should be lowercased, e.g. "aAa" to "Aaa" |
+
+
+## Examples
+
+```php
+assign('articleTitle', 'next x-men film, x3, delayed.');
+
+```
+
+
+Where the template is:
+
+```smarty
+ {$articleTitle}
+ {$articleTitle|capitalize}
+ {$articleTitle|capitalize:true}
+```
+
+
+Will output:
+
+```
+ next x-men film, x3, delayed.
+ Next X-Men Film, x3, Delayed.
+ Next X-Men Film, X3, Delayed.
+```
+
+
+See also [`lower`](language-modifier-lower.md) and
+[`upper`](language-modifier-upper.md)
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-cat.md b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-cat.md
new file mode 100644
index 000000000..97dda4b37
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-cat.md
@@ -0,0 +1,36 @@
+# cat
+
+This value is concatenated to the given variable.
+
+## Basic usage
+```smarty
+{$myVar|cat:' units'}
+```
+
+## Parameters
+
+| Parameter | Type | Required | Description |
+|-----------|--------|----------|--------------------------------------------------|
+| 1 | string | No | This value to concatenate to the given variable. |
+
+## Examples
+
+```php
+assign('articleTitle', "Psychics predict world didn't end");
+
+```
+
+Where template is:
+
+```smarty
+ {$articleTitle|cat:' yesterday.'}
+```
+
+Will output:
+
+```
+ Psychics predict world didn't end yesterday.
+```
+
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-count-characters.md b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-count-characters.md
new file mode 100644
index 000000000..8fc37d7a9
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-count-characters.md
@@ -0,0 +1,43 @@
+# count_characters
+
+This is used to count the number of characters in a variable.
+
+## Basic usage
+```smarty
+{$myVar|count_characters}
+```
+
+## Parameters
+
+| Parameter | Type | Required | Description |
+|-----------|---------|----------|------------------------------------------------------------------------|
+| 1 | boolean | No | This determines whether to include whitespace characters in the count. |
+
+## Examples
+
+```php
+assign('articleTitle', 'Cold Wave Linked to Temperatures.');
+
+```
+
+Where template is:
+
+```smarty
+ {$articleTitle}
+ {$articleTitle|count_characters}
+ {$articleTitle|count_characters:true}
+```
+
+Will output:
+
+```
+ Cold Wave Linked to Temperatures.
+ 29
+ 33
+```
+
+See also [`count_words`](language-modifier-count-words.md),
+[`count_sentences`](language-modifier-count-sentences.md) and
+[`count_paragraphs`](language-modifier-count-paragraphs.md).
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-count-paragraphs.md b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-count-paragraphs.md
new file mode 100644
index 000000000..060cb98a5
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-count-paragraphs.md
@@ -0,0 +1,41 @@
+# count_paragraphs
+
+This is used to count the number of paragraphs in a variable.
+
+## Basic usage
+```smarty
+{$myVar|count_paragraphs}
+```
+
+## Examples
+
+```php
+assign('articleTitle',
+ "War Dims Hope for Peace. Child's Death Ruins Couple's Holiday.\n\n
+ Man is Fatally Slain. Death Causes Loneliness, Feeling of Isolation."
+ );
+
+```
+
+Where template is:
+
+```smarty
+ {$articleTitle}
+ {$articleTitle|count_paragraphs}
+```
+
+
+Will output:
+
+```
+ War Dims Hope for Peace. Child's Death Ruins Couple's Holiday.
+
+ Man is Fatally Slain. Death Causes Loneliness, Feeling of Isolation.
+ 2
+```
+
+See also [`count_characters`](language-modifier-count-characters.md),
+[`count_sentences`](language-modifier-count-sentences.md) and
+[`count_words`](language-modifier-count-words.md).
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-count-sentences.md b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-count-sentences.md
new file mode 100644
index 000000000..dd2f69c61
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-count-sentences.md
@@ -0,0 +1,39 @@
+# count_sentences
+
+This is used to count the number of sentences in a variable. A sentence
+being delimited by a dot, question- or exclamation-mark (.?!).
+
+## Basic usage
+```smarty
+{$myVar|count_sentences}
+```
+
+## Examples
+
+```php
+assign('articleTitle',
+ 'Two Soviet Ships Collide - One Dies.
+ Enraged Cow Injures Farmer with Axe.'
+ );
+
+```
+
+Where template is:
+
+```smarty
+ {$articleTitle}
+ {$articleTitle|count_sentences}
+```
+
+Will output:
+
+```
+ Two Soviet Ships Collide - One Dies. Enraged Cow Injures Farmer with Axe.
+ 2
+```
+
+See also [`count_characters`](language-modifier-count-characters.md),
+[`count_paragraphs`](language-modifier-count-paragraphs.md) and
+[`count_words`](language-modifier-count-words.md).
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-count-words.md b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-count-words.md
new file mode 100644
index 000000000..1ab0d1d47
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-count-words.md
@@ -0,0 +1,35 @@
+# count_words
+
+This is used to count the number of words in a variable.
+
+## Basic usage
+```smarty
+{$myVar|count_words}
+```
+
+## Examples
+
+```php
+assign('articleTitle', 'Dealers Will Hear Car Talk at Noon.');
+
+```
+
+Where template is:
+
+```smarty
+ {$articleTitle}
+ {$articleTitle|count_words}
+```
+
+This will output:
+
+```
+ Dealers Will Hear Car Talk at Noon.
+ 7
+```
+
+See also [`count_characters`](language-modifier-count-characters.md),
+[`count_paragraphs`](language-modifier-count-paragraphs.md) and
+[`count_sentences`](language-modifier-count-sentences.md).
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-count.md b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-count.md
new file mode 100644
index 000000000..36436a398
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-count.md
@@ -0,0 +1,21 @@
+# count
+
+Returns the number of elements in an array (or Countable object). Will return 0 for null.
+Returns 1 for any other type (such as a string).
+
+If the optional mode parameter is set to 1, count() will recursively count the array.
+This is particularly useful for counting all the elements of a multidimensional array.
+
+## Basic usage
+```smarty
+{if $myVar|count > 3}4 or more{/if}
+{if count($myVar) > 3}4 or more{/if}
+```
+
+
+## Parameters
+
+| Parameter | Type | Required | Description |
+|-----------|------|----------|--------------------------------------------------------|
+| 1 | int | No | If set to 1, count() will recursively count the array. |
+
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-date-format.md b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-date-format.md
new file mode 100644
index 000000000..620d085b8
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-date-format.md
@@ -0,0 +1,145 @@
+# date_format
+
+This formats a date and time into the given
+[`strftime()`](https://www.php.net/strftime) format. Dates can be passed to
+Smarty as unix [timestamps](https://www.php.net/function.time), [DateTime
+objects](https://www.php.net/class.DateTime), mysql timestamps or any string
+made up of month day year, parsable by php\'s
+[`strtotime()`](https://www.php.net/strtotime). Designers can then use
+`date_format` to have complete control of the formatting of the date. If
+the date passed to `date_format` is empty and a second parameter is
+passed, that will be used as the date to format.
+
+## Basic usage
+```smarty
+{$myVar|date_format:"%Y-%m-%d"}
+```
+
+## Parameters
+
+| Parameter Position | Type | Required | Default | Description |
+|--------------------|--------|----------|-----------|-------------------------------------------------|
+| 1 | string | No | %b %e, %Y | This is the format for the outputted date. |
+| 2 | string | No | n/a | This is the default date if the input is empty. |
+
+> **Note**
+>
+> Since Smarty-2.6.10 numeric values passed to `date_format` are
+> *always* (except for mysql timestamps, see below) interpreted as a
+> unix timestamp.
+>
+> Before Smarty-2.6.10 numeric strings that where also parsable by
+> `strtotime()` in php (like `YYYYMMDD`) where sometimes (depending on
+> the underlying implementation of `strtotime()`) interpreted as date
+> strings and NOT as timestamps.
+>
+> The only exception are mysql timestamps: They are also numeric only
+> and 14 characters long (`YYYYMMDDHHMMSS`), mysql timestamps have
+> precedence over unix timestamps.
+
+> **Note**
+>
+> `date_format` is essentially a wrapper to PHP's
+> [`strftime()`](https://www.php.net/strftime) function. You may have more
+> or less conversion specifiers available depending on your system's
+> [`strftime()`](https://www.php.net/strftime) function where PHP was
+> compiled. Check your system\'s manpage for a full list of valid
+> specifiers. However, a few of the specifiers are emulated on Windows.
+> These are: %D, %e, %h, %l, %n, %r, %R, %t, %T.
+
+## Examples
+
+```php
+assign('config', $config);
+$smarty->assign('yesterday', strtotime('-1 day'));
+
+```
+
+This template uses [`$smarty.now`](../language-variables/language-variables-smarty.md#smartynow-languagevariablessmartynow) to
+get the current time:
+
+```smarty
+{$smarty.now|date_format}
+{$smarty.now|date_format:"%D"}
+{$smarty.now|date_format:$config.date}
+{$yesterday|date_format}
+{$yesterday|date_format:"%A, %B %e, %Y"}
+{$yesterday|date_format:$config.time}
+```
+
+This above will output:
+
+```
+Jan 1, 2022
+01/01/22
+02:33 pm
+Dec 31, 2021
+Monday, December 1, 2021
+14:33:00
+```
+
+## Conversion specifiers
+
+`date_format` conversion specifiers:
+
+- %a - abbreviated weekday name according to the current locale
+- %A - full weekday name according to the current locale
+- %b - abbreviated month name according to the current locale
+- %B - full month name according to the current locale
+- %c - preferred date and time representation for the current locale
+- %C - century number (the year divided by 100 and truncated to an
+ integer, range 00 to 99)
+- %d - day of the month as a decimal number (range 01 to 31)
+- %D - same as %m/%d/%y
+- %e - day of the month as a decimal number, a single digit is
+ preceded by a space (range 1 to 31)
+- %g - Week-based year within century \[00,99\]
+- %G - Week-based year, including the century \[0000,9999\]
+- %h - same as %b
+- %H - hour as a decimal number using a 24-hour clock (range 00
+ to 23)
+- %I - hour as a decimal number using a 12-hour clock (range 01
+ to 12)
+- %j - day of the year as a decimal number (range 001 to 366)
+- %k - Hour (24-hour clock) single digits are preceded by a blank.
+ (range 0 to 23)
+- %l - hour as a decimal number using a 12-hour clock, single digits
+ preceded by a space (range 1 to 12)
+- %m - month as a decimal number (range 01 to 12)
+- %M - minute as a decimal number
+- %n - newline character
+- %p - either 'am' or 'pm' according to the given time value, or
+ the corresponding strings for the current locale
+- %r - time in a.m. and p.m. notation
+- %R - time in 24 hour notation
+- %S - second as a decimal number
+- %t - tab character
+- %T - current time, equal to %H:%M:%S
+- %u - weekday as a decimal number \[1,7\], with 1 representing
+ Monday
+- %U - week number of the current year as a decimal number, starting
+ with the first Sunday as the first day of the first week
+- %V - The ISO 8601:1988 week number of the current year as a decimal
+ number, range 01 to 53, where week 1 is the first week that has at
+ least 4 days in the current year, and with Monday as the first day
+ of the week.
+- %w - day of the week as a decimal, Sunday being 0
+- %W - week number of the current year as a decimal number, starting
+ with the first Monday as the first day of the first week
+- %x - preferred date representation for the current locale without
+ the time
+- %X - preferred time representation for the current locale without
+ the date
+- %y - year as a decimal number without a century (range 00 to 99)
+- %Y - year as a decimal number including the century
+- %Z - time zone or name or abbreviation
+- %% - a literal '%' character
+
+See also [`$smarty.now`](../language-variables/language-variables-smarty.md#smartynow-languagevariablessmartynow),
+[`strftime()`](https://www.php.net/strftime),
+[`{html_select_date}`](../language-custom-functions/language-function-html-select-date.md) and the
+[date tips](../../appendixes/tips.md#dates) page.
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-debug-print-var.md b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-debug-print-var.md
new file mode 100644
index 000000000..ce3f86a73
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-debug-print-var.md
@@ -0,0 +1,26 @@
+# debug_print_var
+
+
+
+Returns the value of the given variable in a human-readable format in HTML.
+Used in the [debug console](../chapter-debugging-console.md), but you can also use it in your template
+while developing to see what is going on under the hood.
+
+> **Note**
+>
+> Use for debugging only! Since you may accidentally reveal sensitive information or introduce vulnerabilities such as XSS using this
+method never use it in production.
+
+## Basic usage
+```smarty
+{$myVar|debug_print_var}
+```
+
+
+## Parameters
+
+| Parameter | Type | Required | Description |
+|-----------|------|----------|------------------------------------------------------------------------|
+| 1 | int | No | maximum recursion depth if $var is an array or object (defaults to 10) |
+| 2 | int | No | maximum string length if $var is a string (defaults to 40) |
+
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-default.md b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-default.md
new file mode 100644
index 000000000..b8697a0d9
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-default.md
@@ -0,0 +1,45 @@
+# default
+
+This is used to set a default value for a variable. If the variable is
+unset or an empty string, the given default value is printed instead.
+Default takes the one argument.
+
+## Basic usage
+```smarty
+{$myVar|default:"(none)"}
+```
+
+## Parameters
+
+| Parameter | Type | Required | Default | Description |
+|-----------|--------|----------|---------|---------------------------------------------------------------|
+| 1 | string | No | *empty* | This is the default value to output if the variable is empty. |
+
+## Examples
+
+```php
+assign('articleTitle', 'Dealers Will Hear Car Talk at Noon.');
+ $smarty->assign('email', '');
+
+```
+
+Where template is:
+
+```smarty
+{$articleTitle|default:'no title'}
+{$myTitle|default:'no title'}
+{$email|default:'No email address available'}
+```
+
+Will output:
+
+```
+Dealers Will Hear Car Talk at Noon.
+no title
+No email address available
+```
+
+See also the [default variable handling](../../appendixes/tips.md#default-variable-handling) and
+the [blank variable handling](../../appendixes/tips.md#blank-variable-handling) pages.
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-escape.md b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-escape.md
new file mode 100644
index 000000000..6fd5dd2b4
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-escape.md
@@ -0,0 +1,78 @@
+# escape
+
+`escape` is used to encode or escape a variable to `html`, `url`,
+`single quotes`, `hex`, `hexentity`, `javascript` and `mail`. By default
+its `html`.
+
+## Basic usage
+```smarty
+{$myVar|escape}
+```
+
+## Parameters
+
+| Parameter Position | Type | Required | Possible Values | Default | Description |
+|--------------------|---------|----------|----------------------------------------------------------------------------------------------------------------|---------|--------------------------------------------------------------------------------------|
+| 1 | string | No | `html`, `htmlall`, `url`, `urlpathinfo`, `quotes`, `hex`, `hexentity`, `javascript`, `mail` | `html` | This is the escape format to use. |
+| 2 | string | No | `ISO-8859-1`, `UTF-8`, and any character set supported by [`htmlentities()`](https://www.php.net/htmlentities) | `UTF-8` | The character set encoding passed to htmlentities() et. al. |
+| 3 | boolean | No | FALSE | TRUE | Double encode entities from & to & (applies to `html` and `htmlall` only) |
+
+
+## Examples
+
+```php
+assign('articleTitle',
+ "'Stiff Opposition Expected to Casketless Funeral Plan'"
+ );
+$smarty->assign('EmailAddress','smarty@example.com');
+
+```
+
+
+These are example `escape` template lines followed by the output
+
+```smarty
+{$articleTitle}
+'Stiff Opposition Expected to Casketless Funeral Plan'
+
+{$articleTitle|escape}
+'Stiff Opposition Expected to Casketless Funeral Plan'
+
+{$articleTitle|escape:'html'} {* escapes & " ' < > *}
+'Stiff Opposition Expected to Casketless Funeral Plan'
+
+{$articleTitle|escape:'htmlall'} {* escapes ALL html entities *}
+'Stiff Opposition Expected to Casketless Funeral Plan'
+
+click here
+click here
+
+{$articleTitle|escape:'quotes'}
+\'Stiff Opposition Expected to Casketless Funeral Plan\'
+
+{$EmailAddress|escape:"hexentity"}
+{$EmailAddress|escape:'mail'} {* this converts to email to text *}
+bob..snip..et
+
+{'mail@example.com'|escape:'mail'}
+smarty [AT] example [DOT] com
+
+{* the "rewind" parameter registers the current location *}
+click here
+
+```
+
+This snippet is useful for emails, but see also
+[`{mailto}`](../language-custom-functions/language-function-mailto.md)
+
+```smarty
+{* email address mangled *}
+{$EmailAddress|escape:'mail'}
+```
+
+See also [escaping smarty parsing](../language-basic-syntax/language-escaping.md),
+[`{mailto}`](../language-custom-functions/language-function-mailto.md) and the [obfuscating email
+addresses](../../appendixes/tips.md#obfuscating-e-mail-addresses) page.
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-from-charset.md b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-from-charset.md
new file mode 100644
index 000000000..25c4d2d9e
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-from-charset.md
@@ -0,0 +1,20 @@
+# from_charset
+
+`from_charset` is used to transcode a string from a given charset to the
+internal charset. This is the exact opposite of the [to_charset
+modifier](language-modifier-to-charset.md).
+
+## Parameters
+
+| Parameter Position | Type | Required | Possible Values | Default | Description |
+|--------------------|--------|----------|------------------------------------------------------------------------------------------------------------------------------|--------------|---------------------------------------------------------------|
+| 1 | string | No | `ISO-8859-1`, `UTF-8`, and any character set supported by [`mb_convert_encoding()`](https://www.php.net/mb_convert_encoding) | `ISO-8859-1` | The charset encoding the value is supposed to be decoded from |
+
+> **Note**
+>
+> Charset encoding should be handled by the application itself. This
+> modifier should only be used in cases where the application cannot
+> anticipate that a certain string is required in another encoding.
+
+See also [Configuring Smarty](../../api/configuring.md), [to_charset
+modifier](language-modifier-to-charset.md).
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-indent.md b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-indent.md
new file mode 100644
index 000000000..9fa3540a3
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-indent.md
@@ -0,0 +1,67 @@
+# indent
+
+This indents a string on each line, default is 4. As an optional
+parameter, you can specify the number of characters to indent. As an
+optional second parameter, you can specify the character to use to
+indent with. For example: use `"\t"` for a tab.
+
+## Basic usage
+```smarty
+{$myVar|indent:4}
+```
+
+## Parameters
+
+| Parameter Position | Type | Required | Default | Description |
+|--------------------|---------|----------|-------------|---------------------------------------------------|
+| 1 | integer | No | 4 | This determines how many characters to indent to. |
+| 2 | string | No | (one space) | This is the character used to indent with. |
+
+## Examples
+
+```php
+assign('articleTitle',
+ 'NJ judge to rule on nude beach.
+Sun or rain expected today, dark tonight.
+Statistics show that teen pregnancy drops off significantly after 25.'
+ );
+```
+
+Where template is:
+
+```smarty
+{$articleTitle}
+
+{$articleTitle|indent}
+
+{$articleTitle|indent:10}
+
+{$articleTitle|indent:1:"\t"}
+```
+
+Will output:
+
+```
+NJ judge to rule on nude beach.
+Sun or rain expected today, dark tonight.
+Statistics show that teen pregnancy drops off significantly after 25.
+
+ NJ judge to rule on nude beach.
+ Sun or rain expected today, dark tonight.
+ Statistics show that teen pregnancy drops off significantly after 25.
+
+ NJ judge to rule on nude beach.
+ Sun or rain expected today, dark tonight.
+ Statistics show that teen pregnancy drops off significantly after 25.
+
+ NJ judge to rule on nude beach.
+ Sun or rain expected today, dark tonight.
+ Statistics show that teen pregnancy drops off significantly after 25.
+```
+
+
+See also [`strip`](language-modifier-strip.md),
+[`wordwrap`](language-modifier-wordwrap.md) and
+[`spacify`](language-modifier-spacify.md).
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-is_array.md b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-is_array.md
new file mode 100644
index 000000000..f6cfffcd1
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-is_array.md
@@ -0,0 +1,9 @@
+# is_array
+
+Return true if the variable passed to it is an array.
+
+## Basic usage
+
+```smarty
+{if $myVar|is_array}it's an array{/if}
+```
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-isset.md b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-isset.md
new file mode 100644
index 000000000..83e31dfa9
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-isset.md
@@ -0,0 +1,11 @@
+# isset
+
+Returns true if the variable(s) passed to it are different from null.
+
+If multiple parameters are supplied then isset() will return true only if all of the parameters are
+not null.
+
+## Basic usage
+```smarty
+{if $myVar|isset}all set!{/if}
+```
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-join.md b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-join.md
new file mode 100644
index 000000000..9a044714d
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-join.md
@@ -0,0 +1,26 @@
+# join
+
+Returns a string containing all the element of the given array
+with the separator string between each.
+
+## Basic usage
+
+For `$myArray` populated with `['a','b','c']`, the following will return the string `abc`.
+```smarty
+{$myArray|join}
+```
+
+
+## Parameters
+
+| Parameter | Type | Required | Description |
+|-----------|--------|----------|-------------------------------------------------------------|
+| 1 | string | No | glue used between array elements. Defaults to empty string. |
+
+## Examples
+
+
+For `$myArray` populated with `[1,2,3]`, the following will return the string `1-2-3`.
+```smarty
+{$myArray|join:"-"}
+```
\ No newline at end of file
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-json-encode.md b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-json-encode.md
new file mode 100644
index 000000000..4e70f0c26
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-json-encode.md
@@ -0,0 +1,27 @@
+# json_encode
+
+Transforms a value into a valid JSON string.
+
+## Basic usage
+```smarty
+{$user|json_encode}
+```
+Depending on the value of `$user` this would return a string in JSON-format, e.g. `{"username":"my_username","email":"my_username@smarty.net"}`.
+
+
+## Parameters
+
+| Parameter | Type | Required | Description |
+|-----------|------|----------|-------------------------------------------------------------------------------------------|
+| 1 | int | No | bitmask of flags, directly passed to [PHP's json_encode](https://www.php.net/json_encode) |
+
+
+## Examples
+
+By passing `16` as the second parameter, you can force json_encode to always format the JSON-string as an object.
+Without it, an array `$myArray = ["a","b"]` would be formatted as a javascript array:
+
+```smarty
+{$myArray|json_encode} # renders: ["a","b"]
+{$myArray|json_encode:16} # renders: {"0":"a","1":"b"}
+```
\ No newline at end of file
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-lower.md b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-lower.md
new file mode 100644
index 000000000..e5e6886f1
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-lower.md
@@ -0,0 +1,34 @@
+# lower
+
+This is used to lowercase a variable. This is equivalent to the PHP
+[`strtolower()`](https://www.php.net/strtolower) function.
+
+## Basic usage
+```smarty
+{$myVar|lower}
+```
+
+## Examples
+
+```php
+assign('articleTitle', 'Two Convicts Evade Noose, Jury Hung.');
+```
+
+Where template is:
+
+```smarty
+{$articleTitle}
+{$articleTitle|lower}
+```
+
+This will output:
+
+```
+Two Convicts Evade Noose, Jury Hung.
+two convicts evade noose, jury hung.
+```
+
+See also [`upper`](language-modifier-upper.md) and
+[`capitalize`](language-modifier-capitalize.md).
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-nl2br.md b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-nl2br.md
new file mode 100644
index 000000000..2808716fc
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-nl2br.md
@@ -0,0 +1,37 @@
+# nl2br
+
+All `"\n"` line breaks will be converted to html ` ` tags in the
+given variable. This is equivalent to the PHP\'s
+[`nl2br()`](https://www.php.net/nl2br) function.
+
+## Basic usage
+```smarty
+{$myVar|nl2br}
+```
+
+## Examples
+
+```php
+assign('articleTitle',
+ "Sun or rain expected\ntoday, dark tonight"
+ );
+
+```
+
+Where the template is:
+
+```smarty
+{$articleTitle|nl2br}
+```
+
+Will output:
+
+```
+Sun or rain expected today, dark tonight
+```
+
+See also [`word_wrap`](language-modifier-wordwrap.md),
+[`count_paragraphs`](language-modifier-count-paragraphs.md) and
+[`count_sentences`](language-modifier-count-sentences.md).
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-noprint.md b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-noprint.md
new file mode 100644
index 000000000..5dbfaa30d
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-noprint.md
@@ -0,0 +1,9 @@
+# noprint
+
+Always returns an empty string. This can be used to call a function or a method on an object that
+returns output, and suppress the output.
+
+## Basic usage
+```smarty
+{$controller->sendEmail()|noprint}
+```
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-number-format.md b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-number-format.md
new file mode 100644
index 000000000..44c3acf44
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-number-format.md
@@ -0,0 +1,32 @@
+# number_format
+
+Allows you to format a number using decimals and a thousands-separator. By default, the number of decimals is 0
+and the number is rounded.
+
+## Basic usage
+```smarty
+{$num = 2000.151}
+{$num|number_format} # renders: 2,000
+```
+
+
+## Parameters
+
+| Parameter | Type | Required | Description |
+|-----------|--------|----------|---------------------------------------|
+| 1 | int | No | number of decimals (defaults to 0) |
+| 2 | string | No | decimal separator (defaults to ".") |
+| 3 | string | No | thousands-separator (defaults to ",") |
+
+
+## Examples
+
+```smarty
+{$num = 2000.151}
+{$num|number_format:2} # renders: 2,000.15
+```
+
+```smarty
+{$num = 2000.151}
+{$num|number_format:2:".":""} # renders: 2000.15
+```
\ No newline at end of file
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-regex-replace.md b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-regex-replace.md
new file mode 100644
index 000000000..033d2a43d
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-regex-replace.md
@@ -0,0 +1,55 @@
+# regex_replace
+
+A regular expression search and replace on a variable. Use the
+[`preg_replace()`](https://www.php.net/preg_replace) syntax from the PHP
+manual.
+
+## Basic usage
+```smarty
+{$myVar|regex_replace:"/foo/":"bar"}
+```
+
+> **Note**
+>
+> Although Smarty supplies this regex convenience modifier, it is
+> usually better to apply regular expressions in PHP, either via custom
+> functions or modifiers. Regular expressions are considered application
+> code and are not part of presentation logic.
+
+## Parameters
+
+| Parameter Position | Type | Required | Description |
+|--------------------|--------|----------|------------------------------------------------|
+| 1 | string | Yes | This is the regular expression to be replaced. |
+| 2 | string | Yes | This is the string of text to replace with. |
+
+
+## Examples
+
+```php
+assign('articleTitle', "Infertility unlikely to\nbe passed on, experts say.");
+
+```
+
+Where template is:
+
+```smarty
+{* replace each carriage return, tab and new line with a space *}
+
+{$articleTitle}
+{$articleTitle|regex_replace:"/[\r\t\n]/":" "}
+```
+
+Will output:
+
+```
+Infertility unlikely to
+be passed on, experts say.
+Infertility unlikely to be passed on, experts say.
+```
+
+
+See also [`replace`](language-modifier-replace.md) and
+[`escape`](language-modifier-escape.md).
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-replace.md b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-replace.md
new file mode 100644
index 000000000..0e01ab46f
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-replace.md
@@ -0,0 +1,45 @@
+# replace
+
+A simple search and replace on a variable. This is equivalent to the
+PHP's [`str_replace()`](https://www.php.net/str_replace) function.
+
+## Basic usage
+```smarty
+{$myVar|replace:"foo":"bar"}
+```
+
+## Parameters
+
+| Parameter Position | Type | Required | Description |
+|--------------------|--------|----------|---------------------------------------------|
+| 1 | string | Yes | This is the string of text to be replaced. |
+| 2 | string | Yes | This is the string of text to replace with. |
+
+
+## Examples
+
+```php
+assign('articleTitle', "Child's Stool Great for Use in Garden.");
+
+```
+
+Where template is:
+
+```smarty
+{$articleTitle}
+{$articleTitle|replace:'Garden':'Vineyard'}
+{$articleTitle|replace:' ':' '}
+```
+
+Will output:
+
+```
+Child's Stool Great for Use in Garden.
+Child's Stool Great for Use in Vineyard.
+Child's Stool Great for Use in Garden.
+```
+
+See also [`regex_replace`](language-modifier-regex-replace.md) and
+[`escape`](language-modifier-escape.md).
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-round.md b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-round.md
new file mode 100644
index 000000000..c05b899a9
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-round.md
@@ -0,0 +1,35 @@
+# round
+
+Rounds a number to the specified precision.
+
+## Basic usage
+```smarty
+{3.14|round} # renders: 3
+```
+
+```smarty
+{3.141592|round:2} # renders: 3.14
+```
+
+## Parameters
+
+| Parameter | Type | Required | Description |
+|-----------|------|----------|---------------------------|
+| 1 | int | No | precision (defaults to 0) |
+| 2 | int | No | mode (defaults to 1) |
+
+If 'precision' is negative, the number is rounded to the nearest power of 10. See examples below.
+
+The parameter 'mode' defines how the rounding is done. By default, 2.5 is rounded to 3, whereas 2.45 is rounded to 2.
+You usually don't need to change this. For more details on rounding modes,
+see [PHP's documentation on round](https://www.php.net/manual/en/function.round).
+
+## Examples
+
+By passing `16` as the second parameter, you can force json_encode to always format the JSON-string as an object.
+Without it, an array `$myArray = ["a","b"]` would be formatted as a javascript array:
+
+```smarty
+{$myArray|json_encode} # renders: ["a","b"]
+{$myArray|json_encode:16} # renders: {"0":"a","1":"b"}
+```
\ No newline at end of file
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-spacify.md b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-spacify.md
new file mode 100644
index 000000000..229e2d22d
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-spacify.md
@@ -0,0 +1,44 @@
+# spacify
+
+`spacify` is a way to insert a space between every character of a
+variable. You can optionally pass a different character or string to
+insert.
+
+## Basic usage
+```smarty
+{$myVar|spacify}
+```
+
+## Parameters
+
+| Parameter Position | Type | Required | Default | Description |
+|--------------------|--------|----------|-------------|-----------------------------------------------------------------|
+| 1 | string | No | *one space* | This what gets inserted between each character of the variable. |
+
+## Examples
+
+```php
+assign('articleTitle', 'Something Went Wrong in Jet Crash, Experts Say.');
+
+```
+
+Where template is:
+
+```smarty
+{$articleTitle}
+{$articleTitle|spacify}
+{$articleTitle|spacify:"^^"}
+```
+
+Will output:
+
+```
+Something Went Wrong in Jet Crash, Experts Say.
+S o m e t h i n g W .... snip .... s h , E x p e r t s S a y .
+S^^o^^m^^e^^t^^h^^i^^n^^g^^ .... snip .... ^^e^^r^^t^^s^^ ^^S^^a^^y^^.
+```
+
+See also [`wordwrap`](language-modifier-wordwrap.md) and
+[`nl2br`](language-modifier-nl2br.md).
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-split.md b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-split.md
new file mode 100644
index 000000000..caef884f5
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-split.md
@@ -0,0 +1,32 @@
+# split
+
+Splits a string into an array, using the optional second parameter as the separator.
+
+## Basic usage
+
+For `$chars` populated with `'abc'`, the following will produce a html list with 3 elements (a, b and c).
+```smarty
+
+ {foreach $chars|split as $char}
+ {$char|escape}
+ {/foreach}
+
+```
+
+## Parameters
+
+| Parameter | Type | Required | Description |
+|-----------|--------|----------|------------------------------------------------------------------------------------------------------------------------------|
+| 1 | string | No | separator used to split the string on. Defaults to empty string, causing each character in the source string to be separate. |
+
+## Examples
+
+
+For `$ids` populated with `'1,2,3'`, the following will produce a html list with 3 elements (1, 2 and 3).
+```smarty
+
+ {foreach $ids|split:',' as $id}
+ {$id|escape}
+ {/foreach}
+
+```
\ No newline at end of file
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-str-repeat.md b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-str-repeat.md
new file mode 100644
index 000000000..1ae1824d6
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-str-repeat.md
@@ -0,0 +1,14 @@
+# str_repeat
+
+Repeats the given value n times.
+
+## Basic usage
+```smarty
+{"hi"|str_repeat:2} # renders: hihi
+```
+
+## Parameters
+
+| Parameter | Type | Required | Description |
+|-----------|------|----------|-----------------------|
+| 1 | int | yes | number of repetitions |
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-string-format.md b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-string-format.md
new file mode 100644
index 000000000..6163a0785
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-string-format.md
@@ -0,0 +1,43 @@
+# string_format
+
+This is a way to format strings, such as decimal numbers and such. Use
+the syntax for [`sprintf()`](https://www.php.net/sprintf) for the
+formatting.
+
+## Basic usage
+```smarty
+{$myVar|string_format:"%d"}
+```
+
+## Parameters
+
+| Parameter Position | Type | Required | Description |
+|--------------------|--------|----------|---------------------------------------|
+| 1 | string | Yes | This is what format to use. (sprintf) |
+
+## Examples
+
+```php
+assign('number', 23.5787446);
+
+```
+
+Where template is:
+
+```smarty
+{$number}
+{$number|string_format:"%.2f"}
+{$number|string_format:"%d"}
+```
+
+Will output:
+
+```
+23.5787446
+23.58
+23
+```
+
+See also [`date_format`](language-modifier-date-format.md).
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-strip-tags.md b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-strip-tags.md
new file mode 100644
index 000000000..7d94fdd0d
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-strip-tags.md
@@ -0,0 +1,46 @@
+# strip_tags
+
+This strips out HTML markup tags, basically anything between `<` and `>`.
+
+## Basic usage
+```smarty
+{$myVar|strip_tags}
+```
+
+## Parameters
+
+| Parameter Position | Type | Required | Default | Description |
+|--------------------|------|----------|---------|------------------------------------------------------------|
+| 1 | bool | No | TRUE | This determines whether the tags are replaced by ' ' or '' |
+
+## Examples
+
+```php
+assign('articleTitle',
+ "Blind Woman Gets New
+Kidney from Dad she Hasn't Seen in years ."
+ );
+
+```
+
+
+Where template is:
+
+```smarty
+{$articleTitle}
+{$articleTitle|strip_tags} {* same as {$articleTitle|strip_tags:true} *}
+{$articleTitle|strip_tags:false}
+```
+
+Will output:
+
+```html
+Blind Woman Gets New Kidney from Dad she Hasn't Seen in years .
+Blind Woman Gets New Kidney from Dad she Hasn't Seen in years .
+Blind Woman Gets New Kidney from Dad she Hasn't Seen in years.
+```
+
+See also [`replace`](language-modifier-replace.md) and
+[`regex_replace`](language-modifier-regex-replace.md).
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-strip.md b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-strip.md
new file mode 100644
index 000000000..b7bdc282c
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-strip.md
@@ -0,0 +1,42 @@
+# strip
+
+This replaces all spaces, newlines and tabs with a single space, or with
+the supplied string.
+
+## Basic usage
+```smarty
+{$myVar|strip}
+```
+
+> **Note**
+>
+> If you want to strip blocks of template text, use the built-in
+> [`{strip}`](../language-builtin-functions/language-function-strip.md) function.
+
+## Examples
+
+```php
+assign('articleTitle', "Grandmother of\neight makes\t hole in one.");
+$smarty->display('index.tpl');
+```
+
+Where template is:
+
+```smarty
+{$articleTitle}
+{$articleTitle|strip}
+{$articleTitle|strip:' '}
+```
+
+Will output:
+
+```html
+Grandmother of
+eight makes hole in one.
+Grandmother of eight makes hole in one.
+Grandmother of eight makes hole in one.
+```
+
+See also [`{strip}`](../language-builtin-functions/language-function-strip.md) and
+[`truncate`](language-modifier-truncate.md).
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-strlen.md b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-strlen.md
new file mode 100644
index 000000000..4c1f37ab7
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-strlen.md
@@ -0,0 +1,9 @@
+# strlen
+
+Returns the length (number of characters) in the given string, including spaces.
+
+## Basic usage
+```smarty
+{"Smarty"|strlen} # renders: 6
+{156|strlen} # renders: 3
+```
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-substr.md b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-substr.md
new file mode 100644
index 000000000..a79d8a4d1
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-substr.md
@@ -0,0 +1,25 @@
+# substr
+
+Returns a part (substring) of the given string starting at a given offset.
+
+## Basic usage
+```smarty
+{"Smarty"|substr:2} # renders: arty
+{"Smarty"|substr:2:3} # renders: art
+```
+
+## Parameters
+
+| Parameter | Type | Required | Description |
+|-----------|------|----------|-----------------------------------------------------|
+| 1 | int | yes | offset (zero based, can be negative) |
+| 2 | int | no | length of substring returned (unlimited of omitted) |
+
+
+## Examples
+
+When used with a negative offset, the substring starts n characters from the end of the string counting backwards.
+```smarty
+{"Smarty"|substr:-2} # renders: ty
+{"Smarty"|substr:-2:1} # renders: t
+```
\ No newline at end of file
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-to-charset.md b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-to-charset.md
new file mode 100644
index 000000000..aa8cfd53f
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-to-charset.md
@@ -0,0 +1,20 @@
+# to_charset
+
+`to_charset` is used to transcode a string from the internal charset to
+a given charset. This is the exact opposite of the [from_charset
+modifier](#language.modifier.from_charset).
+
+## Parameters
+
+| Parameter Position | Type | Required | Possible Values | Default | Description |
+|--------------------|--------|----------|------------------------------------------------------------------------------------------------------------------------------|--------------|-------------------------------------------------------------|
+| 1 | string | No | `ISO-8859-1`, `UTF-8`, and any character set supported by [`mb_convert_encoding()`](https://www.php.net/mb_convert_encoding) | `ISO-8859-1` | The charset encoding the value is supposed to be encoded to |
+
+> **Note**
+>
+> Charset encoding should be handled by the application itself. This
+> modifier should only be used in cases where the application cannot
+> anticipate that a certain string is required in another encoding.
+
+See also [Configuring Smarty](../../api/configuring.md), [from_charset
+modifier](language-modifier-from-charset.md).
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-truncate.md b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-truncate.md
new file mode 100644
index 000000000..1cbb7abcb
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-truncate.md
@@ -0,0 +1,57 @@
+# truncate
+
+This truncates a variable to a character length, the default is 80. As
+an optional second parameter, you can specify a string of text to
+display at the end if the variable was truncated. The characters in the
+string are included with the original truncation length. By default,
+`truncate` will attempt to cut off at a word boundary. If you want to
+cut off at the exact character length, pass the optional third parameter
+of TRUE.
+
+## Basic usage
+```smarty
+{$myVar|truncate:40:"..."}
+```
+
+## Parameters
+
+| Parameter Position | Type | Required | Default | Description |
+|--------------------|---------|----------|---------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
+| 1 | integer | No | 80 | This determines how many characters to truncate to. |
+| 2 | string | No | \... | This is a text string that replaces the truncated text. Its length is included in the truncation length setting. |
+| 3 | boolean | No | FALSE | This determines whether or not to truncate at a word boundary with FALSE, or at the exact character with TRUE. |
+| 4 | boolean | No | FALSE | This determines whether the truncation happens at the end of the string with FALSE, or in the middle of the string with TRUE. Note that if this setting is TRUE, then word boundaries are ignored. |
+
+## Examples
+
+```php
+assign('articleTitle', 'Two Sisters Reunite after Eighteen Years at Checkout Counter.');
+```
+
+where template is:
+
+```smarty
+{$articleTitle}
+{$articleTitle|truncate}
+{$articleTitle|truncate:30}
+{$articleTitle|truncate:30:""}
+{$articleTitle|truncate:30:"---"}
+{$articleTitle|truncate:30:"":true}
+{$articleTitle|truncate:30:"...":true}
+{$articleTitle|truncate:30:'..':true:true}
+```
+
+This will output:
+
+```
+Two Sisters Reunite after Eighteen Years at Checkout Counter.
+Two Sisters Reunite after Eighteen Years at Checkout Counter.
+Two Sisters Reunite after...
+Two Sisters Reunite after
+Two Sisters Reunite after---
+Two Sisters Reunite after Eigh
+Two Sisters Reunite after E...
+Two Sisters Re..ckout Counter.
+```
+
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-unescape.md b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-unescape.md
new file mode 100644
index 000000000..8e8603053
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-unescape.md
@@ -0,0 +1,43 @@
+# unescape
+
+`unescape` is used to decode `entity`, `html` and `htmlall`. It counters
+the effects of the [escape modifier](language-modifier-escape.md) for the
+given types.
+
+## Basic usage
+```smarty
+{$myVar|unescape}
+```
+
+## Parameters
+
+| Parameter Position | Type | Required | Possible Values | Default | Description |
+|--------------------|--------|----------|----------------------------------------------------------------------------------------------------------------|---------|------------------------------------------------------------------------------------------------------------------------------|
+| 1 | string | No | `html`, `htmlall`, `entity`, | `html` | This is the escape format to use. |
+| 2 | string | No | `ISO-8859-1`, `UTF-8`, and any character set supported by [`htmlentities()`](https://www.php.net/htmlentities) | `UTF-8` | The character set encoding passed to html\_entity\_decode() or htmlspecialchars\_decode() or mb\_convert\_encoding() et. al. |
+
+## Examples
+
+```php
+assign('articleTitle',
+ "Germans use "Ümlauts" and pay in €uro"
+ );
+```
+
+These are example `unescape` template lines followed by the output
+
+```smarty
+{$articleTitle}
+Germans use "Ümlauts" and pay in €uro
+
+{$articleTitle|unescape:"html"}
+Germans use "Ümlauts" and pay in €uro
+
+{$articleTitle|unescape:"htmlall"}
+Germans use "Ümlauts" and pay in €uro
+```
+
+See also [escaping smarty parsing](../language-basic-syntax/language-escaping.md), [escape
+modifier](language-modifier-escape.md).
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-upper.md b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-upper.md
new file mode 100644
index 000000000..edce96381
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-upper.md
@@ -0,0 +1,33 @@
+# upper
+
+This is used to uppercase a variable. This is equivalent to the PHP
+[`strtoupper()`](https://www.php.net/strtoupper) function.
+
+## Basic usage
+```smarty
+{$myVar|upper}
+```
+
+## Examples
+
+```php
+assign('articleTitle', "If Strike isn't Settled Quickly it may Last a While.");
+```
+
+Where template is:
+
+```smarty
+{$articleTitle}
+{$articleTitle|upper}
+```
+
+Will output:
+
+```
+If Strike isn't Settled Quickly it may Last a While.
+IF STRIKE ISN'T SETTLED QUICKLY IT MAY LAST A WHILE.
+```
+
+See also [`lower`](./language-modifier-lower.md) and
+[`capitalize`](language-modifier-capitalize.md).
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-wordwrap.md b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-wordwrap.md
new file mode 100644
index 000000000..f3348fd72
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-modifiers/language-modifier-wordwrap.md
@@ -0,0 +1,73 @@
+# wordwrap
+
+Wraps a string to a column width, the default is 80. As an optional
+second parameter, you can specify a string of text to wrap the text to
+the next line, the default is a carriage return `"\n"`. By default,
+`wordwrap` will attempt to wrap at a word boundary. If you want to cut
+off at the exact character length, pass the optional third parameter as
+TRUE. This is equivalent to the PHP
+[`wordwrap()`](https://www.php.net/wordwrap) function.
+
+## Basic usage
+```smarty
+{$myVar|wordwrap:30}
+```
+
+## Parameters
+
+| Parameter Position | Type | Required | Default | Description |
+|--------------------|---------|----------|---------|-----------------------------------------------------------------------------------------------|
+| 1 | integer | No | 80 | This determines how many columns to wrap to. |
+| 2 | string | No | \\n | This is the string used to wrap words with. |
+| 3 | boolean | No | FALSE | This determines whether to wrap at a word boundary (FALSE), or at the exact character (TRUE). |
+
+## Examples
+
+```php
+assign('articleTitle',
+ "Blind woman gets new kidney from dad she hasn't seen in years."
+ );
+
+```
+
+Where template is
+
+```smarty
+{$articleTitle}
+
+{$articleTitle|wordwrap:30}
+
+{$articleTitle|wordwrap:20}
+
+{$articleTitle|wordwrap:30:" \n"}
+
+{$articleTitle|wordwrap:26:"\n":true}
+```
+
+Will output:
+
+```html
+Blind woman gets new kidney from dad she hasn't seen in years.
+
+Blind woman gets new kidney
+from dad she hasn't seen in
+years.
+
+Blind woman gets new
+kidney from dad she
+hasn't seen in
+years.
+
+Blind woman gets new kidney
+from dad she hasn't seen in
+years.
+
+Blind woman gets new kidn
+ey from dad she hasn't se
+en in years.
+```
+
+See also [`nl2br`](language-modifier-nl2br.md) and
+[`{textformat}`](../language-custom-functions/language-function-textformat.md).
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-variables/index.md b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-variables/index.md
new file mode 100644
index 000000000..0278c9170
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-variables/index.md
@@ -0,0 +1,36 @@
+# Variables
+
+Smarty has several types of variables. The type of the
+variable depends on what symbol it is prefixed or enclosed within.
+
+- [Variables assigned from PHP](language-assigned-variables.md)
+- [Variables loaded from config files](language-config-variables.md)
+- [{$smarty} reserved variable](language-variables-smarty.md)
+
+Variables in Smarty can be either displayed directly or used as
+arguments for [tags](../language-basic-syntax/language-syntax-tags.md),
+[attributes](../language-basic-syntax/language-syntax-attributes.md) and
+[modifiers](../language-modifiers/index.md), inside conditional expressions, etc.
+To print a variable, simply enclose it in the
+[delimiters](../../designers/language-basic-syntax/language-escaping.md) so that it is the only thing
+contained between them.
+
+```smarty
+{$Name}
+
+{$product.part_no} {$product.description}
+
+{$Contacts[row].Phone}
+
+
+```
+
+## Scopes
+You can assign variables to specific [variable scopes](language-variable-scopes.md).
+
+
+> **Note**
+>
+> An easy way to examine assigned Smarty variables is with the
+> [debugging console](../chapter-debugging-console.md).
+
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-variables/language-assigned-variables.md b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-variables/language-assigned-variables.md
new file mode 100644
index 000000000..9465a89c5
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-variables/language-assigned-variables.md
@@ -0,0 +1,126 @@
+# Variables assigned from PHP
+
+Variables assigned from PHP are referenced by preceding them with a dollar
+(`$`) sign.
+
+## Examples
+
+```php
+assign('firstname', 'Doug');
+$smarty->assign('lastname', 'Evans');
+$smarty->assign('meetingPlace', 'New York');
+
+$smarty->display('index.tpl');
+
+```
+
+`index.tpl` source:
+
+```smarty
+Hello {$firstname} {$lastname}, glad to see you can make it.
+
+{* this will not work as $variables are case sensitive *}
+This weeks meeting is in {$meetingplace}.
+{* this will work *}
+This weeks meeting is in {$meetingPlace}.
+```
+
+This above would output:
+
+```html
+Hello Doug Evans, glad to see you can make it.
+
+This weeks meeting is in .
+This weeks meeting is in New York.
+```
+
+## Associative arrays
+
+You can also reference associative array variables by specifying the key
+after a dot "." symbol.
+
+```php
+assign('Contacts',
+ array('fax' => '555-222-9876',
+ 'email' => 'zaphod@slartibartfast.example.com',
+ 'phone' => array('home' => '555-444-3333',
+ 'cell' => '555-111-1234')
+ )
+ );
+$smarty->display('index.tpl');
+```
+
+`index.tpl` source:
+
+```smarty
+{$Contacts.fax}
+{$Contacts.email}
+{* you can print arrays of arrays as well *}
+{$Contacts.phone.home}
+{$Contacts.phone.cell}
+```
+
+this will output:
+
+```html
+555-222-9876
+zaphod@slartibartfast.example.com
+555-444-3333
+555-111-1234
+```
+
+## Array indexes
+
+You can reference arrays by their index, much like native PHP syntax.
+
+```php
+assign('Contacts', array(
+ '555-222-9876',
+ 'zaphod@slartibartfast.example.com',
+ array('555-444-3333',
+ '555-111-1234')
+ ));
+$smarty->display('index.tpl');
+```
+
+`index.tpl` source:
+
+```smarty
+{$Contacts[0]}
+{$Contacts[1]}
+{* you can print arrays of arrays as well *}
+{$Contacts[2][0]}
+{$Contacts[2][1]}
+```
+
+This will output:
+
+```html
+555-222-9876
+zaphod@slartibartfast.example.com
+555-444-3333
+555-111-1234
+```
+
+## Objects
+
+Properties of [objects](../../api/variables/objects.md) assigned from PHP
+can be referenced by specifying the property name after the `->` symbol.
+
+```smarty
+name: {$person->name}
+email: {$person->email}
+```
+
+this will output:
+
+```html
+name: Zaphod Beeblebrox
+email: zaphod@slartibartfast.example.com
+```
\ No newline at end of file
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-variables/language-config-variables.md b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-variables/language-config-variables.md
new file mode 100644
index 000000000..89a90ce11
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-variables/language-config-variables.md
@@ -0,0 +1,79 @@
+# Variables loaded from config files
+
+Variables that are loaded from the [config files](../config-files.md) are
+referenced by enclosing them within `#hash_marks#`, or with the smarty
+variable [`$smarty.config`](language-variables-smarty.md#smartyconfig-languagevariablessmartyconfig). The
+later syntax is useful for embedding into quoted attribute values, or
+accessing variable values such as `$smarty.config.$foo`.
+
+## Examples
+
+Example config file - `foo.conf`:
+```ini
+pageTitle = "This is mine"
+bodyBgColor = '#eeeeee'
+tableBorderSize = 3
+tableBgColor = "#bbbbbb"
+rowBgColor = "#cccccc"
+```
+
+A template demonstrating the `#hash#` method:
+
+```smarty
+{config_load file='foo.conf'}
+
+ {#pageTitle#}
+
+
+
+ First
+ Last
+ Address
+
+
+
+
+```
+
+A template demonstrating the
+[`$smarty.config`](language-variables-smarty.md#smartyconfig-languagevariablessmartyconfig) method:
+
+```smarty
+{config_load file='foo.conf'}
+
+{$smarty.config.pageTitle}
+
+
+
+ First
+ Last
+ Address
+
+
+
+
+```
+
+Both examples would output:
+
+```html
+
+ This is mine
+
+
+
+ First
+ Last
+ Address
+
+
+
+
+```
+
+Config file variables cannot be used until after they are loaded in from
+a config file. This procedure is explained later in this document under
+[`{config_load}`](../language-builtin-functions/language-function-config-load.md).
+
+See also [variables](../language-basic-syntax/language-syntax-variables.md) and [$smarty reserved
+variables](language-variables-smarty.md).
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-variables/language-variable-scopes.md b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-variables/language-variable-scopes.md
new file mode 100644
index 000000000..e2b244661
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-variables/language-variable-scopes.md
@@ -0,0 +1,60 @@
+# Variable scopes
+
+You have the choice to assign variables to the scope of the main Smarty
+object, data objects created with [`createData()`](../../programmers/api-functions/api-create-data.md),
+and template objects created with
+[`createTemplate()`](../../programmers/api-functions/api-create-template.md). These objects can be
+chained. A template sees all the variables of its own object and all
+variables assigned to the objects in its chain of parent objects.
+
+By default, templates which are rendered by
+[`$smarty->display(...)`](../../programmers/api-functions/api-display.md) or
+[`$smarty->fetch(...)`](../../programmers/api-functions/api-fetch.md) calls are automatically linked to
+the Smarty object variable scope.
+
+By assigning variables to individual data or template objects you have
+full control which variables can be seen by a template.
+
+```php
+assign('foo','smarty');
+
+// assign variables to data object scope
+$data = $smarty->createData();
+$data->assign('foo','data');
+$data->assign('bar','bar-data');
+
+// assign variables to other data object scope
+$data2 = $smarty->createData($data);
+$data2->assign('bar','bar-data2');
+
+// assign variable to template object scope
+$tpl = $smarty->createTemplate('index.tpl');
+$tpl->assign('bar','bar-template');
+
+// assign variable to template object scope with link to Smarty object
+$tpl2 = $smarty->createTemplate('index.tpl',$smarty);
+$tpl2->assign('bar','bar-template2');
+
+// This display() does see $foo='smarty' from the $smarty object
+$smarty->display('index.tpl');
+
+// This display() does see $foo='data' and $bar='bar-data' from the data object $data
+$smarty->display('index.tpl',$data);
+
+// This display() does see $foo='data' from the data object $data
+// and $bar='bar-data2' from the data object $data2
+$smarty->display('index.tpl',$data2);
+
+// This display() does see $bar='bar-template' from the template object $tpl
+$tpl->display(); // or $smarty->display($tpl);
+
+// This display() does see $bar='bar-template2' from the template object $tpl2
+// and $foo='smarty' form the Smarty object $foo
+$tpl2->display(); // or $smarty->display($tpl2);
+```
+
+See also [`assign()`](../../programmers/api-functions/api-assign.md),
+[`createData()`](../../programmers/api-functions/api-create-data.md)
+and [`createTemplate()`](../../programmers/api-functions/api-create-template.md).
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-variables/language-variables-smarty.md b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-variables/language-variables-smarty.md
new file mode 100644
index 000000000..cbeb66874
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/designers/language-variables/language-variables-smarty.md
@@ -0,0 +1,155 @@
+# {$smarty} reserved variable
+
+The PHP reserved `{$smarty}` variable can be used to access several
+environment and request variables. The full list of them follows.
+
+## Request variables
+
+The [request variables](https://www.php.net/reserved.variables) such as
+`$_GET`, `$_POST`, `$_COOKIE`, `$_SERVER`, `$_ENV` and `$_SESSION` can
+be accessed as demonstrated in the examples below:
+
+```smarty
+{* display value of page from URL ($_GET) http://www.example.com/index.php?page=foo *}
+{$smarty.get.page}
+
+{* display the variable "page" from a form ($_POST['page']) *}
+{$smarty.post.page}
+
+{* display the value of the cookie "username" ($_COOKIE['username']) *}
+{$smarty.cookies.username}
+
+{* display the server variable "SERVER_NAME" ($_SERVER['SERVER_NAME'])*}
+{$smarty.server.SERVER_NAME}
+
+{* display the system environment variable "PATH" *}
+{$smarty.env.PATH}
+
+{* display the php session variable "id" ($_SESSION['id']) *}
+{$smarty.session.id}
+
+{* display the variable "username" from merged get/post/cookies/server/env *}
+{$smarty.request.username}
+```
+
+> **Note**
+>
+> For historical reasons `{$SCRIPT_NAME}` is shorthand for
+> `{$smarty.server.SCRIPT_NAME}`.
+>
+>
+> click me
+> click me
+
+> **Note**
+>
+> Although Smarty provides direct access to PHP super globals for
+> convenience, it should be used with caution. Directly accessing super
+> globals mixes underlying application code structure with templates. A
+> good practice is to assign specific needed values to template vars.
+
+## {$smarty.now}
+
+The current [timestamp](https://www.php.net/function.time) can be accessed
+with `{$smarty.now}`. The value reflects the number of seconds passed
+since the so-called Epoch on January 1, 1970, and can be passed directly
+to the [`date_format`](../language-modifiers/language-modifier-date-format.md) modifier for
+display. Note that [`time()`](https://www.php.net/function.time) is called
+on each invocation; eg a script that takes three seconds to execute with
+a call to `$smarty.now` at start and end will show the three-second
+difference.
+
+```smarty
+{* use the date_format modifier to show current date and time *}
+{$smarty.now|date_format:'%Y-%m-%d %H:%M:%S'}
+```
+
+## {$smarty.const}
+
+You can access PHP constant values directly.
+
+```php
+ **Note**
+>
+> Although Smarty provides direct access to PHP constants for
+> convenience, it is typically avoided as this is mixing underlying
+> application code structure into the templates. A good practice is to
+> assign specific needed values to template vars.
+
+## {$smarty.capture}
+
+Template output captured via the built-in
+[`{capture}..{/capture}`](../language-builtin-functions/language-function-capture.md) function can be
+accessed using the `{$smarty.capture}` variable. See the
+[`{capture}`](../language-builtin-functions/language-function-capture.md) page for more information.
+
+## {$smarty.config}
+
+`{$smarty.config}` variable can be used to refer to loaded [config
+variables](language-config-variables.md). `{$smarty.config.foo}` is a
+synonym for `{#foo#}`. See the
+[{config_load}](../language-builtin-functions/language-function-config-load.md) page for more info.
+
+## {$smarty.section}
+
+The `{$smarty.section}` variables can be used to refer to
+[`{section}`](../language-builtin-functions/language-function-section.md) loop properties. These have
+some very useful values such as `.first`, `.index`, etc.
+
+> **Note**
+>
+> The `{$smarty.foreach}` variable is no longer used with the new
+> [`{foreach}`](../language-builtin-functions/language-function-foreach.md) syntax, but is still
+> supported with Smarty 2.x style foreach syntax.
+
+## {$smarty.template}
+
+Returns the name of the current template being processed (without the
+directory).
+
+## {$smarty.template_object}
+
+Returns the template object of the current template being processed.
+
+## {$smarty.current_dir}
+
+Returns the name of the directory for the current template being
+processed if it is loaded from the filesystem (the default).
+
+## {$smarty.version}
+
+Returns the version of Smarty the template was compiled with.
+
+```smarty
+
+```
+
+## {$smarty.block.child}
+
+Returns block text from child template. See [Template
+inheritance](../../api/inheritance.md).
+
+## {$smarty.block.parent}
+
+Returns block text from parent template. See [Template
+inheritance](../../api/inheritance.md)
+
+## {$smarty.ldelim}, {$smarty.rdelim}
+
+These variables are used for printing the left-delimiter and
+right-delimiter value literally, the same as
+[`{ldelim},{rdelim}`](../language-builtin-functions/language-function-ldelim.md).
+
+See also [assigned variables](language-assigned-variables.md) and [config
+variables](language-config-variables.md)
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/features.md b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/features.md
new file mode 100644
index 000000000..f9a873be0
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/features.md
@@ -0,0 +1,151 @@
+# Features
+
+Some of Smarty's features:
+
+- It is extremely fast.
+- It is efficient since the PHP parser does the dirty work.
+- No template parsing overhead, only compiles once.
+- It is smart about recompiling only the
+ template files that have changed.
+- You can easily create your own custom
+ [tags](api/extending/tags.md) and [modifiers](api/extending/modifiers.md), so the template language is
+ extremely extensible.
+- Configurable template [{delimiter}](designers/language-basic-syntax/language-escaping.md) tag
+ syntax, so you can use `{$foo}`, `{{$foo}}`, ``, etc.
+- The [`{if}..{elseif}..{else}..{/if}`](designers/language-builtin-functions/language-function-if.md)
+ constructs are passed to the PHP parser, so the `{if...}` expression
+ syntax can be as simple or as complex an evaluation as you like.
+- Allows unlimited nesting of
+ [`sections`](designers/language-builtin-functions/language-function-section.md), `if's` etc.
+- Built-in [caching](api/caching/basics.md) support
+- Arbitrary [template](api/resources.md) sources
+- [Template Inheritance](api/inheritance.md) for
+ easy management of template content.
+- [Plugin](api/extending/introduction.md) architecture
+
+## Separation of presentation from application code
+- This means templates can certainly contain logic under the condition
+ that it is for presentation only. Things such as
+ [including](designers/language-builtin-functions/language-function-include.md) other templates,
+ [alternating](designers/language-custom-functions/language-function-cycle.md) table row colors,
+ [upper-casing](designers/language-modifiers/language-modifier-upper.md) a variable,
+ [looping](designers/language-builtin-functions/language-function-foreach.md) over an array of data and
+ rendering it are examples of presentation logic.
+- This does not mean however that Smarty forces a separation of
+ business and presentation logic. Smarty has no knowledge of which is
+ which, so placing business logic in the template is your own doing.
+- Also, if you desire *no* logic in your templates you certainly can
+ do so by boiling the content down to text and variables only.
+
+## How does it work?
+
+Under the hood, Smarty "compiles" (basically copies and converts) the
+templates into PHP scripts. This happens once when each template is
+first invoked, and then the compiled versions are used from that point
+forward. Smarty takes care of this for you, so the template designer
+just edits the Smarty templates and never has to manage the compiled
+versions. This approach keeps the templates easy to maintain, and yet
+keeps execution times extremely fast since the compiled code is just
+PHP. And of course, all PHP scripts take advantage of PHP op-code caches
+such as APC.
+
+## Template Inheritance
+
+Template inheritance was introduced in Smarty 3. Before template
+inheritance, we managed our templates in
+pieces such as header and footer templates. This organization lends
+itself to many problems that require some hoop-jumping, such as managing
+content within the header/footer on a per-page basis. With template
+inheritance, instead of including other templates we maintain our
+templates as single pages. We can then manipulate blocks of content
+within by inheriting them. This makes templates intuitive, efficient and
+easy to manage. See
+[Template Inheritance](api/inheritance.md)
+for more info.
+
+## Why not use XML/XSLT syntax?
+There are a couple of good reasons. First, Smarty can be used for more
+than just XML/HTML based templates, such as generating emails,
+javascript, CSV, and PDF documents. Second, XML/XSLT syntax is even more
+verbose and fragile than PHP code! It is perfect for computers, but
+horrible for humans. Smarty is about being easy to read, understand and
+maintain.
+
+## Template Security
+Although Smarty insulates you from PHP, you still have the option to use
+it in certain ways if you wish. Template security forces the restriction
+of PHP (and select Smarty functions.) This is useful if you have third
+parties editing templates, and you don't want to unleash the full power
+of PHP or Smarty to them.
+
+## Integration
+Sometimes Smarty gets compared to Model-View-Controller (MVC)
+frameworks. Smarty is not an MVC, it is just the presentation layer,
+much like the View (V) part of an MVC. As a matter of fact, Smarty can
+easily be integrated as the view layer of an MVC. Many of the more
+popular ones have integration instructions for Smarty, or you may find
+some help here in the forums and documentation.
+
+## Other Template Engines
+Smarty is not the only engine following the *"Separate Programming Code
+from Presentation"* philosophy. For instance, Python has template
+engines built around the same principles such as Django Templates and
+CheetahTemplate. *Note: Languages such as Python do not mix with HTML
+natively, which give them the advantage of proper programming code
+separation from the outset. There are libraries available to mix Python
+with HTML, but they are typically avoided.*
+
+## What Smarty is Not
+
+Smarty is not an application development framework. Smarty is not an
+MVC. Smarty is not an alternative to Laravel, Symfony, CodeIgniter,
+or any of the other application development frameworks for PHP.
+
+Smarty is a template engine, and works as the (V)iew component of your
+application. Smarty can easily be coupled to any of the engines listed
+above as the view component. No different than any other software,
+Smarty has a learning curve. Smarty does not guarantee good application
+design or proper separation of presentation, this still needs to be
+addressed by a competent developer and web designer.
+
+## Is Smarty Right for Me?
+
+Smarty is not meant to be a tool for every job. The important thing is
+to identify if Smarty fits your needs. There are some important
+questions to ask yourself:
+
+### Template Syntax
+Are you content with PHP tags mixed with HTML? Are your
+web designers comfortable with PHP? Would your web designers prefer a
+tag-based syntax designed for presentation? Some experience working with
+both Smarty and PHP helps answer these questions.
+
+### The Business Case
+Is there a requirement to insulate the templates from
+PHP? Do you have untrusted parties editing templates that you do not
+wish to unleash the power of PHP to? Do you need to programmatically
+control what is and is not available within the templates? Smarty
+supplies these capabilities by design.
+
+## Feature set
+Does Smarty's features such as caching, template
+inheritance and plugin architecture save development cycles writing code
+that would be needed otherwise? Does the codebase or framework you plan
+on using have the features you need for the presentation component?
+
+## Sites using Smarty
+Many well-known PHP projects make use of Smarty such as XOOPS CMS, CMS Made Simple,
+Tiki Wiki CMS Groupware and X-Cart to name a few.
+
+## Summary
+Whether you are using Smarty for a small website or massive enterprise
+solution, it can accommodate your needs. There are numerous features
+that make Smarty a great choice:
+
+- separation of PHP from HTML/CSS just makes sense
+- readability for organization and management
+- security for 3rd party template access
+- feature completeness, and easily extendable to your own needs
+- massive user base, Smarty is here to stay
+- LGPL license for commercial use
+- 100% free to use, open source project
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/getting-started.md b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/getting-started.md
new file mode 100644
index 000000000..3628fd203
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/getting-started.md
@@ -0,0 +1,197 @@
+# Getting started
+
+## Requirements
+Smarty can be run with PHP 7.2 to PHP 8.3.
+
+## Installation
+Smarty can be installed with [Composer](https://getcomposer.org/).
+
+To get the latest stable version of Smarty use:
+```shell
+composer require smarty/smarty
+```
+
+To get the latest, unreleased version, use:
+```shell
+composer require smarty/smarty:dev-master
+```
+
+To get the previous stable version of Smarty, Smarty 4, use:
+```shell
+composer require smarty/smarty:^4
+```
+
+Here's how you create an instance of Smarty in your PHP scripts:
+```php
+setTemplateDir('/some/template/dir');
+$smarty->setConfigDir('/some/config/dir');
+$smarty->setCompileDir('/some/compile/dir');
+$smarty->setCacheDir('/some/cache/dir');
+```
+
+The compile dir and cache dir need to be writable for the user running the PHP script.
+
+> **Note**
+>
+> This is usually user "nobody" and group "nobody". For OS X users, the
+> default is user "www" and group "www". If you are using Apache, you
+> can look in your `httpd.conf` file to see what user and group are
+> being used.
+
+```bash
+chown nobody:nobody /web/www.example.com/guestbook/templates_c/
+chmod 770 /web/www.example.com/guestbook/templates_c/
+
+chown nobody:nobody /web/www.example.com/guestbook/cache/
+chmod 770 /web/www.example.com/guestbook/cache/
+```
+
+You can verify if your system has the correct access rights for
+ these directories with [`testInstall()`](./programmers/api-functions/api-test-install.md):
+
+```php
+setTemplateDir('/some/template/dir');
+$smarty->setConfigDir('/some/config/dir');
+$smarty->setCompileDir('/some/compile/dir');
+$smarty->setCacheDir('/some/cache/dir');
+$smarty->testInstall();
+```
+
+## Basic usage
+
+Now, let's create the `index.tpl` file that Smarty will display. This
+needs to be located in the [`$template_dir`](./programmers/api-variables/variable-template-dir.md).
+
+```smarty
+{* Smarty *}
+Hello {$name|escape}, welcome to Smarty!
+```
+
+> **Note**
+>
+> `{* Smarty *}` is a template [comment](./designers/language-basic-syntax/language-syntax-comments.md). It
+> is not required, but it is good practice to start all your template
+> files with this comment. It makes the file easy to recognize
+> regardless of the file extension. For example, text editors could
+> recognize the file and turn on special syntax highlighting.
+
+Now lets edit our php file. We'll create an instance of Smarty,
+[`assign()`](./programmers/api-functions/api-assign.md) a template variable and
+[`display()`](./programmers/api-functions/api-display.md) the `index.tpl` file.
+
+```php
+setTemplateDir('/web/www.example.com/guestbook/templates/');
+$smarty->setCompileDir('/web/www.example.com/guestbook/templates_c/');
+$smarty->setConfigDir('/web/www.example.com/guestbook/configs/');
+$smarty->setCacheDir('/web/www.example.com/guestbook/cache/');
+
+$smarty->assign('name', 'Ned');
+$smarty->display('index.tpl');
+
+```
+
+> **Note**
+>
+> In our example, we are setting absolute paths to all the Smarty
+> directories. If `/web/www.example.com/guestbook/` is within your PHP
+> include\_path, then these settings are not necessary. However, it is
+> more efficient and (from experience) less error-prone to set them to
+> absolute paths. This ensures that Smarty is getting files from the
+> directories you intended.
+
+Now, run your PHP file. You should see *"Hello Ned, welcome to Smarty!"*
+
+You have completed the basic setup for Smarty!
+
+## Escaping
+You may have noticed that the example template above renders the `$name` variable using
+the [escape modifier](./designers/language-modifiers/language-modifier-escape.md). This
+modifier makes string 'safe' to use in the context of an HTML page.
+
+If you are primarily using Smarty for HTML-pages, it is recommended to enable automatic
+escaping. This way, you don't have to add `|escape` to every variable you use on a web page.
+Smarty will handle it automatically for you!
+
+Enable auto-escaping for HTML as follows:
+```php
+$smarty->setEscapeHtml(true);
+```
+
+## Extended Setup
+
+This is a continuation of the [basic installation](#installation), please read that first!
+
+A slightly more flexible way to set up Smarty is to extend the Smarty
+class and initialize your Smarty
+environment. So instead of repeatedly setting directory paths, assigning
+the same vars, etc., we can do that in one place.
+
+```php
+setTemplateDir('/web/www.example.com/guestbook/templates/');
+ $this->setCompileDir('/web/www.example.com/guestbook/templates_c/');
+ $this->setConfigDir('/web/www.example.com/guestbook/configs/');
+ $this->setCacheDir('/web/www.example.com/guestbook/cache/');
+
+ $this->setEscapeHtml(true);
+
+ $this->caching = Smarty::CACHING_LIFETIME_CURRENT;
+ $this->assign('app_name', 'Guest Book');
+ }
+
+}
+```
+
+Now, we can use `My_GuestBook` instead of `Smarty` in our scripts:
+```php
+assign('name', 'Ned');
+$smarty->display('index.tpl');
+```
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/img/favicon.ico b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/img/favicon.ico
new file mode 100644
index 000000000..aec1d8e3d
Binary files /dev/null and b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/img/favicon.ico differ
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/index.md b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/index.md
new file mode 100644
index 000000000..5c788f9ba
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/index.md
@@ -0,0 +1,35 @@
+# Smarty Documentation
+Smarty is a template engine for PHP, facilitating the separation of presentation (HTML/CSS) from application logic.
+
+It allows you to write **templates**, using **variables**, **modifiers**, **functions** and **comments**, like this:
+```smarty
+{$title|escape}
+
+
+ The number of pixels is: {math equation="x * y" x=$height y=$width}.
+
+```
+
+When this template is rendered, with the value "Hello world" for the variable $title, 640 for $width,
+and 480 for $height, the result is:
+```html
+Hello world
+
+
+ The number of pixels is: 307200.
+
+```
+
+## Getting Started
+- [Getting Started](./getting-started.md)
+- [Philosophy](./philosophy.md) - or "Why do I need a template engine?"
+- [Features](./features.md) - or "Why do I want Smarty?"
+
+## Help
+- [Search or create an issue](https://github.com/smarty-php/smarty/issues)
+- [Upgrading from an older version](upgrading.md)
+- [Some random tips & tricks](./appendixes/tips.md)
+- [Troubleshooting](./appendixes/troubleshooting.md)
+
+## Source code
+- [Smarty repository at GitHub](https://github.com/smarty-php/smarty)
\ No newline at end of file
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/philosophy.md b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/philosophy.md
new file mode 100644
index 000000000..c5edd3980
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/philosophy.md
@@ -0,0 +1,107 @@
+# Philosophy
+
+## What is Smarty?
+
+Smarty is a template engine for PHP. More specifically, it facilitates a
+manageable way to separate application logic and content from its
+presentation. This is best described in a situation where the
+application programmer and the template designer play different roles,
+or in most cases are not the same person.
+
+For example, let's say you are creating a web page that is displaying a
+newspaper article.
+
+- The article `$headline`, `$tagline`, `$author` and `$body` are
+ content elements, they contain no information about how they will be
+ presented. They are [passed](getting-started.md#basic-usage) into Smarty by the
+ application.
+
+- Then the template designer edits the templates and uses a
+ combination of HTML tags and [template tags](designers/language-basic-syntax/language-syntax-tags.md)
+ to format the presentation of these
+ [variables](designers/language-basic-syntax/language-syntax-variables.md) with elements such as
+ tables, div\'s, background colors, font sizes, style sheets, svg
+ etc.
+
+- One day the programmer needs to change the way the article content
+ is retrieved, ie a change in application logic. This change does not
+ affect the template designer, the content will still arrive in the
+ template exactly the same.
+
+- Likewise, if the template designer wants to completely redesign the
+ templates, this would require no change to the application logic.
+
+- Therefore, the programmer can make changes to the application logic
+ without the need to restructure templates, and the template designer
+ can make changes to templates without breaking application logic.
+
+## Goals
+
+The Smarty design was largely driven by these goals:
+- clean separation of presentation from application code
+- PHP backend, Smarty template frontend
+- complement PHP, not replace it
+- fast development/deployment for programmers and designers
+- quick and easy to maintain
+- syntax easy to understand, no PHP knowledge necessary
+- flexibility for custom development
+- security: insulation from PHP
+- free, open source
+
+
+
+## Two camps of thought
+
+When it comes to templating in PHP, there are basically two camps of
+thought. The first camp exclaims that \"PHP is a template engine\". This
+approach simply mixes PHP code with HTML. Although this approach is
+fastest from a pure script-execution point of view, many would argue
+that the PHP syntax is messy and complicated when mixed with tagged
+markup such as HTML.
+
+The second camp exclaims that presentation should be void of all
+programming code, and instead use simple tags to indicate where
+application content is revealed. This approach is common with other
+template engines (even in other programming languages), and is also the
+approach that Smarty takes. The idea is to keep the templates focused
+squarely on presentation, void of application code, and with as little
+overhead as possible.
+
+## Why is separating PHP from templates important?
+
+Two major benefits:
+
+- SYNTAX: Templates typically consist of semantic markup such as HTML.
+ PHP syntax works well for application code, but quickly degenerates
+ when mixed with HTML. Smarty\'s simple {tag} syntax is designed
+ specifically to express presentation. Smarty focuses your templates
+ on presentation and less on \"code\". This lends to quicker template
+ deployment and easier maintenance. Smarty syntax requires no working
+ knowledge of PHP, and is intuitive for programmers and
+ non-programmers alike.
+
+- INSULATION: When PHP is mixed with templates, there are no
+ restrictions on what type of logic can be injected into a template.
+ Smarty insulates the templates from PHP, creating a controlled
+ separation of presentation from business logic. Smarty also has
+ security features that can further enforce restrictions on
+ templates.
+
+## Web designers and PHP
+
+A common question: "Web designers have to learn a syntax anyway, why
+not PHP?" Of course web designers can learn PHP, and they may already
+be familiar with it. The issue isn't their ability to learn PHP, it is
+about the consequences of mixing PHP with HTML. If designers use PHP, it
+is too easy to add code into templates that doesn't belong there (you
+just handed them a swiss-army knife when they just needed a knife.) You
+can teach them the rules of application design, but this is probably
+something they don't really need to learn (now they are developers!)
+The PHP manual is also an overwhelming pile of information to sift
+through. It is like handing the owner of a car the factory assembly
+manual when all they need is the owners manual. Smarty gives web
+designers exactly the tools they need, and gives developers fine-grained
+control over those tools. The simplicity of the tag-based syntax is also
+a huge welcome for designers, it helps them streamline the organization
+and management of templates.
+
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-functions/add-extension.md b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-functions/add-extension.md
new file mode 100644
index 000000000..e69de29bb
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-functions/api-add-plugins-dir.md b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-functions/api-add-plugins-dir.md
new file mode 100644
index 000000000..ec9741b6e
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-functions/api-add-plugins-dir.md
@@ -0,0 +1,42 @@
+addPluginsDir()
+
+add a directory to the list of directories where plugins are stored
+
+Description
+===========
+
+Smarty
+
+addPluginsDir
+
+string\|array
+
+plugins\_dir
+
+
+ addPluginsDir('./plugins_1');
+
+ // add multiple directories where plugins are stored
+ $smarty->setPluginsDir(array(
+ './plugins_2',
+ './plugins_3',
+ ));
+
+ // view the plugins dir chain
+ var_dump($smarty->getPluginsDir());
+
+ // chaining of method calls
+ $smarty->setPluginsDir('./plugins')
+ ->addPluginsDir('./plugins_1')
+ ->addPluginsDir('./plugins_2');
+
+ ?>
+
+
+
+See also [`getPluginsDir()`](#api.get.plugins.dir),
+[`setPluginsDir()`](#api.set.plugins.dir) and
+[`$plugins_dir`](#variable.plugins.dir).
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-functions/api-append.md b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-functions/api-append.md
new file mode 100644
index 000000000..d9acff84a
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-functions/api-append.md
@@ -0,0 +1,60 @@
+append()
+
+append an element to an assigned array
+
+Description
+===========
+
+void
+
+append
+
+mixed
+
+var
+
+void
+
+append
+
+string
+
+varname
+
+mixed
+
+var
+
+bool
+
+merge
+
+If you append to a string value, it is converted to an array value and
+then appended to. You can explicitly pass name/value pairs, or
+associative arrays containing the name/value pairs. If you pass the
+optional third parameter of TRUE, the value will be merged with the
+current array instead of appended.
+
+NOTE.PARAMETER.MERGE
+
+
+ append('foo', 'Fred');
+ // After this line, foo will now be seen as an array in the template
+ $smarty->append('foo', 'Albert');
+
+ $array = array(1 => 'one', 2 => 'two');
+ $smarty->append('X', $array);
+ $array2 = array(3 => 'three', 4 => 'four');
+ // The following line will add a second element to the X array
+ $smarty->append('X', $array2);
+
+ // passing an associative array
+ $smarty->append(array('city' => 'Lincoln', 'state' => 'Nebraska'));
+ ?>
+
+
+
+See also [`assign()`](#api.assign) and
+[`getTemplateVars()`](#api.get.template.vars)
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-functions/api-assign.md b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-functions/api-assign.md
new file mode 100644
index 000000000..31f6a1508
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-functions/api-assign.md
@@ -0,0 +1,83 @@
+assign()
+
+assign variables/objects to the templates
+
+Description
+===========
+
+void
+
+assign
+
+mixed
+
+var
+
+void
+
+assign
+
+string
+
+varname
+
+mixed
+
+var
+
+bool
+
+nocache
+
+You can explicitly pass name/value pairs, or associative arrays
+containing the name/value pairs.
+
+If you pass the optional third `nocache` parameter of TRUE, the variable
+is assigned as nocache variable. See
+[`Cacheability of Variables`](#cacheability.variables) for details.
+
+> **Note**
+>
+> When you assign/register objects to templates, be sure that all
+> properties and methods accessed from the template are for presentation
+> purposes only. It is very easy to inject application logic through
+> objects, and this leads to poor designs that are difficult to manage.
+> See the Best Practices section of the Smarty website.
+
+
+ assign('Name', 'Fred');
+ $smarty->assign('Address', $address);
+
+ // passing an associative array
+ $smarty->assign(array('city' => 'Lincoln', 'state' => 'Nebraska'));
+
+ // passing an array
+ $myArray = array('no' => 10, 'label' => 'Peanuts');
+ $smarty->assign('foo',$myArray);
+
+ // passing a row from a database (eg adodb)
+ $sql = 'select id, name, email from contacts where contact ='.$id;
+ $smarty->assign('contact', $db->getRow($sql));
+ ?>
+
+These are accessed in the template with
+
+
+ {* note the vars are case sensitive like php *}
+ {$Name}
+ {$Address}
+ {$city}
+ {$state}
+
+ {$foo.no}, {$foo.label}
+ {$contact.id}, {$contact.name},{$contact.email}
+
+To access more complex array assignments see
+[`{foreach}`](#language.function.foreach) and
+[`{section}`](#language.function.section)
+
+See also [`getTemplateVars()`](#api.get.template.vars),
+[`clearAssign()`](#api.clear.assign), [`append()`](#api.append) and
+[`{assign}`](#language.function.assign)
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-functions/api-clear-all-assign.md b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-functions/api-clear-all-assign.md
new file mode 100644
index 000000000..cc75fad0f
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-functions/api-clear-all-assign.md
@@ -0,0 +1,34 @@
+clearAllAssign()
+
+clears the values of all assigned variables
+
+Description
+===========
+
+void
+
+clearAllAssign
+
+
+ assign('Name', 'Fred');
+ $smarty->assign('Address', $address);
+
+ // will output above
+ print_r( $smarty->getTemplateVars() );
+
+ // clear all assigned variables
+ $smarty->clearAllAssign();
+
+ // will output nothing
+ print_r( $smarty->getTemplateVars() );
+
+ ?>
+
+
+
+See also [`clearAssign()`](#api.clear.assign),
+[`clearConfig()`](#api.clear.config),
+[`getTemplateVars()`](#api.get.template.vars), [`assign()`](#api.assign)
+and [`append()`](#api.append)
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-functions/api-clear-all-cache.md b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-functions/api-clear-all-cache.md
new file mode 100644
index 000000000..55cbe5795
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-functions/api-clear-all-cache.md
@@ -0,0 +1,37 @@
+clearAllCache()
+
+clears the entire template cache
+
+Description
+===========
+
+void
+
+clearAllCache
+
+int
+
+expire\_time
+
+As an optional parameter, you can supply a minimum age in seconds the
+cache files must be before they will get cleared.
+
+> **Note**
+>
+> Since Smarty version 3.1.14 it is possible to delete cache files by
+> their individual expiration time at creation by passing constant
+> SMARTY::CLEAR\_EXPIRED as `expire_time` parameter.
+
+
+ clearAllCache();
+
+ // clears all files over one hour old
+ $smarty->clearAllCache(3600);
+ ?>
+
+
+
+See also [`clearCache()`](#api.clear.cache),
+[`isCached()`](#api.is.cached) and the [caching](#caching) page.
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-functions/api-clear-assign.md b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-functions/api-clear-assign.md
new file mode 100644
index 000000000..ac0731e86
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-functions/api-clear-assign.md
@@ -0,0 +1,32 @@
+clearAssign()
+
+clears the value of an assigned variable
+
+Description
+===========
+
+void
+
+clearAssign
+
+mixed
+
+var
+
+This can be a single value, or an array of values.
+
+
+ clearAssign('Name');
+
+ // clears multiple variables
+ $smarty->clearAssign(array('Name', 'Address', 'Zip'));
+ ?>
+
+
+
+See also [`clearAllAssign()`](#api.clear.all.assign),
+[`clearConfig()`](#api.clear.config),
+[`getTemplateVars()`](#api.get.template.vars), [`assign()`](#api.assign)
+and [`append()`](#api.append)
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-functions/api-clear-cache.md b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-functions/api-clear-cache.md
new file mode 100644
index 000000000..3e17d80c8
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-functions/api-clear-cache.md
@@ -0,0 +1,60 @@
+clearCache()
+
+clears the cache for a specific template
+
+Description
+===========
+
+void
+
+clearCache
+
+string
+
+template
+
+string
+
+cache\_id
+
+string
+
+compile\_id
+
+int
+
+expire\_time
+
+- If you have [multiple caches](#caching.multiple.caches) for a
+ template, you can clear a specific cache by supplying the `cache_id`
+ as the second parameter.
+
+- You can also pass a [`$compile_id`](#variable.compile.id) as a third
+ parameter. You can [group templates together](#caching.groups) so
+ they can be removed as a group, see the [caching section](#caching)
+ for more information.
+
+- As an optional fourth parameter, you can supply a minimum age in
+ seconds the cache file must be before it will get cleared.
+
+ > **Note**
+ >
+ > Since Smarty version 3.1.14 it is possible to delete cache files
+ > by their individual expiration time at creation by passing
+ > constant SMARTY::CLEAR\_EXPIRED as fourth parameter.
+
+
+
+
+ clearCache('index.tpl');
+
+ // clear the cache for a particular cache id in an multiple-cache template
+ $smarty->clearCache('index.tpl', 'MY_CACHE_ID');
+ ?>
+
+
+
+See also [`clearAllCache()`](#api.clear.all.cache) and
+[`caching`](#caching) section.
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-functions/api-clear-compiled-tpl.md b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-functions/api-clear-compiled-tpl.md
new file mode 100644
index 000000000..dfa688eb6
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-functions/api-clear-compiled-tpl.md
@@ -0,0 +1,44 @@
+clearCompiledTemplate()
+
+clears the compiled version of the specified template resource
+
+Description
+===========
+
+void
+
+clearCompiledTemplate
+
+string
+
+tpl\_file
+
+string
+
+compile\_id
+
+int
+
+exp\_time
+
+This clears the compiled version of the specified template resource, or
+all compiled template files if one is not specified. If you pass a
+[`$compile_id`](#variable.compile.id) only the compiled template for
+this specific [`$compile_id`](#variable.compile.id) is cleared. If you
+pass an exp\_time, then only compiled templates older than `exp_time`
+seconds are cleared, by default all compiled templates are cleared
+regardless of their age. This function is for advanced use only, not
+normally needed.
+
+
+ clearCompiledTemplate('index.tpl');
+
+ // clear entire compile directory
+ $smarty->clearCompiledTemplate();
+ ?>
+
+
+
+See also [`clearCache()`](#api.clear.cache).
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-functions/api-clear-config.md b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-functions/api-clear-config.md
new file mode 100644
index 000000000..43e86be17
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-functions/api-clear-config.md
@@ -0,0 +1,35 @@
+clearConfig()
+
+clears assigned config variables
+
+Description
+===========
+
+void
+
+clearConfig
+
+string
+
+var
+
+This clears all assigned [config variables](#language.config.variables).
+If a variable name is supplied, only that variable is cleared.
+
+
+ clearConfig();
+
+ // clear one variable
+ $smarty->clearConfig('foobar');
+ ?>
+
+
+
+See also [`getConfigVars()`](#api.get.config.vars),
+[`config variables`](#language.config.variables),
+[`config files`](#config.files),
+[`{config_load}`](#language.function.config.load),
+[`configLoad()`](#api.config.load) and
+[`clearAssign()`](#api.clear.assign).
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-functions/api-compile-all-config.md b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-functions/api-compile-all-config.md
new file mode 100644
index 000000000..35497d9ad
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-functions/api-compile-all-config.md
@@ -0,0 +1,61 @@
+compileAllConfig()
+
+compiles all known config files
+
+Description
+===========
+
+string
+
+compileAllConfig
+
+string
+
+extension
+
+boolean
+
+force
+
+integer
+
+timelimit
+
+integer
+
+maxerror
+
+This function compiles config files found in the
+[`$config_dir`](#variable.config.dir) folder. It uses the following
+parameters:
+
+- `extension` is an optional string which defines the file extension
+ for the config files. The default is \".conf\".
+
+- `force` is an optional boolean which controls if only modified
+ (false) or all (true) config files shall be compiled. The default is
+ \"false\".
+
+- `timelimit` is an optional integer to set a runtime limit in seconds
+ for the compilation process. The default is no limit.
+
+- `maxerror` is an optional integer to set an error limit. If more
+ config files failed to compile the function will be aborted. The
+ default is no limit.
+
+> **Note**
+>
+> This function may not create desired results in all configurations.
+> Use is on own risk.
+
+
+ compileAllConfig('.config',true);
+
+ ?>
+
+
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-functions/api-compile-all-templates.md b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-functions/api-compile-all-templates.md
new file mode 100644
index 000000000..2be22eef3
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-functions/api-compile-all-templates.md
@@ -0,0 +1,71 @@
+compileAllTemplates()
+
+compiles all known templates
+
+Description
+===========
+
+string
+
+compileAllTemplates
+
+string
+
+extension
+
+boolean
+
+force
+
+integer
+
+timelimit
+
+integer
+
+maxerror
+
+This function compiles template files found in the
+[`$template_dir`](#variable.template.dir) folder. It uses the following
+parameters:
+
+- `extension` is an optional string which defines the file extension
+ for the template files. The default is \".tpl\".
+
+- `force` is an optional boolean which controls if only modified
+ (false) or all (true) templates shall be compiled. The default is
+ \"false\".
+
+- `timelimit` is an optional integer to set a runtime limit in seconds
+ for the compilation process. The default is no limit.
+
+- `maxerror` is an optional integer to set an error limit. If more
+ templates failed to compile the function will be aborted. The
+ default is no limit.
+
+> **Note**
+>
+> This function may not create desired results in all configurations.
+> Use is on own risk.
+
+> **Note**
+>
+> If any template requires registered plugins, filters or objects you
+> must register all of them before running this function.
+
+> **Note**
+>
+> If you are using template inheritance this function will create
+> compiled files of parent templates which will never be used.
+
+
+ compileAllTemplates('.tpl',true);
+
+ ?>
+
+
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-functions/api-config-load.md b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-functions/api-config-load.md
new file mode 100644
index 000000000..bf6001fa4
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-functions/api-config-load.md
@@ -0,0 +1,47 @@
+configLoad()
+
+loads config file data and assigns it to the template
+
+Description
+===========
+
+void
+
+configLoad
+
+string
+
+file
+
+string
+
+section
+
+This loads [config file](#config.files) data and assigns it to the
+template. This works identically to the template
+[`{config_load}`](#language.function.config.load) function.
+
+> **Note**
+>
+> As of Smarty 2.4.0, assigned template variables are kept across
+> invocations of [`fetch()`](#api.fetch) and
+> [`display()`](#api.display). Config vars loaded from `configLoad()`
+> are always global in scope. Config files are also compiled for faster
+> execution, and respect the [`$force_compile`](#variable.force.compile)
+> and [`$compile_check`](#variable.compile.check) settings.
+
+
+ configLoad('my.conf');
+
+ // load a section
+ $smarty->configLoad('my.conf', 'foobar');
+ ?>
+
+
+
+See also [`{config_load}`](#language.function.config.load),
+[`getConfigVars()`](#api.get.config.vars),
+[`clearConfig()`](#api.clear.config), and
+[`config variables`](#language.config.variables)
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-functions/api-create-data.md b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-functions/api-create-data.md
new file mode 100644
index 000000000..dc03ad94d
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-functions/api-create-data.md
@@ -0,0 +1,52 @@
+createData()
+
+creates a data object
+
+Description
+===========
+
+string
+
+createData
+
+object
+
+parent
+
+string
+
+createData
+
+This creates a data object which will hold assigned variables. It uses
+the following parameters:
+
+- `parent` is an optional parameter. It is an uplink to the main
+ Smarty object, a another user-created data object or to user-created
+ template object. These objects can be chained. Templates can access
+ variables assigned to any of the objects in it\'s parent chain.
+
+Data objects are used to create scopes for assigned variables. They can
+be used to control which variables are seen by which templates.
+
+
+ createData();
+
+ // assign variable to data scope
+ $data->assign('foo','bar');
+
+ // create template object which will use variables from data object
+ $tpl = $smarty->createTemplate('index.tpl',$data);
+
+ // display the template
+ $tpl->display();
+ ?>
+
+
+
+See also [`display()`](#api.display), and
+[`createTemplate()`](#api.create.template),
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-functions/api-create-template.md b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-functions/api-create-template.md
new file mode 100644
index 000000000..097b7df95
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-functions/api-create-template.md
@@ -0,0 +1,99 @@
+createTemplate()
+
+returns a template object
+
+Description
+===========
+
+Smarty\_Internal\_Template
+
+createTemplate
+
+string
+
+template
+
+object
+
+parent
+
+Smarty\_Internal\_Template
+
+createTemplate
+
+string
+
+template
+
+array
+
+data
+
+Smarty\_Internal\_Template
+
+createTemplate
+
+string
+
+template
+
+string
+
+cache\_id
+
+string
+
+compile\_id
+
+object
+
+parent
+
+Smarty\_Internal\_Template
+
+createTemplate
+
+string
+
+template
+
+string
+
+cache\_id
+
+string
+
+compile\_id
+
+array
+
+data
+
+This creates a template object which later can be rendered by the
+[display](#api.display) or [fetch](#api.fetch) method. It uses the
+following parameters:
+
+- `template` must be a valid [template resource](#resources) type and
+ path.
+
+
+
+
+ createTemplate('index.tpl');
+
+ // assign variable to template scope
+ $tpl->assign('foo','bar');
+
+ // display the template
+ $tpl->display();
+ ?>
+
+
+
+See also [`display()`](#api.display), and
+[`templateExists()`](#api.template.exists).
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-functions/api-disable-security.md b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-functions/api-disable-security.md
new file mode 100644
index 000000000..1166828e5
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-functions/api-disable-security.md
@@ -0,0 +1,15 @@
+disableSecurity()
+
+disables template security
+
+Description
+===========
+
+string
+
+disableSecurity
+
+This disables security checking on templates.
+
+See also [`enableSecurity()`](#api.enable.security), and
+[Security](#advanced.features.security).
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-functions/api-display.md b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-functions/api-display.md
new file mode 100644
index 000000000..ced7513f1
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-functions/api-display.md
@@ -0,0 +1,84 @@
+display()
+
+displays the template
+
+Description
+===========
+
+void
+
+display
+
+string
+
+template
+
+string
+
+cache\_id
+
+string
+
+compile\_id
+
+This displays the contents of a template. To return the contents of a
+template into a variable, use [`fetch()`](#api.fetch). Supply a valid
+[template resource](#resources) type and path. As an optional second
+parameter, you can pass a `$cache_id`, see the [caching
+section](#caching) for more information.
+
+PARAMETER.COMPILEID
+
+
+ setCaching(true);
+
+ // only do db calls if cache doesn't exist
+ if(!$smarty->isCached('index.tpl')) {
+
+ // dummy up some data
+ $address = '245 N 50th';
+ $db_data = array(
+ 'City' => 'Lincoln',
+ 'State' => 'Nebraska',
+ 'Zip' => '68502'
+ );
+
+ $smarty->assign('Name', 'Fred');
+ $smarty->assign('Address', $address);
+ $smarty->assign('data', $db_data);
+
+ }
+
+ // display the output
+ $smarty->display('index.tpl');
+ ?>
+
+
+
+Use the syntax for [template resources](#resources) to display files
+outside of the [`$template_dir`](#variable.template.dir) directory.
+
+
+ display('/usr/local/include/templates/header.tpl');
+
+ // absolute filepath (same thing)
+ $smarty->display('file:/usr/local/include/templates/header.tpl');
+
+ // windows absolute filepath (MUST use "file:" prefix)
+ $smarty->display('file:C:/www/pub/templates/header.tpl');
+
+ // include from template resource named "db"
+ $smarty->display('db:header.tpl');
+ ?>
+
+
+
+See also [`fetch()`](#api.fetch) and
+[`templateExists()`](#api.template.exists).
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-functions/api-enable-security.md b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-functions/api-enable-security.md
new file mode 100644
index 000000000..72ee38bb9
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-functions/api-enable-security.md
@@ -0,0 +1,41 @@
+enableSecurity()
+
+enables template security
+
+Description
+===========
+
+string
+
+enableSecurity
+
+string
+
+securityclass
+
+string
+
+enableSecurity
+
+object
+
+securityobject
+
+string
+
+enableSecurity
+
+This enables security checking on templates. It uses the following
+parameters:
+
+- `securityclass` is an optional parameter. It\'s the name of the
+ class with defines the security policy parameters.
+
+- `securityobject` is an optional parameter. It\'s the object with
+ defines the security policy parameters.
+
+For the details how to setup a security policy see the
+[Security](#advanced.features.security) section.
+
+See also [`disableSecurity()`](#api.disable.security), and
+[Security](#advanced.features.security).
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-functions/api-fetch.md b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-functions/api-fetch.md
new file mode 100644
index 000000000..491c28d4d
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-functions/api-fetch.md
@@ -0,0 +1,91 @@
+fetch()
+
+returns the template output
+
+Description
+===========
+
+string
+
+fetch
+
+string
+
+template
+
+string
+
+cache\_id
+
+string
+
+compile\_id
+
+This returns the template output instead of [displaying](#api.display)
+it. Supply a valid [template resource](#resources) type and path. As an
+optional second parameter, you can pass a `$cache id`, see the [caching
+section](#caching) for more information.
+
+PARAMETER.COMPILEID
+
+
+ setCaching(true);
+
+ // set a separate cache_id for each unique URL
+ $cache_id = md5($_SERVER['REQUEST_URI']);
+
+ // capture the output
+ $output = $smarty->fetch('index.tpl', $cache_id);
+
+ // do something with $output here
+ echo $output;
+ ?>
+
+
+
+The `email_body.tpl` template
+
+
+ Dear {$contact_info.name},
+
+ Welcome and thank you for signing up as a member of our user group.
+
+ Click on the link below to login with your user name
+ of '{$contact_info.username}' so you can post in our forums.
+
+ {$login_url}
+
+ List master
+
+ {textformat wrap=40}
+ This is some long-winded disclaimer text that would automatically get wrapped
+ at 40 characters. This helps make the text easier to read in mail programs that
+ do not wrap sentences for you.
+ {/textformat}
+
+
+
+The php script using the PHP [`mail()`](https://www.php.net/function.mail)
+function
+
+
+ assign('contact_info',$contact_info);
+ $smarty->assign('login_url',"http://{$_SERVER['SERVER_NAME']}/login");
+
+ mail($contact_info['email'], 'Thank You', $smarty->fetch('email_body.tpl'));
+
+ ?>
+
+
+
+See also [`{fetch}`](#language.function.fetch)
+[`display()`](#api.display), [`{eval}`](#language.function.eval), and
+[`templateExists()`](#api.template.exists).
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-functions/api-get-config-dir.md b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-functions/api-get-config-dir.md
new file mode 100644
index 000000000..f41472ca4
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-functions/api-get-config-dir.md
@@ -0,0 +1,40 @@
+getConfigDir()
+
+return the directory where config files are stored
+
+Description
+===========
+
+string\|array
+
+getConfigDir
+
+string
+
+key
+
+
+ setConfigDir(array(
+ 'one' => './config',
+ 'two' => './config_2',
+ 'three' => './config_3',
+ ));
+
+ // get all directories where config files are stored
+ $config_dir = $smarty->getConfigDir();
+ var_dump($config_dir); // array
+
+ // get directory identified by key
+ $config_dir = $smarty->getConfigDir('one');
+ var_dump($config_dir); // string
+
+ ?>
+
+
+
+See also [`setConfigDir()`](#api.set.config.dir),
+[`addConfigDir()`](#api.add.config.dir) and
+[`$config_dir`](#variable.config.dir).
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-functions/api-get-config-vars.md b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-functions/api-get-config-vars.md
new file mode 100644
index 000000000..f252e8674
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-functions/api-get-config-vars.md
@@ -0,0 +1,37 @@
+getConfigVars()
+
+returns the given loaded config variable value
+
+Description
+===========
+
+array
+
+getConfigVars
+
+string
+
+varname
+
+If no parameter is given, an array of all loaded [config
+variables](#language.config.variables) is returned.
+
+
+ getConfigVars('foo');
+
+ // get all loaded config template vars
+ $all_config_vars = $smarty->getConfigVars();
+
+ // take a look at them
+ print_r($all_config_vars);
+ ?>
+
+
+
+See also [`clearConfig()`](#api.clear.config),
+[`{config_load}`](#language.function.config.load),
+[`configLoad()`](#api.config.load) and
+[`getTemplateVars()`](#api.get.template.vars).
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-functions/api-get-plugins-dir.md b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-functions/api-get-plugins-dir.md
new file mode 100644
index 000000000..aa6035549
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-functions/api-get-plugins-dir.md
@@ -0,0 +1,31 @@
+getPluginsDir()
+
+return the directory where plugins are stored
+
+Description
+===========
+
+array
+
+getPluginsDir
+
+
+ setPluginsDir(array(
+ './plugins',
+ './plugins_2',
+ ));
+
+ // get all directories where plugins are stored
+ $config_dir = $smarty->getPluginsDir();
+ var_dump($config_dir); // array
+
+ ?>
+
+
+
+See also [`setPluginsDir()`](#api.set.plugins.dir),
+[`addPluginsDir()`](#api.add.plugins.dir) and
+[`$plugins_dir`](#variable.plugins.dir).
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-functions/api-get-registered-object.md b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-functions/api-get-registered-object.md
new file mode 100644
index 000000000..a7c920e14
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-functions/api-get-registered-object.md
@@ -0,0 +1,36 @@
+getRegisteredObject()
+
+returns a reference to a registered object
+
+Description
+===========
+
+array
+
+getRegisteredObject
+
+string
+
+object\_name
+
+This is useful from within a custom function when you need direct access
+to a [registered object](#api.register.object). See the
+[objects](#advanced.features.objects) page for more info.
+
+
+ getRegisteredObject($params['object']);
+ // use $obj_ref is now a reference to the object
+ }
+ }
+ ?>
+
+
+
+See also [`registerObject()`](#api.register.object),
+[`unregisterObject()`](#api.unregister.object) and [objects
+page](#advanced.features.objects)
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-functions/api-get-template-vars.md b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-functions/api-get-template-vars.md
new file mode 100644
index 000000000..27882eef4
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-functions/api-get-template-vars.md
@@ -0,0 +1,37 @@
+getTemplateVars()
+
+returns assigned variable value(s)
+
+Description
+===========
+
+array
+
+getTemplateVars
+
+string
+
+varname
+
+If no parameter is given, an array of all [assigned](#api.assign)
+variables are returned.
+
+
+ getTemplateVars('foo');
+
+ // get all assigned template vars
+ $all_tpl_vars = $smarty->getTemplateVars();
+
+ // take a look at them
+ print_r($all_tpl_vars);
+ ?>
+
+
+
+See also [`assign()`](#api.assign),
+[`{assign}`](#language.function.assign), [`append()`](#api.append),
+[`clearAssign()`](#api.clear.assign),
+[`clearAllAssign()`](#api.clear.all.assign) and
+[`getConfigVars()`](#api.get.config.vars)
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-functions/api-is-cached.md b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-functions/api-is-cached.md
new file mode 100644
index 000000000..d9d3057fb
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-functions/api-is-cached.md
@@ -0,0 +1,81 @@
+isCached()
+
+returns true if there is a valid cache for this template
+
+Description
+===========
+
+bool
+
+isCached
+
+string
+
+template
+
+string
+
+cache\_id
+
+string
+
+compile\_id
+
+- This only works if [`$caching`](#variable.caching) is set to one of
+ `\Smarty\Smarty::CACHING_LIFETIME_CURRENT` or
+ `\Smarty\Smarty::CACHING_LIFETIME_SAVED` to enable caching. See the [caching
+ section](#caching) for more info.
+
+- You can also pass a `$cache_id` as an optional second parameter in
+ case you want [multiple caches](#caching.multiple.caches) for the
+ given template.
+
+- You can supply a [`$compile id`](#variable.compile.id) as an
+ optional third parameter. If you omit that parameter the persistent
+ [`$compile_id`](#variable.compile.id) is used if its set.
+
+- If you do not want to pass a `$cache_id` but want to pass a
+ [`$compile_id`](#variable.compile.id) you have to pass NULL as a
+ `$cache_id`.
+
+> **Note**
+>
+> If `isCached()` returns TRUE it actually loads the cached output and
+> stores it internally. Any subsequent call to
+> [`display()`](#api.display) or [`fetch()`](#api.fetch) will return
+> this internally stored output and does not try to reload the cache
+> file. This prevents a race condition that may occur when a second
+> process clears the cache between the calls to `isCached()` and to
+> [`display()`](#api.display) in the example above. This also means
+> calls to [`clearCache()`](#api.clear.cache) and other changes of the
+> cache-settings may have no effect after `isCached()` returned TRUE.
+
+
+ setCaching(Smarty::CACHING_LIFETIME_CURRENT);
+
+ if(!$smarty->isCached('index.tpl')) {
+ // do database calls, assign vars here
+ }
+
+ $smarty->display('index.tpl');
+ ?>
+
+
+
+
+ setCaching(Smarty::CACHING_LIFETIME_CURRENT);
+
+ if(!$smarty->isCached('index.tpl', 'FrontPage')) {
+ // do database calls, assign vars here
+ }
+
+ $smarty->display('index.tpl', 'FrontPage');
+ ?>
+
+
+
+See also [`clearCache()`](#api.clear.cache),
+[`clearAllCache()`](#api.clear.all.cache), and [caching
+section](#caching).
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-functions/api-load-filter.md b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-functions/api-load-filter.md
new file mode 100644
index 000000000..e2738b0c8
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-functions/api-load-filter.md
@@ -0,0 +1,41 @@
+loadFilter()
+
+load a filter plugin
+
+Description
+===========
+
+void
+
+loadFilter
+
+string
+
+type
+
+string
+
+name
+
+The first argument specifies the type of the filter to load and can be
+one of the following: `variable`, `pre`, `post` or `output`. The second argument
+specifies the `name` of the filter plugin.
+
+
+ loadFilter('pre', 'trim');
+
+ // load another prefilter named 'datefooter'
+ $smarty->loadFilter('pre', 'datefooter');
+
+ // load output filter named 'compress'
+ $smarty->loadFilter('output', 'compress');
+
+ ?>
+
+
+
+See also [`registerFilter()`](#api.register.filter) and [advanced
+features](#advanced.features).
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-functions/api-mute-expected-errors.md b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-functions/api-mute-expected-errors.md
new file mode 100644
index 000000000..ac84a6435
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-functions/api-mute-expected-errors.md
@@ -0,0 +1,21 @@
+Smarty::muteExpectedErrors()
+
+mutes expected warnings and notices deliberately generated by Smarty
+
+Description
+===========
+
+string
+
+muteExpectedErrors
+
+muteExpectedErrors() registers a custom error handler using
+[set\_error\_handler()](https://www.php.net/set_error_handler). The error
+handler merely inspects `$errno` and `$errfile` to determine if the
+given error was produced deliberately and must be ignored, or should be
+passed on to the next error handler.
+
+`\Smarty\Smarty::unmuteExpectedErrors()` removes the current error handler.
+Please note, that if you\'ve registered any custom error handlers after
+the muteExpectedErrors() call, the unmute will not remove Smarty\'s
+muting error handler, but the one registered last.
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-functions/api-register-cacheresource.md b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-functions/api-register-cacheresource.md
new file mode 100644
index 000000000..626091496
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-functions/api-register-cacheresource.md
@@ -0,0 +1,40 @@
+registerCacheResource()
+
+dynamically register CacheResources
+
+Description
+===========
+
+void
+
+registerCacheResource
+
+string
+
+name
+
+Smarty\_CacheResource
+
+resource\_handler
+
+Use this to dynamically register a [CacheResource
+plugin](#caching.custom) with Smarty. Pass in the `name` of the
+CacheResource and the object extending Smarty\_CacheResource. See
+[Custom Cache Implementation](#caching.custom) for more information on
+how to create custom CacheResources.
+
+> **Note**
+>
+> In Smarty2 this used to be a callback function called
+> `$cache_handler_func`. Smarty3 replaced this callback by the
+> `Smarty_CacheResource` module.
+
+
+ registerCacheResource('mysql', new My_CacheResource_Mysql());
+ ?>
+
+
+
+See also [`unregisterCacheResource()`](#api.unregister.cacheresource)
+and the [Custom CacheResource Implementation](#caching.custom) section.
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-functions/api-register-class.md b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-functions/api-register-class.md
new file mode 100644
index 000000000..d0156d512
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-functions/api-register-class.md
@@ -0,0 +1,68 @@
+registerClass()
+
+register a class for use in the templates
+
+Description
+===========
+
+void
+
+registerClass
+
+string
+
+class\_name
+
+string
+
+class\_impl
+
+Smarty allows you to access static classes from templates as long as the
+[Security Policy](#advanced.features.security) does not tell it
+otherwise. If security is enabled, classes registered with
+`registerClass()` are accessible to templates.
+
+
+ registerClass("Foo", "Bar");
+
+
+
+
+ {* Smarty will access this class as long as it's not prohibited by security *}
+ {Bar::$property}
+ {* Foo translates to the real class Bar *}
+ {Foo::$property}
+
+
+
+
+ registerClass("Foo", "\my\php\application\Bar");
+
+
+
+
+ {* Foo translates to the real class \my\php\application\Bar *}
+ {Foo::$property}
+
+
+
+See also [`registerObject()`](#api.register.object), and
+[Security](#advanced.features.security).
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-functions/api-register-default-plugin-handler.md b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-functions/api-register-default-plugin-handler.md
new file mode 100644
index 000000000..61ac47612
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-functions/api-register-default-plugin-handler.md
@@ -0,0 +1,93 @@
+registerDefaultPluginHandler()
+
+register a function which gets called on undefined tags
+
+Description
+===========
+
+void
+
+registerDefaultPluginHandler
+
+mixed
+
+callback
+
+Register a default plugin handler which gets called if the compiler can
+not find a definition for a tag otherwise. It uses the following
+parameters:
+
+If during compilation Smarty encounters tag which is not defined
+internal, registered or located in the plugins folder it tries to
+resolve it by calling the registered default plugin handler. The handler
+may be called several times for same undefined tag looping over valid
+plugin types.
+
+
+ registerDefaultPluginHandler('my_plugin_handler');
+
+ /**
+ * Default Plugin Handler
+ *
+ * called when Smarty encounters an undefined tag during compilation
+ *
+ * @param string $name name of the undefined tag
+ * @param string $type tag type (e.g. Smarty::PLUGIN_FUNCTION, Smarty::PLUGIN_BLOCK,
+ Smarty::PLUGIN_COMPILER, Smarty::PLUGIN_MODIFIER, Smarty::PLUGIN_MODIFIERCOMPILER)
+ * @param \Smarty\Template\ $template template object
+ * @param string &$callback returned function name
+ * @param string &$script optional returned script filepath if function is external
+ * @param bool &$cacheable true by default, set to false if plugin is not cachable (Smarty >= 3.1.8)
+ * @return bool true if successfull
+ */
+ function my_plugin_handler ($name, $type, $template, &$callback, &$script, &$cacheable)
+ {
+ switch ($type) {
+ case Smarty::PLUGIN_FUNCTION:
+ switch ($name) {
+ case 'scriptfunction':
+ $script = './scripts/script_function_tag.php';
+ $callback = 'default_script_function_tag';
+ return true;
+ case 'localfunction':
+ $callback = 'default_local_function_tag';
+ return true;
+ default:
+ return false;
+ }
+ case Smarty::PLUGIN_COMPILER:
+ switch ($name) {
+ case 'scriptcompilerfunction':
+ $script = './scripts/script_compiler_function_tag.php';
+ $callback = 'default_script_compiler_function_tag';
+ return true;
+ default:
+ return false;
+ }
+ case Smarty::PLUGIN_BLOCK:
+ switch ($name) {
+ case 'scriptblock':
+ $script = './scripts/script_block_tag.php';
+ $callback = 'default_script_block_tag';
+ return true;
+ default:
+ return false;
+ }
+ default:
+ return false;
+ }
+ }
+
+ ?>
+
+
+
+> **Note**
+>
+> The return callback must be static; a function name or an array of
+> class and method name.
+>
+> Dynamic callbacks like objects methods are not supported.
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-functions/api-register-filter.md b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-functions/api-register-filter.md
new file mode 100644
index 000000000..4a2aa4b02
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-functions/api-register-filter.md
@@ -0,0 +1,44 @@
+registerFilter()
+
+dynamically register filters
+
+Description
+===========
+
+void
+
+registerFilter
+
+string
+
+type
+
+mixed
+
+callback
+
+Use this to dynamically register filters to operate on a templates. It
+uses the following parameters:
+
+NOTE.PARAMETER.FUNCTION
+
+A [prefilter](#plugins.prefilters.postfilters) runs through the template
+source before it gets compiled. See [template
+prefilters](#advanced.features.prefilters) for more information on how
+to setup a prefiltering function.
+
+A [postfilter](#plugins.prefilters.postfilters) runs through the
+template code after it was compiled to PHP. See [template
+postfilters](#advanced.features.postfilters) for more information on how
+to setup a postfiltering function.
+
+A [outputfilter](#plugins.outputfilters) operates on a template\'s
+output before it is [displayed](#api.display). See [template output
+filters](#advanced.features.outputfilters) for more information on how
+to set up an output filter function.
+
+See also [`unregisterFilter()`](#api.unregister.filter),
+[`loadFilter()`](#api.load.filter), [template pre
+filters](#advanced.features.prefilters) [template post
+filters](#advanced.features.postfilters) [template output
+filters](#advanced.features.outputfilters) section.
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-functions/api-register-object.md b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-functions/api-register-object.md
new file mode 100644
index 000000000..c310e8c2a
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-functions/api-register-object.md
@@ -0,0 +1,44 @@
+registerObject()
+
+register an object for use in the templates
+
+Description
+===========
+
+void
+
+registerObject
+
+string
+
+object\_name
+
+object
+
+object
+
+array
+
+allowed\_methods\_properties
+
+boolean
+
+format
+
+array
+
+block\_methods
+
+> **Note**
+>
+> When you register/assign objects to templates, be sure that all
+> properties and methods accessed from the template are for presentation
+> purposes only. It is very easy to inject application logic through
+> objects, and this leads to poor designs that are difficult to manage.
+> See the Best Practices section of the Smarty website.
+
+See the [objects section](#advanced.features.objects) for more
+information.
+
+See also [`getRegisteredObject()`](#api.get.registered.object), and
+[`unregisterObject()`](#api.unregister.object).
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-functions/api-register-plugin.md b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-functions/api-register-plugin.md
new file mode 100644
index 000000000..51342b8e1
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-functions/api-register-plugin.md
@@ -0,0 +1,110 @@
+registerPlugin()
+
+dynamically register plugins
+
+Description
+===========
+
+void
+
+registerPlugin
+
+string
+
+type
+
+string
+
+name
+
+mixed
+
+callback
+
+bool
+
+cacheable
+
+mixed
+
+cache\_attrs
+
+This method registers functions or methods defined in your script as
+plugin. It uses the following parameters:
+
+- `cacheable` can be omitted in most cases. See
+ [controlling cacheability of plugins output](#caching.cacheable) on
+ how to use this properly.
+
+
+
+
+ registerPlugin("function","date_now", "print_current_date");
+
+ function print_current_date($params, $smarty)
+ {
+ if(empty($params["format"])) {
+ $format = "%b %e, %Y";
+ } else {
+ $format = $params["format"];
+ }
+ return strftime($format,time());
+ }
+ ?>
+
+
+
+And in the template
+
+
+ {date_now}
+
+ {* or to format differently *}
+ {date_now format="%Y/%m/%d"}
+
+
+ registerPlugin("block","translate", "do_translation");
+ ?>
+
+
+
+Where the template is:
+
+
+ {translate lang="br"}Hello, world!{/translate}
+
+
+
+
+ registerPlugin("modifier","ss", "stripslashes");
+
+ ?>
+
+In the template, use `ss` to strip slashes.
+
+
+
+
+See also [`unregisterPlugin()`](#api.unregister.plugin), [plugin
+functions](#plugins.functions), [plugin block
+functions](#plugins.block.functions), [plugin compiler
+functions](#plugins.compiler.functions), and the [creating plugin
+modifiers](#plugins.modifiers) section.
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-functions/api-register-resource.md b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-functions/api-register-resource.md
new file mode 100644
index 000000000..774452bff
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-functions/api-register-resource.md
@@ -0,0 +1,46 @@
+registerResource()
+
+dynamically register resources
+
+Description
+===========
+
+void
+
+registerResource
+
+string
+
+name
+
+Smarty\_resource
+
+resource\_handler
+
+Use this to dynamically register a [Resource plugin](#resources) with
+Smarty. Pass in the `name` of the Resource and the object extending
+Smarty\_Resource. See [template resources](#resources) for more
+information on how to setup a function for fetching templates.
+
+> **Note**
+>
+> A resource name must be at least two characters in length. One
+> character resource names will be ignored and used as part of the file
+> path, such as `$smarty->display('c:/path/to/index.tpl');`
+
+> **Note**
+>
+> Prior to Smarty 3.1 `registerResource()` accepted an array of callback
+> functions. While this is still possible for backward compatibility
+> reasons, it is strongly discouraged as callback functions have been
+> deprecated as of Smarty 3.1.
+
+
+ registerResource('mysql', new My_Resource_Mysql());
+ ?>
+
+
+
+See also [`unregisterResource()`](#api.unregister.resource) and the
+[template resources](#resources) section.
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-functions/api-set-plugins-dir.md b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-functions/api-set-plugins-dir.md
new file mode 100644
index 000000000..25b0567b1
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-functions/api-set-plugins-dir.md
@@ -0,0 +1,46 @@
+setPluginsDir()
+
+set the directories where plugins are stored
+
+Description
+===========
+
+Smarty
+
+setPluginsDir
+
+string\|array
+
+plugins\_dir
+
+
+ setPluginsDir('./plugins');
+
+ // view the plugins dir chain
+ var_dump($smarty->getPluginsDir());
+
+ // set multiple directorÃes where plugins are stored
+ $smarty->setPluginsDir(array(
+ './plugins',
+ './plugins_2',
+ ));
+
+ // view the plugins dir chain
+ var_dump($smarty->getPluginsDir());
+
+ // chaining of method calls
+ $smarty->setTemplateDir('./templates')
+ ->setPluginsDir('./plugins')
+ ->setCompileDir('./templates_c')
+ ->setCacheDir('./cache');
+
+ ?>
+
+
+
+See also [`getPluginsDir()`](#api.get.plugins.dir),
+[`addPluginsDir()`](#api.add.plugins.dir) and
+[`$plugins_dir`](#variable.plugins.dir).
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-functions/api-test-install.md b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-functions/api-test-install.md
new file mode 100644
index 000000000..bba64a19c
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-functions/api-test-install.md
@@ -0,0 +1,22 @@
+testInstall()
+
+checks Smarty installation
+
+Description
+===========
+
+void
+
+testInstall
+
+This function verifies that all required working folders of the Smarty
+installation can be accessed. It does output a corresponding protocol.
+
+
+ testInstall();
+ ?>
+
+
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-functions/api-unregister-cacheresource.md b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-functions/api-unregister-cacheresource.md
new file mode 100644
index 000000000..d097519db
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-functions/api-unregister-cacheresource.md
@@ -0,0 +1,28 @@
+unregisterCacheResource()
+
+dynamically unregister a CacheResource plugin
+
+Description
+===========
+
+void
+
+unregisterCacheResource
+
+string
+
+name
+
+Pass in the `name` of the CacheResource.
+
+
+ unregisterCacheResource('mysql');
+
+ ?>
+
+
+
+See also [`registerCacheResource()`](#api.register.cacheresource) and
+the [Custom CacheResource Implementation](#caching.custom) section.
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-functions/api-unregister-filter.md b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-functions/api-unregister-filter.md
new file mode 100644
index 000000000..44020eb40
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-functions/api-unregister-filter.md
@@ -0,0 +1,23 @@
+unregisterFilter()
+
+dynamically unregister a filter
+
+Description
+===========
+
+void
+
+unregisterFilter
+
+string
+
+type
+
+string\|array
+
+callback
+
+Use this to dynamically unregister filters. It uses the following
+parameters:
+
+See also [`registerFilter()`](#api.register.filter).
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-functions/api-unregister-object.md b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-functions/api-unregister-object.md
new file mode 100644
index 000000000..c012581f9
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-functions/api-unregister-object.md
@@ -0,0 +1,17 @@
+unregisterObject()
+
+dynamically unregister an object
+
+Description
+===========
+
+void
+
+unregisterObject
+
+string
+
+object\_name
+
+See also [`registerObject()`](#api.register.object) and [objects
+section](#advanced.features.objects)
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-functions/api-unregister-plugin.md b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-functions/api-unregister-plugin.md
new file mode 100644
index 000000000..c692ac60f
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-functions/api-unregister-plugin.md
@@ -0,0 +1,36 @@
+unregisterPlugin
+
+dynamically unregister plugins
+
+Description
+===========
+
+void
+
+unregisterPlugin
+
+string
+
+type
+
+string
+
+name
+
+This method unregisters plugins which previously have been registered by
+[registerPlugin()](#api.register.plugin), It uses the following
+parameters:
+
+
+
+
+ unregisterPlugin("function","date_now");
+
+ ?>
+
+
+
+See also [`registerPlugin()`](#api.register.plugin).
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-functions/api-unregister-resource.md b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-functions/api-unregister-resource.md
new file mode 100644
index 000000000..1a6067bd2
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-functions/api-unregister-resource.md
@@ -0,0 +1,28 @@
+unregisterResource()
+
+dynamically unregister a resource plugin
+
+Description
+===========
+
+void
+
+unregisterResource
+
+string
+
+name
+
+Pass in the `name` of the resource.
+
+
+ unregisterResource('db');
+
+ ?>
+
+
+
+See also [`registerResource()`](#api.register.resource) and [template
+resources](#resources)
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-variables/variable-auto-literal.md b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-variables/variable-auto-literal.md
new file mode 100644
index 000000000..8d0685025
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-variables/variable-auto-literal.md
@@ -0,0 +1,17 @@
+\$auto\_literal {#variable.auto.literal}
+===============
+
+The Smarty delimiter tags { and } will be ignored so long as they are
+surrounded by white space. This behavior can be disabled by setting
+auto\_literal to false.
+
+::: {.informalexample}
+
+ auto_literal = false;
+ ?>
+
+
+:::
+
+See also [Escaping Smarty parsing](#language.escaping),
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-variables/variable-cache-dir.md b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-variables/variable-cache-dir.md
new file mode 100644
index 000000000..6cb2b5559
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-variables/variable-cache-dir.md
@@ -0,0 +1,35 @@
+\$cache\_dir {#variable.cache.dir}
+============
+
+This is the name of the directory where template caches are stored. By
+default this is `./cache`, meaning that Smarty will look for the
+`cache/` directory in the same directory as the executing php script.
+**This directory must be writeable by the web server**, [see
+install](#installing.smarty.basic) for more info.
+
+You can also use your own [custom cache implementation](#caching.custom)
+to control cache files, which will ignore this setting. See also
+[`$use_sub_dirs`](#variable.use.sub.dirs).
+
+> **Note**
+>
+> This setting must be either a relative or absolute path. include\_path
+> is not used for writing files.
+
+> **Note**
+>
+> It is not recommended to put this directory under the web server
+> document root.
+
+> **Note**
+>
+> As of Smarty 3.1 the attribute \$cache\_dir is no longer accessible
+> directly. Use [`getCacheDir()`](#api.get.cache.dir) and
+> [`setCacheDir()`](#api.set.cache.dir) instead.
+
+See also [`getCacheDir()`](#api.get.cache.dir),
+[`setCacheDir()`](#api.set.cache.dir), [`$caching`](#variable.caching),
+[`$use_sub_dirs`](#variable.use.sub.dirs),
+[`$cache_lifetime`](#variable.cache.lifetime),
+[`$cache_modified_check`](#variable.cache.modified.check) and the
+[caching section](#caching).
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-variables/variable-cache-id.md b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-variables/variable-cache-id.md
new file mode 100644
index 000000000..c27fae921
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-variables/variable-cache-id.md
@@ -0,0 +1,11 @@
+\$cache\_id {#variable.cache.id}
+===========
+
+Persistent cache\_id identifier. As an alternative to passing the same
+`$cache_id` to each and every function call, you can set this
+`$cache_id` and it will be used implicitly thereafter.
+
+With a `$cache_id` you can have multiple cache files for a single call
+to [`display()`](#api.display) or [`fetch()`](#api.fetch) depending for
+example from different content of the same template. See the [caching
+section](#caching) for more information.
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-variables/variable-cache-lifetime.md b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-variables/variable-cache-lifetime.md
new file mode 100644
index 000000000..481fbee8e
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-variables/variable-cache-lifetime.md
@@ -0,0 +1,30 @@
+\$cache\_lifetime {#variable.cache.lifetime}
+=================
+
+This is the length of time in seconds that a template cache is valid.
+Once this time has expired, the cache will be regenerated.
+
+- `$caching` must be turned on (either
+ \Smarty\Smarty::CACHING\_LIFETIME\_CURRENT or
+ \Smarty\Smarty::CACHING\_LIFETIME\_SAVED) for `$cache_lifetime` to have any
+ purpose.
+
+- A `$cache_lifetime` value of -1 will force the cache to never
+ expire.
+
+- A value of 0 will cause the cache to always regenerate (good for
+ testing only, to disable caching a more efficient method is to set
+ [`$caching`](#variable.caching) = \Smarty\Smarty::CACHING\_OFF).
+
+- If you want to give certain templates their own cache lifetime, you
+ could do this by setting [`$caching`](#variable.caching) =
+ \Smarty\Smarty::CACHING\_LIFETIME\_SAVED, then set `$cache_lifetime` to a
+ unique value just before calling [`display()`](#api.display) or
+ [`fetch()`](#api.fetch).
+
+If [`$force_compile`](#variable.force.compile) is enabled, the cache
+files will be regenerated every time, effectively disabling caching. You
+can clear all the cache files with the
+[`clear_all_cache()`](#api.clear.all.cache) function, or individual
+cache files (or groups) with the [`clear_cache()`](#api.clear.cache)
+function.
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-variables/variable-cache-locking.md b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-variables/variable-cache-locking.md
new file mode 100644
index 000000000..6dca30c7b
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-variables/variable-cache-locking.md
@@ -0,0 +1,11 @@
+\$cache\_locking {#variable.cache.locking}
+================
+
+Cache locking avoids concurrent cache generation. This means resource
+intensive pages can be generated only once, even if they\'ve been
+requested multiple times in the same moment.
+
+Cache locking is disabled by default. To enable it set `$cache_locking`
+to TRUE.
+
+See also [`$locking_timeout`](#variable.locking.timeout)
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-variables/variable-cache-modified-check.md b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-variables/variable-cache-modified-check.md
new file mode 100644
index 000000000..815be2556
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-variables/variable-cache-modified-check.md
@@ -0,0 +1,11 @@
+\$cache\_modified\_check {#variable.cache.modified.check}
+========================
+
+If set to TRUE, Smarty will respect the If-Modified-Since header sent
+from the client. If the cached file timestamp has not changed since the
+last visit, then a `'304: Not Modified'` header will be sent instead of
+the content.
+
+See also [`$caching`](#variable.caching),
+[`$cache_lifetime`](#variable.cache.lifetime), and the [caching
+section](#caching).
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-variables/variable-caching-type.md b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-variables/variable-caching-type.md
new file mode 100644
index 000000000..22b88cf6a
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-variables/variable-caching-type.md
@@ -0,0 +1,9 @@
+\$caching\_type {#variable.caching.type}
+===============
+
+This property specifies the name of the caching handler to use. It
+defaults to `file`, enabling the internal filesystem based cache
+handler.
+
+See [Custom Cache Implementation](#caching.custom) for pointers on
+setting up your own cache handler.
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-variables/variable-caching.md b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-variables/variable-caching.md
new file mode 100644
index 000000000..7304e41d6
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-variables/variable-caching.md
@@ -0,0 +1,38 @@
+\$caching {#variable.caching}
+=========
+
+This tells Smarty whether or not to cache the output of the templates to
+the [`$cache_dir`](#variable.cache.dir). By default this is set to the
+constant \Smarty\Smarty::CACHING\_OFF. If your templates consistently generate
+the same content, it is advisable to turn on `$caching`, as this may
+result in significant performance gains.
+
+You can also have [multiple](#caching.multiple.caches) caches for the
+same template.
+
+- A constant value of \Smarty\Smarty::CACHING\_LIFETIME\_CURRENT or
+ \Smarty\Smarty ::CACHING\_LIFETIME\_SAVED enables caching.
+
+- A value of \Smarty\Smarty::CACHING\_LIFETIME\_CURRENT tells Smarty to use
+ the current [`$cache_lifetime`](#variable.cache.lifetime) variable
+ to determine if the cache has expired.
+
+- A value of \Smarty\Smarty::CACHING\_LIFETIME\_SAVED tells Smarty to use the
+ [`$cache_lifetime`](#variable.cache.lifetime) value at the time the
+ cache was generated. This way you can set the
+ [`$cache_lifetime`](#variable.cache.lifetime) just before
+ [fetching](#api.fetch) the template to have granular control over
+ when that particular cache expires. See also
+ [`isCached()`](#api.is.cached).
+
+- If [`$compile_check`](#variable.compile.check) is enabled, the
+ cached content will be regenerated if any of the templates or config
+ files that are part of this cache are changed.
+
+- If [`$force_compile`](#variable.force.compile) is enabled, the
+ cached content will always be regenerated.
+
+See also [`$cache_dir`](#variable.cache.dir),
+[`$cache_lifetime`](#variable.cache.lifetime),
+[`$cache_modified_check`](#variable.cache.modified.check),
+[`is_cached()`](#api.is.cached) and the [caching section](#caching).
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-variables/variable-compile-dir.md b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-variables/variable-compile-dir.md
new file mode 100644
index 000000000..c18c9acba
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-variables/variable-compile-dir.md
@@ -0,0 +1,29 @@
+\$compile\_dir {#variable.compile.dir}
+==============
+
+This is the name of the directory where compiled templates are located.
+By default this is `./templates_c`, meaning that Smarty will look for
+the `templates_c/` directory in the same directory as the executing php
+script. **This directory must be writeable by the web server**, [see
+install](#installing.smarty.basic) for more info.
+
+> **Note**
+>
+> This setting must be either a relative or absolute path. include\_path
+> is not used for writing files.
+
+> **Note**
+>
+> It is not recommended to put this directory under the web server
+> document root.
+
+> **Note**
+>
+> As of Smarty 3.1 the attribute \$compile\_dir is no longer accessible
+> directly. Use [`getCompileDir()`](#api.get.compile.dir) and
+> [`setCompileDir()`](#api.set.compile.dir) instead.
+
+See also [`getCompileDir()`](#api.get.compile.dir),
+[`setCompileDir()`](#api.set.compile.dir),
+[`$compile_id`](#variable.compile.id) and
+[`$use_sub_dirs`](#variable.use.sub.dirs).
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-variables/variable-compile-id.md b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-variables/variable-compile-id.md
new file mode 100644
index 000000000..ca2b08fb5
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-variables/variable-compile-id.md
@@ -0,0 +1,44 @@
+\$compile\_id {#variable.compile.id}
+=============
+
+Persistent compile identifier. As an alternative to passing the same
+`$compile_id` to each and every function call, you can set this
+`$compile_id` and it will be used implicitly thereafter.
+
+If you use the same template with different [pre- and/or
+post-filters](#plugins.prefilters.postfilters) you must use a unique
+`$compile_id` to keep the compiled template files separated.
+
+For example a [prefilter](#plugins.prefilters.postfilters) that
+localizes your templates (that is: translates language dependent parts)
+at compile time, then you could use the current language as
+`$compile_id` and you will get a set of compiled templates for each
+language you use.
+
+
+ compile_id = 'en';
+ ?>
+
+
+
+Another application would be to use the same compile directory across
+multiple domains / multiple virtual hosts.
+
+
+ compile_id = $_SERVER['SERVER_NAME'];
+ $smarty->compile_dir = '/path/to/shared_compile_dir';
+
+ ?>
+
+
+
+> **Note**
+>
+> In Smarty 3 a `$compile_id` is no longer required to keep templates
+> with same name in different [`$template_dir`
+> folders](#variable.template.dir) separated. The [`$template_dir` file
+> path](#variable.template.dir) is encoded in the file name of compiled
+> and cached template files.
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-variables/variable-compile-locking.md b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-variables/variable-compile-locking.md
new file mode 100644
index 000000000..ff7a66f3a
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-variables/variable-compile-locking.md
@@ -0,0 +1,7 @@
+\$compile\_locking {#variable.compile.locking}
+==================
+
+Compile locking avoids concurrent compilation of the same template.
+
+Compile locking is enabled by default. To disable it set
+`$compile_locking` to FALSE.
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-variables/variable-compiler-class.md b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-variables/variable-compiler-class.md
new file mode 100644
index 000000000..32ea982d6
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-variables/variable-compiler-class.md
@@ -0,0 +1,6 @@
+\$compiler\_class {#variable.compiler.class}
+=================
+
+Specifies the name of the compiler class that Smarty will use to compile
+the templates. The default is \'Smarty\_Compiler\'. For advanced users
+only.
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-variables/variable-config-booleanize.md b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-variables/variable-config-booleanize.md
new file mode 100644
index 000000000..4ba555f84
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-variables/variable-config-booleanize.md
@@ -0,0 +1,8 @@
+\$config\_booleanize {#variable.config.booleanize}
+====================
+
+If set to TRUE, [config files](#config.files) values of `on/true/yes`
+and `off/false/no` get converted to boolean values automatically. This
+way you can use the values in the template like so:
+`{if #foobar#}...{/if}`. If foobar was `on`, `true` or `yes`, the `{if}`
+statement will execute. Defaults to TRUE.
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-variables/variable-config-dir.md b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-variables/variable-config-dir.md
new file mode 100644
index 000000000..d73f3274f
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-variables/variable-config-dir.md
@@ -0,0 +1,23 @@
+\$config\_dir {#variable.config.dir}
+=============
+
+This is the directory used to store [config files](#config.files) used
+in the templates. Default is `./configs`, meaning that Smarty will look
+for the `configs/` directory in the same directory as the executing php
+script.
+
+> **Note**
+>
+> It is not recommended to put this directory under the web server
+> document root.
+
+> **Note**
+>
+> As of Smarty 3.1 the attribute \$config\_dir is no longer accessible
+> directly. Use [`getConfigDir()`](#api.get.config.dir),
+> [`setConfigDir()`](#api.set.config.dir) and
+> [`addConfigDir()`](#api.add.config.dir) instead.
+
+See also [`getConfigDir()`](#api.get.config.dir),
+[`setConfigDir()`](#api.set.config.dir) and
+[`addConfigDir()`](#api.add.config.dir).
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-variables/variable-config-overwrite.md b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-variables/variable-config-overwrite.md
new file mode 100644
index 000000000..0b8968374
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-variables/variable-config-overwrite.md
@@ -0,0 +1,40 @@
+\$config\_overwrite {#variable.config.overwrite}
+===================
+
+If set to TRUE, the default then variables read in from [config
+files](#config.files) will overwrite each other. Otherwise, the
+variables will be pushed onto an array. This is helpful if you want to
+store arrays of data in config files, just list each element multiple
+times.
+
+This examples uses [`{cycle}`](#language.function.cycle) to output a
+table with alternating red/green/blue row colors with
+`$config_overwrite` = FALSE.
+
+The config file.
+
+
+ # row colors
+ rowColors = #FF0000
+ rowColors = #00FF00
+ rowColors = #0000FF
+
+
+
+The template with a [`{section}`](#language.function.section) loop.
+
+
+
+ {section name=r loop=$rows}
+
+ ....etc....
+
+ {/section}
+
+
+
+
+See also [`{config_load}`](#language.function.config.load),
+[`getConfigVars()`](#api.get.config.vars),
+[`clearConfig()`](#api.clear.config), [`configLoad()`](#api.config.load)
+and the [config files section](#config.files).
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-variables/variable-config-read-hidden.md b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-variables/variable-config-read-hidden.md
new file mode 100644
index 000000000..19cde68bd
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-variables/variable-config-read-hidden.md
@@ -0,0 +1,8 @@
+\$config\_read\_hidden {#variable.config.read.hidden}
+======================
+
+If set to TRUE, hidden sections ie section names beginning with a
+period(.) in [config files](#config.files) can be read from templates.
+Typically you would leave this FALSE, that way you can store sensitive
+data in the config files such as database parameters and not worry about
+the template loading them. FALSE by default.
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-variables/variable-debug-template.md b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-variables/variable-debug-template.md
new file mode 100644
index 000000000..11a805292
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-variables/variable-debug-template.md
@@ -0,0 +1,8 @@
+\$debug\_tpl {#variable.debug_template}
+============
+
+This is the name of the template file used for the debugging console. By
+default, it is named `debug.tpl` and is located in `src/debug.tpl`.
+
+See also [`$debugging`](#variable.debugging) and the [debugging
+console](#chapter.debugging.console) section.
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-variables/variable-debugging-ctrl.md b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-variables/variable-debugging-ctrl.md
new file mode 100644
index 000000000..a9355c0a2
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-variables/variable-debugging-ctrl.md
@@ -0,0 +1,20 @@
+\$debugging\_ctrl {#variable.debugging.ctrl}
+=================
+
+This allows alternate ways to enable debugging. `NONE` means no
+alternate methods are allowed. `URL` means when the keyword
+`SMARTY_DEBUG` is found in the `QUERY_STRING`, debugging is enabled for
+that invocation of the script. If [`$debugging`](#variable.debugging) is
+TRUE, this value is ignored.
+
+
+ debugging = false; // the default
+ $smarty->debugging_ctrl = ($_SERVER['SERVER_NAME'] == 'localhost') ? 'URL' : 'NONE';
+ ?>
+
+See also [debugging console](#chapter.debugging.console) section,
+[`$debugging`](#variable.debugging) and
+[`$smarty_debug_id`](#variable.smarty.debug.id).
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-variables/variable-debugging.md b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-variables/variable-debugging.md
new file mode 100644
index 000000000..4473e0c8d
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-variables/variable-debugging.md
@@ -0,0 +1,17 @@
+\$debugging {#variable.debugging}
+===========
+
+This enables the [debugging console](#chapter.debugging.console). The
+console is a javascript popup window that informs you of the
+[included](#language.function.include) templates, variables
+[assigned](#api.assign) from php and [config file
+variables](#language.config.variables) for the current script. It does
+not show variables assigned within a template with the
+[`{assign}`](#language.function.assign) function.
+
+The console can also be enabled from the url with
+[`$debugging_ctrl`](#variable.debugging.ctrl).
+
+See also [`{debug}`](#language.function.debug),
+[`$debug_tpl`](#variable.debug_template), and
+[`$debugging_ctrl`](#variable.debugging.ctrl).
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-variables/variable-default-config-handler-func.md b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-variables/variable-default-config-handler-func.md
new file mode 100644
index 000000000..50eb65bb5
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-variables/variable-default-config-handler-func.md
@@ -0,0 +1,50 @@
+\$default\_config\_handler\_func {#variable.default.config.handler.func}
+================================
+
+This function is called when a config file cannot be obtained from its
+resource.
+
+> **Note**
+>
+> The default handler is currently only invoked for file resources. It
+> is not triggered when the resource itself cannot be found, in which
+> case a \Smarty\Exception is thrown.
+
+
+ default_config_handler_func = 'my_default_config_handler_func';
+
+ /**
+ * Default Config Handler
+ *
+ * called when Smarty's file: resource is unable to load a requested file
+ *
+ * @param string $type resource type (e.g. "file", "string", "eval", "resource")
+ * @param string $name resource name (e.g. "foo/bar.tpl")
+ * @param string &$content config's content
+ * @param integer &$modified config's modification time
+ * @param Smarty $smarty Smarty instance
+ * @return string|boolean path to file or boolean true if $content and $modified
+ * have been filled, boolean false if no default config
+ * could be loaded
+ */
+ function my_default_config_handler_func($type, $name, &$content, &$modified, Smarty $smarty) {
+ if (false) {
+ // return corrected filepath
+ return "/tmp/some/foobar.tpl";
+ } elseif (false) {
+ // return a config directly
+ $content = 'someVar = "the config source"';
+ $modified = time();
+ return true;
+ } else {
+ // tell smarty that we failed
+ return false;
+ }
+ }
+
+ ?>
+
+
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-variables/variable-default-config-type.md b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-variables/variable-default-config-type.md
new file mode 100644
index 000000000..60bf9f1ea
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-variables/variable-default-config-type.md
@@ -0,0 +1,7 @@
+\$default\_config\_type {#variable.default.config.type}
+=======================
+
+This tells smarty what resource type to use for config files. The
+default value is `file`, meaning that `$smarty->configLoad('test.conf')`
+and `$smarty->configLoad('file:test.conf')` are identical in meaning.
+See the [resource](#resources) chapter for more details.
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-variables/variable-default-modifiers.md b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-variables/variable-default-modifiers.md
new file mode 100644
index 000000000..c6b73eb12
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-variables/variable-default-modifiers.md
@@ -0,0 +1,8 @@
+\$default\_modifiers {#variable.default.modifiers}
+====================
+
+This is an array of modifiers to implicitly apply to every variable in a
+template. For example, to HTML-escape every variable by default, use
+`array('escape:"htmlall"')`. To make a variable exempt from default
+modifiers, add the \'nofilter\' attribute to the output tag such as
+`{$var nofilter}`.
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-variables/variable-default-resource-type.md b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-variables/variable-default-resource-type.md
new file mode 100644
index 000000000..e8a803178
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-variables/variable-default-resource-type.md
@@ -0,0 +1,7 @@
+\$default\_resource\_type {#variable.default.resource.type}
+=========================
+
+This tells smarty what resource type to use implicitly. The default
+value is `file`, meaning that `$smarty->display('index.tpl')` and
+`$smarty->display('file:index.tpl')` are identical in meaning. See the
+[resource](#resources) chapter for more details.
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-variables/variable-default-template-handler-func.md b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-variables/variable-default-template-handler-func.md
new file mode 100644
index 000000000..96c8190d7
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-variables/variable-default-template-handler-func.md
@@ -0,0 +1,50 @@
+\$default\_template\_handler\_func {#variable.default.template.handler.func}
+==================================
+
+This function is called when a template cannot be obtained from its
+resource.
+
+> **Note**
+>
+> The default handler is currently only invoked for file resources. It
+> is not triggered when the resource itself cannot be found, in which
+> case a \Smarty\Exception is thrown.
+
+
+ default_template_handler_func = 'my_default_template_handler_func';
+
+ /**
+ * Default Template Handler
+ *
+ * called when Smarty's file: resource is unable to load a requested file
+ *
+ * @param string $type resource type (e.g. "file", "string", "eval", "resource")
+ * @param string $name resource name (e.g. "foo/bar.tpl")
+ * @param string &$content template's content
+ * @param integer &$modified template's modification time
+ * @param Smarty $smarty Smarty instance
+ * @return string|boolean path to file or boolean true if $content and $modified
+ * have been filled, boolean false if no default template
+ * could be loaded
+ */
+ function my_default_template_handler_func($type, $name, &$content, &$modified, Smarty $smarty) {
+ if (false) {
+ // return corrected filepath
+ return "/tmp/some/foobar.tpl";
+ } elseif (false) {
+ // return a template directly
+ $content = "the template source";
+ $modified = time();
+ return true;
+ } else {
+ // tell smarty that we failed
+ return false;
+ }
+ }
+
+ ?>
+
+
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-variables/variable-error-reporting.md b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-variables/variable-error-reporting.md
new file mode 100644
index 000000000..ee28d47ab
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-variables/variable-error-reporting.md
@@ -0,0 +1,17 @@
+\$error\_reporting {#variable.error.reporting}
+==================
+
+When this value is set to a non-null-value it\'s value is used as php\'s
+[`error_reporting`](https://www.php.net/error_reporting) level inside of
+[`display()`](#api.display) and [`fetch()`](#api.fetch).
+
+Smarty 3.1.2 introduced the
+[`muteExpectedErrors()`](#api.mute.expected.errors) function. Calling
+`\Smarty\Smarty::muteExpectedErrors();` after setting up custom error handling
+will ensure that warnings and notices (deliberately) produced by Smarty
+will not be passed to other custom error handlers. If your error logs
+are filling up with warnings regarding `filemtime()` or `unlink()`
+calls, please enable Smarty\'s error muting.
+
+See also [debugging](#chapter.debugging.console) and
+[troubleshooting](#troubleshooting).
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-variables/variable-escape-html.md b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-variables/variable-escape-html.md
new file mode 100644
index 000000000..87c7b9672
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-variables/variable-escape-html.md
@@ -0,0 +1,21 @@
+\$escape\_html {#variable.escape.html}
+==============
+
+Setting `$escape_html` to TRUE will escape all template variable output
+by wrapping it in
+`htmlspecialchars({$output}, ENT_QUOTES, $char_set);`,
+which is the same as `{$variable|escape:"html"}`.
+
+Template designers can choose to selectively disable this feature by
+adding the `nofilter` flag: `{$variable nofilter}`.
+
+Modifiers and Filters are run in the following order: modifier,
+default\_modifier, \$escape\_html, registered variable filters,
+autoloaded variable filters, template instance\'s variable filters.
+Everything except the individual modifier can be disabled with the
+`nofilter` flag.
+
+> **Note**
+>
+> This is a compile time option. If you change the setting you must make
+> sure that the templates get recompiled.
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-variables/variable-force-cache.md b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-variables/variable-force-cache.md
new file mode 100644
index 000000000..de0c0c15a
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-variables/variable-force-cache.md
@@ -0,0 +1,6 @@
+\$force\_cache {#variable.force.cache}
+==============
+
+This forces Smarty to (re)cache templates on every invocation. It does
+not override the [`$caching`](#variable.caching) level, but merely
+pretends the template has never been cached before.
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-variables/variable-force-compile.md b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-variables/variable-force-compile.md
new file mode 100644
index 000000000..73f1e792d
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-variables/variable-force-compile.md
@@ -0,0 +1,9 @@
+\$force\_compile {#variable.force.compile}
+================
+
+This forces Smarty to (re)compile templates on every invocation. This
+setting overrides [`$compile_check`](#variable.compile.check). By
+default this is FALSE. This is handy for development and
+[debugging](#chapter.debugging.console). It should never be used in a
+production environment. If [`$caching`](#variable.caching) is enabled,
+the cache file(s) will be regenerated every time.
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-variables/variable-locking-timeout.md b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-variables/variable-locking-timeout.md
new file mode 100644
index 000000000..82fd0568a
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-variables/variable-locking-timeout.md
@@ -0,0 +1,7 @@
+\$locking\_timeout {#variable.locking.timeout}
+==================
+
+This is maximum time in seconds a cache lock is valid to avoid dead
+locks. The default value is 10 seconds.
+
+See also [`$cache_locking`](#variable.cache.locking)
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-variables/variable-merge-compiled-includes.md b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-variables/variable-merge-compiled-includes.md
new file mode 100644
index 000000000..8220c442b
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-variables/variable-merge-compiled-includes.md
@@ -0,0 +1,27 @@
+\$merge\_compiled\_includes {#variable.merge.compiled.includes}
+===========================
+
+By setting `$merge_compiled_includes` to TRUE Smarty will merge the
+compiled template code of subtemplates into the compiled code of the
+main template. This increases rendering speed of templates using a many
+different sub-templates.
+
+Individual sub-templates can be merged by setting the `inline` option
+flag within the `{include}` tag. `$merge_compiled_includes` does not
+have to be enabled for the `inline` merge.
+
+::: {.informalexample}
+
+ merge_compiled_includes = true;
+ ?>
+
+
+:::
+
+> **Note**
+>
+> This is a compile time option. If you change the setting you must make
+> sure that the templates get recompiled.
+
+See also [`{include}`](#language.function.include) tag
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-variables/variable-smarty-debug-id.md b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-variables/variable-smarty-debug-id.md
new file mode 100644
index 000000000..0733ed518
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-variables/variable-smarty-debug-id.md
@@ -0,0 +1,9 @@
+\$smarty\_debug\_id {#variable.smarty.debug.id}
+===================
+
+The value of `$smarty_debug_id` defines the URL keyword to enable
+debugging at browser level. The default value is `SMARTY_DEBUG`.
+
+See also [debugging console](#chapter.debugging.console) section,
+[`$debugging`](#variable.debugging) and
+[`$debugging_ctrl`](#variable.debugging.ctrl).
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-variables/variable-template-dir.md b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-variables/variable-template-dir.md
new file mode 100644
index 000000000..eb91d2c24
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-variables/variable-template-dir.md
@@ -0,0 +1,26 @@
+\$template\_dir {#variable.template.dir}
+===============
+
+This is the name of the default template directory. If you do not supply
+a resource type when including files, they will be found here. By
+default this is `./templates`, meaning that Smarty will look for the
+`templates/` directory in the same directory as the executing php
+script. \$template\_dir can also be an array of directory paths: Smarty
+will traverse the directories and stop on the first matching template
+found.
+
+> **Note**
+>
+> It is not recommended to put this directory under the web server
+> document root.
+
+> **Note**
+> As of Smarty 3.1 the attribute \$template\_dir is no longer accessible
+> directly. Use [`getTemplateDir()`](#api.get.template.dir),
+> [`setTemplateDir()`](#api.set.template.dir) and
+> [`addTemplateDir()`](#api.add.template.dir) instead.
+
+See also [`Template Resources`](#resources),
+[`getTemplateDir()`](#api.get.template.dir),
+[`setTemplateDir()`](#api.set.template.dir) and
+[`addTemplateDir()`](#api.add.template.dir).
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-variables/variable-use-include-path.md b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-variables/variable-use-include-path.md
new file mode 100644
index 000000000..e69de29bb
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-variables/variable-use-sub-dirs.md b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-variables/variable-use-sub-dirs.md
new file mode 100644
index 000000000..dcda3f2d6
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/programmers/api-variables/variable-use-sub-dirs.md
@@ -0,0 +1,31 @@
+\$use\_sub\_dirs {#variable.use.sub.dirs}
+================
+
+Smarty will create subdirectories under the [compiled
+templates](#variable.compile.dir) and [cache](#variable.cache.dir)
+directories if `$use_sub_dirs` is set to TRUE, default is FALSE. In an
+environment where there are potentially tens of thousands of files
+created, this may help the filesystem speed. On the other hand, some
+environments do not allow PHP processes to create directories, so this
+must be disabled which is the default.
+
+Sub directories are more efficient, so use them if you can.
+Theoretically you get much better performance on a filesystem with 10
+directories each having 100 files, than with 1 directory having 1000
+files. This was certainly the case with Solaris 7 (UFS)\... with newer
+filesystems such as ext3 and especially reiserfs, the difference is
+almost nothing.
+
+> **Note**
+>
+> - `$use_sub_dirs=true` doesn\'t work with
+> [safe\_mode=On](https://www.php.net/features.safe-mode), that\'s why
+> it\'s switchable and why it\'s off by default.
+>
+> - `$use_sub_dirs=true` on Windows can cause problems.
+>
+> - Safe\_mode is being deprecated in PHP6.
+>
+See also [`$compile_id`](#variable.compile.id),
+[`$cache_dir`](#variable.cache.dir), and
+[`$compile_dir`](#variable.compile.dir).
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/upgrading.md b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/upgrading.md
new file mode 100644
index 000000000..ef9cc4c99
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/docs/upgrading.md
@@ -0,0 +1,157 @@
+# Upgrading from an older version
+
+## Upgrading from v4 to v5
+
+Smarty 5 adds support for PHP8.2 and drops support for PHP7.1. Smarty also adds support for new features
+such as the ternary operator (`{$test ? $a : $b}` and `{$var ?: $value_if_falsy}`), the null coalescing operator (`{$var ?? $value_if_null}`)
+and positional parameters for custom tags.
+Smarty 5 also has a brand-new extension architecture that allows you to write neat extension packs.
+
+### Namespaces
+All Smarty code has been moved into the `\Smarty` namespace. This reduces
+the chance of conflicts with other (your) code.
+
+For simple use-cases, you only need to add `use Smarty\Smarty;` to your script and everything will work.
+
+```php
+display('homepage.tpl');
+```
+For more information, see [getting started](getting-started.md).
+
+If you extend Smarty or use Smarty plug-ins, please review your code to see if they assume specific class or method names.
+E.g.: `Smarty_Internal_Template` is now `\Smarty\Template\`, `SmartyException` is now `\Smarty\Exception`.
+
+### Variable scope bubbling
+Template variable scope bubbling has been simplified and made more consistent. The global scope now equals the Smarty
+scope in order to avoid global state side effects. Please read the [documentation on language variable scope](designers/language-variables/language-variable-scopes.md)
+for more details.
+
+Also, `{config_load}` no longer has a `scope` parameter, which means you can no longer load config
+from inside your template into the global scope (again, to avoid global state side effects). If you
+need to set global config, use the [configLoad API method](api/variables/config-files.md) from your PHP code.
+
+### Using native PHP-functions or userland functions in your templates
+You can no longer use native PHP-functions or userland functions in your templates without registering them.
+If you need a function in your templates, register it first.
+
+The easiest way to do so is as follows:
+```php
+// native PHP functions used as modifiers need to be registered
+$smarty->registerPlugin('modifier', 'substr', 'substr');
+
+// userland PHP functions used as modifiers need to be registered
+$smarty->registerPlugin('modifier', 'my_special_func', 'my_special_func');
+```
+
+But you may want to consider writing a proper [extension](api/extending/extensions.md).
+
+### Removed undocumented tags
+
+Smarty 4 still supported some tags that have been carried over from previous version, but have never been documented.
+
+- `{block_parent}` should be replaced with `{$smarty.block.parent}`
+- `{parent}` should be replaced with `{$smarty.block.parent}`
+- `{block_child}` should be replaced with `{$smarty.block.child}`
+- `{child}` should be replaced with `{$smarty.block.child}`
+
+- `{make_nocache}` is no longer supported
+- `{insert}` is no longer supported
+
+### Removed Smarty API properties
+
+In Smarty 4, you could make many configuration changes by directly accessing public properties on the Smarty object in PHP.
+In many cases, these properties have been made private, and you should now use the appropriate setter method:
+
+- `$smarty->left_delimiter` should be replaced with `$smarty->getLeftDelimiter()`/`$smarty->setLeftDelimiter()`
+- `$smarty->right_delimiter` should be replaced with `$smarty->getRightDelimiter()`/`$smarty->setRightDelimiter()`
+- `$smarty->autoload_filters` should be replaced with `$smarty->registerFilter()`
+- `$smarty->template_dir` should be replaced with `$smarty->setTemplateDir()`
+- `$smarty->cache_dir` should be replaced with `$smarty->setCacheDir()`
+- `$smarty->compile_dir` should be replaced with `$smarty->setCompileDir()`
+
+Other public properties have been removed altogether, and you should no longer access them:
+
+- `$smarty->_current_file`
+- `$smarty->allow_ambiguous_resources` (ambiguous resources handlers should still work)
+- `$smarty->registered_filters`
+- `$smarty->direct_access_security`
+- `$smarty->trusted_dir`
+- `$smarty->allow_php_templates`
+- `$smarty->php_functions`
+- `$smarty->php_modifiers`
+
+### Backwards incompatible changes to custom plugins
+
+We have dropped support for `$smarty->plugins_dir` and `$smarty->use_include_path`.
+Use `$smarty->addPluginsDir()` or consider writing a proper [extension](api/extending/extensions.md).
+
+The 'insert' plugin type is no longer supported.
+
+The `$cache_attrs` parameter for registered plugins is no longer supported.
+
+### Removed Smarty API methods
+
+Search your code for the following changes:
+
+- `$smarty->getTags()` is no longer supported
+- `$smarty->appendByRef()` should be replaced with `$smarty->append()`
+- `$smarty->assignByRef()` should be replaced with `$smarty->assign()`
+- `$smarty->loadPlugin()` should be replaced with `$smarty->registerPlugin()`
+
+### Removed PHP constants
+
+The following constants have been removed to prevent global side effects.
+
+- `SMARTY_DIR`
+- `SMARTY_SYSPLUGINS_DIR`
+- `SMARTY_PLUGINS_DIR`
+- `SMARTY_MBSTRING`
+- `SMARTY_HELPER_FUNCTIONS_LOADED`
+
+### Other changes
+
+- Smarty now always runs in multibyte mode. Make sure you use the [PHP multibyte extension](https://www.php.net/manual/en/book.mbstring.php) in production for optimal performance.
+- Generated `]*>)|(]*>)|(]*>.*? ]*>)#is',
+ $text,
+ $matches,
+ PREG_OFFSET_CAPTURE | PREG_SET_ORDER
+ )
+ ) {
+ foreach ($matches as $match) {
+ $store[] = $match[0][0];
+ $_length = strlen($match[0][0]);
+ $replace = '@!@SMARTY:' . $_store . ':SMARTY@!@';
+ $text = substr_replace($text, $replace, $match[0][1] - $_offset, $_length);
+ $_offset += $_length - strlen($replace);
+ $_store++;
+ }
+ }
+ $expressions = [// replace multiple spaces between tags by a single space
+ '#(:SMARTY@!@|>)[\040\011]+(?=@!@SMARTY:|<)#s' => '\1 \2',
+ // remove newline between tags
+ '#(:SMARTY@!@|>)[\040\011]*[\n]\s*(?=@!@SMARTY:|<)#s' => '\1\2',
+ // remove multiple spaces between attributes (but not in attribute values!)
+ '#(([a-z0-9]\s*=\s*("[^"]*?")|(\'[^\']*?\'))|<[a-z0-9_]+)\s+([a-z/>])#is' => '\1 \5',
+ '#>[\040\011]+$#Ss' => '> ',
+ '#>[\040\011]*[\n]\s*$#Ss' => '>',
+ $this->stripRegEx => '',
+ ];
+ $text = preg_replace(array_keys($expressions), array_values($expressions), $text);
+ $_offset = 0;
+ if (preg_match_all(
+ '#@!@SMARTY:([0-9]+):SMARTY@!@#is',
+ $text,
+ $matches,
+ PREG_OFFSET_CAPTURE | PREG_SET_ORDER
+ )
+ ) {
+ foreach ($matches as $match) {
+ $_length = strlen($match[0][0]);
+ $replace = $store[$match[1][0]];
+ $text = substr_replace($text, $replace, $match[0][1] + $_offset, $_length);
+ $_offset += strlen($replace) - $_length;
+ $_store++;
+ }
+ }
+ return $text;
+ }
+
+ /**
+ * lazy loads internal compile plugin for tag compile objects cached for reuse.
+ *
+ * class name format: \Smarty\Compile\TagName
+ *
+ * @param string $tag tag name
+ *
+ * @return ?\Smarty\Compile\CompilerInterface tag compiler object or null if not found or untrusted by security policy
+ */
+ public function getTagCompiler($tag): ?\Smarty\Compile\CompilerInterface {
+ $tag = strtolower($tag);
+
+ if (isset($this->smarty->security_policy) && !$this->smarty->security_policy->isTrustedTag($tag, $this)) {
+ return null;
+ }
+
+ foreach ($this->smarty->getExtensions() as $extension) {
+ if ($compiler = $extension->getTagCompiler($tag)) {
+ return $compiler;
+ }
+ }
+
+ return null;
+ }
+
+ /**
+ * lazy loads internal compile plugin for modifier compile objects cached for reuse.
+ *
+ * @param string $modifier tag name
+ *
+ * @return bool|\Smarty\Compile\Modifier\ModifierCompilerInterface tag compiler object or false if not found or untrusted by security policy
+ */
+ public function getModifierCompiler($modifier) {
+
+ if (isset($this->smarty->security_policy) && !$this->smarty->security_policy->isTrustedModifier($modifier, $this)) {
+ return false;
+ }
+
+ foreach ($this->smarty->getExtensions() as $extension) {
+ if ($modifierCompiler = $extension->getModifierCompiler($modifier)) {
+ return $modifierCompiler;
+ }
+ }
+
+ return false;
+ }
+
+ /**
+ * Check for plugins by default plugin handler
+ *
+ * @param string $tag name of tag
+ * @param string $plugin_type type of plugin
+ *
+ * @return callback|null
+ * @throws \Smarty\CompilerException
+ */
+ public function getPluginFromDefaultHandler($tag, $plugin_type) {
+
+ $defaultPluginHandlerFunc = $this->smarty->getDefaultPluginHandlerFunc();
+
+ if (!is_callable($defaultPluginHandlerFunc)) {
+ return null;
+ }
+
+
+ $callback = null;
+ $script = null;
+ $cacheable = true;
+
+ $result = call_user_func_array(
+ $defaultPluginHandlerFunc,
+ [
+ $tag,
+ $plugin_type,
+ null, // This used to pass $this->template, but this parameter has been removed in 5.0
+ &$callback,
+ &$script,
+ &$cacheable,
+ ]
+ );
+ if ($result) {
+ $this->tag_nocache = $this->tag_nocache || !$cacheable;
+ if ($script !== null) {
+ if (is_file($script)) {
+ include_once $script;
+ } else {
+ $this->trigger_template_error("Default plugin handler: Returned script file '{$script}' for '{$tag}' not found");
+ }
+ }
+ if (is_callable($callback)) {
+ return $callback;
+ } else {
+ $this->trigger_template_error("Default plugin handler: Returned callback for '{$tag}' not callable");
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Append code segments and remove unneeded ?> \s?$/D', $left) && preg_match('/^<\?php\s+/', $right)) {
+ $left = preg_replace('/\s*\?>\s?$/D', "\n", $left);
+ $left .= preg_replace('/^<\?php\s+/', '', $right);
+ } else {
+ $left .= $right;
+ }
+ return $left;
+ }
+
+ /**
+ * Inject inline code for nocache template sections
+ * This method gets the content of each template element from the parser.
+ * If the content is compiled code, and it should be not be cached the code is injected
+ * into the rendered output.
+ *
+ * @param string $content content of template element
+ *
+ * @return string content
+ */
+ public function processNocacheCode($content) {
+
+ // If the template is not evaluated, and we have a nocache section and/or a nocache tag
+ // generate replacement code
+ if (!empty($content)
+ && !($this->template->getSource()->handler->recompiled)
+ && $this->caching
+ && $this->isNocacheActive()
+ ) {
+ $this->template->getCompiled()->setNocacheCode(true);
+ $_output = addcslashes($content, '\'\\');
+ $_output =
+ "getNocacheBlockStartMarker() . $_output . $this->getNocacheBlockEndMarker() . "';?>\n";
+ } else {
+ $_output = $content;
+ }
+
+ $this->modifier_plugins = [];
+ $this->suppressNocacheProcessing = false;
+ $this->tag_nocache = false;
+ return $_output;
+ }
+
+
+ private function getNocacheBlockStartMarker(): string {
+ return "/*%%SmartyNocache:{$this->nocache_hash}%%*/";
+ }
+
+ private function getNocacheBlockEndMarker(): string {
+ return "/*/%%SmartyNocache:{$this->nocache_hash}%%*/";
+ }
+
+
+ /**
+ * Get Id
+ *
+ * @param string $input
+ *
+ * @return bool|string
+ */
+ public function getId($input) {
+ if (preg_match('~^([\'"]*)([0-9]*[a-zA-Z_]\w*)\1$~', $input, $match)) {
+ return $match[2];
+ }
+ return false;
+ }
+
+ /**
+ * Set nocache flag in variable or create new variable
+ *
+ * @param string $varName
+ */
+ public function setNocacheInVariable($varName) {
+ // create nocache var to make it know for further compiling
+ if ($_var = $this->getId($varName)) {
+ if ($this->template->hasVariable($_var)) {
+ $this->template->getVariable($_var)->setNocache(true);
+ } else {
+ $this->template->assign($_var, null, true);
+ }
+ }
+ }
+
+ /**
+ * display compiler error messages without dying
+ * If parameter $args is empty it is a parser detected syntax error.
+ * In this case the parser is called to obtain information about expected tokens.
+ * If parameter $args contains a string this is used as error message
+ *
+ * @param string $args individual error message or null
+ * @param string $line line-number
+ * @param null|bool $tagline if true the line number of last tag
+ *
+ * @throws \Smarty\CompilerException when an unexpected token is found
+ */
+ public function trigger_template_error($args = null, $line = null, $tagline = null) {
+ $lex = $this->parser->lex;
+ if ($tagline === true) {
+ // get line number of Tag
+ $line = $lex->taglineno;
+ } elseif (!isset($line)) {
+ // get template source line which has error
+ $line = $lex->line;
+ } else {
+ $line = (int)$line;
+ }
+ if (in_array(
+ $this->template->getSource()->type,
+ [
+ 'eval',
+ 'string',
+ ]
+ )
+ ) {
+ $templateName = $this->template->getSource()->type . ':' . trim(
+ preg_replace(
+ '![\t\r\n]+!',
+ ' ',
+ strlen($lex->data) > 40 ?
+ substr($lex->data, 0, 40) .
+ '...' : $lex->data
+ )
+ );
+ } else {
+ $templateName = $this->template->getSource()->getFullResourceName();
+ }
+ // $line += $this->trace_line_offset;
+ $match = preg_split("/\n/", $lex->data);
+ $error_text =
+ 'Syntax error in template "' . (empty($this->trace_filepath) ? $templateName : $this->trace_filepath) .
+ '" on line ' . ($line + $this->trace_line_offset) . ' "' .
+ trim(preg_replace('![\t\r\n]+!', ' ', $match[$line - 1])) . '" ';
+ if (isset($args)) {
+ // individual error message
+ $error_text .= $args;
+ } else {
+ $expect = [];
+ // expected token from parser
+ $error_text .= ' - Unexpected "' . $lex->value . '"';
+ if (count($this->parser->yy_get_expected_tokens($this->parser->yymajor)) <= 4) {
+ foreach ($this->parser->yy_get_expected_tokens($this->parser->yymajor) as $token) {
+ $exp_token = $this->parser->yyTokenName[$token];
+ if (isset($lex->smarty_token_names[$exp_token])) {
+ // token type from lexer
+ $expect[] = '"' . $lex->smarty_token_names[$exp_token] . '"';
+ } else {
+ // otherwise internal token name
+ $expect[] = $this->parser->yyTokenName[$token];
+ }
+ }
+ $error_text .= ', expected one of: ' . implode(' , ', $expect);
+ }
+ }
+ if ($this->smarty->_parserdebug) {
+ $this->parser->errorRunDown();
+ echo ob_get_clean();
+ flush();
+ }
+ $e = new CompilerException(
+ $error_text,
+ 0,
+ $this->template->getSource()->getFilepath() ?? $this->template->getSource()->getFullResourceName(),
+ $line
+ );
+ $e->source = trim(preg_replace('![\t\r\n]+!', ' ', $match[$line - 1]));
+ $e->desc = $args;
+ $e->template = $this->template->getSource()->getFullResourceName();
+ throw $e;
+ }
+
+ /**
+ * Return var_export() value with all white spaces removed
+ *
+ * @param mixed $value
+ *
+ * @return string
+ */
+ public function getVarExport($value) {
+ return preg_replace('/\s/', '', var_export($value, true));
+ }
+
+ /**
+ * enter double quoted string
+ * - save tag stack count
+ */
+ public function enterDoubleQuote() {
+ array_push($this->_tag_stack_count, $this->getTagStackCount());
+ }
+
+ /**
+ * Return tag stack count
+ *
+ * @return int
+ */
+ public function getTagStackCount() {
+ return count($this->_tag_stack);
+ }
+
+ /**
+ * @param $lexerPreg
+ *
+ * @return mixed
+ */
+ public function replaceDelimiter($lexerPreg) {
+ return str_replace(
+ ['SMARTYldel', 'SMARTYliteral', 'SMARTYrdel', 'SMARTYautoliteral', 'SMARTYal'],
+ [
+ $this->ldelPreg, $this->literalPreg, $this->rdelPreg,
+ $this->smarty->getAutoLiteral() ? '{1,}' : '{9}',
+ $this->smarty->getAutoLiteral() ? '' : '\\s*',
+ ],
+ $lexerPreg
+ );
+ }
+
+ /**
+ * Build lexer regular expressions for left and right delimiter and user defined literals
+ */
+ public function initDelimiterPreg() {
+ $ldel = $this->smarty->getLeftDelimiter();
+ $this->ldelLength = strlen($ldel);
+ $this->ldelPreg = '';
+ foreach (str_split($ldel, 1) as $chr) {
+ $this->ldelPreg .= '[' . preg_quote($chr, '/') . ']';
+ }
+ $rdel = $this->smarty->getRightDelimiter();
+ $this->rdelLength = strlen($rdel);
+ $this->rdelPreg = '';
+ foreach (str_split($rdel, 1) as $chr) {
+ $this->rdelPreg .= '[' . preg_quote($chr, '/') . ']';
+ }
+ $literals = $this->smarty->getLiterals();
+ if (!empty($literals)) {
+ foreach ($literals as $key => $literal) {
+ $literalPreg = '';
+ foreach (str_split($literal, 1) as $chr) {
+ $literalPreg .= '[' . preg_quote($chr, '/') . ']';
+ }
+ $literals[$key] = $literalPreg;
+ }
+ $this->literalPreg = '|' . implode('|', $literals);
+ } else {
+ $this->literalPreg = '';
+ }
+ }
+
+ /**
+ * leave double quoted string
+ * - throw exception if block in string was not closed
+ *
+ * @throws \Smarty\CompilerException
+ */
+ public function leaveDoubleQuote() {
+ if (array_pop($this->_tag_stack_count) !== $this->getTagStackCount()) {
+ $tag = $this->getOpenBlockTag();
+ $this->trigger_template_error(
+ "unclosed '{{$tag}}' in doubled quoted string",
+ null,
+ true
+ );
+ }
+ }
+
+ /**
+ * Get left delimiter preg
+ *
+ * @return string
+ */
+ public function getLdelPreg() {
+ return $this->ldelPreg;
+ }
+
+ /**
+ * Get right delimiter preg
+ *
+ * @return string
+ */
+ public function getRdelPreg() {
+ return $this->rdelPreg;
+ }
+
+ /**
+ * Get length of left delimiter
+ *
+ * @return int
+ */
+ public function getLdelLength() {
+ return $this->ldelLength;
+ }
+
+ /**
+ * Get length of right delimiter
+ *
+ * @return int
+ */
+ public function getRdelLength() {
+ return $this->rdelLength;
+ }
+
+ /**
+ * Get name of current open block tag
+ *
+ * @return string|boolean
+ */
+ public function getOpenBlockTag() {
+ $tagCount = $this->getTagStackCount();
+ if ($tagCount) {
+ return $this->_tag_stack[$tagCount - 1][0];
+ } else {
+ return false;
+ }
+ }
+
+ /**
+ * Check if $value contains variable elements
+ *
+ * @param mixed $value
+ *
+ * @return bool|int
+ */
+ public function isVariable($value) {
+ if (is_string($value)) {
+ return preg_match('/[$(]/', $value);
+ }
+ if (is_bool($value) || is_numeric($value)) {
+ return false;
+ }
+ if (is_array($value)) {
+ foreach ($value as $k => $v) {
+ if ($this->isVariable($k) || $this->isVariable($v)) {
+ return true;
+ }
+ }
+ return false;
+ }
+ return false;
+ }
+
+ /**
+ * Get new prefix variable name
+ *
+ * @return string
+ */
+ public function getNewPrefixVariable() {
+ ++self::$prefixVariableNumber;
+ return $this->getPrefixVariable();
+ }
+
+ /**
+ * Get current prefix variable name
+ *
+ * @return string
+ */
+ public function getPrefixVariable() {
+ return '$_prefixVariable' . self::$prefixVariableNumber;
+ }
+
+ /**
+ * append code to prefix buffer
+ *
+ * @param string $code
+ */
+ public function appendPrefixCode($code) {
+ $this->prefix_code[] = $code;
+ }
+
+ /**
+ * get prefix code string
+ *
+ * @return string
+ */
+ public function getPrefixCode() {
+ $code = '';
+ $prefixArray = array_merge($this->prefix_code, array_pop($this->prefixCodeStack));
+ $this->prefixCodeStack[] = [];
+ foreach ($prefixArray as $c) {
+ $code = $this->appendCode($code, (string) $c);
+ }
+ $this->prefix_code = [];
+ return $code;
+ }
+
+ public function cStyleComment($string) {
+ return '/*' . str_replace('*/', '* /', $string) . '*/';
+ }
+
+ public function compileChildBlock() {
+ return $this->blockCompiler->compileChild($this);
+ }
+
+ public function compileParentBlock() {
+ return $this->blockCompiler->compileParent($this);
+ }
+
+ /**
+ * Compile Tag
+ *
+ * @param string $tag tag name
+ * @param array $args array with tag attributes
+ * @param array $parameter array with compilation parameter
+ *
+ * @return string compiled code
+ * @throws Exception
+ * @throws CompilerException
+ */
+ private function compileTag2($tag, $args, $parameter) {
+ // $args contains the attributes parsed and compiled by the lexer/parser
+
+ $this->handleNocacheFlag($args);
+
+ // compile built-in tags
+ if ($tagCompiler = $this->getTagCompiler($tag)) {
+ if (!isset($this->smarty->security_policy) || $this->smarty->security_policy->isTrustedTag($tag, $this)) {
+ $this->tag_nocache = $this->tag_nocache | !$tagCompiler->isCacheable();
+ $_output = $tagCompiler->compile($args, $this, $parameter);
+ if (!empty($parameter['modifierlist'])) {
+ throw new CompilerException('No modifiers allowed on ' . $tag);
+ }
+ return $_output;
+ }
+ }
+
+ // call to function previously defined by {function} tag
+ if ($this->canCompileTemplateFunctionCall($tag)) {
+
+ if (!empty($parameter['modifierlist'])) {
+ throw new CompilerException('No modifiers allowed on ' . $tag);
+ }
+
+ $args['_attr']['name'] = "'{$tag}'";
+ $tagCompiler = $this->getTagCompiler('call');
+ return $tagCompiler === null ? false : $tagCompiler->compile($args, $this, $parameter);
+ }
+
+ // remaining tastes: (object-)function, (object-function-)block, custom-compiler
+ // opening and closing tags for these are handled with the same handler
+ $base_tag = $this->getBaseTag($tag);
+
+ // check if tag is a registered object
+ if (isset($this->smarty->registered_objects[$base_tag]) && isset($parameter['object_method'])) {
+ return $this->compileRegisteredObjectMethodCall($base_tag, $args, $parameter, $tag);
+ }
+
+ // check if tag is a function
+ if ($this->smarty->getFunctionHandler($base_tag)) {
+ if (!isset($this->smarty->security_policy) || $this->smarty->security_policy->isTrustedTag($base_tag, $this)) {
+ return (new \Smarty\Compile\PrintExpressionCompiler())->compile(
+ ['nofilter'], // functions are never auto-escaped
+ $this,
+ ['value' => $this->compileFunctionCall($base_tag, $args, $parameter)]
+ );
+ }
+ }
+
+ // check if tag is a block
+ if ($this->smarty->getBlockHandler($base_tag)) {
+ if (!isset($this->smarty->security_policy) || $this->smarty->security_policy->isTrustedTag($base_tag, $this)) {
+ return $this->blockCompiler->compile($args, $this, $parameter, $tag, $base_tag);
+ }
+ }
+
+ // the default plugin handler is a handler of last resort, it may also handle not specifically registered tags.
+ if ($callback = $this->getPluginFromDefaultHandler($base_tag, Smarty::PLUGIN_COMPILER)) {
+ if (!empty($parameter['modifierlist'])) {
+ throw new CompilerException('No modifiers allowed on ' . $base_tag);
+ }
+ $tagCompiler = new \Smarty\Compile\Tag\BCPluginWrapper($callback);
+ return $tagCompiler->compile($args, $this, $parameter);
+ }
+
+ if ($this->getPluginFromDefaultHandler($base_tag, Smarty::PLUGIN_FUNCTION)) {
+ return $this->defaultHandlerFunctionCallCompiler->compile($args, $this, $parameter, $tag, $base_tag);
+ }
+
+ if ($this->getPluginFromDefaultHandler($base_tag, Smarty::PLUGIN_BLOCK)) {
+ return $this->defaultHandlerBlockCompiler->compile($args, $this, $parameter, $tag, $base_tag);
+ }
+
+ $this->trigger_template_error("unknown tag '{$tag}'", null, true);
+ }
+
+ /**
+ * Sets $this->tag_nocache if attributes contain the 'nocache' flag.
+ *
+ * @param array $attributes
+ *
+ * @return void
+ */
+ private function handleNocacheFlag(array $attributes) {
+ foreach ($attributes as $value) {
+ if (is_string($value) && trim($value, '\'" ') == 'nocache') {
+ $this->tag_nocache = true;
+ }
+ }
+ }
+
+ private function getBaseTag($tag) {
+ if (strlen($tag) < 6 || substr($tag, -5) !== 'close') {
+ return $tag;
+ } else {
+ return substr($tag, 0, -5);
+ }
+ }
+
+ /**
+ * Compiles the output of a variable or expression.
+ *
+ * @param $value
+ * @param $attributes
+ * @param $modifiers
+ *
+ * @return string
+ * @throws Exception
+ */
+ public function compilePrintExpression($value, $attributes = [], $modifiers = null) {
+ $this->handleNocacheFlag($attributes);
+ return $this->printExpressionCompiler->compile($attributes, $this, [
+ 'value'=> $value,
+ 'modifierlist' => $modifiers,
+ ]);
+ }
+
+ /**
+ * method to compile a Smarty template
+ *
+ * @param mixed $_content template source
+ * @param bool $isTemplateSource
+ *
+ * @return bool true if compiling succeeded, false if it failed
+ * @throws \Smarty\CompilerException
+ */
+ protected function doCompile($_content, $isTemplateSource = false) {
+ /* here is where the compiling takes place. Smarty
+ tags in the templates are replaces with PHP code,
+ then written to compiled files. */
+ // init the lexer/parser to compile the template
+ $this->parser = new TemplateParser(
+ new TemplateLexer(
+ str_replace(
+ [
+ "\r\n",
+ "\r",
+ ],
+ "\n",
+ $_content
+ ),
+ $this
+ ),
+ $this
+ );
+ if ($isTemplateSource && $this->template->caching) {
+ $this->parser->insertPhpCode("getCompiled()->nocache_hash = '{$this->nocache_hash}';\n?>\n");
+ }
+ if ($this->smarty->_parserdebug) {
+ $this->parser->PrintTrace();
+ $this->parser->lex->PrintTrace();
+ }
+ // get tokens from lexer and parse them
+ while ($this->parser->lex->yylex()) {
+ if ($this->smarty->_parserdebug) {
+ echo "Line {$this->parser->lex->line} Parsing {$this->parser->yyTokenName[$this->parser->lex->token]} Token " .
+ $this->parser->lex->value;
+ }
+ $this->parser->doParse($this->parser->lex->token, $this->parser->lex->value);
+ }
+ // finish parsing process
+ $this->parser->doParse(0, 0);
+ // check for unclosed tags
+ if ($this->getTagStackCount() > 0) {
+ // get stacked info
+ [$openTag, $_data] = array_pop($this->_tag_stack);
+ $this->trigger_template_error(
+ "unclosed " . $this->smarty->getLeftDelimiter() . $openTag .
+ $this->smarty->getRightDelimiter() . " tag"
+ );
+ }
+ // call post compile callbacks
+ foreach ($this->postCompileCallbacks as $cb) {
+ $parameter = $cb;
+ $parameter[0] = $this;
+ call_user_func_array($cb[0], $parameter);
+ }
+ // return compiled code
+ return $this->prefixCompiledCode . $this->parser->retvalue . $this->postfixCompiledCode;
+ }
+
+ /**
+ * Register a post compile callback
+ * - when the callback is called after template compiling the compiler object will be inserted as first parameter
+ *
+ * @param callback $callback
+ * @param array $parameter optional parameter array
+ * @param string $key optional key for callback
+ * @param bool $replace if true replace existing keyed callback
+ */
+ public function registerPostCompileCallback($callback, $parameter = [], $key = null, $replace = false) {
+ array_unshift($parameter, $callback);
+ if (isset($key)) {
+ if ($replace || !isset($this->postCompileCallbacks[$key])) {
+ $this->postCompileCallbacks[$key] = $parameter;
+ }
+ } else {
+ $this->postCompileCallbacks[] = $parameter;
+ }
+ }
+
+ /**
+ * Remove a post compile callback
+ *
+ * @param string $key callback key
+ */
+ public function unregisterPostCompileCallback($key) {
+ unset($this->postCompileCallbacks[$key]);
+ }
+
+ /**
+ * @param string $tag
+ *
+ * @return bool
+ * @throws Exception
+ */
+ private function canCompileTemplateFunctionCall(string $tag): bool {
+ return
+ isset($this->parent_compiler->tpl_function[$tag])
+ || (
+ $this->template->getSmarty()->hasRuntime('TplFunction')
+ && ($this->template->getSmarty()->getRuntime('TplFunction')->getTplFunction($this->template, $tag) !== false)
+ );
+ }
+
+ /**
+ * @throws CompilerException
+ */
+ private function compileRegisteredObjectMethodCall(string $base_tag, array $args, array $parameter, string $tag) {
+
+ $method = $parameter['object_method'];
+ $allowedAsBlockFunction = in_array($method, $this->smarty->registered_objects[$base_tag][3]);
+
+ if ($base_tag === $tag) {
+ // opening tag
+
+ $allowedAsNormalFunction = empty($this->smarty->registered_objects[$base_tag][1])
+ || in_array($method, $this->smarty->registered_objects[$base_tag][1]);
+
+ if ($allowedAsBlockFunction) {
+ return $this->objectMethodBlockCompiler->compile($args, $this, $parameter, $tag, $method);
+ } elseif ($allowedAsNormalFunction) {
+ return $this->objectMethodCallCompiler->compile($args, $this, $parameter, $tag, $method);
+ }
+
+ $this->trigger_template_error(
+ 'not allowed method "' . $method . '" in registered object "' .
+ $tag . '"',
+ null,
+ true
+ );
+ }
+
+ // closing tag
+ if ($allowedAsBlockFunction) {
+ return $this->objectMethodBlockCompiler->compile($args, $this, $parameter, $tag, $method);
+ }
+
+ $this->trigger_template_error(
+ 'not allowed closing tag method "' . $method .
+ '" in registered object "' . $base_tag . '"',
+ null,
+ true
+ );
+ }
+
+ public function compileFunctionCall(string $base_tag, array $args, array $parameter = []) {
+ return $this->functionCallCompiler->compile($args, $this, $parameter, $base_tag, $base_tag);
+ }
+
+ public function compileModifierInExpression(string $function, array $_attr) {
+ $value = array_shift($_attr);
+ return $this->compileModifier([array_merge([$function], $_attr)], $value);
+ }
+
+ /**
+ * @return TemplateParser|null
+ */
+ public function getParser(): ?TemplateParser {
+ return $this->parser;
+ }
+
+ /**
+ * @param TemplateParser|null $parser
+ */
+ public function setParser(?TemplateParser $parser): void {
+ $this->parser = $parser;
+ }
+
+ /**
+ * @return \Smarty\Template|null
+ */
+ public function getTemplate(): ?\Smarty\Template {
+ return $this->template;
+ }
+
+ /**
+ * @param \Smarty\Template|null $template
+ */
+ public function setTemplate(?\Smarty\Template $template): void {
+ $this->template = $template;
+ }
+
+ /**
+ * @return Template|null
+ */
+ public function getParentCompiler(): ?Template {
+ return $this->parent_compiler;
+ }
+
+ /**
+ * @param Template|null $parent_compiler
+ */
+ public function setParentCompiler(?Template $parent_compiler): void {
+ $this->parent_compiler = $parent_compiler;
+ }
+
+
+ /**
+ * Push opening tag name on stack
+ * Optionally additional data can be saved on stack
+ *
+ * @param string $openTag the opening tag's name
+ * @param mixed $data optional data saved
+ */
+ public function openTag($openTag, $data = null) {
+ $this->_tag_stack[] = [$openTag, $data];
+ if ($openTag == 'nocache') {
+ $this->noCacheStackDepth++;
+ }
+ }
+
+ /**
+ * Pop closing tag
+ * Raise an error if this stack-top doesn't match with expected opening tags
+ *
+ * @param array|string $expectedTag the expected opening tag names
+ *
+ * @return mixed any type the opening tag's name or saved data
+ * @throws CompilerException
+ */
+ public function closeTag($expectedTag) {
+ if ($this->getTagStackCount() > 0) {
+ // get stacked info
+ [$_openTag, $_data] = array_pop($this->_tag_stack);
+ // open tag must match with the expected ones
+ if (in_array($_openTag, (array)$expectedTag)) {
+
+ if ($_openTag == 'nocache') {
+ $this->noCacheStackDepth--;
+ }
+
+ if (is_null($_data)) {
+ // return opening tag
+ return $_openTag;
+ } else {
+ // return restored data
+ return $_data;
+ }
+ }
+ // wrong nesting of tags
+ $this->trigger_template_error("unclosed '" . $this->getTemplate()->getLeftDelimiter() . "{$_openTag}" .
+ $this->getTemplate()->getRightDelimiter() . "' tag");
+ return;
+ }
+ // wrong nesting of tags
+ $this->trigger_template_error('unexpected closing tag', null, true);
+ }
+
+ /**
+ * Returns true if we are in a {nocache}...{/nocache} block, but false if inside {block} tag inside a {nocache} block...
+ * @return bool
+ */
+ public function isNocacheActive(): bool {
+ return !$this->suppressNocacheProcessing && ($this->noCacheStackDepth > 0 || $this->tag_nocache);
+ }
+
+ /**
+ * Returns the full tag stack, used in the compiler for {break}
+ * @return array
+ */
+ public function getTagStack(): array {
+ return $this->_tag_stack;
+ }
+}
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/src/CompilerException.php b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/src/CompilerException.php
new file mode 100644
index 000000000..e3d67b46c
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/src/CompilerException.php
@@ -0,0 +1,73 @@
+file = $filename;
+ }
+ if ($line) {
+ $this->line = $line;
+ }
+ }
+
+ /**
+ * @return string
+ */
+ public function __toString() {
+ return ' --> Smarty Compiler: ' . $this->message . ' <-- ';
+ }
+
+ /**
+ * @param int $line
+ */
+ public function setLine($line) {
+ $this->line = $line;
+ }
+
+ /**
+ * The template source snippet relating to the error
+ *
+ * @type string|null
+ */
+ public $source = null;
+
+ /**
+ * The raw text of the error message
+ *
+ * @type string|null
+ */
+ public $desc = null;
+
+ /**
+ * The resource identifier or template name
+ *
+ * @type string|null
+ */
+ public $template = null;
+}
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/src/Data.php b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/src/Data.php
new file mode 100644
index 000000000..f8abe0f6d
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/src/Data.php
@@ -0,0 +1,521 @@
+smarty = $smarty;
+ if (is_object($_parent)) {
+ // when object set up back pointer
+ $this->parent = $_parent;
+ } elseif (is_array($_parent)) {
+ // set up variable values
+ foreach ($_parent as $_key => $_val) {
+ $this->assign($_key, $_val);
+ }
+ } elseif ($_parent !== null) {
+ throw new Exception('Wrong type for template variables');
+ }
+ }
+
+ /**
+ * assigns a Smarty variable
+ *
+ * @param array|string $tpl_var the template variable name(s)
+ * @param mixed $value the value to assign
+ * @param boolean $nocache if true any output of this variable will be not cached
+ * @param int $scope one of self::SCOPE_* constants
+ *
+ * @return Data current Data (or Smarty or \Smarty\Template) instance for
+ * chaining
+ */
+ public function assign($tpl_var, $value = null, $nocache = false, $scope = null)
+ {
+ if (is_array($tpl_var)) {
+ foreach ($tpl_var as $_key => $_val) {
+ $this->assign($_key, $_val, $nocache, $scope);
+ }
+ return $this;
+ }
+ switch ($scope ?? $this->getDefaultScope()) {
+ case self::SCOPE_GLOBAL:
+ case self::SCOPE_SMARTY:
+ $this->getSmarty()->assign($tpl_var, $value);
+ break;
+ case self::SCOPE_TPL_ROOT:
+ $ptr = $this;
+ while (isset($ptr->parent) && ($ptr->parent instanceof Template)) {
+ $ptr = $ptr->parent;
+ }
+ $ptr->assign($tpl_var, $value);
+ break;
+ case self::SCOPE_ROOT:
+ $ptr = $this;
+ while (isset($ptr->parent) && !($ptr->parent instanceof Smarty)) {
+ $ptr = $ptr->parent;
+ }
+ $ptr->assign($tpl_var, $value);
+ break;
+ case self::SCOPE_PARENT:
+ if ($this->parent) {
+ $this->parent->assign($tpl_var, $value);
+ } else {
+ // assign local as fallback
+ $this->assign($tpl_var, $value);
+ }
+ break;
+ case self::SCOPE_LOCAL:
+ default:
+ if (isset($this->tpl_vars[$tpl_var])) {
+ $this->tpl_vars[$tpl_var]->setValue($value);
+ if ($nocache) {
+ $this->tpl_vars[$tpl_var]->setNocache(true);
+ }
+ } else {
+ $this->tpl_vars[$tpl_var] = new Variable($value, $nocache);
+ }
+ }
+
+ return $this;
+ }
+
+ /**
+ * appends values to template variables
+ *
+ * @param array|string $tpl_var the template variable name(s)
+ * @param mixed $value the value to append
+ * @param bool $merge flag if array elements shall be merged
+ * @param bool $nocache if true any output of this variable will
+ * be not cached
+ *
+ * @return Data
+ * @api Smarty::append()
+ */
+ public function append($tpl_var, $value = null, $merge = false, $nocache = false)
+ {
+ if (is_array($tpl_var)) {
+ foreach ($tpl_var as $_key => $_val) {
+ $this->append($_key, $_val, $merge, $nocache);
+ }
+ } else {
+
+ $newValue = $this->getValue($tpl_var) ?? [];
+ if (!is_array($newValue)) {
+ $newValue = (array) $newValue;
+ }
+
+ if ($merge && is_array($value)) {
+ foreach ($value as $_mkey => $_mval) {
+ $newValue[$_mkey] = $_mval;
+ }
+ } else {
+ $newValue[] = $value;
+ }
+
+ $this->assign($tpl_var, $newValue, $nocache);
+ }
+ return $this;
+ }
+
+ /**
+ * assigns a global Smarty variable
+ *
+ * @param string $varName the global variable name
+ * @param mixed $value the value to assign
+ * @param boolean $nocache if true any output of this variable will be not cached
+ *
+ * @return Data
+ * @deprecated since 5.0
+ */
+ public function assignGlobal($varName, $value = null, $nocache = false)
+ {
+ trigger_error(__METHOD__ . " is deprecated. Use \\Smarty\\Smarty::assign() to assign a variable " .
+ " at the Smarty level.", E_USER_DEPRECATED);
+ return $this->getSmarty()->assign($varName, $value, $nocache);
+ }
+
+ /**
+ * Returns a single or all template variables
+ *
+ * @param string $varName variable name or null
+ * @param bool $searchParents include parent templates?
+ *
+ * @return mixed variable value or or array of variables
+ * @api Smarty::getTemplateVars()
+ *
+ */
+ public function getTemplateVars($varName = null, $searchParents = true)
+ {
+ if (isset($varName)) {
+ return $this->getValue($varName, $searchParents);
+ }
+
+ return array_merge(
+ $this->parent && $searchParents ? $this->parent->getTemplateVars() : [],
+ array_map(function(Variable $var) { return $var->getValue(); }, $this->tpl_vars)
+ );
+ }
+
+ /**
+ * Wrapper for ::getVariable()
+ *
+ * @deprecated since 5.0
+ *
+ * @param $varName
+ * @param $searchParents
+ * @param $errorEnable
+ *
+ * @return void
+ */
+ public function _getVariable($varName, $searchParents = true, $errorEnable = true) {
+ trigger_error('Using ::_getVariable() to is deprecated and will be ' .
+ 'removed in a future release. Use getVariable() instead.', E_USER_DEPRECATED);
+ return $this->getVariable($varName, $searchParents, $errorEnable);
+ }
+
+ /**
+ * Gets the object of a Smarty variable
+ *
+ * @param string $varName the name of the Smarty variable
+ * @param bool $searchParents search also in parent data
+ * @param bool $errorEnable
+ *
+ * @return Variable
+ */
+ public function getVariable($varName, $searchParents = true, $errorEnable = true) {
+ if (isset($this->tpl_vars[$varName])) {
+ return $this->tpl_vars[$varName];
+ }
+
+ if ($searchParents && $this->parent) {
+ return $this->parent->getVariable($varName, $searchParents, $errorEnable);
+ }
+
+ if ($errorEnable && $this->getSmarty()->error_unassigned) {
+ // force a notice
+ $x = $$varName;
+ }
+ return new UndefinedVariable();
+ }
+
+ /**
+ * Directly sets a complete Variable object in the variable with the given name.
+ * @param $varName
+ * @param Variable $variableObject
+ *
+ * @return void
+ */
+ public function setVariable($varName, Variable $variableObject) {
+ $this->tpl_vars[$varName] = $variableObject;
+ }
+
+ /**
+ * Indicates if given variable has been set.
+ * @param $varName
+ *
+ * @return bool
+ */
+ public function hasVariable($varName): bool {
+ return !($this->getVariable($varName) instanceof UndefinedVariable);
+ }
+
+ /**
+ * Returns the value of the Smarty\Variable given by $varName, or null if the variable does not exist.
+ *
+ * @param $varName
+ * @param bool $searchParents
+ *
+ * @return mixed|null
+ */
+ public function getValue($varName, $searchParents = true) {
+ $variable = $this->getVariable($varName, $searchParents);
+ return isset($variable) ? $variable->getValue() : null;
+ }
+
+ /**
+ * load config variables into template object
+ *
+ * @param array $new_config_vars
+ */
+ public function assignConfigVars($new_config_vars, array $sections = []) {
+
+ // copy global config vars
+ foreach ($new_config_vars['vars'] as $variable => $value) {
+ if ($this->getSmarty()->config_overwrite || !isset($this->config_vars[$variable])) {
+ $this->config_vars[$variable] = $value;
+ } else {
+ $this->config_vars[$variable] = array_merge((array)$this->config_vars[$variable], (array)$value);
+ }
+ }
+
+ foreach ($sections as $tpl_section) {
+ if (isset($new_config_vars['sections'][$tpl_section])) {
+ foreach ($new_config_vars['sections'][$tpl_section]['vars'] as $variable => $value) {
+ if ($this->getSmarty()->config_overwrite || !isset($this->config_vars[$variable])) {
+ $this->config_vars[$variable] = $value;
+ } else {
+ $this->config_vars[$variable] = array_merge((array)$this->config_vars[$variable], (array)$value);
+ }
+ }
+ }
+ }
+ }
+
+ /**
+ * Get Smarty object
+ *
+ * @return Smarty
+ */
+ public function getSmarty()
+ {
+ return $this->smarty;
+ }
+
+ /**
+ * clear the given assigned template variable(s).
+ *
+ * @param string|array $tpl_var the template variable(s) to clear
+ *
+ * @return Data
+ *
+ * @api Smarty::clearAssign()
+ */
+ public function clearAssign($tpl_var)
+ {
+ if (is_array($tpl_var)) {
+ foreach ($tpl_var as $curr_var) {
+ unset($this->tpl_vars[ $curr_var ]);
+ }
+ } else {
+ unset($this->tpl_vars[ $tpl_var ]);
+ }
+ return $this;
+ }
+
+ /**
+ * clear all the assigned template variables.
+ *
+ * @return Data
+ *
+ * @api Smarty::clearAllAssign()
+ */
+ public function clearAllAssign()
+ {
+ $this->tpl_vars = array();
+ return $this;
+ }
+
+ /**
+ * clear a single or all config variables
+ *
+ * @param string|null $name variable name or null
+ *
+ * @return Data
+ *
+ * @api Smarty::clearConfig()
+ */
+ public function clearConfig($name = null)
+ {
+ if (isset($name)) {
+ unset($this->config_vars[ $name ]);
+ } else {
+ $this->config_vars = array();
+ }
+ return $this;
+ }
+
+ /**
+ * Gets a config variable value
+ *
+ * @param string $varName the name of the config variable
+ *
+ * @return mixed the value of the config variable
+ * @throws Exception
+ */
+ public function getConfigVariable($varName)
+ {
+
+ if (isset($this->config_vars[$varName])) {
+ return $this->config_vars[$varName];
+ }
+
+ $returnValue = $this->parent ? $this->parent->getConfigVariable($varName) : null;
+
+ if ($returnValue === null && $this->getSmarty()->error_unassigned) {
+ throw new Exception("Undefined variable $varName");
+ }
+
+ return $returnValue;
+ }
+
+ public function hasConfigVariable($varName): bool {
+ try {
+ return $this->getConfigVariable($varName) !== null;
+ } catch (Exception $e) {
+ return false;
+ }
+ }
+
+ /**
+ * Returns a single or all config variables
+ *
+ * @param string $varname variable name or null
+ *
+ * @return mixed variable value or or array of variables
+ * @throws Exception
+ *
+ * @api Smarty::getConfigVars()
+ */
+ public function getConfigVars($varname = null)
+ {
+ if (isset($varname)) {
+ return $this->getConfigVariable($varname);
+ }
+
+ return array_merge($this->parent ? $this->parent->getConfigVars() : [], $this->config_vars);
+ }
+
+ /**
+ * load a config file, optionally load just selected sections
+ *
+ * @param string $config_file filename
+ * @param mixed $sections array of section names, single
+ * section or null
+
+ * @returns $this
+ * @throws \Exception
+ *
+ * @api Smarty::configLoad()
+ */
+ public function configLoad($config_file, $sections = null)
+ {
+ $template = $this->getSmarty()->doCreateTemplate($config_file, null, null, $this, null, null, true);
+ $template->caching = Smarty::CACHING_OFF;
+ $template->assign('sections', (array) $sections ?? []);
+ // trigger a call to $this->assignConfigVars
+ $template->fetch();
+ return $this;
+ }
+
+ /**
+ * Sets the default scope for new variables assigned in this template.
+ * @param int $scope
+ *
+ * @return void
+ */
+ protected function setDefaultScope(int $scope) {
+ $this->defaultScope = $scope;
+ }
+
+ /**
+ * Returns the default scope for new variables assigned in this template.
+ * @return int
+ */
+ public function getDefaultScope(): int {
+ return $this->defaultScope;
+ }
+
+ /**
+ * @return Data|Smarty|null
+ */
+ public function getParent() {
+ return $this->parent;
+ }
+
+ /**
+ * @param Data|Smarty|null $parent
+ */
+ public function setParent($parent): void {
+ $this->parent = $parent;
+ }
+
+ public function pushStack(): void {
+ $stackList = [];
+ foreach ($this->tpl_vars as $name => $variable) {
+ $stackList[$name] = clone $variable; // variables are stored in Variable objects
+ }
+ $this->_var_stack[] = $this->tpl_vars;
+ $this->tpl_vars = $stackList;
+
+ $this->_config_stack[] = $this->config_vars;
+ }
+
+ public function popStack(): void {
+ $this->tpl_vars = array_pop($this->_var_stack);
+ $this->config_vars = array_pop($this->_config_stack);
+ }
+}
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/src/Debug.php b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/src/Debug.php
new file mode 100644
index 000000000..ab1a88779
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/src/Debug.php
@@ -0,0 +1,370 @@
+_isSubTpl()) {
+ $this->index++;
+ $this->offset++;
+ $this->template_data[ $this->index ] = null;
+ }
+ $key = $this->get_key($template);
+ $this->template_data[ $this->index ][ $key ][ 'start_template_time' ] = microtime(true);
+ }
+
+ /**
+ * End logging of cache time
+ *
+ * @param Template $template cached template
+ */
+ public function end_template(Template $template)
+ {
+ $key = $this->get_key($template);
+ $this->template_data[ $this->index ][ $key ][ 'total_time' ] +=
+ microtime(true) - $this->template_data[ $this->index ][ $key ][ 'start_template_time' ];
+ }
+
+ /**
+ * Start logging of compile time
+ *
+ * @param Template $template
+ */
+ public function start_compile(Template $template)
+ {
+ static $_is_stringy = array('string' => true, 'eval' => true);
+ if (!empty($template->getCompiler()->trace_uid)) {
+ $key = $template->getCompiler()->trace_uid;
+ if (!isset($this->template_data[ $this->index ][ $key ])) {
+ $this->saveTemplateData($_is_stringy, $template, $key);
+ }
+ } else {
+ if (isset($this->ignore_uid[ $template->getSource()->uid ])) {
+ return;
+ }
+ $key = $this->get_key($template);
+ }
+ $this->template_data[ $this->index ][ $key ][ 'start_time' ] = microtime(true);
+ }
+
+ /**
+ * End logging of compile time
+ *
+ * @param Template $template
+ */
+ public function end_compile(Template $template)
+ {
+ if (!empty($template->getCompiler()->trace_uid)) {
+ $key = $template->getCompiler()->trace_uid;
+ } else {
+ if (isset($this->ignore_uid[ $template->getSource()->uid ])) {
+ return;
+ }
+ $key = $this->get_key($template);
+ }
+ $this->template_data[ $this->index ][ $key ][ 'compile_time' ] +=
+ microtime(true) - $this->template_data[ $this->index ][ $key ][ 'start_time' ];
+ }
+
+ /**
+ * Start logging of render time
+ *
+ * @param Template $template
+ */
+ public function start_render(Template $template)
+ {
+ $key = $this->get_key($template);
+ $this->template_data[ $this->index ][ $key ][ 'start_time' ] = microtime(true);
+ }
+
+ /**
+ * End logging of compile time
+ *
+ * @param Template $template
+ */
+ public function end_render(Template $template)
+ {
+ $key = $this->get_key($template);
+ $this->template_data[ $this->index ][ $key ][ 'render_time' ] +=
+ microtime(true) - $this->template_data[ $this->index ][ $key ][ 'start_time' ];
+ }
+
+ /**
+ * Start logging of cache time
+ *
+ * @param Template $template cached template
+ */
+ public function start_cache(Template $template)
+ {
+ $key = $this->get_key($template);
+ $this->template_data[ $this->index ][ $key ][ 'start_time' ] = microtime(true);
+ }
+
+ /**
+ * End logging of cache time
+ *
+ * @param Template $template cached template
+ */
+ public function end_cache(Template $template)
+ {
+ $key = $this->get_key($template);
+ $this->template_data[ $this->index ][ $key ][ 'cache_time' ] +=
+ microtime(true) - $this->template_data[ $this->index ][ $key ][ 'start_time' ];
+ }
+
+ /**
+ * Register template object
+ *
+ * @param Template $template cached template
+ */
+ public function register_template(Template $template)
+ {
+ }
+
+ /**
+ * Register data object
+ *
+ * @param Data $data data object
+ */
+ public static function register_data(Data $data)
+ {
+ }
+
+ /**
+ * Opens a window for the Smarty Debugging Console and display the data
+ *
+ * @param Template|Smarty $obj object to debug
+ * @param bool $full
+ *
+ * @throws \Exception
+ * @throws Exception
+ */
+ public function display_debug($obj, bool $full = false)
+ {
+ if (!$full) {
+ $this->offset++;
+ $savedIndex = $this->index;
+ $this->index = 9999;
+ }
+ $smarty = $obj->getSmarty();
+ // create fresh instance of smarty for displaying the debug console
+ // to avoid problems if the application did overload the Smarty class
+ $debObj = new Smarty();
+ // copy the working dirs from application
+ $debObj->setCompileDir($smarty->getCompileDir());
+ $debObj->compile_check = Smarty::COMPILECHECK_ON;
+ $debObj->security_policy = null;
+ $debObj->debugging = false;
+ $debObj->debugging_ctrl = 'NONE';
+ $debObj->error_reporting = E_ALL & ~E_NOTICE;
+ $debObj->debug_tpl = $smarty->debug_tpl ?? 'file:' . __DIR__ . '/debug.tpl';
+ $debObj->registered_resources = array();
+ $debObj->escape_html = true;
+ $debObj->caching = Smarty::CACHING_OFF;
+ // prepare information of assigned variables
+ $ptr = $this->get_debug_vars($obj);
+ $_assigned_vars = $ptr->tpl_vars;
+ ksort($_assigned_vars);
+ $_config_vars = $ptr->config_vars;
+ ksort($_config_vars);
+ $debugging = $smarty->debugging;
+ $templateName = $obj->getSource()->type . ':' . $obj->getSource()->name;
+ $displayMode = $debugging === 2 || !$full;
+ $offset = $this->offset * 50;
+ $_template = $debObj->doCreateTemplate($debObj->debug_tpl);
+ if ($obj instanceof Template) {
+ $_template->assign('template_name', $templateName);
+ } elseif ($obj instanceof Smarty || $full) {
+ $_template->assign('template_data', $this->template_data[$this->index]);
+ } else {
+ $_template->assign('template_data', null);
+ }
+ $_template->assign('assigned_vars', $_assigned_vars);
+ $_template->assign('config_vars', $_config_vars);
+ $_template->assign('execution_time', microtime(true) - $smarty->start_time);
+ $_template->assign('targetWindow', $displayMode ? md5("$offset$templateName") : '__Smarty__');
+ $_template->assign('offset', $offset);
+ echo $_template->fetch();
+ if (isset($full)) {
+ $this->index--;
+ }
+ if (!$full) {
+ $this->index = $savedIndex;
+ }
+ }
+
+ /**
+ * Recursively gets variables from all template/data scopes
+ *
+ * @param \Smarty\Data $obj object to debug
+ *
+ * @return \StdClass
+ */
+ private function get_debug_vars($obj)
+ {
+ $config_vars = array();
+ foreach ($obj->config_vars as $key => $var) {
+ $config_vars[$key]['value'] = $var;
+ $config_vars[$key]['scope'] = get_class($obj) . ':' . spl_object_id($obj);
+ }
+ $tpl_vars = array();
+ foreach ($obj->tpl_vars as $key => $var) {
+ foreach ($var as $varkey => $varvalue) {
+ if ($varkey === 'value') {
+ $tpl_vars[ $key ][ $varkey ] = $varvalue;
+ } else {
+ if ($varkey === 'nocache') {
+ if ($varvalue === true) {
+ $tpl_vars[ $key ][ $varkey ] = $varvalue;
+ }
+ } else {
+ if ($varkey !== 'scope' || $varvalue !== 0) {
+ $tpl_vars[ $key ][ 'attributes' ][ $varkey ] = $varvalue;
+ }
+ }
+ }
+ }
+ $tpl_vars[$key]['scope'] = get_class($obj) . ':' . spl_object_id($obj);
+ }
+ if (isset($obj->parent)) {
+ $parent = $this->get_debug_vars($obj->parent);
+ foreach ($parent->tpl_vars as $name => $pvar) {
+ if (isset($tpl_vars[ $name ]) && $tpl_vars[ $name ][ 'value' ] === $pvar[ 'value' ]) {
+ $tpl_vars[ $name ][ 'scope' ] = $pvar[ 'scope' ];
+ }
+ }
+ $tpl_vars = array_merge($parent->tpl_vars, $tpl_vars);
+ foreach ($parent->config_vars as $name => $pvar) {
+ if (isset($config_vars[ $name ]) && $config_vars[ $name ][ 'value' ] === $pvar[ 'value' ]) {
+ $config_vars[ $name ][ 'scope' ] = $pvar[ 'scope' ];
+ }
+ }
+ $config_vars = array_merge($parent->config_vars, $config_vars);
+ }
+ return (object)array('tpl_vars' => $tpl_vars, 'config_vars' => $config_vars);
+ }
+
+ /**
+ * Return key into $template_data for template
+ *
+ * @param Template $template template object
+ *
+ * @return string key into $template_data
+ */
+ private function get_key(Template $template)
+ {
+ static $_is_stringy = array('string' => true, 'eval' => true);
+
+ $key = $template->getSource()->uid;
+ if (isset($this->template_data[ $this->index ][ $key ])) {
+ return $key;
+ } else {
+ $this->saveTemplateData($_is_stringy, $template, $key);
+ $this->template_data[ $this->index ][ $key ][ 'total_time' ] = 0;
+ return $key;
+ }
+ }
+
+ /**
+ * Ignore template
+ *
+ * @param Template $template
+ */
+ public function ignore(Template $template)
+ {
+ $this->ignore_uid[$template->getSource()->uid] = true;
+ }
+
+ /**
+ * handle 'URL' debugging mode
+ *
+ * @param Smarty $smarty
+ */
+ public function debugUrl(Smarty $smarty)
+ {
+ if (isset($_SERVER[ 'QUERY_STRING' ])) {
+ $_query_string = $_SERVER[ 'QUERY_STRING' ];
+ } else {
+ $_query_string = '';
+ }
+ if (false !== strpos($_query_string, $smarty->smarty_debug_id)) {
+ if (false !== strpos($_query_string, $smarty->smarty_debug_id . '=on')) {
+ // enable debugging for this browser session
+ setcookie('SMARTY_DEBUG', true);
+ $smarty->debugging = true;
+ } elseif (false !== strpos($_query_string, $smarty->smarty_debug_id . '=off')) {
+ // disable debugging for this browser session
+ setcookie('SMARTY_DEBUG', false);
+ $smarty->debugging = false;
+ } else {
+ // enable debugging for this page
+ $smarty->debugging = true;
+ }
+ } else {
+ if (isset($_COOKIE[ 'SMARTY_DEBUG' ])) {
+ $smarty->debugging = true;
+ }
+ }
+ }
+
+ /**
+ * @param array $_is_stringy
+ * @param Template $template
+ * @param string $key
+ *
+ * @return void
+ */
+ private function saveTemplateData(array $_is_stringy, Template $template, string $key): void {
+ if (isset($_is_stringy[$template->getSource()->type])) {
+ $this->template_data[$this->index][$key]['name'] =
+ '\'' . substr($template->getSource()->name, 0, 25) . '...\'';
+ } else {
+ $this->template_data[$this->index][$key]['name'] = $template->getSource()->getResourceName();
+ }
+ $this->template_data[$this->index][$key]['compile_time'] = 0;
+ $this->template_data[$this->index][$key]['render_time'] = 0;
+ $this->template_data[$this->index][$key]['cache_time'] = 0;
+ }
+}
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/src/ErrorHandler.php b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/src/ErrorHandler.php
new file mode 100644
index 000000000..05b1cb3e6
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/src/ErrorHandler.php
@@ -0,0 +1,97 @@
+propName} where propName is undefined.
+ * @var bool
+ */
+ public $allowUndefinedProperties = true;
+
+ /**
+ * Allows {$foo.bar} where bar is unset and {$foo.bar1.bar2} where either bar1 or bar2 is unset.
+ * @var bool
+ */
+ public $allowUndefinedArrayKeys = true;
+
+ /**
+ * Allows {$foo->bar} where bar is not an object (e.g. null or false).
+ * @var bool
+ */
+ public $allowDereferencingNonObjects = true;
+
+ private $previousErrorHandler = null;
+
+ /**
+ * Enable error handler to intercept errors
+ */
+ public function activate() {
+ /*
+ Error muting is done because some people implemented custom error_handlers using
+ https://php.net/set_error_handler and for some reason did not understand the following paragraph:
+
+ It is important to remember that the standard PHP error handler is completely bypassed for the
+ error types specified by error_types unless the callback function returns FALSE.
+ error_reporting() settings will have no effect and your error handler will be called regardless -
+ however you are still able to read the current value of error_reporting and act appropriately.
+ Of particular note is that this value will be 0 if the statement that caused the error was
+ prepended by the @ error-control operator.
+ */
+ $this->previousErrorHandler = set_error_handler([$this, 'handleError']);
+ }
+
+ /**
+ * Disable error handler
+ */
+ public function deactivate() {
+ restore_error_handler();
+ $this->previousErrorHandler = null;
+ }
+
+ /**
+ * Error Handler to mute expected messages
+ *
+ * @link https://php.net/set_error_handler
+ *
+ * @param integer $errno Error level
+ * @param $errstr
+ * @param $errfile
+ * @param $errline
+ * @param $errcontext
+ *
+ * @return bool
+ */
+ public function handleError($errno, $errstr, $errfile, $errline, $errcontext = [])
+ {
+ if ($this->allowUndefinedProperties && preg_match(
+ '/^(Undefined property)/',
+ $errstr
+ )) {
+ return; // suppresses this error
+ }
+
+ if ($this->allowUndefinedArrayKeys && preg_match(
+ '/^(Undefined index|Undefined array key|Trying to access array offset on)/',
+ $errstr
+ )) {
+ return; // suppresses this error
+ }
+
+ if ($this->allowDereferencingNonObjects && preg_match(
+ '/^Attempt to read property ".+?" on/',
+ $errstr
+ )) {
+ return; // suppresses this error
+ }
+
+ // pass all other errors through to the previous error handler or to the default PHP error handler
+ return $this->previousErrorHandler ?
+ call_user_func($this->previousErrorHandler, $errno, $errstr, $errfile, $errline, $errcontext) : false;
+ }
+}
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/src/Exception.php b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/src/Exception.php
new file mode 100644
index 000000000..0f75f5685
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/src/Exception.php
@@ -0,0 +1,16 @@
+ Smarty: ' . $this->message . ' <-- ';
+ }
+}
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/src/Extension/BCPluginsAdapter.php b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/src/Extension/BCPluginsAdapter.php
new file mode 100644
index 000000000..aa0eefe20
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/src/Extension/BCPluginsAdapter.php
@@ -0,0 +1,229 @@
+smarty = $smarty;
+ }
+
+ private function findPlugin($type, $name): ?array {
+ if (null !== $plugin = $this->smarty->getRegisteredPlugin($type, $name)) {
+ return $plugin;
+ }
+
+ return null;
+ }
+
+ public function getTagCompiler(string $tag): ?\Smarty\Compile\CompilerInterface {
+
+ $plugin = $this->findPlugin(\Smarty\Smarty::PLUGIN_COMPILER, $tag);
+ if ($plugin === null) {
+ return null;
+ }
+
+ if (is_callable($plugin[0])) {
+ $callback = $plugin[0];
+ $cacheable = (bool) $plugin[1] ?? true;
+ return new TagPluginWrapper($callback, $cacheable);
+ } elseif (class_exists($plugin[0])) {
+ $compiler = new $plugin[0];
+ if ($compiler instanceof CompilerInterface) {
+ return $compiler;
+ }
+ }
+
+ return null;
+ }
+
+ public function getFunctionHandler(string $functionName): ?\Smarty\FunctionHandler\FunctionHandlerInterface {
+ $plugin = $this->findPlugin(\Smarty\Smarty::PLUGIN_FUNCTION, $functionName);
+ if ($plugin === null) {
+ return null;
+ }
+ $callback = $plugin[0];
+ $cacheable = (bool) $plugin[1] ?? true;
+
+ return new FunctionPluginWrapper($callback, $cacheable);
+
+ }
+
+ public function getBlockHandler(string $blockTagName): ?\Smarty\BlockHandler\BlockHandlerInterface {
+ $plugin = $this->findPlugin(\Smarty\Smarty::PLUGIN_BLOCK, $blockTagName);
+ if ($plugin === null) {
+ return null;
+ }
+ $callback = $plugin[0];
+ $cacheable = (bool) $plugin[1] ?? true;
+
+ return new BlockPluginWrapper($callback, $cacheable);
+ }
+
+ public function getModifierCallback(string $modifierName) {
+
+ $plugin = $this->findPlugin(\Smarty\Smarty::PLUGIN_MODIFIER, $modifierName);
+ if ($plugin === null) {
+ return null;
+ }
+ return $plugin[0];
+ }
+
+ public function getModifierCompiler(string $modifier): ?\Smarty\Compile\Modifier\ModifierCompilerInterface {
+ $plugin = $this->findPlugin(\Smarty\Smarty::PLUGIN_MODIFIERCOMPILER, $modifier);
+ if ($plugin === null) {
+ return null;
+ }
+ $callback = $plugin[0];
+
+ return new ModifierCompilerPluginWrapper($callback);
+ }
+
+ /**
+ * @var array
+ */
+ private $preFilters = [];
+
+ public function getPreFilters(): array {
+ return $this->preFilters;
+ }
+
+ public function addPreFilter(\Smarty\Filter\FilterInterface $filter) {
+ $this->preFilters[] = $filter;
+ }
+
+ public function addCallableAsPreFilter(callable $callable, ?string $name = null) {
+ if ($name === null) {
+ $this->preFilters[] = new FilterPluginWrapper($callable);
+ } else {
+ $this->preFilters[$name] = new FilterPluginWrapper($callable);
+ }
+ }
+
+ public function removePrefilter(string $name) {
+ unset($this->preFilters[$name]);
+ }
+
+ /**
+ * @var array
+ */
+ private $postFilters = [];
+
+ public function getPostFilters(): array {
+ return $this->postFilters;
+ }
+
+ public function addPostFilter(\Smarty\Filter\FilterInterface $filter) {
+ $this->postFilters[] = $filter;
+ }
+
+ public function addCallableAsPostFilter(callable $callable, ?string $name = null) {
+ if ($name === null) {
+ $this->postFilters[] = new FilterPluginWrapper($callable);
+ } else {
+ $this->postFilters[$name] = new FilterPluginWrapper($callable);
+ }
+ }
+
+ public function removePostFilter(string $name) {
+ unset($this->postFilters[$name]);
+ }
+
+
+ /**
+ * @var array
+ */
+ private $outputFilters = [];
+
+ public function getOutputFilters(): array {
+ return $this->outputFilters;
+ }
+
+ public function addOutputFilter(\Smarty\Filter\FilterInterface $filter) {
+ $this->outputFilters[] = $filter;
+ }
+
+ public function addCallableAsOutputFilter(callable $callable, ?string $name = null) {
+ if ($name === null) {
+ $this->outputFilters[] = new FilterPluginWrapper($callable);
+ } else {
+ $this->outputFilters[$name] = new FilterPluginWrapper($callable);
+ }
+ }
+
+ public function removeOutputFilter(string $name) {
+ unset($this->outputFilters[$name]);
+ }
+
+ public function loadPluginsFromDir(string $path) {
+
+ foreach([
+ 'function',
+ 'modifier',
+ 'block',
+ 'compiler',
+ 'prefilter',
+ 'postfilter',
+ 'outputfilter',
+ ] as $type) {
+ foreach (glob($path . $type . '.?*.php') as $filename) {
+ $pluginName = $this->getPluginNameFromFilename($filename);
+ if ($pluginName !== null) {
+ require_once $filename;
+ $functionOrClassName = 'smarty_' . $type . '_' . $pluginName;
+ if (function_exists($functionOrClassName) || class_exists($functionOrClassName)) {
+ $this->smarty->registerPlugin($type, $pluginName, $functionOrClassName, true, []);
+ }
+ }
+ }
+ }
+
+ $type = 'resource';
+ foreach (glob($path . $type . '.?*.php') as $filename) {
+ $pluginName = $this->getPluginNameFromFilename($filename);
+ if ($pluginName !== null) {
+ require_once $filename;
+ if (class_exists($className = 'smarty_' . $type . '_' . $pluginName)) {
+ $this->smarty->registerResource($pluginName, new $className());
+ }
+ }
+ }
+
+ $type = 'cacheresource';
+ foreach (glob($path . $type . '.?*.php') as $filename) {
+ $pluginName = $this->getPluginNameFromFilename($filename);
+ if ($pluginName !== null) {
+ require_once $filename;
+ if (class_exists($className = 'smarty_' . $type . '_' . $pluginName)) {
+ $this->smarty->registerCacheResource($pluginName, new $className());
+ }
+ }
+ }
+
+ }
+
+ /**
+ * @param $filename
+ *
+ * @return string|null
+ */
+ private function getPluginNameFromFilename($filename) {
+ if (!preg_match('/.*\.([a-z_A-Z0-9]+)\.php$/',$filename,$matches)) {
+ return null;
+ }
+ return $matches[1];
+ }
+
+}
\ No newline at end of file
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/src/Extension/Base.php b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/src/Extension/Base.php
new file mode 100644
index 000000000..b37b6acd0
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/src/Extension/Base.php
@@ -0,0 +1,41 @@
+callback = $callback;
+ $this->modifierName = $modifierName;
+ }
+
+ public function handle(...$params) {
+ try {
+ return call_user_func_array($this->callback, $params);
+ } catch (\ArgumentCountError $e) {
+ throw new Exception("Invalid number of arguments to modifier " . $this->modifierName);
+ }
+ }
+
+}
\ No newline at end of file
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/src/Extension/CoreExtension.php b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/src/Extension/CoreExtension.php
new file mode 100644
index 000000000..a7c658d34
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/src/Extension/CoreExtension.php
@@ -0,0 +1,49 @@
+modifiers[$modifier])) {
+ return $this->modifiers[$modifier];
+ }
+
+ switch ($modifier) {
+ case 'cat': $this->modifiers[$modifier] = new \Smarty\Compile\Modifier\CatModifierCompiler(); break;
+ case 'count_characters': $this->modifiers[$modifier] = new \Smarty\Compile\Modifier\CountCharactersModifierCompiler(); break;
+ case 'count_paragraphs': $this->modifiers[$modifier] = new \Smarty\Compile\Modifier\CountParagraphsModifierCompiler(); break;
+ case 'count_sentences': $this->modifiers[$modifier] = new \Smarty\Compile\Modifier\CountSentencesModifierCompiler(); break;
+ case 'count_words': $this->modifiers[$modifier] = new \Smarty\Compile\Modifier\CountWordsModifierCompiler(); break;
+ case 'default': $this->modifiers[$modifier] = new \Smarty\Compile\Modifier\DefaultModifierCompiler(); break;
+ case 'empty': $this->modifiers[$modifier] = new \Smarty\Compile\Modifier\EmptyModifierCompiler(); break;
+ case 'escape': $this->modifiers[$modifier] = new \Smarty\Compile\Modifier\EscapeModifierCompiler(); break;
+ case 'from_charset': $this->modifiers[$modifier] = new \Smarty\Compile\Modifier\FromCharsetModifierCompiler(); break;
+ case 'indent': $this->modifiers[$modifier] = new \Smarty\Compile\Modifier\IndentModifierCompiler(); break;
+ case 'is_array': $this->modifiers[$modifier] = new \Smarty\Compile\Modifier\IsArrayModifierCompiler(); break;
+ case 'isset': $this->modifiers[$modifier] = new \Smarty\Compile\Modifier\IssetModifierCompiler(); break;
+ case 'json_encode': $this->modifiers[$modifier] = new \Smarty\Compile\Modifier\JsonEncodeModifierCompiler(); break;
+ case 'lower': $this->modifiers[$modifier] = new \Smarty\Compile\Modifier\LowerModifierCompiler(); break;
+ case 'nl2br': $this->modifiers[$modifier] = new \Smarty\Compile\Modifier\Nl2brModifierCompiler(); break;
+ case 'noprint': $this->modifiers[$modifier] = new \Smarty\Compile\Modifier\NoPrintModifierCompiler(); break;
+ case 'round': $this->modifiers[$modifier] = new \Smarty\Compile\Modifier\RoundModifierCompiler(); break;
+ case 'str_repeat': $this->modifiers[$modifier] = new \Smarty\Compile\Modifier\StrRepeatModifierCompiler(); break;
+ case 'string_format': $this->modifiers[$modifier] = new \Smarty\Compile\Modifier\StringFormatModifierCompiler(); break;
+ case 'strip': $this->modifiers[$modifier] = new \Smarty\Compile\Modifier\StripModifierCompiler(); break;
+ case 'strip_tags': $this->modifiers[$modifier] = new \Smarty\Compile\Modifier\StripTagsModifierCompiler(); break;
+ case 'strlen': $this->modifiers[$modifier] = new \Smarty\Compile\Modifier\StrlenModifierCompiler(); break;
+ case 'substr': $this->modifiers[$modifier] = new \Smarty\Compile\Modifier\SubstrModifierCompiler(); break;
+ case 'to_charset': $this->modifiers[$modifier] = new \Smarty\Compile\Modifier\ToCharsetModifierCompiler(); break;
+ case 'unescape': $this->modifiers[$modifier] = new \Smarty\Compile\Modifier\UnescapeModifierCompiler(); break;
+ case 'upper': $this->modifiers[$modifier] = new \Smarty\Compile\Modifier\UpperModifierCompiler(); break;
+ case 'wordwrap': $this->modifiers[$modifier] = new \Smarty\Compile\Modifier\WordWrapModifierCompiler(); break;
+ }
+
+ return $this->modifiers[$modifier] ?? null;
+ }
+
+ public function getModifierCallback(string $modifierName) {
+ switch ($modifierName) {
+ case 'capitalize': return [$this, 'smarty_modifier_capitalize'];
+ case 'count': return [$this, 'smarty_modifier_count'];
+ case 'date_format': return [$this, 'smarty_modifier_date_format'];
+ case 'debug_print_var': return [$this, 'smarty_modifier_debug_print_var'];
+ case 'escape': return [$this, 'smarty_modifier_escape'];
+ case 'explode': return [$this, 'smarty_modifier_explode'];
+ case 'implode': return [$this, 'smarty_modifier_implode'];
+ case 'in_array': return [$this, 'smarty_modifier_in_array'];
+ case 'join': return [$this, 'smarty_modifier_join'];
+ case 'mb_wordwrap': return [$this, 'smarty_modifier_mb_wordwrap'];
+ case 'number_format': return [$this, 'smarty_modifier_number_format'];
+ case 'regex_replace': return [$this, 'smarty_modifier_regex_replace'];
+ case 'replace': return [$this, 'smarty_modifier_replace'];
+ case 'spacify': return [$this, 'smarty_modifier_spacify'];
+ case 'split': return [$this, 'smarty_modifier_split'];
+ case 'truncate': return [$this, 'smarty_modifier_truncate'];
+ }
+ return null;
+ }
+
+ public function getFunctionHandler(string $functionName): ?\Smarty\FunctionHandler\FunctionHandlerInterface {
+
+ if (isset($this->functionHandlers[$functionName])) {
+ return $this->functionHandlers[$functionName];
+ }
+
+ switch ($functionName) {
+ case 'count': $this->functionHandlers[$functionName] = new \Smarty\FunctionHandler\Count(); break;
+ case 'counter': $this->functionHandlers[$functionName] = new \Smarty\FunctionHandler\Counter(); break;
+ case 'cycle': $this->functionHandlers[$functionName] = new \Smarty\FunctionHandler\Cycle(); break;
+ case 'fetch': $this->functionHandlers[$functionName] = new \Smarty\FunctionHandler\Fetch(); break;
+ case 'html_checkboxes': $this->functionHandlers[$functionName] = new \Smarty\FunctionHandler\HtmlCheckboxes(); break;
+ case 'html_image': $this->functionHandlers[$functionName] = new \Smarty\FunctionHandler\HtmlImage(); break;
+ case 'html_options': $this->functionHandlers[$functionName] = new \Smarty\FunctionHandler\HtmlOptions(); break;
+ case 'html_radios': $this->functionHandlers[$functionName] = new \Smarty\FunctionHandler\HtmlRadios(); break;
+ case 'html_select_date': $this->functionHandlers[$functionName] = new \Smarty\FunctionHandler\HtmlSelectDate(); break;
+ case 'html_select_time': $this->functionHandlers[$functionName] = new \Smarty\FunctionHandler\HtmlSelectTime(); break;
+ case 'html_table': $this->functionHandlers[$functionName] = new \Smarty\FunctionHandler\HtmlTable(); break;
+ case 'mailto': $this->functionHandlers[$functionName] = new \Smarty\FunctionHandler\Mailto(); break;
+ case 'math': $this->functionHandlers[$functionName] = new \Smarty\FunctionHandler\Math(); break;
+ }
+
+ return $this->functionHandlers[$functionName] ?? null;
+ }
+
+ public function getBlockHandler(string $blockTagName): ?\Smarty\BlockHandler\BlockHandlerInterface {
+
+ switch ($blockTagName) {
+ case 'textformat': $this->blockHandlers[$blockTagName] = new \Smarty\BlockHandler\TextFormat(); break;
+ }
+
+ return $this->blockHandlers[$blockTagName] ?? null;
+ }
+
+ /**
+ * Smarty spacify modifier plugin
+ * Type: modifier
+ * Name: spacify
+ * Purpose: add spaces between characters in a string
+ *
+ * @author Monte Ohrt
+ *
+ * @param string $string input string
+ * @param string $spacify_char string to insert between characters.
+ *
+ * @return string
+ */
+ public function smarty_modifier_spacify($string, $spacify_char = ' ')
+ {
+ // well… what about charsets besides latin and UTF-8?
+ return implode($spacify_char, preg_split('//' . \Smarty\Smarty::$_UTF8_MODIFIER, $string, -1, PREG_SPLIT_NO_EMPTY));
+ }
+
+ /**
+ * Smarty capitalize modifier plugin
+ * Type: modifier
+ * Name: capitalize
+ * Purpose: capitalize words in the string
+ * {@internal {$string|capitalize:true:true} is the fastest option for MBString enabled systems }}
+ *
+ * @param string $string string to capitalize
+ * @param boolean $uc_digits also capitalize "x123" to "X123"
+ * @param boolean $lc_rest capitalize first letters, lowercase all following letters "aAa" to "Aaa"
+ *
+ * @return string capitalized string
+ * @author Monte Ohrt
+ * @author Rodney Rehm
+ */
+ public function smarty_modifier_capitalize($string, $uc_digits = false, $lc_rest = false)
+ {
+ $string = (string) $string;
+
+ if ($lc_rest) {
+ // uppercase (including hyphenated words)
+ $upper_string = mb_convert_case($string, MB_CASE_TITLE, \Smarty\Smarty::$_CHARSET);
+ } else {
+ // uppercase word breaks
+ $upper_string = preg_replace_callback(
+ "!(^|[^\p{L}'])([\p{Ll}])!S" . \Smarty\Smarty::$_UTF8_MODIFIER,
+ function ($matches) {
+ return stripslashes($matches[1]) .
+ mb_convert_case(stripslashes($matches[2]), MB_CASE_UPPER, \Smarty\Smarty::$_CHARSET);
+ },
+ $string
+ );
+ }
+ // check uc_digits case
+ if (!$uc_digits) {
+ if (preg_match_all(
+ "!\b([\p{L}]*[\p{N}]+[\p{L}]*)\b!" . \Smarty\Smarty::$_UTF8_MODIFIER,
+ $string,
+ $matches,
+ PREG_OFFSET_CAPTURE
+ )
+ ) {
+ foreach ($matches[ 1 ] as $match) {
+ $upper_string =
+ substr_replace(
+ $upper_string,
+ mb_strtolower($match[ 0 ], \Smarty\Smarty::$_CHARSET),
+ $match[ 1 ],
+ strlen($match[ 0 ])
+ );
+ }
+ }
+ }
+ $upper_string =
+ preg_replace_callback(
+ "!((^|\s)['\"])(\w)!" . \Smarty\Smarty::$_UTF8_MODIFIER,
+ function ($matches) {
+ return stripslashes(
+ $matches[ 1 ]) . mb_convert_case(stripslashes($matches[ 3 ]),
+ MB_CASE_UPPER,
+ \Smarty\Smarty::$_CHARSET
+ );
+ },
+ $upper_string
+ );
+ return $upper_string;
+ }
+
+ /**
+ * Smarty count modifier plugin
+ * Type: modifier
+ * Name: count
+ * Purpose: counts all elements in an array or in a Countable object
+ * Input:
+ * - Countable|array: array or object to count
+ * - mode: int defaults to 0 for normal count mode, if set to 1 counts recursive
+ *
+ * @param mixed $arrayOrObject input array/object
+ * @param int $mode count mode
+ *
+ * @return int
+ */
+ public function smarty_modifier_count($arrayOrObject, $mode = 0) {
+ /*
+ * @see https://www.php.net/count
+ * > Prior to PHP 8.0.0, if the parameter was neither an array nor an object that implements the Countable interface,
+ * > 1 would be returned, unless value was null, in which case 0 would be returned.
+ */
+
+ if ($arrayOrObject instanceof \Countable || is_array($arrayOrObject)) {
+ return count($arrayOrObject, (int) $mode);
+ } elseif ($arrayOrObject === null) {
+ return 0;
+ }
+ return 1;
+ }
+
+ /**
+ * Smarty date_format modifier plugin
+ * Type: modifier
+ * Name: date_format
+ * Purpose: format datestamps via strftime
+ * Input:
+ * - string: input date string
+ * - format: strftime format for output
+ * - default_date: default date if $string is empty
+ *
+ * @author Monte Ohrt
+ *
+ * @param string $string input date string
+ * @param string $format strftime format for output
+ * @param string $default_date default date if $string is empty
+ * @param string $formatter either 'strftime' or 'auto'
+ *
+ * @return string |void
+ * @uses smarty_make_timestamp()
+ */
+ public function smarty_modifier_date_format($string, $format = null, $default_date = '', $formatter = 'auto')
+ {
+ if ($format === null) {
+ $format = \Smarty\Smarty::$_DATE_FORMAT;
+ }
+
+ if (!empty($string) && $string !== '0000-00-00' && $string !== '0000-00-00 00:00:00') {
+ $timestamp = smarty_make_timestamp($string);
+ } elseif (!empty($default_date)) {
+ $timestamp = smarty_make_timestamp($default_date);
+ } else {
+ return;
+ }
+ if ($formatter === 'strftime' || ($formatter === 'auto' && strpos($format, '%') !== false)) {
+ if (\Smarty\Smarty::$_IS_WINDOWS) {
+ $_win_from = array(
+ '%D',
+ '%h',
+ '%n',
+ '%r',
+ '%R',
+ '%t',
+ '%T'
+ );
+ $_win_to = array(
+ '%m/%d/%y',
+ '%b',
+ "\n",
+ '%I:%M:%S %p',
+ '%H:%M',
+ "\t",
+ '%H:%M:%S'
+ );
+ if (strpos($format, '%e') !== false) {
+ $_win_from[] = '%e';
+ $_win_to[] = sprintf('%\' 2d', date('j', $timestamp));
+ }
+ if (strpos($format, '%l') !== false) {
+ $_win_from[] = '%l';
+ $_win_to[] = sprintf('%\' 2d', date('h', $timestamp));
+ }
+ $format = str_replace($_win_from, $_win_to, $format);
+ }
+ // @ to suppress deprecation errors when running in PHP8.1 or higher.
+ return @strftime($format, $timestamp);
+ } else {
+ return date($format, $timestamp);
+ }
+ }
+
+ /**
+ * Smarty debug_print_var modifier plugin
+ * Type: modifier
+ * Name: debug_print_var
+ * Purpose: formats variable contents for display in the console
+ *
+ * @author Monte Ohrt
+ *
+ * @param array|object $var variable to be formatted
+ * @param int $max maximum recursion depth if $var is an array or object
+ * @param int $length maximum string length if $var is a string
+ * @param int $depth actual recursion depth
+ * @param array $objects processed objects in actual depth to prevent recursive object processing
+ *
+ * @return string
+ */
+ public function smarty_modifier_debug_print_var($var, $max = 10, $length = 40, $depth = 0, $objects = array())
+ {
+ $_replace = array("\n" => '\n', "\r" => '\r', "\t" => '\t');
+ switch (gettype($var)) {
+ case 'array':
+ $results = 'Array (' . count($var) . ') ';
+ if ($depth === $max) {
+ break;
+ }
+ foreach ($var as $curr_key => $curr_val) {
+ $results .= ' ' . str_repeat(' ', $depth * 2) . '' . strtr($curr_key, $_replace) .
+ ' => ' .
+ $this->smarty_modifier_debug_print_var($curr_val, $max, $length, ++$depth, $objects);
+ $depth--;
+ }
+ break;
+ case 'object':
+ $object_vars = get_object_vars($var);
+ $results = '' . get_class($var) . ' Object (' . count($object_vars) . ') ';
+ if (in_array($var, $objects)) {
+ $results .= ' called recursive';
+ break;
+ }
+ if ($depth === $max) {
+ break;
+ }
+ $objects[] = $var;
+ foreach ($object_vars as $curr_key => $curr_val) {
+ $results .= ' ' . str_repeat(' ', $depth * 2) . ' ->' . strtr($curr_key, $_replace) .
+ ' = ' . $this->smarty_modifier_debug_print_var($curr_val, $max, $length, ++$depth, $objects);
+ $depth--;
+ }
+ break;
+ case 'boolean':
+ case 'NULL':
+ case 'resource':
+ if (true === $var) {
+ $results = 'true';
+ } elseif (false === $var) {
+ $results = 'false';
+ } elseif (null === $var) {
+ $results = 'null';
+ } else {
+ $results = htmlspecialchars((string)$var);
+ }
+ $results = '' . $results . ' ';
+ break;
+ case 'integer':
+ case 'float':
+ $results = htmlspecialchars((string)$var);
+ break;
+ case 'string':
+ $results = strtr($var, $_replace);
+ if (mb_strlen($var, \Smarty\Smarty::$_CHARSET) > $length) {
+ $results = mb_substr($var, 0, $length - 3, \Smarty\Smarty::$_CHARSET) . '...';
+ }
+ $results = htmlspecialchars('"' . $results . '"', ENT_QUOTES, \Smarty\Smarty::$_CHARSET);
+ break;
+ case 'unknown type':
+ default:
+ $results = strtr((string)$var, $_replace);
+ if (mb_strlen($results, \Smarty\Smarty::$_CHARSET) > $length) {
+ $results = mb_substr($results, 0, $length - 3, \Smarty\Smarty::$_CHARSET) . '...';
+ }
+ $results = htmlspecialchars($results, ENT_QUOTES, \Smarty\Smarty::$_CHARSET);
+ }
+ return $results;
+ }
+
+ /**
+ * Smarty escape modifier plugin
+ * Type: modifier
+ * Name: escape
+ * Purpose: escape string for output
+ *
+ * @author Monte Ohrt
+ *
+ * @param string $string input string
+ * @param string $esc_type escape type
+ * @param string $char_set character set, used for htmlspecialchars() or htmlentities()
+ * @param boolean $double_encode encode already encoded entitites again, used for htmlspecialchars() or htmlentities()
+ *
+ * @return string escaped input string
+ */
+ public function smarty_modifier_escape($string, $esc_type = 'html', $char_set = null, $double_encode = true)
+ {
+ if (!$char_set) {
+ $char_set = \Smarty\Smarty::$_CHARSET;
+ }
+
+ $string = (string)$string;
+
+ switch ($esc_type) {
+ case 'html':
+ return htmlspecialchars($string, ENT_QUOTES, $char_set, $double_encode);
+ // no break
+ case 'htmlall':
+ $string = mb_convert_encoding($string, 'UTF-8', $char_set);
+ return htmlentities($string, ENT_QUOTES, 'UTF-8', $double_encode);
+ // no break
+ case 'url':
+ return rawurlencode($string);
+ case 'urlpathinfo':
+ return str_replace('%2F', '/', rawurlencode($string));
+ case 'quotes':
+ // escape unescaped single quotes
+ return preg_replace("%(?mb_to_unicode($string, \Smarty\Smarty::$_CHARSET) as $unicode) {
+ $return .= '' . strtoupper(dechex($unicode)) . ';';
+ }
+ return $return;
+ case 'decentity':
+ $return = '';
+ foreach ($this->mb_to_unicode($string, \Smarty\Smarty::$_CHARSET) as $unicode) {
+ $return .= '' . $unicode . ';';
+ }
+ return $return;
+ case 'javascript':
+ // escape quotes and backslashes, newlines, etc.
+ return strtr(
+ $string,
+ array(
+ '\\' => '\\\\',
+ "'" => "\\'",
+ '"' => '\\"',
+ "\r" => '\\r',
+ "\n" => '\\n',
+ '' => '<\/',
+ // see https://html.spec.whatwg.org/multipage/scripting.html#restrictions-for-contents-of-script-elements
+ '#is',
+ $source,
+ $matches,
+ PREG_OFFSET_CAPTURE | PREG_SET_ORDER
+ )
+ ) {
+ foreach ($matches as $match) {
+ $store[] = $match[ 0 ][ 0 ];
+ $_length = strlen($match[ 0 ][ 0 ]);
+ $replace = '@!@SMARTY:' . $_store . ':SMARTY@!@';
+ $source = substr_replace($source, $replace, $match[ 0 ][ 1 ] - $_offset, $_length);
+ $_offset += $_length - strlen($replace);
+ $_store++;
+ }
+ }
+ // Strip all HTML-Comments
+ // yes, even the ones in ]*>)|(]*>)|(]*>.*? ]*>)#is',
+ $source,
+ $matches,
+ PREG_OFFSET_CAPTURE | PREG_SET_ORDER
+ )
+ ) {
+ foreach ($matches as $match) {
+ $store[] = $match[ 0 ][ 0 ];
+ $_length = strlen($match[ 0 ][ 0 ]);
+ $replace = '@!@SMARTY:' . $_store . ':SMARTY@!@';
+ $source = substr_replace($source, $replace, $match[ 0 ][ 1 ] - $_offset, $_length);
+ $_offset += $_length - strlen($replace);
+ $_store++;
+ }
+ }
+ $expressions = array(// replace multiple spaces between tags by a single space
+ // can't remove them entirely, because that might break poorly implemented CSS display:inline-block elements
+ '#(:SMARTY@!@|>)\s+(?=@!@SMARTY:|<)#s' => '\1 \2',
+ // remove spaces between attributes (but not in attribute values!)
+ '#(([a-z0-9]\s*=\s*("[^"]*?")|(\'[^\']*?\'))|<[a-z0-9_]+)\s+([a-z/>])#is' => '\1 \5',
+ // note: for some very weird reason trim() seems to remove spaces inside attributes.
+ // maybe a \0 byte or something is interfering?
+ '#^\s+<#Ss' => '<',
+ '#>\s+$#Ss' => '>',
+ );
+ $source = preg_replace(array_keys($expressions), array_values($expressions), $source);
+ // note: for some very weird reason trim() seems to remove spaces inside attributes.
+ // maybe a \0 byte or something is interfering?
+ // $source = trim( $source );
+ $_offset = 0;
+ if (preg_match_all('#@!@SMARTY:([0-9]+):SMARTY@!@#is', $source, $matches, PREG_OFFSET_CAPTURE | PREG_SET_ORDER)) {
+ foreach ($matches as $match) {
+ $_length = strlen($match[ 0 ][ 0 ]);
+ $replace = $store[ $match[ 1 ][ 0 ] ];
+ $source = substr_replace($source, $replace, $match[ 0 ][ 1 ] + $_offset, $_length);
+ $_offset += strlen($replace) - $_length;
+ $_store++;
+ }
+ }
+ return $source;
+ }
+
+}
\ No newline at end of file
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/src/FunctionHandler/BCPluginWrapper.php b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/src/FunctionHandler/BCPluginWrapper.php
new file mode 100644
index 000000000..04af07ed8
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/src/FunctionHandler/BCPluginWrapper.php
@@ -0,0 +1,21 @@
+callback = $callback;
+ $this->cacheable = $cacheable;
+ }
+
+ public function handle($params, Template $template) {
+ $func = $this->callback;
+ return $func($params, $template);
+ }
+
+}
\ No newline at end of file
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/src/FunctionHandler/Base.php b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/src/FunctionHandler/Base.php
new file mode 100644
index 000000000..7cf196372
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/src/FunctionHandler/Base.php
@@ -0,0 +1,21 @@
+cacheable;
+ }
+
+ public function handle($params, Template $template) {
+ // TODO: Implement handle() method.
+ }
+}
\ No newline at end of file
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/src/FunctionHandler/Count.php b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/src/FunctionHandler/Count.php
new file mode 100644
index 000000000..768d809b5
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/src/FunctionHandler/Count.php
@@ -0,0 +1,36 @@
+ 2) {
+ throw new Exception("Invalid number of arguments for count. count expects 1 or 2 parameters.");
+ }
+
+ $value = $params[0];
+
+ if ($value instanceof \Countable) {
+ return $value->count();
+ }
+
+ $mode = count($params) == 2 ? (int) $params[1] : COUNT_NORMAL;
+ return count((array) $value, $mode);
+ }
+
+}
\ No newline at end of file
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/src/FunctionHandler/Counter.php b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/src/FunctionHandler/Counter.php
new file mode 100644
index 000000000..b447caf1f
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/src/FunctionHandler/Counter.php
@@ -0,0 +1,61 @@
+
+ */
+class Counter extends Base {
+
+ private $counters = [];
+
+ public function handle($params, Template $template) {
+ $name = (isset($params['name'])) ? $params['name'] : 'default';
+ if (!isset($this->counters[$name])) {
+ $this->counters[$name] = ['start' => 1, 'skip' => 1, 'direction' => 'up', 'count' => 1];
+ }
+ $counter =& $this->counters[$name];
+ if (isset($params['start'])) {
+ $counter['start'] = $counter['count'] = (int)$params['start'];
+ }
+ if (!empty($params['assign'])) {
+ $counter['assign'] = $params['assign'];
+ }
+ if (isset($counter['assign'])) {
+ $template->assign($counter['assign'], $counter['count']);
+ }
+ if (isset($params['print'])) {
+ $print = (bool)$params['print'];
+ } else {
+ $print = empty($counter['assign']);
+ }
+ if ($print) {
+ $retval = $counter['count'];
+ } else {
+ $retval = null;
+ }
+ if (isset($params['skip'])) {
+ $counter['skip'] = $params['skip'];
+ }
+ if (isset($params['direction'])) {
+ $counter['direction'] = $params['direction'];
+ }
+ if ($counter['direction'] === 'down') {
+ $counter['count'] -= $counter['skip'];
+ } else {
+ $counter['count'] += $counter['skip'];
+ }
+ return $retval;
+ }
+}
\ No newline at end of file
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/src/FunctionHandler/Cycle.php b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/src/FunctionHandler/Cycle.php
new file mode 100644
index 000000000..909a688b6
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/src/FunctionHandler/Cycle.php
@@ -0,0 +1,90 @@
+
+ * @author credit to Mark Priatel
+ * @author credit to Gerard
+ * @author credit to Jason Sweat
+ * @version 1.3
+ *
+ * @param array $params parameters
+ * @param Template $template template object
+ *
+ * @return string|null
+ */
+class Cycle extends Base {
+
+ public function handle($params, Template $template) {
+ static $cycle_vars;
+ $name = (empty($params['name'])) ? 'default' : $params['name'];
+ $print = !(isset($params['print'])) || (bool)$params['print'];
+ $advance = !(isset($params['advance'])) || (bool)$params['advance'];
+ $reset = isset($params['reset']) && (bool)$params['reset'];
+ if (!isset($params['values'])) {
+ if (!isset($cycle_vars[$name]['values'])) {
+ trigger_error('cycle: missing \'values\' parameter');
+ return;
+ }
+ } else {
+ if (isset($cycle_vars[$name]['values']) && $cycle_vars[$name]['values'] !== $params['values']) {
+ $cycle_vars[$name]['index'] = 0;
+ }
+ $cycle_vars[$name]['values'] = $params['values'];
+ }
+ if (isset($params['delimiter'])) {
+ $cycle_vars[$name]['delimiter'] = $params['delimiter'];
+ } elseif (!isset($cycle_vars[$name]['delimiter'])) {
+ $cycle_vars[$name]['delimiter'] = ',';
+ }
+ if (is_array($cycle_vars[$name]['values'])) {
+ $cycle_array = $cycle_vars[$name]['values'];
+ } else {
+ $cycle_array = explode($cycle_vars[$name]['delimiter'], $cycle_vars[$name]['values']);
+ }
+ if (!isset($cycle_vars[$name]['index']) || $reset) {
+ $cycle_vars[$name]['index'] = 0;
+ }
+ if (isset($params['assign'])) {
+ $print = false;
+ $template->assign($params['assign'], $cycle_array[$cycle_vars[$name]['index']]);
+ }
+ if ($print) {
+ $retval = $cycle_array[$cycle_vars[$name]['index']];
+ } else {
+ $retval = null;
+ }
+ if ($advance) {
+ if ($cycle_vars[$name]['index'] >= count($cycle_array) - 1) {
+ $cycle_vars[$name]['index'] = 0;
+ } else {
+ $cycle_vars[$name]['index']++;
+ }
+ }
+ return $retval;
+ }
+}
\ No newline at end of file
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/src/FunctionHandler/Fetch.php b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/src/FunctionHandler/Fetch.php
new file mode 100644
index 000000000..d10ef668f
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/src/FunctionHandler/Fetch.php
@@ -0,0 +1,203 @@
+
+ *
+ * @param array $params parameters
+ * @param Template $template template object
+ *
+ * @throws Exception
+ * @return string|null if the assign parameter is passed, Smarty assigns the result to a template variable
+ */
+class Fetch extends Base {
+
+ public function handle($params, Template $template) {
+ if (empty($params['file'])) {
+ trigger_error('[plugin] fetch parameter \'file\' cannot be empty', E_USER_NOTICE);
+ return;
+ }
+ // strip file protocol
+ if (stripos($params['file'], 'file://') === 0) {
+ $params['file'] = substr($params['file'], 7);
+ }
+ $protocol = strpos($params['file'], '://');
+ if ($protocol !== false) {
+ $protocol = strtolower(substr($params['file'], 0, $protocol));
+ }
+ if (isset($template->getSmarty()->security_policy)) {
+ if ($protocol) {
+ // remote resource (or php stream, …)
+ if (!$template->getSmarty()->security_policy->isTrustedUri($params['file'])) {
+ return;
+ }
+ } else {
+ // local file
+ if (!$template->getSmarty()->security_policy->isTrustedResourceDir($params['file'])) {
+ return;
+ }
+ }
+ }
+ $content = '';
+ if ($protocol === 'http') {
+ // http fetch
+ if ($uri_parts = parse_url($params['file'])) {
+ // set defaults
+ $host = $server_name = $uri_parts['host'];
+ $timeout = 30;
+ $accept = 'image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*';
+ $agent = 'Smarty Template Engine ' . \Smarty\Smarty::SMARTY_VERSION;
+ $referer = '';
+ $uri = !empty($uri_parts['path']) ? $uri_parts['path'] : '/';
+ $uri .= !empty($uri_parts['query']) ? '?' . $uri_parts['query'] : '';
+ $_is_proxy = false;
+ if (empty($uri_parts['port'])) {
+ $port = 80;
+ } else {
+ $port = $uri_parts['port'];
+ }
+ if (!empty($uri_parts['user'])) {
+ $user = $uri_parts['user'];
+ }
+ if (!empty($uri_parts['pass'])) {
+ $pass = $uri_parts['pass'];
+ }
+ // loop through parameters, setup headers
+ foreach ($params as $param_key => $param_value) {
+ switch ($param_key) {
+ case 'file':
+ case 'assign':
+ case 'assign_headers':
+ break;
+ case 'user':
+ if (!empty($param_value)) {
+ $user = $param_value;
+ }
+ break;
+ case 'pass':
+ if (!empty($param_value)) {
+ $pass = $param_value;
+ }
+ break;
+ case 'accept':
+ if (!empty($param_value)) {
+ $accept = $param_value;
+ }
+ break;
+ case 'header':
+ if (!empty($param_value)) {
+ if (!preg_match('![\w\d-]+: .+!', $param_value)) {
+ trigger_error("[plugin] invalid header format '{$param_value}'", E_USER_NOTICE);
+ return;
+ } else {
+ $extra_headers[] = $param_value;
+ }
+ }
+ break;
+ case 'proxy_host':
+ if (!empty($param_value)) {
+ $proxy_host = $param_value;
+ }
+ break;
+ case 'proxy_port':
+ if (!preg_match('!\D!', $param_value)) {
+ $proxy_port = (int)$param_value;
+ } else {
+ trigger_error("[plugin] invalid value for attribute '{$param_key }'", E_USER_NOTICE);
+ return;
+ }
+ break;
+ case 'agent':
+ if (!empty($param_value)) {
+ $agent = $param_value;
+ }
+ break;
+ case 'referer':
+ if (!empty($param_value)) {
+ $referer = $param_value;
+ }
+ break;
+ case 'timeout':
+ if (!preg_match('!\D!', $param_value)) {
+ $timeout = (int)$param_value;
+ } else {
+ trigger_error("[plugin] invalid value for attribute '{$param_key}'", E_USER_NOTICE);
+ return;
+ }
+ break;
+ default:
+ trigger_error("[plugin] unrecognized attribute '{$param_key}'", E_USER_NOTICE);
+ return;
+ }
+ }
+ if (!empty($proxy_host) && !empty($proxy_port)) {
+ $_is_proxy = true;
+ $fp = fsockopen($proxy_host, $proxy_port, $errno, $errstr, $timeout);
+ } else {
+ $fp = fsockopen($server_name, $port, $errno, $errstr, $timeout);
+ }
+ if (!$fp) {
+ trigger_error("[plugin] unable to fetch: $errstr ($errno)", E_USER_NOTICE);
+ return;
+ } else {
+ if ($_is_proxy) {
+ fputs($fp, 'GET ' . $params['file'] . " HTTP/1.0\r\n");
+ } else {
+ fputs($fp, "GET $uri HTTP/1.0\r\n");
+ }
+ if (!empty($host)) {
+ fputs($fp, "Host: $host\r\n");
+ }
+ if (!empty($accept)) {
+ fputs($fp, "Accept: $accept\r\n");
+ }
+ if (!empty($agent)) {
+ fputs($fp, "User-Agent: $agent\r\n");
+ }
+ if (!empty($referer)) {
+ fputs($fp, "Referer: $referer\r\n");
+ }
+ if (isset($extra_headers) && is_array($extra_headers)) {
+ foreach ($extra_headers as $curr_header) {
+ fputs($fp, $curr_header . "\r\n");
+ }
+ }
+ if (!empty($user) && !empty($pass)) {
+ fputs($fp, 'Authorization: BASIC ' . base64_encode("$user:$pass") . "\r\n");
+ }
+ fputs($fp, "\r\n");
+ while (!feof($fp)) {
+ $content .= fgets($fp, 4096);
+ }
+ fclose($fp);
+ $csplit = preg_split("!\r\n\r\n!", $content, 2);
+ $content = $csplit[1];
+ if (!empty($params['assign_headers'])) {
+ $template->assign($params['assign_headers'], preg_split("!\r\n!", $csplit[0]));
+ }
+ }
+ } else {
+ trigger_error("[plugin fetch] unable to parse URL, check syntax", E_USER_NOTICE);
+ return;
+ }
+ } else {
+ $content = @file_get_contents($params['file']);
+ if ($content === false) {
+ throw new Exception("{fetch} cannot read resource '" . $params['file'] . "'");
+ }
+ }
+ if (!empty($params['assign'])) {
+ $template->assign($params['assign'], $content);
+ } else {
+ return $content;
+ }
+ }
+}
\ No newline at end of file
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/src/FunctionHandler/FunctionHandlerInterface.php b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/src/FunctionHandler/FunctionHandlerInterface.php
new file mode 100644
index 000000000..ce77e13d2
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/src/FunctionHandler/FunctionHandlerInterface.php
@@ -0,0 +1,10 @@
+__toString();
+ } else {
+ trigger_error(
+ 'value is an object of class \'' . get_class($value) .
+ '\' without __toString() method',
+ E_USER_NOTICE
+ );
+ return '';
+ }
+ } else {
+ $value = (string)$value;
+ }
+ if (is_object($output)) {
+ if (method_exists($output, '__toString')) {
+ $output = (string)$output->__toString();
+ } else {
+ trigger_error(
+ 'output is an object of class \'' . get_class($output) .
+ '\' without __toString() method',
+ E_USER_NOTICE
+ );
+ return '';
+ }
+ } else {
+ $output = (string)$output;
+ }
+ if ($labels) {
+ if ($label_ids) {
+ $_id = smarty_function_escape_special_chars(
+ preg_replace(
+ '![^\w\-\.]!' . \Smarty\Smarty::$_UTF8_MODIFIER,
+ '_',
+ $name . '_' . $value
+ )
+ );
+ $_output .= '';
+ } else {
+ $_output .= '';
+ }
+ }
+ $name = smarty_function_escape_special_chars($name);
+ $value = smarty_function_escape_special_chars($value);
+ if ($escape) {
+ $output = smarty_function_escape_special_chars($output);
+ }
+ $_output .= ' ' . $output;
+ if ($labels) {
+ $_output .= ' ';
+ }
+ $_output .= $separator;
+ return $_output;
+ }
+
+}
\ No newline at end of file
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/src/FunctionHandler/HtmlCheckboxes.php b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/src/FunctionHandler/HtmlCheckboxes.php
new file mode 100644
index 000000000..45ecc40a1
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/src/FunctionHandler/HtmlCheckboxes.php
@@ -0,0 +1,189 @@
+' output=$names}
+ * {html_checkboxes values=$ids checked=$checked separator=' ' output=$names}
+ *
+ * Params:
+ *
+ * - name (optional) - string default "checkbox"
+ * - values (required) - array
+ * - options (optional) - associative array
+ * - checked (optional) - array default not set
+ * - separator (optional) - ie or
+ * - output (optional) - the output next to each checkbox
+ * - assign (optional) - assign the output as an array to this variable
+ * - escape (optional) - escape the content (not value), defaults to true
+ *
+ * @author Christopher Kvarme
+ * @author credits to Monte Ohrt
+ * @version 1.0
+ *
+ * @param array $params parameters
+ * @param Template $template template object
+ *
+ * @return string
+ * @uses smarty_function_escape_special_chars()
+ * @throws \Smarty\Exception
+ */
+class HtmlCheckboxes extends HtmlBase {
+
+ public function handle($params, Template $template) {
+ $name = 'checkbox';
+ $values = null;
+ $options = null;
+ $selected = [];
+ $separator = '';
+ $escape = true;
+ $labels = true;
+ $label_ids = false;
+ $output = null;
+ $extra = '';
+ foreach ($params as $_key => $_val) {
+ switch ($_key) {
+ case 'name':
+ case 'separator':
+ $$_key = (string)$_val;
+ break;
+ case 'escape':
+ case 'labels':
+ case 'label_ids':
+ $$_key = (bool)$_val;
+ break;
+ case 'options':
+ $$_key = (array)$_val;
+ break;
+ case 'values':
+ case 'output':
+ $$_key = array_values((array)$_val);
+ break;
+ case 'checked':
+ case 'selected':
+ if (is_array($_val)) {
+ $selected = [];
+ foreach ($_val as $_sel) {
+ if (is_object($_sel)) {
+ if (method_exists($_sel, '__toString')) {
+ $_sel = smarty_function_escape_special_chars((string)$_sel->__toString());
+ } else {
+ trigger_error(
+ 'html_checkboxes: selected attribute contains an object of class \'' .
+ get_class($_sel) . '\' without __toString() method',
+ E_USER_NOTICE
+ );
+ continue;
+ }
+ } else {
+ $_sel = smarty_function_escape_special_chars((string)$_sel);
+ }
+ $selected[$_sel] = true;
+ }
+ } elseif (is_object($_val)) {
+ if (method_exists($_val, '__toString')) {
+ $selected = smarty_function_escape_special_chars((string)$_val->__toString());
+ } else {
+ trigger_error(
+ 'html_checkboxes: selected attribute is an object of class \'' . get_class($_val) .
+ '\' without __toString() method',
+ E_USER_NOTICE
+ );
+ }
+ } else {
+ $selected = smarty_function_escape_special_chars((string)$_val);
+ }
+ break;
+ case 'checkboxes':
+ trigger_error(
+ 'html_checkboxes: the use of the "checkboxes" attribute is deprecated, use "options" instead',
+ E_USER_WARNING
+ );
+ $options = (array)$_val;
+ break;
+ case 'strict':
+ case 'assign':
+ break;
+ case 'disabled':
+ case 'readonly':
+ if (!empty($params['strict'])) {
+ if (!is_scalar($_val)) {
+ trigger_error(
+ "html_options: {$_key} attribute must be a scalar, only boolean true or string '{$_key}' will actually add the attribute",
+ E_USER_NOTICE
+ );
+ }
+ if ($_val === true || $_val === $_key) {
+ $extra .= ' ' . $_key . '="' . smarty_function_escape_special_chars($_key) . '"';
+ }
+ break;
+ }
+ // omit break; to fall through!
+ // no break
+ default:
+ if (!is_array($_val)) {
+ $extra .= ' ' . $_key . '="' . smarty_function_escape_special_chars($_val) . '"';
+ } else {
+ trigger_error("html_checkboxes: extra attribute '{$_key}' cannot be an array", E_USER_NOTICE);
+ }
+ break;
+ }
+ }
+ if (!isset($options) && !isset($values)) {
+ return '';
+ } /* raise error here? */
+ $_html_result = [];
+ if (isset($options)) {
+ foreach ($options as $_key => $_val) {
+ $_html_result[] =
+ $this->getHtmlForInput(
+ 'checkbox',
+ $name,
+ $_key,
+ $_val,
+ true,
+ $selected,
+ $extra,
+ $separator,
+ $labels,
+ $label_ids,
+ $escape
+ );
+ }
+ } else {
+ foreach ($values as $_i => $_key) {
+ $_val = isset($output[$_i]) ? $output[$_i] : '';
+ $_html_result[] =
+ $this->getHtmlForInput(
+ 'checkbox',
+ $name,
+ $_key,
+ $_val,
+ true,
+ $selected,
+ $extra,
+ $separator,
+ $labels,
+ $label_ids,
+ $escape
+ );
+ }
+ }
+ if (!empty($params['assign'])) {
+ $template->assign($params['assign'], $_html_result);
+ } else {
+ return implode("\n", $_html_result);
+ }
+ }
+
+}
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/src/FunctionHandler/HtmlImage.php b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/src/FunctionHandler/HtmlImage.php
new file mode 100644
index 000000000..9cb087456
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/src/FunctionHandler/HtmlImage.php
@@ -0,0 +1,149 @@
+
+ * Params:
+ *
+ * - file - (required) - file (and path) of image
+ * - height - (optional) - image height (default actual height)
+ * - width - (optional) - image width (default actual width)
+ * - basedir - (optional) - base directory for absolute paths, default is environment variable DOCUMENT_ROOT
+ * - path_prefix - prefix for path output (optional, default empty)
+ *
+ * @author Monte Ohrt
+ * @author credits to Duda
+ * @version 1.0
+ *
+ * @param array $params parameters
+ * @param Template $template template object
+ *
+ * @throws Exception
+ * @return string
+ * @uses smarty_function_escape_special_chars()
+ */
+class HtmlImage extends Base {
+
+ public function handle($params, Template $template) {
+ $alt = '';
+ $file = '';
+ $height = '';
+ $width = '';
+ $extra = '';
+ $prefix = '';
+ $suffix = '';
+ $path_prefix = '';
+ $basedir = $_SERVER['DOCUMENT_ROOT'] ?? '';
+ foreach ($params as $_key => $_val) {
+ switch ($_key) {
+ case 'file':
+ case 'height':
+ case 'width':
+ case 'dpi':
+ case 'path_prefix':
+ case 'basedir':
+ $$_key = $_val;
+ break;
+ case 'alt':
+ if (!is_array($_val)) {
+ $$_key = smarty_function_escape_special_chars($_val);
+ } else {
+ throw new Exception(
+ "html_image: extra attribute '{$_key}' cannot be an array",
+ E_USER_NOTICE
+ );
+ }
+ break;
+ case 'link':
+ case 'href':
+ $prefix = '';
+ $suffix = ' ';
+ break;
+ default:
+ if (!is_array($_val)) {
+ $extra .= ' ' . $_key . '="' . smarty_function_escape_special_chars($_val) . '"';
+ } else {
+ throw new Exception(
+ "html_image: extra attribute '{$_key}' cannot be an array",
+ E_USER_NOTICE
+ );
+ }
+ break;
+ }
+ }
+ if (empty($file)) {
+ trigger_error('html_image: missing \'file\' parameter', E_USER_NOTICE);
+ return;
+ }
+ if ($file[0] === '/') {
+ $_image_path = $basedir . $file;
+ } else {
+ $_image_path = $file;
+ }
+ // strip file protocol
+ if (stripos($params['file'], 'file://') === 0) {
+ $params['file'] = substr($params['file'], 7);
+ }
+ $protocol = strpos($params['file'], '://');
+ if ($protocol !== false) {
+ $protocol = strtolower(substr($params['file'], 0, $protocol));
+ }
+ if (isset($template->getSmarty()->security_policy)) {
+ if ($protocol) {
+ // remote resource (or php stream, …)
+ if (!$template->getSmarty()->security_policy->isTrustedUri($params['file'])) {
+ return;
+ }
+ } else {
+ // local file
+ if (!$template->getSmarty()->security_policy->isTrustedResourceDir($_image_path)) {
+ return;
+ }
+ }
+ }
+ if (!isset($params['width']) || !isset($params['height'])) {
+ // FIXME: (rodneyrehm) getimagesize() loads the complete file off a remote resource, use custom [jpg,png,gif]header reader!
+ if (!$_image_data = @getimagesize($_image_path)) {
+ if (!file_exists($_image_path)) {
+ trigger_error("html_image: unable to find '{$_image_path}'", E_USER_NOTICE);
+ return;
+ } elseif (!is_readable($_image_path)) {
+ trigger_error("html_image: unable to read '{$_image_path}'", E_USER_NOTICE);
+ return;
+ } else {
+ trigger_error("html_image: '{$_image_path}' is not a valid image file", E_USER_NOTICE);
+ return;
+ }
+ }
+ if (!isset($params['width'])) {
+ $width = $_image_data[0];
+ }
+ if (!isset($params['height'])) {
+ $height = $_image_data[1];
+ }
+ }
+ if (isset($params['dpi'])) {
+ if (strstr($_SERVER['HTTP_USER_AGENT'], 'Mac')) {
+ // FIXME: (rodneyrehm) wrong dpi assumption
+ // don't know who thought this up… even if it was true in 1998, it's definitely wrong in 2011.
+ $dpi_default = 72;
+ } else {
+ $dpi_default = 96;
+ }
+ $_resize = $dpi_default / $params['dpi'];
+ $width = round($width * $_resize);
+ $height = round($height * $_resize);
+ }
+ return $prefix . ' ' . $suffix;
+ }
+}
\ No newline at end of file
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/src/FunctionHandler/HtmlOptions.php b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/src/FunctionHandler/HtmlOptions.php
new file mode 100644
index 000000000..5346738b6
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/src/FunctionHandler/HtmlOptions.php
@@ -0,0 +1,223 @@
+ tags generated from
+ * the passed parameters
+ * Params:
+ *
+ * - name (optional) - string default "select"
+ * - values (required) - if no options supplied) - array
+ * - options (required) - if no values supplied) - associative array
+ * - selected (optional) - string default not set
+ * - output (required) - if not options supplied) - array
+ * - id (optional) - string default not set
+ * - class (optional) - string default not set
+ *
+ * @author Monte Ohrt
+ * @author Ralf Strehle (minor optimization)
+ *
+ * @param array $params parameters
+ *
+ * @param \Smarty\Template $template
+ *
+ * @return string
+ * @uses smarty_function_escape_special_chars()
+ * @throws \Smarty\Exception
+ */
+class HtmlOptions extends Base {
+
+ public function handle($params, Template $template) {
+ $name = null;
+ $values = null;
+ $options = null;
+ $selected = null;
+ $output = null;
+ $id = null;
+ $class = null;
+ $extra = '';
+ foreach ($params as $_key => $_val) {
+ switch ($_key) {
+ case 'name':
+ case 'class':
+ case 'id':
+ $$_key = (string)$_val;
+ break;
+ case 'options':
+ $options = (array)$_val;
+ break;
+ case 'values':
+ case 'output':
+ $$_key = array_values((array)$_val);
+ break;
+ case 'selected':
+ if (is_array($_val)) {
+ $selected = [];
+ foreach ($_val as $_sel) {
+ if (is_object($_sel)) {
+ if (method_exists($_sel, '__toString')) {
+ $_sel = smarty_function_escape_special_chars((string)$_sel->__toString());
+ } else {
+ trigger_error(
+ 'html_options: selected attribute contains an object of class \'' .
+ get_class($_sel) . '\' without __toString() method',
+ E_USER_NOTICE
+ );
+ continue;
+ }
+ } else {
+ $_sel = smarty_function_escape_special_chars((string)$_sel);
+ }
+ $selected[$_sel] = true;
+ }
+ } elseif (is_object($_val)) {
+ if (method_exists($_val, '__toString')) {
+ $selected = smarty_function_escape_special_chars((string)$_val->__toString());
+ } else {
+ trigger_error(
+ 'html_options: selected attribute is an object of class \'' . get_class($_val) .
+ '\' without __toString() method',
+ E_USER_NOTICE
+ );
+ }
+ } else {
+ $selected = smarty_function_escape_special_chars((string)$_val);
+ }
+ break;
+ case 'strict':
+ break;
+ case 'disabled':
+ case 'readonly':
+ if (!empty($params['strict'])) {
+ if (!is_scalar($_val)) {
+ trigger_error(
+ "html_options: {$_key} attribute must be a scalar, only boolean true or string '{$_key}' will actually add the attribute",
+ E_USER_NOTICE
+ );
+ }
+ if ($_val === true || $_val === $_key) {
+ $extra .= ' ' . $_key . '="' . smarty_function_escape_special_chars($_key) . '"';
+ }
+ break;
+ }
+ // omit break; to fall through!
+ // no break
+ default:
+ if (!is_array($_val)) {
+ $extra .= ' ' . $_key . '="' . smarty_function_escape_special_chars($_val) . '"';
+ } else {
+ trigger_error("html_options: extra attribute '{$_key}' cannot be an array", E_USER_NOTICE);
+ }
+ break;
+ }
+ }
+ if (!isset($options) && !isset($values)) {
+ /* raise error here? */
+ return '';
+ }
+ $_html_result = '';
+ $_idx = 0;
+ if (isset($options)) {
+ foreach ($options as $_key => $_val) {
+ $_html_result .= $this->output($_key, $_val, $selected, $id, $class, $_idx);
+ }
+ } else {
+ foreach ($values as $_i => $_key) {
+ $_val = $output[$_i] ?? '';
+ $_html_result .= $this->output($_key, $_val, $selected, $id, $class, $_idx);
+ }
+ }
+ if (!empty($name)) {
+ $_html_class = !empty($class) ? ' class="' . $class . '"' : '';
+ $_html_id = !empty($id) ? ' id="' . $id . '"' : '';
+ $_html_result =
+ '' . "\n" . $_html_result .
+ ' ' . "\n";
+ }
+ return $_html_result;
+ }
+
+
+ /**
+ * @param $key
+ * @param $value
+ * @param $selected
+ * @param $id
+ * @param $class
+ * @param $idx
+ *
+ * @return string
+ */
+ private function output($key, $value, $selected, $id, $class, &$idx)
+ {
+ if (!is_array($value)) {
+ $_key = smarty_function_escape_special_chars($key);
+ $_html_result = '__toString());
+ } else {
+ trigger_error(
+ 'html_options: value is an object of class \'' . get_class($value) .
+ '\' without __toString() method',
+ E_USER_NOTICE
+ );
+ return '';
+ }
+ } else {
+ $value = smarty_function_escape_special_chars((string)$value);
+ }
+ $_html_result .= $_html_class . $_html_id . '>' . $value . ' ' . "\n";
+ $idx++;
+ } else {
+ $_idx = 0;
+ $_html_result =
+ $this->getHtmlForOptGroup(
+ $key,
+ $value,
+ $selected,
+ !empty($id) ? ($id . '-' . $idx) : null,
+ $class,
+ $_idx
+ );
+ $idx++;
+ }
+ return $_html_result;
+ }
+
+ /**
+ * @param $key
+ * @param $values
+ * @param $selected
+ * @param $id
+ * @param $class
+ * @param $idx
+ *
+ * @return string
+ */
+ private function getHtmlForOptGroup($key, $values, $selected, $id, $class, &$idx)
+ {
+ $optgroup_html = '' . "\n";
+ foreach ($values as $key => $value) {
+ $optgroup_html .= $this->output($key, $value, $selected, $id, $class, $idx);
+ }
+ $optgroup_html .= " \n";
+ return $optgroup_html;
+ }
+
+}
+
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/src/FunctionHandler/HtmlRadios.php b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/src/FunctionHandler/HtmlRadios.php
new file mode 100644
index 000000000..544c5c7d4
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/src/FunctionHandler/HtmlRadios.php
@@ -0,0 +1,174 @@
+ or
+ * - output (optional) - the output next to each radio button
+ * - assign (optional) - assign the output as an array to this variable
+ * - escape (optional) - escape the content (not value), defaults to true
+ *
+ * Examples:
+ *
+ * {html_radios values=$ids output=$names}
+ * {html_radios values=$ids name='box' separator=' ' output=$names}
+ * {html_radios values=$ids checked=$checked separator=' ' output=$names}
+ *
+ * @author Christopher Kvarme
+ * @author credits to Monte Ohrt
+ * @version 1.0
+ *
+ * @param array $params parameters
+ * @param Template $template template object
+ *
+ * @return string
+ * @uses smarty_function_escape_special_chars()
+ * @throws \Smarty\Exception
+ */
+class HtmlRadios extends HtmlBase {
+
+ public function handle($params, Template $template) {
+ $name = 'radio';
+ $values = null;
+ $options = null;
+ $selected = null;
+ $separator = '';
+ $escape = true;
+ $labels = true;
+ $label_ids = false;
+ $output = null;
+ $extra = '';
+ foreach ($params as $_key => $_val) {
+ switch ($_key) {
+ case 'name':
+ case 'separator':
+ $$_key = (string)$_val;
+ break;
+ case 'checked':
+ case 'selected':
+ if (is_array($_val)) {
+ trigger_error('html_radios: the "' . $_key . '" attribute cannot be an array', E_USER_WARNING);
+ } elseif (is_object($_val)) {
+ if (method_exists($_val, '__toString')) {
+ $selected = smarty_function_escape_special_chars((string)$_val->__toString());
+ } else {
+ trigger_error(
+ 'html_radios: selected attribute is an object of class \'' . get_class($_val) .
+ '\' without __toString() method',
+ E_USER_NOTICE
+ );
+ }
+ } else {
+ $selected = (string)$_val;
+ }
+ break;
+ case 'escape':
+ case 'labels':
+ case 'label_ids':
+ $$_key = (bool)$_val;
+ break;
+ case 'options':
+ $$_key = (array)$_val;
+ break;
+ case 'values':
+ case 'output':
+ $$_key = array_values((array)$_val);
+ break;
+ case 'radios':
+ trigger_error(
+ 'html_radios: the use of the "radios" attribute is deprecated, use "options" instead',
+ E_USER_WARNING
+ );
+ $options = (array)$_val;
+ break;
+ case 'strict':
+ case 'assign':
+ break;
+ case 'disabled':
+ case 'readonly':
+ if (!empty($params['strict'])) {
+ if (!is_scalar($_val)) {
+ trigger_error(
+ "html_options: {$_key} attribute must be a scalar, only boolean true or string '$_key' will actually add the attribute",
+ E_USER_NOTICE
+ );
+ }
+ if ($_val === true || $_val === $_key) {
+ $extra .= ' ' . $_key . '="' . smarty_function_escape_special_chars($_key) . '"';
+ }
+ break;
+ }
+ // omit break; to fall through!
+ // no break
+ default:
+ if (!is_array($_val)) {
+ $extra .= ' ' . $_key . '="' . smarty_function_escape_special_chars($_val) . '"';
+ } else {
+ trigger_error("html_radios: extra attribute '{$_key}' cannot be an array", E_USER_NOTICE);
+ }
+ break;
+ }
+ }
+ if (!isset($options) && !isset($values)) {
+ /* raise error here? */
+ return '';
+ }
+ $_html_result = [];
+ if (isset($options)) {
+ foreach ($options as $_key => $_val) {
+ $_html_result[] =
+ $this->getHtmlForInput(
+ 'radio',
+ $name,
+ $_key,
+ $_val,
+ false,
+ $selected,
+ $extra,
+ $separator,
+ $labels,
+ $label_ids,
+ $escape
+ );
+ }
+ } else {
+ foreach ($values as $_i => $_key) {
+ $_val = $output[$_i] ?? '';
+ $_html_result[] =
+ $this->getHtmlForInput(
+ 'radio',
+ $name,
+ $_key,
+ $_val,
+ false,
+ $selected,
+ $extra,
+ $separator,
+ $labels,
+ $label_ids,
+ $escape
+ );
+ }
+ }
+ if (!empty($params['assign'])) {
+ $template->assign($params['assign'], $_html_result);
+ } else {
+ return implode("\n", $_html_result);
+ }
+ }
+
+
+}
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/src/FunctionHandler/HtmlSelectDate.php b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/src/FunctionHandler/HtmlSelectDate.php
new file mode 100644
index 000000000..a6acfb7bd
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/src/FunctionHandler/HtmlSelectDate.php
@@ -0,0 +1,381 @@
+
+ * @author Rodney Rehm
+ *
+ * @param array $params parameters
+ *
+ * @param \Smarty\Template $template
+ *
+ * @return string
+ * @throws \Smarty\Exception
+ */
+class HtmlSelectDate extends Base {
+
+ public function handle($params, Template $template) {
+ // generate timestamps used for month names only
+ static $_month_timestamps = null;
+ static $_current_year = null;
+ if ($_month_timestamps === null) {
+ $_current_year = date('Y');
+ $_month_timestamps = [];
+ for ($i = 1; $i <= 12; $i++) {
+ $_month_timestamps[$i] = mktime(0, 0, 0, $i, 1, 2000);
+ }
+ }
+ /* Default values. */
+ $prefix = 'Date_';
+ $start_year = null;
+ $end_year = null;
+ $display_days = true;
+ $display_months = true;
+ $display_years = true;
+ $month_format = '%B';
+ /* Write months as numbers by default GL */
+ $month_value_format = '%m';
+ $day_format = '%02d';
+ /* Write day values using this format MB */
+ $day_value_format = '%d';
+ $year_as_text = false;
+ /* Display years in reverse order? Ie. 2000,1999,.... */
+ $reverse_years = false;
+ /* Should the select boxes be part of an array when returned from PHP?
+ e.g. setting it to "birthday", would create "birthday[Day]",
+ "birthday[Month]" & "birthday[Year]". Can be combined with prefix */
+ $field_array = null;
+ /* 's of the different tags.
+ If not set, uses default dropdown. */
+ $day_size = null;
+ $month_size = null;
+ $year_size = null;
+ /* Unparsed attributes common to *ALL* the / tags.
+ An example might be in the template: all_extra ='class ="foo"'. */
+ $all_extra = null;
+ /* Separate attributes for the tags. */
+ $day_extra = null;
+ $month_extra = null;
+ $year_extra = null;
+ /* Order in which to display the fields.
+ "D" -> day, "M" -> month, "Y" -> year. */
+ $field_order = 'MDY';
+ /* String printed between the different fields. */
+ $field_separator = "\n";
+ $option_separator = "\n";
+ $time = null;
+
+ // $all_empty = null;
+ // $day_empty = null;
+ // $month_empty = null;
+ // $year_empty = null;
+ $extra_attrs = '';
+ $all_id = null;
+ $day_id = null;
+ $month_id = null;
+ $year_id = null;
+ foreach ($params as $_key => $_value) {
+ switch ($_key) {
+ case 'time':
+ $$_key = $_value; // we'll handle conversion below
+ break;
+ case 'month_names':
+ if (is_array($_value) && count($_value) === 12) {
+ $$_key = $_value;
+ } else {
+ trigger_error('html_select_date: month_names must be an array of 12 strings', E_USER_NOTICE);
+ }
+ break;
+ case 'prefix':
+ case 'field_array':
+ case 'start_year':
+ case 'end_year':
+ case 'day_format':
+ case 'day_value_format':
+ case 'month_format':
+ case 'month_value_format':
+ case 'day_size':
+ case 'month_size':
+ case 'year_size':
+ case 'all_extra':
+ case 'day_extra':
+ case 'month_extra':
+ case 'year_extra':
+ case 'field_order':
+ case 'field_separator':
+ case 'option_separator':
+ case 'all_empty':
+ case 'month_empty':
+ case 'day_empty':
+ case 'year_empty':
+ case 'all_id':
+ case 'month_id':
+ case 'day_id':
+ case 'year_id':
+ $$_key = (string)$_value;
+ break;
+ case 'display_days':
+ case 'display_months':
+ case 'display_years':
+ case 'year_as_text':
+ case 'reverse_years':
+ $$_key = (bool)$_value;
+ break;
+ default:
+ if (!is_array($_value)) {
+ $extra_attrs .= ' ' . $_key . '="' . smarty_function_escape_special_chars($_value) . '"';
+ } else {
+ trigger_error("html_select_date: extra attribute '{$_key}' cannot be an array", E_USER_NOTICE);
+ }
+ break;
+ }
+ }
+ // Note: date() is faster than strftime()
+ // Note: explode(date()) is faster than date() date() date()
+
+ if (isset($time) && is_array($time)) {
+ if (isset($time[$prefix . 'Year'])) {
+ // $_REQUEST[$field_array] given
+ foreach ([
+ 'Y' => 'Year',
+ 'm' => 'Month',
+ 'd' => 'Day'
+ ] as $_elementKey => $_elementName) {
+ $_variableName = '_' . strtolower($_elementName);
+ $$_variableName =
+ $time[$prefix . $_elementName] ?? date($_elementKey);
+ }
+ } elseif (isset($time[$field_array][$prefix . 'Year'])) {
+ // $_REQUEST given
+ foreach ([
+ 'Y' => 'Year',
+ 'm' => 'Month',
+ 'd' => 'Day'
+ ] as $_elementKey => $_elementName) {
+ $_variableName = '_' . strtolower($_elementName);
+ $$_variableName = $time[$field_array][$prefix . $_elementName] ?? date($_elementKey);
+ }
+ } else {
+ // no date found, use NOW
+ [$_year, $_month, $_day] = explode('-', date('Y-m-d'));
+ }
+ } elseif (isset($time) && preg_match("/(\d*)-(\d*)-(\d*)/", $time, $matches)) {
+ $_year = $_month = $_day = null;
+ if ($matches[1] > '') {
+ $_year = (int)$matches[1];
+ }
+ if ($matches[2] > '') {
+ $_month = (int)$matches[2];
+ }
+ if ($matches[3] > '') {
+ $_day = (int)$matches[3];
+ }
+ } elseif ($time === null) {
+ if (array_key_exists('time', $params)) {
+ $_year = $_month = $_day = null;
+ } else {
+ [$_year, $_month, $_day] = explode('-', date('Y-m-d'));
+ }
+ } else {
+ $time = smarty_make_timestamp($time);
+ [$_year, $_month, $_day] = explode('-', date('Y-m-d', $time));
+ }
+
+ // make syntax "+N" or "-N" work with $start_year and $end_year
+ // Note preg_match('!^(\+|\-)\s*(\d+)$!', $end_year, $match) is slower than trim+substr
+ foreach ([
+ 'start',
+ 'end'
+ ] as $key) {
+ $key .= '_year';
+ $t = $$key;
+ if ($t === null) {
+ $$key = (int)$_current_year;
+ } elseif ($t[0] === '+') {
+ $$key = (int)($_current_year + (int)trim(substr($t, 1)));
+ } elseif ($t[0] === '-') {
+ $$key = (int)($_current_year - (int)trim(substr($t, 1)));
+ } else {
+ $$key = (int)$$key;
+ }
+ }
+ // flip for ascending or descending
+ if (($start_year > $end_year && !$reverse_years) || ($start_year < $end_year && $reverse_years)) {
+ $t = $end_year;
+ $end_year = $start_year;
+ $start_year = $t;
+ }
+ // generate year or
+ if ($display_years) {
+ $_extra = '';
+ $_name = $field_array ? ($field_array . '[' . $prefix . 'Year]') : ($prefix . 'Year');
+ if ($all_extra) {
+ $_extra .= ' ' . $all_extra;
+ }
+ if ($year_extra) {
+ $_extra .= ' ' . $year_extra;
+ }
+ if ($year_as_text) {
+ $_html_years =
+ ' ';
+ } else {
+ $_html_years = '' . $option_separator;
+ if (isset($year_empty) || isset($all_empty)) {
+ $_html_years .= '' . (isset($year_empty) ? $year_empty : $all_empty) . ' ' .
+ $option_separator;
+ }
+ $op = $start_year > $end_year ? -1 : 1;
+ for ($i = $start_year; $op > 0 ? $i <= $end_year : $i >= $end_year; $i += $op) {
+ $_html_years .= '' . $i .
+ ' ' . $option_separator;
+ }
+ $_html_years .= ' ';
+ }
+ }
+ // generate month or
+ if ($display_months) {
+ $_extra = '';
+ $_name = $field_array ? ($field_array . '[' . $prefix . 'Month]') : ($prefix . 'Month');
+ if ($all_extra) {
+ $_extra .= ' ' . $all_extra;
+ }
+ if ($month_extra) {
+ $_extra .= ' ' . $month_extra;
+ }
+ $_html_months = '' . $option_separator;
+ if (isset($month_empty) || isset($all_empty)) {
+ $_html_months .= '' . (isset($month_empty) ? $month_empty : $all_empty) . ' ' .
+ $option_separator;
+ }
+ for ($i = 1; $i <= 12; $i++) {
+ $_val = sprintf('%02d', $i);
+ $_text = isset($month_names) ? smarty_function_escape_special_chars($month_names[$i]) :
+ ($month_format === '%m' ? $_val : @strftime($month_format, $_month_timestamps[$i]));
+ $_value = $month_value_format === '%m' ? $_val : @strftime($month_value_format, $_month_timestamps[$i]);
+ $_html_months .= '' . $_text . ' ' . $option_separator;
+ }
+ $_html_months .= ' ';
+ }
+ // generate day or
+ if ($display_days) {
+ $_extra = '';
+ $_name = $field_array ? ($field_array . '[' . $prefix . 'Day]') : ($prefix . 'Day');
+ if ($all_extra) {
+ $_extra .= ' ' . $all_extra;
+ }
+ if ($day_extra) {
+ $_extra .= ' ' . $day_extra;
+ }
+ $_html_days = '' . $option_separator;
+ if (isset($day_empty) || isset($all_empty)) {
+ $_html_days .= '' . (isset($day_empty) ? $day_empty : $all_empty) . ' ' .
+ $option_separator;
+ }
+ for ($i = 1; $i <= 31; $i++) {
+ $_val = sprintf('%02d', $i);
+ $_text = $day_format === '%02d' ? $_val : sprintf($day_format, $i);
+ $_value = $day_value_format === '%02d' ? $_val : sprintf($day_value_format, $i);
+ $_html_days .= '' .
+ $_text . ' ' . $option_separator;
+ }
+ $_html_days .= ' ';
+ }
+ // order the fields for output
+ $_html = '';
+ for ($i = 0; $i <= 2; $i++) {
+ switch ($field_order[$i]) {
+ case 'Y':
+ case 'y':
+ if (isset($_html_years)) {
+ if ($_html) {
+ $_html .= $field_separator;
+ }
+ $_html .= $_html_years;
+ }
+ break;
+ case 'm':
+ case 'M':
+ if (isset($_html_months)) {
+ if ($_html) {
+ $_html .= $field_separator;
+ }
+ $_html .= $_html_months;
+ }
+ break;
+ case 'd':
+ case 'D':
+ if (isset($_html_days)) {
+ if ($_html) {
+ $_html .= $field_separator;
+ }
+ $_html .= $_html_days;
+ }
+ break;
+ }
+ }
+ return $_html;
+ }
+}
\ No newline at end of file
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/src/FunctionHandler/HtmlSelectTime.php b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/src/FunctionHandler/HtmlSelectTime.php
new file mode 100644
index 000000000..40679c10c
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/src/FunctionHandler/HtmlSelectTime.php
@@ -0,0 +1,334 @@
+
+ * @author Monte Ohrt
+ *
+ * @param array $params parameters
+ *
+ * @param \Smarty\Template $template
+ *
+ * @return string
+ * @uses smarty_make_timestamp()
+ * @throws \Smarty\Exception
+ */
+class HtmlSelectTime extends Base {
+
+ public function handle($params, Template $template) {
+ $prefix = 'Time_';
+ $field_array = null;
+ $field_separator = "\n";
+ $option_separator = "\n";
+ $time = null;
+ $display_hours = true;
+ $display_minutes = true;
+ $display_seconds = true;
+ $display_meridian = true;
+ $hour_format = '%02d';
+ $hour_value_format = '%02d';
+ $minute_format = '%02d';
+ $minute_value_format = '%02d';
+ $second_format = '%02d';
+ $second_value_format = '%02d';
+ $hour_size = null;
+ $minute_size = null;
+ $second_size = null;
+ $meridian_size = null;
+ $all_empty = null;
+ $hour_empty = null;
+ $minute_empty = null;
+ $second_empty = null;
+ $meridian_empty = null;
+ $all_id = null;
+ $hour_id = null;
+ $minute_id = null;
+ $second_id = null;
+ $meridian_id = null;
+ $use_24_hours = true;
+ $minute_interval = 1;
+ $second_interval = 1;
+ $extra_attrs = '';
+ $all_extra = null;
+ $hour_extra = null;
+ $minute_extra = null;
+ $second_extra = null;
+ $meridian_extra = null;
+ foreach ($params as $_key => $_value) {
+ switch ($_key) {
+ case 'time':
+ if (!is_array($_value) && $_value !== null) {
+ $time = smarty_make_timestamp($_value);
+ }
+ break;
+ case 'prefix':
+ case 'field_array':
+ case 'field_separator':
+ case 'option_separator':
+ case 'all_extra':
+ case 'hour_extra':
+ case 'minute_extra':
+ case 'second_extra':
+ case 'meridian_extra':
+ case 'all_empty':
+ case 'hour_empty':
+ case 'minute_empty':
+ case 'second_empty':
+ case 'meridian_empty':
+ case 'all_id':
+ case 'hour_id':
+ case 'minute_id':
+ case 'second_id':
+ case 'meridian_id':
+ case 'hour_format':
+ case 'hour_value_format':
+ case 'minute_format':
+ case 'minute_value_format':
+ case 'second_format':
+ case 'second_value_format':
+ $$_key = (string)$_value;
+ break;
+ case 'display_hours':
+ case 'display_minutes':
+ case 'display_seconds':
+ case 'display_meridian':
+ case 'use_24_hours':
+ $$_key = (bool)$_value;
+ break;
+ case 'minute_interval':
+ case 'second_interval':
+ case 'hour_size':
+ case 'minute_size':
+ case 'second_size':
+ case 'meridian_size':
+ $$_key = (int)$_value;
+ break;
+ default:
+ if (!is_array($_value)) {
+ $extra_attrs .= ' ' . $_key . '="' . smarty_function_escape_special_chars($_value) . '"';
+ } else {
+ trigger_error("html_select_date: extra attribute '{$_key}' cannot be an array", E_USER_NOTICE);
+ }
+ break;
+ }
+ }
+ if (isset($params['time']) && is_array($params['time'])) {
+ if (isset($params['time'][$prefix . 'Hour'])) {
+ // $_REQUEST[$field_array] given
+ foreach ([
+ 'H' => 'Hour',
+ 'i' => 'Minute',
+ 's' => 'Second'
+ ] as $_elementKey => $_elementName) {
+ $_variableName = '_' . strtolower($_elementName);
+ $$_variableName =
+ $params['time'][$prefix . $_elementName] ?? date($_elementKey);
+ }
+ $_meridian =
+ isset($params['time'][$prefix . 'Meridian']) ? (' ' . $params['time'][$prefix . 'Meridian']) :
+ '';
+ $time = strtotime($_hour . ':' . $_minute . ':' . $_second . $_meridian);
+ [$_hour, $_minute, $_second] = $time = explode('-', date('H-i-s', $time));
+ } elseif (isset($params['time'][$field_array][$prefix . 'Hour'])) {
+ // $_REQUEST given
+ foreach ([
+ 'H' => 'Hour',
+ 'i' => 'Minute',
+ 's' => 'Second'
+ ] as $_elementKey => $_elementName) {
+ $_variableName = '_' . strtolower($_elementName);
+ $$_variableName = $params['time'][$field_array][$prefix . $_elementName] ?? date($_elementKey);
+ }
+ $_meridian = isset($params['time'][$field_array][$prefix . 'Meridian']) ?
+ (' ' . $params['time'][$field_array][$prefix . 'Meridian']) : '';
+ $time = strtotime($_hour . ':' . $_minute . ':' . $_second . $_meridian);
+ [$_hour, $_minute, $_second] = $time = explode('-', date('H-i-s', $time));
+ } else {
+ // no date found, use NOW
+ [$_year, $_month, $_day] = $time = explode('-', date('Y-m-d'));
+ }
+ } elseif ($time === null) {
+ if (array_key_exists('time', $params)) {
+ $_hour = $_minute = $_second = $time = null;
+ } else {
+ [$_hour, $_minute, $_second] = $time = explode('-', date('H-i-s'));
+ }
+ } else {
+ [$_hour, $_minute, $_second] = $time = explode('-', date('H-i-s', $time));
+ }
+ // generate hour
+ if ($display_hours) {
+ $_html_hours = '';
+ $_extra = '';
+ $_name = $field_array ? ($field_array . '[' . $prefix . 'Hour]') : ($prefix . 'Hour');
+ if ($all_extra) {
+ $_extra .= ' ' . $all_extra;
+ }
+ if ($hour_extra) {
+ $_extra .= ' ' . $hour_extra;
+ }
+ $_html_hours = '' . $option_separator;
+ if (isset($hour_empty) || isset($all_empty)) {
+ $_html_hours .= '' . (isset($hour_empty) ? $hour_empty : $all_empty) . ' ' .
+ $option_separator;
+ }
+ $start = $use_24_hours ? 0 : 1;
+ $end = $use_24_hours ? 23 : 12;
+ for ($i = $start; $i <= $end; $i++) {
+ $_val = sprintf('%02d', $i);
+ $_text = $hour_format === '%02d' ? $_val : sprintf($hour_format, $i);
+ $_value = $hour_value_format === '%02d' ? $_val : sprintf($hour_value_format, $i);
+ if (!$use_24_hours) {
+ $_hour12 = $_hour == 0 ? 12 : ($_hour <= 12 ? $_hour : $_hour - 12);
+ }
+ $selected = $_hour !== null ? ($use_24_hours ? $_hour == $_val : $_hour12 == $_val) : null;
+ $_html_hours .= '' .
+ $_text . ' ' . $option_separator;
+ }
+ $_html_hours .= ' ';
+ }
+ // generate minute
+ if ($display_minutes) {
+ $_html_minutes = '';
+ $_extra = '';
+ $_name = $field_array ? ($field_array . '[' . $prefix . 'Minute]') : ($prefix . 'Minute');
+ if ($all_extra) {
+ $_extra .= ' ' . $all_extra;
+ }
+ if ($minute_extra) {
+ $_extra .= ' ' . $minute_extra;
+ }
+ $_html_minutes = '' . $option_separator;
+ if (isset($minute_empty) || isset($all_empty)) {
+ $_html_minutes .= '' . (isset($minute_empty) ? $minute_empty : $all_empty) . ' ' .
+ $option_separator;
+ }
+ $selected = $_minute !== null ? ($_minute - $_minute % $minute_interval) : null;
+ for ($i = 0; $i <= 59; $i += $minute_interval) {
+ $_val = sprintf('%02d', $i);
+ $_text = $minute_format === '%02d' ? $_val : sprintf($minute_format, $i);
+ $_value = $minute_value_format === '%02d' ? $_val : sprintf($minute_value_format, $i);
+ $_html_minutes .= '' . $_text . ' ' . $option_separator;
+ }
+ $_html_minutes .= ' ';
+ }
+ // generate second
+ if ($display_seconds) {
+ $_html_seconds = '';
+ $_extra = '';
+ $_name = $field_array ? ($field_array . '[' . $prefix . 'Second]') : ($prefix . 'Second');
+ if ($all_extra) {
+ $_extra .= ' ' . $all_extra;
+ }
+ if ($second_extra) {
+ $_extra .= ' ' . $second_extra;
+ }
+ $_html_seconds = '' . $option_separator;
+ if (isset($second_empty) || isset($all_empty)) {
+ $_html_seconds .= '' . (isset($second_empty) ? $second_empty : $all_empty) . ' ' .
+ $option_separator;
+ }
+ $selected = $_second !== null ? ($_second - $_second % $second_interval) : null;
+ for ($i = 0; $i <= 59; $i += $second_interval) {
+ $_val = sprintf('%02d', $i);
+ $_text = $second_format === '%02d' ? $_val : sprintf($second_format, $i);
+ $_value = $second_value_format === '%02d' ? $_val : sprintf($second_value_format, $i);
+ $_html_seconds .= '' . $_text . ' ' . $option_separator;
+ }
+ $_html_seconds .= ' ';
+ }
+ // generate meridian
+ if ($display_meridian && !$use_24_hours) {
+ $_html_meridian = '';
+ $_extra = '';
+ $_name = $field_array ? ($field_array . '[' . $prefix . 'Meridian]') : ($prefix . 'Meridian');
+ if ($all_extra) {
+ $_extra .= ' ' . $all_extra;
+ }
+ if ($meridian_extra) {
+ $_extra .= ' ' . $meridian_extra;
+ }
+ $_html_meridian = '' . $option_separator;
+ if (isset($meridian_empty) || isset($all_empty)) {
+ $_html_meridian .= '' . (isset($meridian_empty) ? $meridian_empty : $all_empty) .
+ ' ' . $option_separator;
+ }
+ $_html_meridian .= ' 0 && $_hour < 12 ? ' selected="selected"' : '') .
+ '>AM ' . $option_separator . 'PM ' . $option_separator .
+ ' ';
+ }
+ $_html = '';
+ foreach ([
+ '_html_hours',
+ '_html_minutes',
+ '_html_seconds',
+ '_html_meridian'
+ ] as $k) {
+ if (isset($$k)) {
+ if ($_html) {
+ $_html .= $field_separator;
+ }
+ $_html .= $$k;
+ }
+ }
+ return $_html;
+ }
+}
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/src/FunctionHandler/HtmlTable.php b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/src/FunctionHandler/HtmlTable.php
new file mode 100644
index 000000000..d5d147053
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/src/FunctionHandler/HtmlTable.php
@@ -0,0 +1,161 @@
+
+ * @version 1.1
+ *
+ * @author Monte Ohrt
+ * @author credit to Messju Mohr
+ */
+class HtmlTable extends Base {
+
+ public function handle($params, Template $template) {
+ $table_attr = 'border="1"';
+ $tr_attr = '';
+ $th_attr = '';
+ $td_attr = '';
+ $cols = $cols_count = 3;
+ $rows = 3;
+ $trailpad = ' ';
+ $vdir = 'down';
+ $hdir = 'right';
+ $inner = 'cols';
+ $caption = '';
+ $loop = null;
+ if (!isset($params['loop'])) {
+ trigger_error("html_table: missing 'loop' parameter", E_USER_WARNING);
+ return;
+ }
+ foreach ($params as $_key => $_value) {
+ switch ($_key) {
+ case 'loop':
+ $$_key = (array)$_value;
+ break;
+ case 'cols':
+ if (is_array($_value) && !empty($_value)) {
+ $cols = $_value;
+ $cols_count = count($_value);
+ } elseif (!is_numeric($_value) && is_string($_value) && !empty($_value)) {
+ $cols = explode(',', $_value);
+ $cols_count = count($cols);
+ } elseif (!empty($_value)) {
+ $cols_count = (int)$_value;
+ } else {
+ $cols_count = $cols;
+ }
+ break;
+ case 'rows':
+ $$_key = (int)$_value;
+ break;
+ case 'table_attr':
+ case 'trailpad':
+ case 'hdir':
+ case 'vdir':
+ case 'inner':
+ case 'caption':
+ $$_key = (string)$_value;
+ break;
+ case 'tr_attr':
+ case 'td_attr':
+ case 'th_attr':
+ $$_key = $_value;
+ break;
+ }
+ }
+ $loop_count = count($loop);
+ if (empty($params['rows'])) {
+ /* no rows specified */
+ $rows = ceil($loop_count / $cols_count);
+ } elseif (empty($params['cols'])) {
+ if (!empty($params['rows'])) {
+ /* no cols specified, but rows */
+ $cols_count = ceil($loop_count / $rows);
+ }
+ }
+ $output = "\n";
+ if (!empty($caption)) {
+ $output .= '' . $caption . " \n";
+ }
+ if (is_array($cols)) {
+ $cols = ($hdir === 'right') ? $cols : array_reverse($cols);
+ $output .= "\n";
+ for ($r = 0; $r < $cols_count; $r++) {
+ $output .= 'cycle('th', $th_attr, $r) . '>';
+ $output .= $cols[$r];
+ $output .= " \n";
+ }
+ $output .= " \n";
+ }
+ $output .= "\n";
+ for ($r = 0; $r < $rows; $r++) {
+ $output .= "cycle('tr', $tr_attr, $r) . ">\n";
+ $rx = ($vdir === 'down') ? $r * $cols_count : ($rows - 1 - $r) * $cols_count;
+ for ($c = 0; $c < $cols_count; $c++) {
+ $x = ($hdir === 'right') ? $rx + $c : $rx + $cols_count - 1 - $c;
+ if ($inner !== 'cols') {
+ /* shuffle x to loop over rows*/
+ $x = floor($x / $cols_count) + ($x % $cols_count) * $rows;
+ }
+ if ($x < $loop_count) {
+ $output .= "cycle('td', $td_attr, $c) . ">" . $loop[$x] . " \n";
+ } else {
+ $output .= "cycle('td', $td_attr, $c) . ">$trailpad \n";
+ }
+ }
+ $output .= " \n";
+ }
+ $output .= " \n";
+ $output .= "
\n";
+ return $output;
+ }
+
+ /**
+ * @param $name
+ * @param $var
+ * @param $no
+ *
+ * @return string
+ */
+ private function cycle($name, $var, $no) {
+ if (!is_array($var)) {
+ $ret = $var;
+ } else {
+ $ret = $var[$no % count($var)];
+ }
+ return ($ret) ? ' ' . $ret : '';
+ }
+}
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/src/FunctionHandler/Mailto.php b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/src/FunctionHandler/Mailto.php
new file mode 100644
index 000000000..eb35c48eb
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/src/FunctionHandler/Mailto.php
@@ -0,0 +1,141 @@
+
+ * @author credits to Jason Sweat (added cc, bcc and subject functionality)
+ *
+ * @param array $params parameters
+ *
+ * @return string
+ */
+class Mailto extends Base {
+
+ public function handle($params, Template $template) {
+ static $_allowed_encoding = [
+ 'javascript' => true,
+ 'javascript_charcode' => true,
+ 'hex' => true,
+ 'none' => true
+ ];
+
+ $extra = '';
+ if (empty($params['address'])) {
+ trigger_error("mailto: missing 'address' parameter", E_USER_WARNING);
+ return;
+ } else {
+ $address = $params['address'];
+ }
+
+ $text = $address;
+
+ // netscape and mozilla do not decode %40 (@) in BCC field (bug?)
+ // so, don't encode it.
+ $mail_parms = [];
+ foreach ($params as $var => $value) {
+ switch ($var) {
+ case 'cc':
+ case 'bcc':
+ case 'followupto':
+ if (!empty($value)) {
+ $mail_parms[] = $var . '=' . str_replace(['%40', '%2C'], ['@', ','], rawurlencode($value));
+ }
+ break;
+ case 'subject':
+ case 'newsgroups':
+ $mail_parms[] = $var . '=' . rawurlencode($value);
+ break;
+ case 'extra':
+ case 'text':
+ $$var = $value;
+ // no break
+ default:
+ }
+ }
+
+ if ($mail_parms) {
+ $address .= '?' . join('&', $mail_parms);
+ }
+ $encode = (empty($params['encode'])) ? 'none' : $params['encode'];
+ if (!isset($_allowed_encoding[$encode])) {
+ trigger_error(
+ "mailto: 'encode' parameter must be none, javascript, javascript_charcode or hex",
+ E_USER_WARNING
+ );
+ return;
+ }
+
+ $string = '' . htmlspecialchars($text, ENT_QUOTES | ENT_SUBSTITUTE | ENT_HTML401, \Smarty\Smarty::$_CHARSET) . ' ';
+
+ if ($encode === 'javascript') {
+ $js_encode = '';
+ for ($x = 0, $_length = strlen($string); $x < $_length; $x++) {
+ $js_encode .= '%' . bin2hex($string[$x]);
+ }
+ return '';
+ } elseif ($encode === 'javascript_charcode') {
+ for ($x = 0, $_length = strlen($string); $x < $_length; $x++) {
+ $ord[] = ord($string[$x]);
+ }
+ return '';
+ } elseif ($encode === 'hex') {
+ preg_match('!^(.*)(\?.*)$!', $address, $match);
+ if (!empty($match[2])) {
+ trigger_error("mailto: hex encoding does not work with extra attributes. Try javascript.", E_USER_WARNING);
+ return;
+ }
+ $address_encode = '';
+ for ($x = 0, $_length = strlen($address); $x < $_length; $x++) {
+ if (preg_match('!\w!' . \Smarty\Smarty::$_UTF8_MODIFIER, $address[$x])) {
+ $address_encode .= '%' . bin2hex($address[$x]);
+ } else {
+ $address_encode .= $address[$x];
+ }
+ }
+ $text_encode = '';
+ for ($x = 0, $_length = strlen($text); $x < $_length; $x++) {
+ $text_encode .= '' . bin2hex($text[$x]) . ';';
+ }
+ $mailto = "mailto:";
+ return '' . $text_encode . ' ';
+ } else {
+ // no encoding
+ return $string;
+ }
+ }
+}
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/src/FunctionHandler/Math.php b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/src/FunctionHandler/Math.php
new file mode 100644
index 000000000..23ef9253d
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/src/FunctionHandler/Math.php
@@ -0,0 +1,140 @@
+
+ *
+ * @param array $params parameters
+ * @param Template $template template object
+ *
+ * @return string|null
+ */
+class Math extends Base {
+
+ public function handle($params, Template $template) {
+ static $_allowed_funcs =
+ [
+ 'int' => true,
+ 'abs' => true,
+ 'ceil' => true,
+ 'acos' => true,
+ 'acosh' => true,
+ 'cos' => true,
+ 'cosh' => true,
+ 'deg2rad' => true,
+ 'rad2deg' => true,
+ 'exp' => true,
+ 'floor' => true,
+ 'log' => true,
+ 'log10' => true,
+ 'max' => true,
+ 'min' => true,
+ 'pi' => true,
+ 'pow' => true,
+ 'rand' => true,
+ 'round' => true,
+ 'asin' => true,
+ 'asinh' => true,
+ 'sin' => true,
+ 'sinh' => true,
+ 'sqrt' => true,
+ 'srand' => true,
+ 'atan' => true,
+ 'atanh' => true,
+ 'tan' => true,
+ 'tanh' => true
+ ];
+
+ // be sure equation parameter is present
+ if (empty($params['equation'])) {
+ trigger_error("math: missing equation parameter", E_USER_WARNING);
+ return;
+ }
+ $equation = $params['equation'];
+
+ // Remove whitespaces
+ $equation = preg_replace('/\s+/', '', $equation);
+
+ // Adapted from https://www.php.net/manual/en/function.eval.php#107377
+ $number = '-?(?:\d+(?:[,.]\d+)?|pi|Ï€)'; // What is a number
+ $functionsOrVars = '((?:0x[a-fA-F0-9]+)|([a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*))';
+ $operators = '[,+\/*\^%-]'; // Allowed math operators
+ $regexp = '/^((' . $number . '|' . $functionsOrVars . '|(' . $functionsOrVars . '\s*\((?1)*\)|\((?1)*\)))(?:' . $operators . '(?1))?)+$/';
+
+ if (!preg_match($regexp, $equation)) {
+ trigger_error("math: illegal characters", E_USER_WARNING);
+ return;
+ }
+
+ // make sure parenthesis are balanced
+ if (substr_count($equation, '(') !== substr_count($equation, ')')) {
+ trigger_error("math: unbalanced parenthesis", E_USER_WARNING);
+ return;
+ }
+
+ // disallow backticks
+ if (strpos($equation, '`') !== false) {
+ trigger_error("math: backtick character not allowed in equation", E_USER_WARNING);
+ return;
+ }
+
+ // also disallow dollar signs
+ if (strpos($equation, '$') !== false) {
+ trigger_error("math: dollar signs not allowed in equation", E_USER_WARNING);
+ return;
+ }
+ foreach ($params as $key => $val) {
+ if ($key !== 'equation' && $key !== 'format' && $key !== 'assign') {
+ // make sure value is not empty
+ if (strlen($val) === 0) {
+ trigger_error("math: parameter '{$key}' is empty", E_USER_WARNING);
+ return;
+ }
+ if (!is_numeric($val)) {
+ trigger_error("math: parameter '{$key}' is not numeric", E_USER_WARNING);
+ return;
+ }
+ }
+ }
+ // match all vars in equation, make sure all are passed
+ preg_match_all('!(?:0x[a-fA-F0-9]+)|([a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*)!', $equation, $match);
+ foreach ($match[1] as $curr_var) {
+ if ($curr_var && !isset($params[$curr_var]) && !isset($_allowed_funcs[$curr_var])) {
+ trigger_error(
+ "math: function call '{$curr_var}' not allowed, or missing parameter '{$curr_var}'",
+ E_USER_WARNING
+ );
+ return;
+ }
+ }
+ foreach ($params as $key => $val) {
+ if ($key !== 'equation' && $key !== 'format' && $key !== 'assign') {
+ $equation = preg_replace("/\b$key\b/", " \$params['$key'] ", $equation);
+ }
+ }
+ $smarty_math_result = null;
+ eval("\$smarty_math_result = " . $equation . ";");
+
+ if (empty($params['format'])) {
+ if (empty($params['assign'])) {
+ return $smarty_math_result;
+ } else {
+ $template->assign($params['assign'], $smarty_math_result);
+ }
+ } else {
+ if (empty($params['assign'])) {
+ printf($params['format'], $smarty_math_result);
+ } else {
+ $template->assign($params['assign'], sprintf($params['format'], $smarty_math_result));
+ }
+ }
+ }
+}
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/src/Lexer/ConfigfileLexer.php b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/src/Lexer/ConfigfileLexer.php
new file mode 100644
index 000000000..d592c8238
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/src/Lexer/ConfigfileLexer.php
@@ -0,0 +1,707 @@
+ 'START', 2 => 'VALUE', 3 => 'NAKED_STRING_VALUE', 4 => 'COMMENT', 5 => 'SECTION', 6 => 'TRIPPLE');
+
+ /**
+ * storage for assembled token patterns
+ *
+ * @var string
+ */
+ private $yy_global_pattern1 = null;
+ private $yy_global_pattern2 = null;
+ private $yy_global_pattern3 = null;
+ private $yy_global_pattern4 = null;
+ private $yy_global_pattern5 = null;
+ private $yy_global_pattern6 = null;
+
+ /**
+ * token names
+ *
+ * @var array
+ */
+ public $smarty_token_names = array( // Text for parser error messages
+ );
+
+ /**
+ * constructor
+ *
+ * @param string $data template source
+ * @param \Smarty\Compiler\Configfile $compiler
+ */
+ public function __construct($data, \Smarty\Compiler\Configfile $compiler)
+ {
+ $this->data = $data . "\n"; //now all lines are \n-terminated
+ $this->dataLength = strlen($data);
+ $this->counter = 0;
+ if (preg_match('/^\xEF\xBB\xBF/', $this->data, $match)) {
+ $this->counter += strlen($match[0]);
+ }
+ $this->line = 1;
+ $this->compiler = $compiler;
+ $this->smarty = $compiler->smarty;
+ $this->configBooleanize = $this->smarty->config_booleanize;
+ }
+
+ public function replace ($input) {
+ return $input;
+ }
+
+ public function PrintTrace()
+ {
+ $this->yyTraceFILE = fopen('php://output', 'w');
+ $this->yyTracePrompt = ' ';
+ }
+
+
+
+ private $_yy_state = 1;
+ private $_yy_stack = array();
+
+ public function yylex()
+ {
+ return $this->{'yylex' . $this->_yy_state}();
+ }
+
+ public function yypushstate($state)
+ {
+ if ($this->yyTraceFILE) {
+ fprintf($this->yyTraceFILE, "%sState push %s\n", $this->yyTracePrompt, isset($this->state_name[$this->_yy_state]) ? $this->state_name[$this->_yy_state] : $this->_yy_state);
+ }
+ array_push($this->_yy_stack, $this->_yy_state);
+ $this->_yy_state = $state;
+ if ($this->yyTraceFILE) {
+ fprintf($this->yyTraceFILE, "%snew State %s\n", $this->yyTracePrompt, isset($this->state_name[$this->_yy_state]) ? $this->state_name[$this->_yy_state] : $this->_yy_state);
+ }
+ }
+
+ public function yypopstate()
+ {
+ if ($this->yyTraceFILE) {
+ fprintf($this->yyTraceFILE, "%sState pop %s\n", $this->yyTracePrompt, isset($this->state_name[$this->_yy_state]) ? $this->state_name[$this->_yy_state] : $this->_yy_state);
+ }
+ $this->_yy_state = array_pop($this->_yy_stack);
+ if ($this->yyTraceFILE) {
+ fprintf($this->yyTraceFILE, "%snew State %s\n", $this->yyTracePrompt, isset($this->state_name[$this->_yy_state]) ? $this->state_name[$this->_yy_state] : $this->_yy_state);
+ }
+
+ }
+
+ public function yybegin($state)
+ {
+ $this->_yy_state = $state;
+ if ($this->yyTraceFILE) {
+ fprintf($this->yyTraceFILE, "%sState set %s\n", $this->yyTracePrompt, isset($this->state_name[$this->_yy_state]) ? $this->state_name[$this->_yy_state] : $this->_yy_state);
+ }
+ }
+
+
+
+
+ public function yylex1()
+ {
+ if (!isset($this->yy_global_pattern1)) {
+ $this->yy_global_pattern1 = $this->replace("/\G(#|;)|\G(\\[)|\G(\\])|\G(=)|\G([ \t\r]+)|\G(\n)|\G([0-9]*[a-zA-Z_]\\w*)|\G([\S\s])/isS");
+ }
+ if (!isset($this->dataLength)) {
+ $this->dataLength = strlen($this->data);
+ }
+ if ($this->counter >= $this->dataLength) {
+ return false; // end of input
+ }
+
+ do {
+ if (preg_match($this->yy_global_pattern1,$this->data, $yymatches, 0, $this->counter)) {
+ if (!isset($yymatches[ 0 ][1])) {
+ $yymatches = preg_grep("/(.|\s)+/", $yymatches);
+ } else {
+ $yymatches = array_filter($yymatches);
+ }
+ if (empty($yymatches)) {
+ throw new Exception('Error: lexing failed because a rule matched' .
+ ' an empty string. Input "' . substr($this->data,
+ $this->counter, 5) . '... state START');
+ }
+ next($yymatches); // skip global match
+ $this->token = key($yymatches); // token number
+ $this->value = current($yymatches); // token value
+ $r = $this->{'yy_r1_' . $this->token}();
+ if ($r === null) {
+ $this->counter += strlen($this->value);
+ $this->line += substr_count($this->value, "\n");
+ // accept this token
+ return true;
+ } elseif ($r === true) {
+ // we have changed state
+ // process this token in the new state
+ return $this->yylex();
+ } elseif ($r === false) {
+ $this->counter += strlen($this->value);
+ $this->line += substr_count($this->value, "\n");
+ if ($this->counter >= $this->dataLength) {
+ return false; // end of input
+ }
+ // skip this token
+ continue;
+ } } else {
+ throw new Exception('Unexpected input at line' . $this->line .
+ ': ' . $this->data[$this->counter]);
+ }
+ break;
+ } while (true);
+
+ } // end function
+
+
+ const START = 1;
+ public function yy_r1_1()
+ {
+
+ $this->token = \Smarty\Parser\ConfigfileParser::TPC_COMMENTSTART;
+ $this->yypushstate(self::COMMENT);
+ }
+ public function yy_r1_2()
+ {
+
+ $this->token = \Smarty\Parser\ConfigfileParser::TPC_OPENB;
+ $this->yypushstate(self::SECTION);
+ }
+ public function yy_r1_3()
+ {
+
+ $this->token = \Smarty\Parser\ConfigfileParser::TPC_CLOSEB;
+ }
+ public function yy_r1_4()
+ {
+
+ $this->token = \Smarty\Parser\ConfigfileParser::TPC_EQUAL;
+ $this->yypushstate(self::VALUE);
+ }
+ public function yy_r1_5()
+ {
+
+ return false;
+ }
+ public function yy_r1_6()
+ {
+
+ $this->token = \Smarty\Parser\ConfigfileParser::TPC_NEWLINE;
+ }
+ public function yy_r1_7()
+ {
+
+ $this->token = \Smarty\Parser\ConfigfileParser::TPC_ID;
+ }
+ public function yy_r1_8()
+ {
+
+ $this->token = \Smarty\Parser\ConfigfileParser::TPC_OTHER;
+ }
+
+
+
+ public function yylex2()
+ {
+ if (!isset($this->yy_global_pattern2)) {
+ $this->yy_global_pattern2 = $this->replace("/\G([ \t\r]+)|\G(\\d+\\.\\d+(?=[ \t\r]*[\n#;]))|\G(\\d+(?=[ \t\r]*[\n#;]))|\G(\"\"\")|\G('[^'\\\\]*(?:\\\\.[^'\\\\]*)*'(?=[ \t\r]*[\n#;]))|\G(\"[^\"\\\\]*(?:\\\\.[^\"\\\\]*)*\"(?=[ \t\r]*[\n#;]))|\G([a-zA-Z]+(?=[ \t\r]*[\n#;]))|\G([^\n]+?(?=[ \t\r]*\n))|\G(\n)/isS");
+ }
+ if (!isset($this->dataLength)) {
+ $this->dataLength = strlen($this->data);
+ }
+ if ($this->counter >= $this->dataLength) {
+ return false; // end of input
+ }
+
+ do {
+ if (preg_match($this->yy_global_pattern2,$this->data, $yymatches, 0, $this->counter)) {
+ if (!isset($yymatches[ 0 ][1])) {
+ $yymatches = preg_grep("/(.|\s)+/", $yymatches);
+ } else {
+ $yymatches = array_filter($yymatches);
+ }
+ if (empty($yymatches)) {
+ throw new Exception('Error: lexing failed because a rule matched' .
+ ' an empty string. Input "' . substr($this->data,
+ $this->counter, 5) . '... state VALUE');
+ }
+ next($yymatches); // skip global match
+ $this->token = key($yymatches); // token number
+ $this->value = current($yymatches); // token value
+ $r = $this->{'yy_r2_' . $this->token}();
+ if ($r === null) {
+ $this->counter += strlen($this->value);
+ $this->line += substr_count($this->value, "\n");
+ // accept this token
+ return true;
+ } elseif ($r === true) {
+ // we have changed state
+ // process this token in the new state
+ return $this->yylex();
+ } elseif ($r === false) {
+ $this->counter += strlen($this->value);
+ $this->line += substr_count($this->value, "\n");
+ if ($this->counter >= $this->dataLength) {
+ return false; // end of input
+ }
+ // skip this token
+ continue;
+ } } else {
+ throw new Exception('Unexpected input at line' . $this->line .
+ ': ' . $this->data[$this->counter]);
+ }
+ break;
+ } while (true);
+
+ } // end function
+
+
+ const VALUE = 2;
+ public function yy_r2_1()
+ {
+
+ return false;
+ }
+ public function yy_r2_2()
+ {
+
+ $this->token = \Smarty\Parser\ConfigfileParser::TPC_FLOAT;
+ $this->yypopstate();
+ }
+ public function yy_r2_3()
+ {
+
+ $this->token = \Smarty\Parser\ConfigfileParser::TPC_INT;
+ $this->yypopstate();
+ }
+ public function yy_r2_4()
+ {
+
+ $this->token = \Smarty\Parser\ConfigfileParser::TPC_TRIPPLE_QUOTES;
+ $this->yypushstate(self::TRIPPLE);
+ }
+ public function yy_r2_5()
+ {
+
+ $this->token = \Smarty\Parser\ConfigfileParser::TPC_SINGLE_QUOTED_STRING;
+ $this->yypopstate();
+ }
+ public function yy_r2_6()
+ {
+
+ $this->token = \Smarty\Parser\ConfigfileParser::TPC_DOUBLE_QUOTED_STRING;
+ $this->yypopstate();
+ }
+ public function yy_r2_7()
+ {
+
+ if (!$this->configBooleanize || !in_array(strtolower($this->value), array('true', 'false', 'on', 'off', 'yes', 'no')) ) {
+ $this->yypopstate();
+ $this->yypushstate(self::NAKED_STRING_VALUE);
+ return true; //reprocess in new state
+ } else {
+ $this->token = \Smarty\Parser\ConfigfileParser::TPC_BOOL;
+ $this->yypopstate();
+ }
+ }
+ public function yy_r2_8()
+ {
+
+ $this->token = \Smarty\Parser\ConfigfileParser::TPC_NAKED_STRING;
+ $this->yypopstate();
+ }
+ public function yy_r2_9()
+ {
+
+ $this->token = \Smarty\Parser\ConfigfileParser::TPC_NAKED_STRING;
+ $this->value = '';
+ $this->yypopstate();
+ }
+
+
+
+ public function yylex3()
+ {
+ if (!isset($this->yy_global_pattern3)) {
+ $this->yy_global_pattern3 = $this->replace("/\G([^\n]+?(?=[ \t\r]*\n))/isS");
+ }
+ if (!isset($this->dataLength)) {
+ $this->dataLength = strlen($this->data);
+ }
+ if ($this->counter >= $this->dataLength) {
+ return false; // end of input
+ }
+
+ do {
+ if (preg_match($this->yy_global_pattern3,$this->data, $yymatches, 0, $this->counter)) {
+ if (!isset($yymatches[ 0 ][1])) {
+ $yymatches = preg_grep("/(.|\s)+/", $yymatches);
+ } else {
+ $yymatches = array_filter($yymatches);
+ }
+ if (empty($yymatches)) {
+ throw new Exception('Error: lexing failed because a rule matched' .
+ ' an empty string. Input "' . substr($this->data,
+ $this->counter, 5) . '... state NAKED_STRING_VALUE');
+ }
+ next($yymatches); // skip global match
+ $this->token = key($yymatches); // token number
+ $this->value = current($yymatches); // token value
+ $r = $this->{'yy_r3_' . $this->token}();
+ if ($r === null) {
+ $this->counter += strlen($this->value);
+ $this->line += substr_count($this->value, "\n");
+ // accept this token
+ return true;
+ } elseif ($r === true) {
+ // we have changed state
+ // process this token in the new state
+ return $this->yylex();
+ } elseif ($r === false) {
+ $this->counter += strlen($this->value);
+ $this->line += substr_count($this->value, "\n");
+ if ($this->counter >= $this->dataLength) {
+ return false; // end of input
+ }
+ // skip this token
+ continue;
+ } } else {
+ throw new Exception('Unexpected input at line' . $this->line .
+ ': ' . $this->data[$this->counter]);
+ }
+ break;
+ } while (true);
+
+ } // end function
+
+
+ const NAKED_STRING_VALUE = 3;
+ public function yy_r3_1()
+ {
+
+ $this->token = \Smarty\Parser\ConfigfileParser::TPC_NAKED_STRING;
+ $this->yypopstate();
+ }
+
+
+
+ public function yylex4()
+ {
+ if (!isset($this->yy_global_pattern4)) {
+ $this->yy_global_pattern4 = $this->replace("/\G([ \t\r]+)|\G([^\n]+?(?=[ \t\r]*\n))|\G(\n)/isS");
+ }
+ if (!isset($this->dataLength)) {
+ $this->dataLength = strlen($this->data);
+ }
+ if ($this->counter >= $this->dataLength) {
+ return false; // end of input
+ }
+
+ do {
+ if (preg_match($this->yy_global_pattern4,$this->data, $yymatches, 0, $this->counter)) {
+ if (!isset($yymatches[ 0 ][1])) {
+ $yymatches = preg_grep("/(.|\s)+/", $yymatches);
+ } else {
+ $yymatches = array_filter($yymatches);
+ }
+ if (empty($yymatches)) {
+ throw new Exception('Error: lexing failed because a rule matched' .
+ ' an empty string. Input "' . substr($this->data,
+ $this->counter, 5) . '... state COMMENT');
+ }
+ next($yymatches); // skip global match
+ $this->token = key($yymatches); // token number
+ $this->value = current($yymatches); // token value
+ $r = $this->{'yy_r4_' . $this->token}();
+ if ($r === null) {
+ $this->counter += strlen($this->value);
+ $this->line += substr_count($this->value, "\n");
+ // accept this token
+ return true;
+ } elseif ($r === true) {
+ // we have changed state
+ // process this token in the new state
+ return $this->yylex();
+ } elseif ($r === false) {
+ $this->counter += strlen($this->value);
+ $this->line += substr_count($this->value, "\n");
+ if ($this->counter >= $this->dataLength) {
+ return false; // end of input
+ }
+ // skip this token
+ continue;
+ } } else {
+ throw new Exception('Unexpected input at line' . $this->line .
+ ': ' . $this->data[$this->counter]);
+ }
+ break;
+ } while (true);
+
+ } // end function
+
+
+ const COMMENT = 4;
+ public function yy_r4_1()
+ {
+
+ return false;
+ }
+ public function yy_r4_2()
+ {
+
+ $this->token = \Smarty\Parser\ConfigfileParser::TPC_NAKED_STRING;
+ }
+ public function yy_r4_3()
+ {
+
+ $this->token = \Smarty\Parser\ConfigfileParser::TPC_NEWLINE;
+ $this->yypopstate();
+ }
+
+
+
+ public function yylex5()
+ {
+ if (!isset($this->yy_global_pattern5)) {
+ $this->yy_global_pattern5 = $this->replace("/\G(\\.)|\G(.*?(?=[\.=[\]\r\n]))/isS");
+ }
+ if (!isset($this->dataLength)) {
+ $this->dataLength = strlen($this->data);
+ }
+ if ($this->counter >= $this->dataLength) {
+ return false; // end of input
+ }
+
+ do {
+ if (preg_match($this->yy_global_pattern5,$this->data, $yymatches, 0, $this->counter)) {
+ if (!isset($yymatches[ 0 ][1])) {
+ $yymatches = preg_grep("/(.|\s)+/", $yymatches);
+ } else {
+ $yymatches = array_filter($yymatches);
+ }
+ if (empty($yymatches)) {
+ throw new Exception('Error: lexing failed because a rule matched' .
+ ' an empty string. Input "' . substr($this->data,
+ $this->counter, 5) . '... state SECTION');
+ }
+ next($yymatches); // skip global match
+ $this->token = key($yymatches); // token number
+ $this->value = current($yymatches); // token value
+ $r = $this->{'yy_r5_' . $this->token}();
+ if ($r === null) {
+ $this->counter += strlen($this->value);
+ $this->line += substr_count($this->value, "\n");
+ // accept this token
+ return true;
+ } elseif ($r === true) {
+ // we have changed state
+ // process this token in the new state
+ return $this->yylex();
+ } elseif ($r === false) {
+ $this->counter += strlen($this->value);
+ $this->line += substr_count($this->value, "\n");
+ if ($this->counter >= $this->dataLength) {
+ return false; // end of input
+ }
+ // skip this token
+ continue;
+ } } else {
+ throw new Exception('Unexpected input at line' . $this->line .
+ ': ' . $this->data[$this->counter]);
+ }
+ break;
+ } while (true);
+
+ } // end function
+
+
+ const SECTION = 5;
+ public function yy_r5_1()
+ {
+
+ $this->token = \Smarty\Parser\ConfigfileParser::TPC_DOT;
+ }
+ public function yy_r5_2()
+ {
+
+ $this->token = \Smarty\Parser\ConfigfileParser::TPC_SECTION;
+ $this->yypopstate();
+ }
+
+
+ public function yylex6()
+ {
+ if (!isset($this->yy_global_pattern6)) {
+ $this->yy_global_pattern6 = $this->replace("/\G(\"\"\"(?=[ \t\r]*[\n#;]))|\G([\S\s])/isS");
+ }
+ if (!isset($this->dataLength)) {
+ $this->dataLength = strlen($this->data);
+ }
+ if ($this->counter >= $this->dataLength) {
+ return false; // end of input
+ }
+
+ do {
+ if (preg_match($this->yy_global_pattern6,$this->data, $yymatches, 0, $this->counter)) {
+ if (!isset($yymatches[ 0 ][1])) {
+ $yymatches = preg_grep("/(.|\s)+/", $yymatches);
+ } else {
+ $yymatches = array_filter($yymatches);
+ }
+ if (empty($yymatches)) {
+ throw new Exception('Error: lexing failed because a rule matched' .
+ ' an empty string. Input "' . substr($this->data,
+ $this->counter, 5) . '... state TRIPPLE');
+ }
+ next($yymatches); // skip global match
+ $this->token = key($yymatches); // token number
+ $this->value = current($yymatches); // token value
+ $r = $this->{'yy_r6_' . $this->token}();
+ if ($r === null) {
+ $this->counter += strlen($this->value);
+ $this->line += substr_count($this->value, "\n");
+ // accept this token
+ return true;
+ } elseif ($r === true) {
+ // we have changed state
+ // process this token in the new state
+ return $this->yylex();
+ } elseif ($r === false) {
+ $this->counter += strlen($this->value);
+ $this->line += substr_count($this->value, "\n");
+ if ($this->counter >= $this->dataLength) {
+ return false; // end of input
+ }
+ // skip this token
+ continue;
+ } } else {
+ throw new Exception('Unexpected input at line' . $this->line .
+ ': ' . $this->data[$this->counter]);
+ }
+ break;
+ } while (true);
+
+ } // end function
+
+
+ const TRIPPLE = 6;
+ public function yy_r6_1()
+ {
+
+ $this->token = \Smarty\Parser\ConfigfileParser::TPC_TRIPPLE_QUOTES_END;
+ $this->yypopstate();
+ $this->yypushstate(self::START);
+ }
+ public function yy_r6_2()
+ {
+
+ $to = strlen($this->data);
+ preg_match("/\"\"\"[ \t\r]*[\n#;]/",$this->data,$match,PREG_OFFSET_CAPTURE,$this->counter);
+ if (isset($match[0][1])) {
+ $to = $match[0][1];
+ } else {
+ $this->compiler->trigger_config_file_error ('missing or misspelled literal closing tag');
+ }
+ $this->value = substr($this->data,$this->counter,$to-$this->counter);
+ $this->token = \Smarty\Parser\ConfigfileParser::TPC_TRIPPLE_TEXT;
+ }
+
+
+}
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/src/Lexer/ConfigfileLexer.plex b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/src/Lexer/ConfigfileLexer.plex
new file mode 100644
index 000000000..a895050c4
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/src/Lexer/ConfigfileLexer.plex
@@ -0,0 +1,321 @@
+ 'START', 2 => 'VALUE', 3 => 'NAKED_STRING_VALUE', 4 => 'COMMENT', 5 => 'SECTION', 6 => 'TRIPPLE');
+
+ /**
+ * storage for assembled token patterns
+ *
+ * @var string
+ */
+ private $yy_global_pattern1 = null;
+ private $yy_global_pattern2 = null;
+ private $yy_global_pattern3 = null;
+ private $yy_global_pattern4 = null;
+ private $yy_global_pattern5 = null;
+ private $yy_global_pattern6 = null;
+
+ /**
+ * token names
+ *
+ * @var array
+ */
+ public $smarty_token_names = array( // Text for parser error messages
+ );
+
+ /**
+ * constructor
+ *
+ * @param string $data template source
+ * @param \Smarty\Compiler\Configfile $compiler
+ */
+ public function __construct($data, \Smarty\Compiler\Configfile $compiler)
+ {
+ $this->data = $data . "\n"; //now all lines are \n-terminated
+ $this->dataLength = strlen($data);
+ $this->counter = 0;
+ if (preg_match('/^\xEF\xBB\xBF/', $this->data, $match)) {
+ $this->counter += strlen($match[0]);
+ }
+ $this->line = 1;
+ $this->compiler = $compiler;
+ $this->smarty = $compiler->smarty;
+ $this->configBooleanize = $this->smarty->config_booleanize;
+ }
+
+ public function replace ($input) {
+ return $input;
+ }
+
+ public function PrintTrace()
+ {
+ $this->yyTraceFILE = fopen('php://output', 'w');
+ $this->yyTracePrompt = ' ';
+ }
+
+
+/*!lex2php
+%input $this->data
+%counter $this->counter
+%token $this->token
+%value $this->value
+%line $this->line
+commentstart = /#|;/
+openB = /\[/
+closeB = /\]/
+section = /.*?(?=[\.=\[\]\r\n])/
+equal = /=/
+whitespace = /[ \t\r]+/
+dot = /\./
+id = /[0-9]*[a-zA-Z_]\w*/
+newline = /\n/
+single_quoted_string = /'[^'\\]*(?:\\.[^'\\]*)*'(?=[ \t\r]*[\n#;])/
+double_quoted_string = /"[^"\\]*(?:\\.[^"\\]*)*"(?=[ \t\r]*[\n#;])/
+tripple_quotes = /"""/
+tripple_quotes_end = /"""(?=[ \t\r]*[\n#;])/
+text = /[\S\s]/
+float = /\d+\.\d+(?=[ \t\r]*[\n#;])/
+int = /\d+(?=[ \t\r]*[\n#;])/
+maybe_bool = /[a-zA-Z]+(?=[ \t\r]*[\n#;])/
+naked_string = /[^\n]+?(?=[ \t\r]*\n)/
+*/
+
+/*!lex2php
+%statename START
+
+commentstart {
+ $this->token = \Smarty\Parser\ConfigfileParser::TPC_COMMENTSTART;
+ $this->yypushstate(self::COMMENT);
+}
+openB {
+ $this->token = \Smarty\Parser\ConfigfileParser::TPC_OPENB;
+ $this->yypushstate(self::SECTION);
+}
+closeB {
+ $this->token = \Smarty\Parser\ConfigfileParser::TPC_CLOSEB;
+}
+equal {
+ $this->token = \Smarty\Parser\ConfigfileParser::TPC_EQUAL;
+ $this->yypushstate(self::VALUE);
+}
+whitespace {
+ return false;
+}
+newline {
+ $this->token = \Smarty\Parser\ConfigfileParser::TPC_NEWLINE;
+}
+id {
+ $this->token = \Smarty\Parser\ConfigfileParser::TPC_ID;
+}
+text {
+ $this->token = \Smarty\Parser\ConfigfileParser::TPC_OTHER;
+}
+
+*/
+
+/*!lex2php
+%statename VALUE
+
+whitespace {
+ return false;
+}
+float {
+ $this->token = \Smarty\Parser\ConfigfileParser::TPC_FLOAT;
+ $this->yypopstate();
+}
+int {
+ $this->token = \Smarty\Parser\ConfigfileParser::TPC_INT;
+ $this->yypopstate();
+}
+tripple_quotes {
+ $this->token = \Smarty\Parser\ConfigfileParser::TPC_TRIPPLE_QUOTES;
+ $this->yypushstate(self::TRIPPLE);
+}
+single_quoted_string {
+ $this->token = \Smarty\Parser\ConfigfileParser::TPC_SINGLE_QUOTED_STRING;
+ $this->yypopstate();
+}
+double_quoted_string {
+ $this->token = \Smarty\Parser\ConfigfileParser::TPC_DOUBLE_QUOTED_STRING;
+ $this->yypopstate();
+}
+maybe_bool {
+ if (!$this->configBooleanize || !in_array(strtolower($this->value), array('true', 'false', 'on', 'off', 'yes', 'no')) ) {
+ $this->yypopstate();
+ $this->yypushstate(self::NAKED_STRING_VALUE);
+ return true; //reprocess in new state
+ } else {
+ $this->token = \Smarty\Parser\ConfigfileParser::TPC_BOOL;
+ $this->yypopstate();
+ }
+}
+naked_string {
+ $this->token = \Smarty\Parser\ConfigfileParser::TPC_NAKED_STRING;
+ $this->yypopstate();
+}
+newline {
+ $this->token = \Smarty\Parser\ConfigfileParser::TPC_NAKED_STRING;
+ $this->value = '';
+ $this->yypopstate();
+}
+
+*/
+
+/*!lex2php
+%statename NAKED_STRING_VALUE
+
+naked_string {
+ $this->token = \Smarty\Parser\ConfigfileParser::TPC_NAKED_STRING;
+ $this->yypopstate();
+}
+
+*/
+
+/*!lex2php
+%statename COMMENT
+
+whitespace {
+ return false;
+}
+naked_string {
+ $this->token = \Smarty\Parser\ConfigfileParser::TPC_NAKED_STRING;
+}
+newline {
+ $this->token = \Smarty\Parser\ConfigfileParser::TPC_NEWLINE;
+ $this->yypopstate();
+}
+
+*/
+
+/*!lex2php
+%statename SECTION
+
+dot {
+ $this->token = \Smarty\Parser\ConfigfileParser::TPC_DOT;
+}
+section {
+ $this->token = \Smarty\Parser\ConfigfileParser::TPC_SECTION;
+ $this->yypopstate();
+}
+
+*/
+/*!lex2php
+%statename TRIPPLE
+
+tripple_quotes_end {
+ $this->token = \Smarty\Parser\ConfigfileParser::TPC_TRIPPLE_QUOTES_END;
+ $this->yypopstate();
+ $this->yypushstate(self::START);
+}
+text {
+ $to = strlen($this->data);
+ preg_match("/\"\"\"[ \t\r]*[\n#;]/",$this->data,$match,PREG_OFFSET_CAPTURE,$this->counter);
+ if (isset($match[0][1])) {
+ $to = $match[0][1];
+ } else {
+ $this->compiler->trigger_config_file_error ('missing or misspelled literal closing tag');
+ }
+ $this->value = substr($this->data,$this->counter,$to-$this->counter);
+ $this->token = \Smarty\Parser\ConfigfileParser::TPC_TRIPPLE_TEXT;
+}
+*/
+
+}
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/src/Lexer/TemplateLexer.php b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/src/Lexer/TemplateLexer.php
new file mode 100644
index 000000000..2e7f33055
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/src/Lexer/TemplateLexer.php
@@ -0,0 +1,1083 @@
+
+ */
+class TemplateLexer
+{
+ /**
+ * Source
+ *
+ * @var string
+ */
+ public $data;
+
+ /**
+ * Source length
+ *
+ * @var int
+ */
+ public $dataLength = null;
+
+ /**
+ * byte counter
+ *
+ * @var int
+ */
+ public $counter;
+
+ /**
+ * token number
+ *
+ * @var int
+ */
+ public $token;
+
+ /**
+ * token value
+ *
+ * @var string
+ */
+ public $value;
+
+ /**
+ * current line
+ *
+ * @var int
+ */
+ public $line;
+
+ /**
+ * tag start line
+ *
+ * @var
+ */
+ public $taglineno;
+
+ /**
+ * state number
+ *
+ * @var int
+ */
+ public $state = 1;
+
+ /**
+ * Smarty object
+ *
+ * @var Smarty
+ */
+ public $smarty = null;
+
+ /**
+ * compiler object
+ *
+ * @var \Smarty\Compiler\Template
+ */
+ public $compiler = null;
+
+ /**
+ * trace file
+ *
+ * @var resource
+ */
+ public $yyTraceFILE;
+
+ /**
+ * trace prompt
+ *
+ * @var string
+ */
+ public $yyTracePrompt;
+
+ /**
+ * XML flag true while processing xml
+ *
+ * @var bool
+ */
+ public $is_xml = false;
+
+ /**
+ * state names
+ *
+ * @var array
+ */
+ public $state_name = array(1 => 'TEXT', 2 => 'TAG', 3 => 'TAGBODY', 4 => 'LITERAL', 5 => 'DOUBLEQUOTEDSTRING',);
+
+ /**
+ * token names
+ *
+ * @var array
+ */
+ public $smarty_token_names = array( // Text for parser error messages
+ 'NOT' => '(!,not)',
+ 'OPENP' => '(',
+ 'CLOSEP' => ')',
+ 'OPENB' => '[',
+ 'CLOSEB' => ']',
+ 'PTR' => '->',
+ 'APTR' => '=>',
+ 'EQUAL' => '=',
+ 'NUMBER' => 'number',
+ 'UNIMATH' => '+" , "-',
+ 'MATH' => '*" , "/" , "%',
+ 'INCDEC' => '++" , "--',
+ 'SPACE' => ' ',
+ 'DOLLAR' => '$',
+ 'SEMICOLON' => ';',
+ 'COLON' => ':',
+ 'DOUBLECOLON' => '::',
+ 'AT' => '@',
+ 'HATCH' => '#',
+ 'QUOTE' => '"',
+ 'BACKTICK' => '`',
+ 'VERT' => '"|" modifier',
+ 'DOT' => '.',
+ 'COMMA' => '","',
+ 'QMARK' => '"?"',
+ 'ID' => 'id, name',
+ 'TEXT' => 'text',
+ 'LDELSLASH' => '{/..} closing tag',
+ 'LDEL' => '{...} Smarty tag',
+ 'COMMENT' => 'comment',
+ 'AS' => 'as',
+ 'TO' => 'to',
+ 'LOGOP' => '"<", "==" ... logical operator',
+ 'TLOGOP' => '"lt", "eq" ... logical operator; "is div by" ... if condition',
+ 'SCOND' => '"is even" ... if condition',
+ );
+
+ /**
+ * literal tag nesting level
+ *
+ * @var int
+ */
+ private $literal_cnt = 0;
+
+ /**
+ * preg token pattern for state TEXT
+ *
+ * @var string
+ */
+ private $yy_global_pattern1 = null;
+
+ /**
+ * preg token pattern for state TAG
+ *
+ * @var string
+ */
+ private $yy_global_pattern2 = null;
+
+ /**
+ * preg token pattern for state TAGBODY
+ *
+ * @var string
+ */
+ private $yy_global_pattern3 = null;
+
+ /**
+ * preg token pattern for state LITERAL
+ *
+ * @var string
+ */
+ private $yy_global_pattern4 = null;
+
+ /**
+ * preg token pattern for state DOUBLEQUOTEDSTRING
+ *
+ * @var null
+ */
+ private $yy_global_pattern5 = null;
+
+ /**
+ * preg token pattern for text
+ *
+ * @var null
+ */
+ private $yy_global_text = null;
+
+ /**
+ * preg token pattern for literal
+ *
+ * @var null
+ */
+ private $yy_global_literal = null;
+
+ /**
+ * constructor
+ *
+ * @param string $source template source
+ * @param \Smarty\Compiler\Template $compiler
+ */
+ public function __construct($source, \Smarty\Compiler\Template $compiler)
+ {
+ $this->data = $source;
+ $this->dataLength = strlen($this->data);
+ $this->counter = 0;
+ if (preg_match('/^\xEF\xBB\xBF/i', $this->data, $match)) {
+ $this->counter += strlen($match[0]);
+ }
+ $this->line = 1;
+ $this->smarty = $compiler->getTemplate()->getSmarty();
+ $this->compiler = $compiler;
+ $this->compiler->initDelimiterPreg();
+ $this->smarty_token_names['LDEL'] = $this->smarty->getLeftDelimiter();
+ $this->smarty_token_names['RDEL'] = $this->smarty->getRightDelimiter();
+ }
+
+ /**
+ * open lexer/parser trace file
+ *
+ */
+ public function PrintTrace()
+ {
+ $this->yyTraceFILE = fopen('php://output', 'w');
+ $this->yyTracePrompt = ' ';
+ }
+
+ /**
+ * replace placeholders with runtime preg code
+ *
+ * @param string $preg
+ *
+ * @return string
+ */
+ public function replace($preg)
+ {
+ return $this->compiler->replaceDelimiter($preg);
+ }
+
+ /**
+ * check if current value is an autoliteral left delimiter
+ *
+ * @return bool
+ */
+ public function isAutoLiteral()
+ {
+ return $this->smarty->getAutoLiteral() && isset($this->value[ $this->compiler->getLdelLength() ]) ?
+ strpos(" \n\t\r", $this->value[ $this->compiler->getLdelLength() ]) !== false : false;
+ }
+
+
+ private $_yy_state = 1;
+ private $_yy_stack = array();
+
+ public function yylex()
+ {
+ return $this->{'yylex' . $this->_yy_state}();
+ }
+
+ public function yypushstate($state)
+ {
+ if ($this->yyTraceFILE) {
+ fprintf($this->yyTraceFILE, "%sState push %s\n", $this->yyTracePrompt, isset($this->state_name[$this->_yy_state]) ? $this->state_name[$this->_yy_state] : $this->_yy_state);
+ }
+ array_push($this->_yy_stack, $this->_yy_state);
+ $this->_yy_state = $state;
+ if ($this->yyTraceFILE) {
+ fprintf($this->yyTraceFILE, "%snew State %s\n", $this->yyTracePrompt, isset($this->state_name[$this->_yy_state]) ? $this->state_name[$this->_yy_state] : $this->_yy_state);
+ }
+ }
+
+ public function yypopstate()
+ {
+ if ($this->yyTraceFILE) {
+ fprintf($this->yyTraceFILE, "%sState pop %s\n", $this->yyTracePrompt, isset($this->state_name[$this->_yy_state]) ? $this->state_name[$this->_yy_state] : $this->_yy_state);
+ }
+ $this->_yy_state = array_pop($this->_yy_stack);
+ if ($this->yyTraceFILE) {
+ fprintf($this->yyTraceFILE, "%snew State %s\n", $this->yyTracePrompt, isset($this->state_name[$this->_yy_state]) ? $this->state_name[$this->_yy_state] : $this->_yy_state);
+ }
+
+ }
+
+ public function yybegin($state)
+ {
+ $this->_yy_state = $state;
+ if ($this->yyTraceFILE) {
+ fprintf($this->yyTraceFILE, "%sState set %s\n", $this->yyTracePrompt, isset($this->state_name[$this->_yy_state]) ? $this->state_name[$this->_yy_state] : $this->_yy_state);
+ }
+ }
+
+
+
+ public function yylex1()
+ {
+ if (!isset($this->yy_global_pattern1)) {
+ $this->yy_global_pattern1 = $this->replace("/\G([{][}])|\G((SMARTYldel)SMARTYal[*])|\G((SMARTYldel)SMARTYautoliteral\\s+SMARTYliteral)|\G((SMARTYldel)SMARTYalliteral\\s*SMARTYrdel)|\G((SMARTYldel)SMARTYal[\/]literal\\s*SMARTYrdel)|\G((SMARTYldel)SMARTYal)|\G([\S\s])/isS");
+ }
+ if (!isset($this->dataLength)) {
+ $this->dataLength = strlen($this->data);
+ }
+ if ($this->counter >= $this->dataLength) {
+ return false; // end of input
+ }
+
+ do {
+ if (preg_match($this->yy_global_pattern1,$this->data, $yymatches, 0, $this->counter)) {
+ if (!isset($yymatches[ 0 ][1])) {
+ $yymatches = preg_grep("/(.|\s)+/", $yymatches);
+ } else {
+ $yymatches = array_filter($yymatches);
+ }
+ if (empty($yymatches)) {
+ throw new Exception('Error: lexing failed because a rule matched' .
+ ' an empty string. Input "' . substr($this->data,
+ $this->counter, 5) . '... state TEXT');
+ }
+ next($yymatches); // skip global match
+ $this->token = key($yymatches); // token number
+ $this->value = current($yymatches); // token value
+ $r = $this->{'yy_r1_' . $this->token}();
+ if ($r === null) {
+ $this->counter += strlen($this->value);
+ $this->line += substr_count($this->value, "\n");
+ // accept this token
+ return true;
+ } elseif ($r === true) {
+ // we have changed state
+ // process this token in the new state
+ return $this->yylex();
+ } elseif ($r === false) {
+ $this->counter += strlen($this->value);
+ $this->line += substr_count($this->value, "\n");
+ if ($this->counter >= $this->dataLength) {
+ return false; // end of input
+ }
+ // skip this token
+ continue;
+ } } else {
+ throw new Exception('Unexpected input at line' . $this->line .
+ ': ' . $this->data[$this->counter]);
+ }
+ break;
+ } while (true);
+
+ } // end function
+
+
+ const TEXT = 1;
+ public function yy_r1_1()
+ {
+
+ $this->token = \Smarty\Parser\TemplateParser::TP_TEXT;
+ }
+ public function yy_r1_2()
+ {
+
+ $to = $this->dataLength;
+ preg_match("/[*]{$this->compiler->getRdelPreg()}[\n]?/",$this->data,$match,PREG_OFFSET_CAPTURE,$this->counter);
+ if (isset($match[0][1])) {
+ $to = $match[0][1] + strlen($match[0][0]);
+ } else {
+ $this->compiler->trigger_template_error ("missing or misspelled comment closing tag '{$this->smarty->getRightDelimiter()}'");
+ }
+ $this->value = substr($this->data,$this->counter,$to-$this->counter);
+ return false;
+ }
+ public function yy_r1_4()
+ {
+
+ $this->token = \Smarty\Parser\TemplateParser::TP_TEXT;
+ }
+ public function yy_r1_6()
+ {
+
+ $this->token = \Smarty\Parser\TemplateParser::TP_LITERALSTART;
+ $this->yypushstate(self::LITERAL);
+ }
+ public function yy_r1_8()
+ {
+
+ $this->token = \Smarty\Parser\TemplateParser::TP_LITERALEND;
+ $this->yypushstate(self::LITERAL);
+ }
+ public function yy_r1_10()
+ {
+
+ $this->yypushstate(self::TAG);
+ return true;
+ }
+ public function yy_r1_12()
+ {
+
+ if (!isset($this->yy_global_text)) {
+ $this->yy_global_text = $this->replace('/(SMARTYldel)SMARTYal/isS');
+ }
+ $to = $this->dataLength;
+ preg_match($this->yy_global_text, $this->data,$match,PREG_OFFSET_CAPTURE,$this->counter);
+ if (isset($match[0][1])) {
+ $to = $match[0][1];
+ }
+ $this->value = substr($this->data,$this->counter,$to-$this->counter);
+ $this->token = \Smarty\Parser\TemplateParser::TP_TEXT;
+ }
+
+
+ public function yylex2()
+ {
+ if (!isset($this->yy_global_pattern2)) {
+ $this->yy_global_pattern2 = $this->replace("/\G((SMARTYldel)SMARTYal(if|elseif|else if|while)\\s+)|\G((SMARTYldel)SMARTYalfor\\s+)|\G((SMARTYldel)SMARTYalforeach(?![^\s]))|\G((SMARTYldel)SMARTYalsetfilter\\s+)|\G((SMARTYldel)SMARTYal[0-9]*[a-zA-Z_]\\w*(\\s+nocache)?\\s*SMARTYrdel)|\G((SMARTYldel)SMARTYal[$]smarty\\.block\\.(child|parent)\\s*SMARTYrdel)|\G((SMARTYldel)SMARTYal[\/][0-9]*[a-zA-Z_]\\w*\\s*SMARTYrdel)|\G((SMARTYldel)SMARTYal[$][0-9]*[a-zA-Z_]\\w*(\\s+nocache)?\\s*SMARTYrdel)|\G((SMARTYldel)SMARTYal[\/])|\G((SMARTYldel)SMARTYal)/isS");
+ }
+ if (!isset($this->dataLength)) {
+ $this->dataLength = strlen($this->data);
+ }
+ if ($this->counter >= $this->dataLength) {
+ return false; // end of input
+ }
+
+ do {
+ if (preg_match($this->yy_global_pattern2,$this->data, $yymatches, 0, $this->counter)) {
+ if (!isset($yymatches[ 0 ][1])) {
+ $yymatches = preg_grep("/(.|\s)+/", $yymatches);
+ } else {
+ $yymatches = array_filter($yymatches);
+ }
+ if (empty($yymatches)) {
+ throw new Exception('Error: lexing failed because a rule matched' .
+ ' an empty string. Input "' . substr($this->data,
+ $this->counter, 5) . '... state TAG');
+ }
+ next($yymatches); // skip global match
+ $this->token = key($yymatches); // token number
+ $this->value = current($yymatches); // token value
+ $r = $this->{'yy_r2_' . $this->token}();
+ if ($r === null) {
+ $this->counter += strlen($this->value);
+ $this->line += substr_count($this->value, "\n");
+ // accept this token
+ return true;
+ } elseif ($r === true) {
+ // we have changed state
+ // process this token in the new state
+ return $this->yylex();
+ } elseif ($r === false) {
+ $this->counter += strlen($this->value);
+ $this->line += substr_count($this->value, "\n");
+ if ($this->counter >= $this->dataLength) {
+ return false; // end of input
+ }
+ // skip this token
+ continue;
+ } } else {
+ throw new Exception('Unexpected input at line' . $this->line .
+ ': ' . $this->data[$this->counter]);
+ }
+ break;
+ } while (true);
+
+ } // end function
+
+
+ const TAG = 2;
+ public function yy_r2_1()
+ {
+
+ $this->token = \Smarty\Parser\TemplateParser::TP_LDELIF;
+ $this->yybegin(self::TAGBODY);
+ $this->taglineno = $this->line;
+ }
+ public function yy_r2_4()
+ {
+
+ $this->token = \Smarty\Parser\TemplateParser::TP_LDELFOR;
+ $this->yybegin(self::TAGBODY);
+ $this->taglineno = $this->line;
+ }
+ public function yy_r2_6()
+ {
+
+ $this->token = \Smarty\Parser\TemplateParser::TP_LDELFOREACH;
+ $this->yybegin(self::TAGBODY);
+ $this->taglineno = $this->line;
+ }
+ public function yy_r2_8()
+ {
+
+ $this->token = \Smarty\Parser\TemplateParser::TP_LDELSETFILTER;
+ $this->yybegin(self::TAGBODY);
+ $this->taglineno = $this->line;
+ }
+ public function yy_r2_10()
+ {
+
+ $this->yypopstate();
+ $this->token = \Smarty\Parser\TemplateParser::TP_SIMPLETAG;
+ $this->taglineno = $this->line;
+ }
+ public function yy_r2_13()
+ {
+
+ $this->yypopstate();
+ $this->token = \Smarty\Parser\TemplateParser::TP_SMARTYBLOCKCHILDPARENT;
+ $this->taglineno = $this->line;
+ }
+ public function yy_r2_16()
+ {
+
+ $this->yypopstate();
+ $this->token = \Smarty\Parser\TemplateParser::TP_CLOSETAG;
+ $this->taglineno = $this->line;
+ }
+ public function yy_r2_18()
+ {
+
+ if ($this->_yy_stack[count($this->_yy_stack)-1] === self::TEXT) {
+ $this->yypopstate();
+ $this->token = \Smarty\Parser\TemplateParser::TP_SIMPELOUTPUT;
+ $this->taglineno = $this->line;
+ } else {
+ $this->value = $this->smarty->getLeftDelimiter();
+ $this->token = \Smarty\Parser\TemplateParser::TP_LDEL;
+ $this->yybegin(self::TAGBODY);
+ $this->taglineno = $this->line;
+ }
+ }
+ public function yy_r2_21()
+ {
+
+ $this->token = \Smarty\Parser\TemplateParser::TP_LDELSLASH;
+ $this->yybegin(self::TAGBODY);
+ $this->taglineno = $this->line;
+ }
+ public function yy_r2_23()
+ {
+
+ $this->token = \Smarty\Parser\TemplateParser::TP_LDEL;
+ $this->yybegin(self::TAGBODY);
+ $this->taglineno = $this->line;
+ }
+
+
+ public function yylex3()
+ {
+ if (!isset($this->yy_global_pattern3)) {
+ $this->yy_global_pattern3 = $this->replace("/\G(\\s*SMARTYrdel)|\G((SMARTYldel)SMARTYal)|\G([\"])|\G('[^'\\\\]*(?:\\\\.[^'\\\\]*)*')|\G([$][0-9]*[a-zA-Z_]\\w*)|\G([$])|\G(\\s+is\\s+(not\\s+)?in\\s+)|\G(\\s+as\\s+)|\G(\\s+to\\s+)|\G(\\s+step\\s+)|\G(\\s+instanceof\\s+)|\G(\\s*([!=][=]{1,2}|[<][=>]?|[>][=]?|[&|]{2})\\s*)|\G(\\s+(eq|ne|neq|gt|ge|gte|lt|le|lte|mod|and|or|xor)\\s+)|\G(\\s+is\\s+(not\\s+)?(odd|even|div)\\s+by\\s+)|\G(\\s+is\\s+(not\\s+)?(odd|even))|\G([!]\\s*|not\\s+)|\G([(](int(eger)?|bool(ean)?|float|double|real|string|binary|array|object)[)]\\s*)|\G(\\s*[(]\\s*)|\G(\\s*[)])|\G(\\[\\s*)|\G(\\s*\\])|\G(\\s*[-][>]\\s*)|\G(\\s*[=][>]\\s*)|\G(\\s*[=]\\s*)|\G(([+]|[-]){2})|\G(\\s*([+]|[-])\\s*)|\G(\\s*([*]{1,2}|[%\/^&]|[<>]{2})\\s*)|\G([@])|\G(array\\s*[(]\\s*)|\G([#])|\G(\\s+[0-9]*[a-zA-Z_][a-zA-Z0-9_\-:]*\\s*[=]\\s*)|\G(([0-9]*[a-zA-Z_]\\w*)?(\\\\[0-9]*[a-zA-Z_]\\w*)+)|\G([0-9]*[a-zA-Z_]\\w*)|\G(\\d+)|\G([`])|\G([|][@]?)|\G([.])|\G(\\s*[,]\\s*)|\G(\\s*[;]\\s*)|\G([:]{2})|\G(\\s*[:]\\s*)|\G(\\s*[?]\\s*)|\G(0[xX][0-9a-fA-F]+)|\G(\\s+)|\G([\S\s])/isS");
+ }
+ if (!isset($this->dataLength)) {
+ $this->dataLength = strlen($this->data);
+ }
+ if ($this->counter >= $this->dataLength) {
+ return false; // end of input
+ }
+
+ do {
+ if (preg_match($this->yy_global_pattern3,$this->data, $yymatches, 0, $this->counter)) {
+ if (!isset($yymatches[ 0 ][1])) {
+ $yymatches = preg_grep("/(.|\s)+/", $yymatches);
+ } else {
+ $yymatches = array_filter($yymatches);
+ }
+ if (empty($yymatches)) {
+ throw new Exception('Error: lexing failed because a rule matched' .
+ ' an empty string. Input "' . substr($this->data,
+ $this->counter, 5) . '... state TAGBODY');
+ }
+ next($yymatches); // skip global match
+ $this->token = key($yymatches); // token number
+ $this->value = current($yymatches); // token value
+ $r = $this->{'yy_r3_' . $this->token}();
+ if ($r === null) {
+ $this->counter += strlen($this->value);
+ $this->line += substr_count($this->value, "\n");
+ // accept this token
+ return true;
+ } elseif ($r === true) {
+ // we have changed state
+ // process this token in the new state
+ return $this->yylex();
+ } elseif ($r === false) {
+ $this->counter += strlen($this->value);
+ $this->line += substr_count($this->value, "\n");
+ if ($this->counter >= $this->dataLength) {
+ return false; // end of input
+ }
+ // skip this token
+ continue;
+ } } else {
+ throw new Exception('Unexpected input at line' . $this->line .
+ ': ' . $this->data[$this->counter]);
+ }
+ break;
+ } while (true);
+
+ } // end function
+
+
+ const TAGBODY = 3;
+ public function yy_r3_1()
+ {
+
+ $this->token = \Smarty\Parser\TemplateParser::TP_RDEL;
+ $this->yypopstate();
+ }
+ public function yy_r3_2()
+ {
+
+ $this->yypushstate(self::TAG);
+ return true;
+ }
+ public function yy_r3_4()
+ {
+
+ $this->token = \Smarty\Parser\TemplateParser::TP_QUOTE;
+ $this->yypushstate(self::DOUBLEQUOTEDSTRING);
+ $this->compiler->enterDoubleQuote();
+ }
+ public function yy_r3_5()
+ {
+
+ $this->token = \Smarty\Parser\TemplateParser::TP_SINGLEQUOTESTRING;
+ }
+ public function yy_r3_6()
+ {
+
+ $this->token = \Smarty\Parser\TemplateParser::TP_DOLLARID;
+ }
+ public function yy_r3_7()
+ {
+
+ $this->token = \Smarty\Parser\TemplateParser::TP_DOLLAR;
+ }
+ public function yy_r3_8()
+ {
+
+ $this->token = \Smarty\Parser\TemplateParser::TP_ISIN;
+ }
+ public function yy_r3_10()
+ {
+
+ $this->token = \Smarty\Parser\TemplateParser::TP_AS;
+ }
+ public function yy_r3_11()
+ {
+
+ $this->token = \Smarty\Parser\TemplateParser::TP_TO;
+ }
+ public function yy_r3_12()
+ {
+
+ $this->token = \Smarty\Parser\TemplateParser::TP_STEP;
+ }
+ public function yy_r3_13()
+ {
+
+ $this->token = \Smarty\Parser\TemplateParser::TP_INSTANCEOF;
+ }
+ public function yy_r3_14()
+ {
+
+ $this->token = \Smarty\Parser\TemplateParser::TP_LOGOP;
+ }
+ public function yy_r3_16()
+ {
+
+ $this->token = \Smarty\Parser\TemplateParser::TP_SLOGOP;
+ }
+ public function yy_r3_18()
+ {
+
+ $this->token = \Smarty\Parser\TemplateParser::TP_TLOGOP;
+ }
+ public function yy_r3_21()
+ {
+
+ $this->token = \Smarty\Parser\TemplateParser::TP_SINGLECOND;
+ }
+ public function yy_r3_24()
+ {
+
+ $this->token = \Smarty\Parser\TemplateParser::TP_NOT;
+ }
+ public function yy_r3_25()
+ {
+
+ $this->token = \Smarty\Parser\TemplateParser::TP_TYPECAST;
+ }
+ public function yy_r3_29()
+ {
+
+ $this->token = \Smarty\Parser\TemplateParser::TP_OPENP;
+ }
+ public function yy_r3_30()
+ {
+
+ $this->token = \Smarty\Parser\TemplateParser::TP_CLOSEP;
+ }
+ public function yy_r3_31()
+ {
+
+ $this->token = \Smarty\Parser\TemplateParser::TP_OPENB;
+ }
+ public function yy_r3_32()
+ {
+
+ $this->token = \Smarty\Parser\TemplateParser::TP_CLOSEB;
+ }
+ public function yy_r3_33()
+ {
+
+ $this->token = \Smarty\Parser\TemplateParser::TP_PTR;
+ }
+ public function yy_r3_34()
+ {
+
+ $this->token = \Smarty\Parser\TemplateParser::TP_APTR;
+ }
+ public function yy_r3_35()
+ {
+
+ $this->token = \Smarty\Parser\TemplateParser::TP_EQUAL;
+ }
+ public function yy_r3_36()
+ {
+
+ $this->token = \Smarty\Parser\TemplateParser::TP_INCDEC;
+ }
+ public function yy_r3_38()
+ {
+
+ $this->token = \Smarty\Parser\TemplateParser::TP_UNIMATH;
+ }
+ public function yy_r3_40()
+ {
+
+ $this->token = \Smarty\Parser\TemplateParser::TP_MATH;
+ }
+ public function yy_r3_42()
+ {
+
+ $this->token = \Smarty\Parser\TemplateParser::TP_AT;
+ }
+ public function yy_r3_43()
+ {
+
+ $this->token = \Smarty\Parser\TemplateParser::TP_ARRAYOPEN;
+ }
+ public function yy_r3_44()
+ {
+
+ $this->token = \Smarty\Parser\TemplateParser::TP_HATCH;
+ }
+ public function yy_r3_45()
+ {
+
+ // resolve conflicts with shorttag and right_delimiter starting with '='
+ if (substr($this->data, $this->counter + strlen($this->value) - 1, $this->compiler->getRdelLength()) === $this->smarty->getRightDelimiter()) {
+ preg_match('/\s+/',$this->value,$match);
+ $this->value = $match[0];
+ $this->token = \Smarty\Parser\TemplateParser::TP_SPACE;
+ } else {
+ $this->token = \Smarty\Parser\TemplateParser::TP_ATTR;
+ }
+ }
+ public function yy_r3_46()
+ {
+
+ $this->token = \Smarty\Parser\TemplateParser::TP_NAMESPACE;
+ }
+ public function yy_r3_49()
+ {
+
+ $this->token = \Smarty\Parser\TemplateParser::TP_ID;
+ }
+ public function yy_r3_50()
+ {
+
+ $this->token = \Smarty\Parser\TemplateParser::TP_INTEGER;
+ }
+ public function yy_r3_51()
+ {
+
+ $this->token = \Smarty\Parser\TemplateParser::TP_BACKTICK;
+ $this->yypopstate();
+ }
+ public function yy_r3_52()
+ {
+
+ $this->token = \Smarty\Parser\TemplateParser::TP_VERT;
+ }
+ public function yy_r3_53()
+ {
+
+ $this->token = \Smarty\Parser\TemplateParser::TP_DOT;
+ }
+ public function yy_r3_54()
+ {
+
+ $this->token = \Smarty\Parser\TemplateParser::TP_COMMA;
+ }
+ public function yy_r3_55()
+ {
+
+ $this->token = \Smarty\Parser\TemplateParser::TP_SEMICOLON;
+ }
+ public function yy_r3_56()
+ {
+
+ $this->token = \Smarty\Parser\TemplateParser::TP_DOUBLECOLON;
+ }
+ public function yy_r3_57()
+ {
+
+ $this->token = \Smarty\Parser\TemplateParser::TP_COLON;
+ }
+ public function yy_r3_58()
+ {
+
+ $this->token = \Smarty\Parser\TemplateParser::TP_QMARK;
+ }
+ public function yy_r3_59()
+ {
+
+ $this->token = \Smarty\Parser\TemplateParser::TP_HEX;
+ }
+ public function yy_r3_60()
+ {
+
+ $this->token = \Smarty\Parser\TemplateParser::TP_SPACE;
+ }
+ public function yy_r3_61()
+ {
+
+ $this->token = \Smarty\Parser\TemplateParser::TP_TEXT;
+ }
+
+
+
+ public function yylex4()
+ {
+ if (!isset($this->yy_global_pattern4)) {
+ $this->yy_global_pattern4 = $this->replace("/\G((SMARTYldel)SMARTYalliteral\\s*SMARTYrdel)|\G((SMARTYldel)SMARTYal[\/]literal\\s*SMARTYrdel)|\G([\S\s])/isS");
+ }
+ if (!isset($this->dataLength)) {
+ $this->dataLength = strlen($this->data);
+ }
+ if ($this->counter >= $this->dataLength) {
+ return false; // end of input
+ }
+
+ do {
+ if (preg_match($this->yy_global_pattern4,$this->data, $yymatches, 0, $this->counter)) {
+ if (!isset($yymatches[ 0 ][1])) {
+ $yymatches = preg_grep("/(.|\s)+/", $yymatches);
+ } else {
+ $yymatches = array_filter($yymatches);
+ }
+ if (empty($yymatches)) {
+ throw new Exception('Error: lexing failed because a rule matched' .
+ ' an empty string. Input "' . substr($this->data,
+ $this->counter, 5) . '... state LITERAL');
+ }
+ next($yymatches); // skip global match
+ $this->token = key($yymatches); // token number
+ $this->value = current($yymatches); // token value
+ $r = $this->{'yy_r4_' . $this->token}();
+ if ($r === null) {
+ $this->counter += strlen($this->value);
+ $this->line += substr_count($this->value, "\n");
+ // accept this token
+ return true;
+ } elseif ($r === true) {
+ // we have changed state
+ // process this token in the new state
+ return $this->yylex();
+ } elseif ($r === false) {
+ $this->counter += strlen($this->value);
+ $this->line += substr_count($this->value, "\n");
+ if ($this->counter >= $this->dataLength) {
+ return false; // end of input
+ }
+ // skip this token
+ continue;
+ } } else {
+ throw new Exception('Unexpected input at line' . $this->line .
+ ': ' . $this->data[$this->counter]);
+ }
+ break;
+ } while (true);
+
+ } // end function
+
+
+ const LITERAL = 4;
+ public function yy_r4_1()
+ {
+
+ $this->literal_cnt++;
+ $this->token = \Smarty\Parser\TemplateParser::TP_LITERAL;
+ }
+ public function yy_r4_3()
+ {
+
+ if ($this->literal_cnt) {
+ $this->literal_cnt--;
+ $this->token = \Smarty\Parser\TemplateParser::TP_LITERAL;
+ } else {
+ $this->token = \Smarty\Parser\TemplateParser::TP_LITERALEND;
+ $this->yypopstate();
+ }
+ }
+ public function yy_r4_5()
+ {
+
+ if (!isset($this->yy_global_literal)) {
+ $this->yy_global_literal = $this->replace('/(SMARTYldel)SMARTYal[\/]?literalSMARTYrdel/isS');
+ }
+ $to = $this->dataLength;
+ preg_match($this->yy_global_literal, $this->data,$match,PREG_OFFSET_CAPTURE,$this->counter);
+ if (isset($match[0][1])) {
+ $to = $match[0][1];
+ } else {
+ $this->compiler->trigger_template_error ("missing or misspelled literal closing tag");
+ }
+ $this->value = substr($this->data,$this->counter,$to-$this->counter);
+ $this->token = \Smarty\Parser\TemplateParser::TP_LITERAL;
+ }
+
+
+ public function yylex5()
+ {
+ if (!isset($this->yy_global_pattern5)) {
+ $this->yy_global_pattern5 = $this->replace("/\G((SMARTYldel)SMARTYautoliteral\\s+SMARTYliteral)|\G((SMARTYldel)SMARTYalliteral\\s*SMARTYrdel)|\G((SMARTYldel)SMARTYal[\/]literal\\s*SMARTYrdel)|\G((SMARTYldel)SMARTYal[\/])|\G((SMARTYldel)SMARTYal[0-9]*[a-zA-Z_]\\w*)|\G((SMARTYldel)SMARTYal)|\G([\"])|\G([`][$])|\G([$][0-9]*[a-zA-Z_]\\w*)|\G([$])|\G(([^\"\\\\]*?)((?:\\\\.[^\"\\\\]*?)*?)(?=((SMARTYldel)SMARTYal|\\$|`\\$|\"SMARTYliteral)))|\G([\S\s])/isS");
+ }
+ if (!isset($this->dataLength)) {
+ $this->dataLength = strlen($this->data);
+ }
+ if ($this->counter >= $this->dataLength) {
+ return false; // end of input
+ }
+
+ do {
+ if (preg_match($this->yy_global_pattern5,$this->data, $yymatches, 0, $this->counter)) {
+ if (!isset($yymatches[ 0 ][1])) {
+ $yymatches = preg_grep("/(.|\s)+/", $yymatches);
+ } else {
+ $yymatches = array_filter($yymatches);
+ }
+ if (empty($yymatches)) {
+ throw new Exception('Error: lexing failed because a rule matched' .
+ ' an empty string. Input "' . substr($this->data,
+ $this->counter, 5) . '... state DOUBLEQUOTEDSTRING');
+ }
+ next($yymatches); // skip global match
+ $this->token = key($yymatches); // token number
+ $this->value = current($yymatches); // token value
+ $r = $this->{'yy_r5_' . $this->token}();
+ if ($r === null) {
+ $this->counter += strlen($this->value);
+ $this->line += substr_count($this->value, "\n");
+ // accept this token
+ return true;
+ } elseif ($r === true) {
+ // we have changed state
+ // process this token in the new state
+ return $this->yylex();
+ } elseif ($r === false) {
+ $this->counter += strlen($this->value);
+ $this->line += substr_count($this->value, "\n");
+ if ($this->counter >= $this->dataLength) {
+ return false; // end of input
+ }
+ // skip this token
+ continue;
+ } } else {
+ throw new Exception('Unexpected input at line' . $this->line .
+ ': ' . $this->data[$this->counter]);
+ }
+ break;
+ } while (true);
+
+ } // end function
+
+
+ const DOUBLEQUOTEDSTRING = 5;
+ public function yy_r5_1()
+ {
+
+ $this->token = \Smarty\Parser\TemplateParser::TP_TEXT;
+ }
+ public function yy_r5_3()
+ {
+
+ $this->token = \Smarty\Parser\TemplateParser::TP_TEXT;
+ }
+ public function yy_r5_5()
+ {
+
+ $this->token = \Smarty\Parser\TemplateParser::TP_TEXT;
+ }
+ public function yy_r5_7()
+ {
+
+ $this->yypushstate(self::TAG);
+ return true;
+ }
+ public function yy_r5_9()
+ {
+
+ $this->yypushstate(self::TAG);
+ return true;
+ }
+ public function yy_r5_11()
+ {
+
+ $this->token = \Smarty\Parser\TemplateParser::TP_LDEL;
+ $this->taglineno = $this->line;
+ $this->yypushstate(self::TAGBODY);
+ }
+ public function yy_r5_13()
+ {
+
+ $this->token = \Smarty\Parser\TemplateParser::TP_QUOTE;
+ $this->yypopstate();
+ }
+ public function yy_r5_14()
+ {
+
+ $this->token = \Smarty\Parser\TemplateParser::TP_BACKTICK;
+ $this->value = substr($this->value,0,-1);
+ $this->yypushstate(self::TAGBODY);
+ $this->taglineno = $this->line;
+ }
+ public function yy_r5_15()
+ {
+
+ $this->token = \Smarty\Parser\TemplateParser::TP_DOLLARID;
+ }
+ public function yy_r5_16()
+ {
+
+ $this->token = \Smarty\Parser\TemplateParser::TP_TEXT;
+ }
+ public function yy_r5_17()
+ {
+
+ $this->token = \Smarty\Parser\TemplateParser::TP_TEXT;
+ }
+ public function yy_r5_22()
+ {
+
+ $to = $this->dataLength;
+ $this->value = substr($this->data,$this->counter,$to-$this->counter);
+ $this->token = \Smarty\Parser\TemplateParser::TP_TEXT;
+ }
+
+ }
+
+
\ No newline at end of file
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/src/Lexer/TemplateLexer.plex b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/src/Lexer/TemplateLexer.plex
new file mode 100644
index 000000000..282a99cf9
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/src/Lexer/TemplateLexer.plex
@@ -0,0 +1,677 @@
+
+ */
+class TemplateLexer
+{
+ /**
+ * Source
+ *
+ * @var string
+ */
+ public $data;
+
+ /**
+ * Source length
+ *
+ * @var int
+ */
+ public $dataLength = null;
+
+ /**
+ * byte counter
+ *
+ * @var int
+ */
+ public $counter;
+
+ /**
+ * token number
+ *
+ * @var int
+ */
+ public $token;
+
+ /**
+ * token value
+ *
+ * @var string
+ */
+ public $value;
+
+ /**
+ * current line
+ *
+ * @var int
+ */
+ public $line;
+
+ /**
+ * tag start line
+ *
+ * @var
+ */
+ public $taglineno;
+
+ /**
+ * state number
+ *
+ * @var int
+ */
+ public $state = 1;
+
+ /**
+ * Smarty object
+ *
+ * @var Smarty
+ */
+ public $smarty = null;
+
+ /**
+ * compiler object
+ *
+ * @var \Smarty\Compiler\Template
+ */
+ public $compiler = null;
+
+ /**
+ * trace file
+ *
+ * @var resource
+ */
+ public $yyTraceFILE;
+
+ /**
+ * trace prompt
+ *
+ * @var string
+ */
+ public $yyTracePrompt;
+
+ /**
+ * XML flag true while processing xml
+ *
+ * @var bool
+ */
+ public $is_xml = false;
+
+ /**
+ * state names
+ *
+ * @var array
+ */
+ public $state_name = array(1 => 'TEXT', 2 => 'TAG', 3 => 'TAGBODY', 4 => 'LITERAL', 5 => 'DOUBLEQUOTEDSTRING',);
+
+ /**
+ * token names
+ *
+ * @var array
+ */
+ public $smarty_token_names = array( // Text for parser error messages
+ 'NOT' => '(!,not)',
+ 'OPENP' => '(',
+ 'CLOSEP' => ')',
+ 'OPENB' => '[',
+ 'CLOSEB' => ']',
+ 'PTR' => '->',
+ 'APTR' => '=>',
+ 'EQUAL' => '=',
+ 'NUMBER' => 'number',
+ 'UNIMATH' => '+" , "-',
+ 'MATH' => '*" , "/" , "%',
+ 'INCDEC' => '++" , "--',
+ 'SPACE' => ' ',
+ 'DOLLAR' => '$',
+ 'SEMICOLON' => ';',
+ 'COLON' => ':',
+ 'DOUBLECOLON' => '::',
+ 'AT' => '@',
+ 'HATCH' => '#',
+ 'QUOTE' => '"',
+ 'BACKTICK' => '`',
+ 'VERT' => '"|" modifier',
+ 'DOT' => '.',
+ 'COMMA' => '","',
+ 'QMARK' => '"?"',
+ 'ID' => 'id, name',
+ 'TEXT' => 'text',
+ 'LDELSLASH' => '{/..} closing tag',
+ 'LDEL' => '{...} Smarty tag',
+ 'COMMENT' => 'comment',
+ 'AS' => 'as',
+ 'TO' => 'to',
+ 'LOGOP' => '"<", "==" ... logical operator',
+ 'TLOGOP' => '"lt", "eq" ... logical operator; "is div by" ... if condition',
+ 'SCOND' => '"is even" ... if condition',
+ );
+
+ /**
+ * literal tag nesting level
+ *
+ * @var int
+ */
+ private $literal_cnt = 0;
+
+ /**
+ * preg token pattern for state TEXT
+ *
+ * @var string
+ */
+ private $yy_global_pattern1 = null;
+
+ /**
+ * preg token pattern for state TAG
+ *
+ * @var string
+ */
+ private $yy_global_pattern2 = null;
+
+ /**
+ * preg token pattern for state TAGBODY
+ *
+ * @var string
+ */
+ private $yy_global_pattern3 = null;
+
+ /**
+ * preg token pattern for state LITERAL
+ *
+ * @var string
+ */
+ private $yy_global_pattern4 = null;
+
+ /**
+ * preg token pattern for state DOUBLEQUOTEDSTRING
+ *
+ * @var null
+ */
+ private $yy_global_pattern5 = null;
+
+ /**
+ * preg token pattern for text
+ *
+ * @var null
+ */
+ private $yy_global_text = null;
+
+ /**
+ * preg token pattern for literal
+ *
+ * @var null
+ */
+ private $yy_global_literal = null;
+
+ /**
+ * constructor
+ *
+ * @param string $source template source
+ * @param \Smarty\Compiler\Template $compiler
+ */
+ public function __construct($source, \Smarty\Compiler\Template $compiler)
+ {
+ $this->data = $source;
+ $this->dataLength = strlen($this->data);
+ $this->counter = 0;
+ if (preg_match('/^\xEF\xBB\xBF/i', $this->data, $match)) {
+ $this->counter += strlen($match[0]);
+ }
+ $this->line = 1;
+ $this->smarty = $compiler->getTemplate()->getSmarty();
+ $this->compiler = $compiler;
+ $this->compiler->initDelimiterPreg();
+ $this->smarty_token_names['LDEL'] = $this->smarty->getLeftDelimiter();
+ $this->smarty_token_names['RDEL'] = $this->smarty->getRightDelimiter();
+ }
+
+ /**
+ * open lexer/parser trace file
+ *
+ */
+ public function PrintTrace()
+ {
+ $this->yyTraceFILE = fopen('php://output', 'w');
+ $this->yyTracePrompt = ' ';
+ }
+
+ /**
+ * replace placeholders with runtime preg code
+ *
+ * @param string $preg
+ *
+ * @return string
+ */
+ public function replace($preg)
+ {
+ return $this->compiler->replaceDelimiter($preg);
+ }
+
+ /**
+ * check if current value is an autoliteral left delimiter
+ *
+ * @return bool
+ */
+ public function isAutoLiteral()
+ {
+ return $this->smarty->getAutoLiteral() && isset($this->value[ $this->compiler->getLdelLength() ]) ?
+ strpos(" \n\t\r", $this->value[ $this->compiler->getLdelLength() ]) !== false : false;
+ }
+
+ /*!lex2php
+ %input $this->data
+ %counter $this->counter
+ %token $this->token
+ %value $this->value
+ %line $this->line
+ userliteral = ~(SMARTYldel)SMARTYautoliteral\s+SMARTYliteral~
+ char = ~[\S\s]~
+ textdoublequoted = ~([^"\\]*?)((?:\\.[^"\\]*?)*?)(?=((SMARTYldel)SMARTYal|\$|`\$|"SMARTYliteral))~
+ namespace = ~([0-9]*[a-zA-Z_]\w*)?(\\[0-9]*[a-zA-Z_]\w*)+~
+ emptyjava = ~[{][}]~
+ slash = ~[/]~
+ ldel = ~(SMARTYldel)SMARTYal~
+ rdel = ~\s*SMARTYrdel~
+ nocacherdel = ~(\s+nocache)?\s*SMARTYrdel~
+ smartyblockchildparent = ~[\$]smarty\.block\.(child|parent)~
+ integer = ~\d+~
+ hex = ~0[xX][0-9a-fA-F]+~
+ math = ~\s*([*]{1,2}|[%/^&]|[<>]{2})\s*~
+ comment = ~(SMARTYldel)SMARTYal[*]~
+ incdec = ~([+]|[-]){2}~
+ unimath = ~\s*([+]|[-])\s*~
+ openP = ~\s*[(]\s*~
+ closeP = ~\s*[)]~
+ openB = ~\[\s*~
+ closeB = ~\s*\]~
+ dollar = ~[$]~
+ dot = ~[.]~
+ comma = ~\s*[,]\s*~
+ doublecolon = ~[:]{2}~
+ colon = ~\s*[:]\s*~
+ at = ~[@]~
+ hatch = ~[#]~
+ semicolon = ~\s*[;]\s*~
+ equal = ~\s*[=]\s*~
+ space = ~\s+~
+ ptr = ~\s*[-][>]\s*~
+ aptr = ~\s*[=][>]\s*~
+ singlequotestring = ~'[^'\\]*(?:\\.[^'\\]*)*'~
+ backtick = ~[`]~
+ vert = ~[|][@]?~
+ qmark = ~\s*[?]\s*~
+ constant = ~[_]+[A-Z0-9][0-9A-Z_]*|[A-Z][0-9A-Z_]*(?![0-9A-Z_]*[a-z])~
+ attr = ~\s+[0-9]*[a-zA-Z_][a-zA-Z0-9_\-:]*\s*[=]\s*~
+ id = ~[0-9]*[a-zA-Z_]\w*~
+ literal = ~literal~
+ strip = ~strip~
+ lop = ~\s*([!=][=]{1,2}|[<][=>]?|[>][=]?|[&|]{2})\s*~
+ slop = ~\s+(eq|ne|neq|gt|ge|gte|lt|le|lte|mod|and|or|xor)\s+~
+ tlop = ~\s+is\s+(not\s+)?(odd|even|div)\s+by\s+~
+ scond = ~\s+is\s+(not\s+)?(odd|even)~
+ isin = ~\s+is\s+(not\s+)?in\s+~
+ as = ~\s+as\s+~
+ to = ~\s+to\s+~
+ step = ~\s+step\s+~
+ if = ~(if|elseif|else if|while)\s+~
+ for = ~for\s+~
+ array = ~array~
+ foreach = ~foreach(?![^\s])~
+ setfilter = ~setfilter\s+~
+ instanceof = ~\s+instanceof\s+~
+ not = ~[!]\s*|not\s+~
+ typecast = ~[(](int(eger)?|bool(ean)?|float|double|real|string|binary|array|object)[)]\s*~
+ double_quote = ~["]~
+ */
+ /*!lex2php
+ %statename TEXT
+ emptyjava {
+ $this->token = \Smarty\Parser\TemplateParser::TP_TEXT;
+ }
+ comment {
+ $to = $this->dataLength;
+ preg_match("/[*]{$this->compiler->getRdelPreg()}[\n]?/",$this->data,$match,PREG_OFFSET_CAPTURE,$this->counter);
+ if (isset($match[0][1])) {
+ $to = $match[0][1] + strlen($match[0][0]);
+ } else {
+ $this->compiler->trigger_template_error ("missing or misspelled comment closing tag '{$this->smarty->getRightDelimiter()}'");
+ }
+ $this->value = substr($this->data,$this->counter,$to-$this->counter);
+ return false;
+ }
+ userliteral {
+ $this->token = \Smarty\Parser\TemplateParser::TP_TEXT;
+ }
+ ldel literal rdel {
+ $this->token = \Smarty\Parser\TemplateParser::TP_LITERALSTART;
+ $this->yypushstate(self::LITERAL);
+ }
+ ldel slash literal rdel {
+ $this->token = \Smarty\Parser\TemplateParser::TP_LITERALEND;
+ $this->yypushstate(self::LITERAL);
+ }
+ ldel {
+ $this->yypushstate(self::TAG);
+ return true;
+ }
+ char {
+ if (!isset($this->yy_global_text)) {
+ $this->yy_global_text = $this->replace('/(SMARTYldel)SMARTYal/isS');
+ }
+ $to = $this->dataLength;
+ preg_match($this->yy_global_text, $this->data,$match,PREG_OFFSET_CAPTURE,$this->counter);
+ if (isset($match[0][1])) {
+ $to = $match[0][1];
+ }
+ $this->value = substr($this->data,$this->counter,$to-$this->counter);
+ $this->token = \Smarty\Parser\TemplateParser::TP_TEXT;
+ }
+ */
+ /*!lex2php
+ %statename TAG
+ ldel if {
+ $this->token = \Smarty\Parser\TemplateParser::TP_LDELIF;
+ $this->yybegin(self::TAGBODY);
+ $this->taglineno = $this->line;
+ }
+ ldel for {
+ $this->token = \Smarty\Parser\TemplateParser::TP_LDELFOR;
+ $this->yybegin(self::TAGBODY);
+ $this->taglineno = $this->line;
+ }
+ ldel foreach {
+ $this->token = \Smarty\Parser\TemplateParser::TP_LDELFOREACH;
+ $this->yybegin(self::TAGBODY);
+ $this->taglineno = $this->line;
+ }
+ ldel setfilter {
+ $this->token = \Smarty\Parser\TemplateParser::TP_LDELSETFILTER;
+ $this->yybegin(self::TAGBODY);
+ $this->taglineno = $this->line;
+ }
+ ldel id nocacherdel {
+ $this->yypopstate();
+ $this->token = \Smarty\Parser\TemplateParser::TP_SIMPLETAG;
+ $this->taglineno = $this->line;
+ }
+ ldel smartyblockchildparent rdel {
+ $this->yypopstate();
+ $this->token = \Smarty\Parser\TemplateParser::TP_SMARTYBLOCKCHILDPARENT;
+ $this->taglineno = $this->line;
+ }
+ ldel slash id rdel {
+ $this->yypopstate();
+ $this->token = \Smarty\Parser\TemplateParser::TP_CLOSETAG;
+ $this->taglineno = $this->line;
+ }
+ ldel dollar id nocacherdel {
+ if ($this->_yy_stack[count($this->_yy_stack)-1] === self::TEXT) {
+ $this->yypopstate();
+ $this->token = \Smarty\Parser\TemplateParser::TP_SIMPELOUTPUT;
+ $this->taglineno = $this->line;
+ } else {
+ $this->value = $this->smarty->getLeftDelimiter();
+ $this->token = \Smarty\Parser\TemplateParser::TP_LDEL;
+ $this->yybegin(self::TAGBODY);
+ $this->taglineno = $this->line;
+ }
+ }
+ ldel slash {
+ $this->token = \Smarty\Parser\TemplateParser::TP_LDELSLASH;
+ $this->yybegin(self::TAGBODY);
+ $this->taglineno = $this->line;
+ }
+ ldel {
+ $this->token = \Smarty\Parser\TemplateParser::TP_LDEL;
+ $this->yybegin(self::TAGBODY);
+ $this->taglineno = $this->line;
+ }
+ */
+ /*!lex2php
+ %statename TAGBODY
+ rdel {
+ $this->token = \Smarty\Parser\TemplateParser::TP_RDEL;
+ $this->yypopstate();
+ }
+ ldel {
+ $this->yypushstate(self::TAG);
+ return true;
+ }
+ double_quote {
+ $this->token = \Smarty\Parser\TemplateParser::TP_QUOTE;
+ $this->yypushstate(self::DOUBLEQUOTEDSTRING);
+ $this->compiler->enterDoubleQuote();
+ }
+ singlequotestring {
+ $this->token = \Smarty\Parser\TemplateParser::TP_SINGLEQUOTESTRING;
+ }
+ dollar id {
+ $this->token = \Smarty\Parser\TemplateParser::TP_DOLLARID;
+ }
+ dollar {
+ $this->token = \Smarty\Parser\TemplateParser::TP_DOLLAR;
+ }
+ isin {
+ $this->token = \Smarty\Parser\TemplateParser::TP_ISIN;
+ }
+ as {
+ $this->token = \Smarty\Parser\TemplateParser::TP_AS;
+ }
+ to {
+ $this->token = \Smarty\Parser\TemplateParser::TP_TO;
+ }
+ step {
+ $this->token = \Smarty\Parser\TemplateParser::TP_STEP;
+ }
+ instanceof {
+ $this->token = \Smarty\Parser\TemplateParser::TP_INSTANCEOF;
+ }
+ lop {
+ $this->token = \Smarty\Parser\TemplateParser::TP_LOGOP;
+ }
+ slop {
+ $this->token = \Smarty\Parser\TemplateParser::TP_SLOGOP;
+ }
+ tlop {
+ $this->token = \Smarty\Parser\TemplateParser::TP_TLOGOP;
+ }
+ scond {
+ $this->token = \Smarty\Parser\TemplateParser::TP_SINGLECOND;
+ }
+ not{
+ $this->token = \Smarty\Parser\TemplateParser::TP_NOT;
+ }
+ typecast {
+ $this->token = \Smarty\Parser\TemplateParser::TP_TYPECAST;
+ }
+ openP {
+ $this->token = \Smarty\Parser\TemplateParser::TP_OPENP;
+ }
+ closeP {
+ $this->token = \Smarty\Parser\TemplateParser::TP_CLOSEP;
+ }
+ openB {
+ $this->token = \Smarty\Parser\TemplateParser::TP_OPENB;
+ }
+ closeB {
+ $this->token = \Smarty\Parser\TemplateParser::TP_CLOSEB;
+ }
+ ptr {
+ $this->token = \Smarty\Parser\TemplateParser::TP_PTR;
+ }
+ aptr {
+ $this->token = \Smarty\Parser\TemplateParser::TP_APTR;
+ }
+ equal {
+ $this->token = \Smarty\Parser\TemplateParser::TP_EQUAL;
+ }
+ incdec {
+ $this->token = \Smarty\Parser\TemplateParser::TP_INCDEC;
+ }
+ unimath {
+ $this->token = \Smarty\Parser\TemplateParser::TP_UNIMATH;
+ }
+ math {
+ $this->token = \Smarty\Parser\TemplateParser::TP_MATH;
+ }
+ at {
+ $this->token = \Smarty\Parser\TemplateParser::TP_AT;
+ }
+ array openP {
+ $this->token = \Smarty\Parser\TemplateParser::TP_ARRAYOPEN;
+ }
+ hatch {
+ $this->token = \Smarty\Parser\TemplateParser::TP_HATCH;
+ }
+ attr {
+ // resolve conflicts with shorttag and right_delimiter starting with '='
+ if (substr($this->data, $this->counter + strlen($this->value) - 1, $this->compiler->getRdelLength()) === $this->smarty->getRightDelimiter()) {
+ preg_match('/\s+/',$this->value,$match);
+ $this->value = $match[0];
+ $this->token = \Smarty\Parser\TemplateParser::TP_SPACE;
+ } else {
+ $this->token = \Smarty\Parser\TemplateParser::TP_ATTR;
+ }
+ }
+ namespace {
+ $this->token = \Smarty\Parser\TemplateParser::TP_NAMESPACE;
+ }
+ id {
+ $this->token = \Smarty\Parser\TemplateParser::TP_ID;
+ }
+ integer {
+ $this->token = \Smarty\Parser\TemplateParser::TP_INTEGER;
+ }
+ backtick {
+ $this->token = \Smarty\Parser\TemplateParser::TP_BACKTICK;
+ $this->yypopstate();
+ }
+ vert {
+ $this->token = \Smarty\Parser\TemplateParser::TP_VERT;
+ }
+ dot {
+ $this->token = \Smarty\Parser\TemplateParser::TP_DOT;
+ }
+ comma {
+ $this->token = \Smarty\Parser\TemplateParser::TP_COMMA;
+ }
+ semicolon {
+ $this->token = \Smarty\Parser\TemplateParser::TP_SEMICOLON;
+ }
+ doublecolon {
+ $this->token = \Smarty\Parser\TemplateParser::TP_DOUBLECOLON;
+ }
+ colon {
+ $this->token = \Smarty\Parser\TemplateParser::TP_COLON;
+ }
+ qmark {
+ $this->token = \Smarty\Parser\TemplateParser::TP_QMARK;
+ }
+ hex {
+ $this->token = \Smarty\Parser\TemplateParser::TP_HEX;
+ }
+ space {
+ $this->token = \Smarty\Parser\TemplateParser::TP_SPACE;
+ }
+ char {
+ $this->token = \Smarty\Parser\TemplateParser::TP_TEXT;
+ }
+ */
+
+ /*!lex2php
+ %statename LITERAL
+ ldel literal rdel {
+ $this->literal_cnt++;
+ $this->token = \Smarty\Parser\TemplateParser::TP_LITERAL;
+ }
+ ldel slash literal rdel {
+ if ($this->literal_cnt) {
+ $this->literal_cnt--;
+ $this->token = \Smarty\Parser\TemplateParser::TP_LITERAL;
+ } else {
+ $this->token = \Smarty\Parser\TemplateParser::TP_LITERALEND;
+ $this->yypopstate();
+ }
+ }
+ char {
+ if (!isset($this->yy_global_literal)) {
+ $this->yy_global_literal = $this->replace('/(SMARTYldel)SMARTYal[\/]?literalSMARTYrdel/isS');
+ }
+ $to = $this->dataLength;
+ preg_match($this->yy_global_literal, $this->data,$match,PREG_OFFSET_CAPTURE,$this->counter);
+ if (isset($match[0][1])) {
+ $to = $match[0][1];
+ } else {
+ $this->compiler->trigger_template_error ("missing or misspelled literal closing tag");
+ }
+ $this->value = substr($this->data,$this->counter,$to-$this->counter);
+ $this->token = \Smarty\Parser\TemplateParser::TP_LITERAL;
+ }
+ */
+ /*!lex2php
+ %statename DOUBLEQUOTEDSTRING
+ userliteral {
+ $this->token = \Smarty\Parser\TemplateParser::TP_TEXT;
+ }
+ ldel literal rdel {
+ $this->token = \Smarty\Parser\TemplateParser::TP_TEXT;
+ }
+ ldel slash literal rdel {
+ $this->token = \Smarty\Parser\TemplateParser::TP_TEXT;
+ }
+ ldel slash {
+ $this->yypushstate(self::TAG);
+ return true;
+ }
+ ldel id {
+ $this->yypushstate(self::TAG);
+ return true;
+ }
+ ldel {
+ $this->token = \Smarty\Parser\TemplateParser::TP_LDEL;
+ $this->taglineno = $this->line;
+ $this->yypushstate(self::TAGBODY);
+ }
+ double_quote {
+ $this->token = \Smarty\Parser\TemplateParser::TP_QUOTE;
+ $this->yypopstate();
+ }
+ backtick dollar {
+ $this->token = \Smarty\Parser\TemplateParser::TP_BACKTICK;
+ $this->value = substr($this->value,0,-1);
+ $this->yypushstate(self::TAGBODY);
+ $this->taglineno = $this->line;
+ }
+ dollar id {
+ $this->token = \Smarty\Parser\TemplateParser::TP_DOLLARID;
+ }
+ dollar {
+ $this->token = \Smarty\Parser\TemplateParser::TP_TEXT;
+ }
+ textdoublequoted {
+ $this->token = \Smarty\Parser\TemplateParser::TP_TEXT;
+ }
+ char {
+ $to = $this->dataLength;
+ $this->value = substr($this->data,$this->counter,$to-$this->counter);
+ $this->token = \Smarty\Parser\TemplateParser::TP_TEXT;
+ }
+ */
+ }
+
+
\ No newline at end of file
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/src/ParseTree/Base.php b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/src/ParseTree/Base.php
new file mode 100644
index 000000000..e1140c15e
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/src/ParseTree/Base.php
@@ -0,0 +1,45 @@
+data = $data;
+ }
+
+ /**
+ * Return buffer content in parentheses
+ *
+ * @param \Smarty\Parser\TemplateParser $parser
+ *
+ * @return string content
+ */
+ public function to_smarty_php(\Smarty\Parser\TemplateParser $parser)
+ {
+ return sprintf('(%s)', $this->data);
+ }
+}
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/src/ParseTree/Dq.php b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/src/ParseTree/Dq.php
new file mode 100644
index 000000000..b5fca3b40
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/src/ParseTree/Dq.php
@@ -0,0 +1,97 @@
+subtrees[] = $subtree;
+ if ($subtree instanceof Tag) {
+ $parser->block_nesting_level = $parser->compiler->getTagStackCount();
+ }
+ }
+
+ /**
+ * Append buffer to subtree
+ *
+ * @param \Smarty\Parser\TemplateParser $parser
+ * @param Base $subtree parse tree buffer
+ */
+ public function append_subtree(\Smarty\Parser\TemplateParser $parser, Base $subtree)
+ {
+ $last_subtree = count($this->subtrees) - 1;
+ if ($last_subtree >= 0 && $this->subtrees[ $last_subtree ] instanceof Tag
+ && $this->subtrees[ $last_subtree ]->saved_block_nesting < $parser->block_nesting_level
+ ) {
+ if ($subtree instanceof Code) {
+ $this->subtrees[ $last_subtree ]->data =
+ $parser->compiler->appendCode(
+ (string) $this->subtrees[ $last_subtree ]->data,
+ 'data . ';?>'
+ );
+ } elseif ($subtree instanceof DqContent) {
+ $this->subtrees[ $last_subtree ]->data =
+ $parser->compiler->appendCode(
+ (string) $this->subtrees[ $last_subtree ]->data,
+ 'data . '";?>'
+ );
+ } else {
+ $this->subtrees[ $last_subtree ]->data =
+ $parser->compiler->appendCode((string) $this->subtrees[ $last_subtree ]->data, (string) $subtree->data);
+ }
+ } else {
+ $this->subtrees[] = $subtree;
+ }
+ if ($subtree instanceof Tag) {
+ $parser->block_nesting_level = $parser->compiler->getTagStackCount();
+ }
+ }
+
+ /**
+ * Merge subtree buffer content together
+ *
+ * @param \Smarty\Parser\TemplateParser $parser
+ *
+ * @return string compiled template code
+ */
+ public function to_smarty_php(\Smarty\Parser\TemplateParser $parser)
+ {
+ $code = '';
+ foreach ($this->subtrees as $subtree) {
+ if ($code !== '') {
+ $code .= '.';
+ }
+ if ($subtree instanceof Tag) {
+ $more_php = $subtree->assign_to_var($parser);
+ } else {
+ $more_php = $subtree->to_smarty_php($parser);
+ }
+ $code .= $more_php;
+ if (!$subtree instanceof DqContent) {
+ $parser->compiler->has_variable_string = true;
+ }
+ }
+ return $code;
+ }
+}
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/src/ParseTree/DqContent.php b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/src/ParseTree/DqContent.php
new file mode 100644
index 000000000..f0a4b0697
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/src/ParseTree/DqContent.php
@@ -0,0 +1,44 @@
+data = $data;
+ }
+
+ /**
+ * Return content as double-quoted string
+ *
+ * @param \Smarty\Parser\TemplateParser $parser
+ *
+ * @return string doubled quoted string
+ */
+ public function to_smarty_php(\Smarty\Parser\TemplateParser $parser)
+ {
+ return '"' . $this->data . '"';
+ }
+}
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/src/ParseTree/Tag.php b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/src/ParseTree/Tag.php
new file mode 100644
index 000000000..05237f2de
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/src/ParseTree/Tag.php
@@ -0,0 +1,70 @@
+data = $data;
+ $this->saved_block_nesting = $parser->block_nesting_level;
+ }
+
+ /**
+ * Return buffer content
+ *
+ * @param \Smarty\Parser\TemplateParser $parser
+ *
+ * @return string content
+ */
+ public function to_smarty_php(\Smarty\Parser\TemplateParser $parser)
+ {
+ return $this->data;
+ }
+
+ /**
+ * Return complied code that loads the evaluated output of buffer content into a temporary variable
+ *
+ * @param \Smarty\Parser\TemplateParser $parser
+ *
+ * @return string template code
+ */
+ public function assign_to_var(\Smarty\Parser\TemplateParser $parser)
+ {
+ $var = $parser->compiler->getNewPrefixVariable();
+ $tmp = $parser->compiler->appendCode('', (string) $this->data);
+ $tmp = $parser->compiler->appendCode($tmp, "");
+ $parser->compiler->appendPrefixCode($tmp);
+ return $var;
+ }
+}
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/src/ParseTree/Template.php b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/src/ParseTree/Template.php
new file mode 100644
index 000000000..ce802a0f4
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/src/ParseTree/Template.php
@@ -0,0 +1,172 @@
+subtrees)) {
+ $this->subtrees = array_merge($this->subtrees, $subtree->subtrees);
+ } else {
+ if ($subtree->data !== '') {
+ $this->subtrees[] = $subtree;
+ }
+ }
+ }
+
+ /**
+ * Append array to subtree
+ *
+ * @param \Smarty\Parser\TemplateParser $parser
+ * @param Base[] $array
+ */
+ public function append_array(\Smarty\Parser\TemplateParser $parser, $array = array())
+ {
+ if (!empty($array)) {
+ $this->subtrees = array_merge($this->subtrees, (array)$array);
+ }
+ }
+
+ /**
+ * Prepend array to subtree
+ *
+ * @param \Smarty\Parser\TemplateParser $parser
+ * @param Base[] $array
+ */
+ public function prepend_array(\Smarty\Parser\TemplateParser $parser, $array = array())
+ {
+ if (!empty($array)) {
+ $this->subtrees = array_merge((array)$array, $this->subtrees);
+ }
+ }
+
+ /**
+ * Sanitize and merge subtree buffers together
+ *
+ * @param \Smarty\Parser\TemplateParser $parser
+ *
+ * @return string template code content
+ */
+ public function to_smarty_php(\Smarty\Parser\TemplateParser $parser)
+ {
+ $code = '';
+
+ foreach ($this->getChunkedSubtrees() as $chunk) {
+ $text = '';
+ switch ($chunk['mode']) {
+ case 'textstripped':
+ foreach ($chunk['subtrees'] as $subtree) {
+ $text .= $subtree->to_smarty_php($parser);
+ }
+ $code .= preg_replace(
+ '/((<%)|(%>)|(<\?php)|(<\?)|(\?>)|(<\/?script))/',
+ "\n",
+ $parser->compiler->processText($text)
+ );
+ break;
+ case 'text':
+ foreach ($chunk['subtrees'] as $subtree) {
+ $text .= $subtree->to_smarty_php($parser);
+ }
+ $code .= preg_replace(
+ '/((<%)|(%>)|(<\?php)|(<\?)|(\?>)|(<\/?script))/',
+ "\n",
+ $text
+ );
+ break;
+ case 'tag':
+ foreach ($chunk['subtrees'] as $subtree) {
+ $text = $parser->compiler->appendCode($text, (string) $subtree->to_smarty_php($parser));
+ }
+ $code .= $text;
+ break;
+ default:
+ foreach ($chunk['subtrees'] as $subtree) {
+ $text = $subtree->to_smarty_php($parser);
+ }
+ $code .= $text;
+
+ }
+ }
+ return $code;
+ }
+
+ private function getChunkedSubtrees() {
+ $chunks = array();
+ $currentMode = null;
+ $currentChunk = array();
+ for ($key = 0, $cnt = count($this->subtrees); $key < $cnt; $key++) {
+
+ if ($this->subtrees[ $key ]->data === '' && in_array($currentMode, array('textstripped', 'text', 'tag'))) {
+ continue;
+ }
+
+ if ($this->subtrees[ $key ] instanceof Text
+ && $this->subtrees[ $key ]->isToBeStripped()) {
+ $newMode = 'textstripped';
+ } elseif ($this->subtrees[ $key ] instanceof Text) {
+ $newMode = 'text';
+ } elseif ($this->subtrees[ $key ] instanceof Tag) {
+ $newMode = 'tag';
+ } else {
+ $newMode = 'other';
+ }
+
+ if ($newMode == $currentMode) {
+ $currentChunk[] = $this->subtrees[ $key ];
+ } else {
+ $chunks[] = array(
+ 'mode' => $currentMode,
+ 'subtrees' => $currentChunk
+ );
+ $currentMode = $newMode;
+ $currentChunk = array($this->subtrees[ $key ]);
+ }
+ }
+ if ($currentMode && $currentChunk) {
+ $chunks[] = array(
+ 'mode' => $currentMode,
+ 'subtrees' => $currentChunk
+ );
+ }
+ return $chunks;
+ }
+}
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/src/ParseTree/Text.php b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/src/ParseTree/Text.php
new file mode 100644
index 000000000..e6131407c
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/src/ParseTree/Text.php
@@ -0,0 +1,59 @@
+data = $data;
+ $this->toBeStripped = $toBeStripped;
+ }
+
+ /**
+ * Wether this section should be stripped on output to smarty php
+ * @return bool
+ */
+ public function isToBeStripped() {
+ return $this->toBeStripped;
+ }
+
+ /**
+ * Return buffer content
+ *
+ * @param \Smarty\Parser\TemplateParser $parser
+ *
+ * @return string text
+ */
+ public function to_smarty_php(\Smarty\Parser\TemplateParser $parser)
+ {
+ return $this->data;
+ }
+}
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/src/Parser/ConfigfileParser.php b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/src/Parser/ConfigfileParser.php
new file mode 100644
index 000000000..7997a0981
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/src/Parser/ConfigfileParser.php
@@ -0,0 +1,972 @@
+ '\\',
+ '\'' => '\'');
+
+ /**
+ * constructor
+ *
+ * @param Lexer $lex
+ * @param Configfile $compiler
+ */
+ public function __construct(Lexer $lex, Configfile $compiler)
+ {
+ $this->lex = $lex;
+ $this->smarty = $compiler->getSmarty();
+ $this->compiler = $compiler;
+ $this->configOverwrite = $this->smarty->config_overwrite;
+ $this->configReadHidden = $this->smarty->config_read_hidden;
+ }
+
+ /**
+ * parse optional boolean keywords
+ *
+ * @param string $str
+ *
+ * @return bool
+ */
+ private function parse_bool($str)
+ {
+ $str = strtolower($str);
+ if (in_array($str, array('on', 'yes', 'true'))) {
+ $res = true;
+ } else {
+ $res = false;
+ }
+ return $res;
+ }
+
+ /**
+ * parse single quoted string
+ * remove outer quotes
+ * unescape inner quotes
+ *
+ * @param string $qstr
+ *
+ * @return string
+ */
+ private static function parse_single_quoted_string($qstr)
+ {
+ $escaped_string = substr($qstr, 1, strlen($qstr) - 2); //remove outer quotes
+
+ $ss = preg_split('/(\\\\.)/', $escaped_string, - 1, PREG_SPLIT_DELIM_CAPTURE);
+
+ $str = '';
+ foreach ($ss as $s) {
+ if (strlen($s) === 2 && $s[0] === '\\') {
+ if (isset(self::$escapes_single[$s[1]])) {
+ $s = self::$escapes_single[$s[1]];
+ }
+ }
+ $str .= $s;
+ }
+ return $str;
+ }
+
+ /**
+ * parse double quoted string
+ *
+ * @param string $qstr
+ *
+ * @return string
+ */
+ private static function parse_double_quoted_string($qstr)
+ {
+ $inner_str = substr($qstr, 1, strlen($qstr) - 2);
+ return stripcslashes($inner_str);
+ }
+
+ /**
+ * parse triple quoted string
+ *
+ * @param string $qstr
+ *
+ * @return string
+ */
+ private static function parse_tripple_double_quoted_string($qstr)
+ {
+ return stripcslashes($qstr);
+ }
+
+ /**
+ * set a config variable in target array
+ *
+ * @param array $var
+ * @param array $target_array
+ */
+ private function set_var(array $var, array &$target_array)
+ {
+ $key = $var['key'];
+ $value = $var['value'];
+
+ if ($this->configOverwrite || !isset($target_array['vars'][$key])) {
+ $target_array['vars'][$key] = $value;
+ } else {
+ settype($target_array['vars'][$key], 'array');
+ $target_array['vars'][$key][] = $value;
+ }
+ }
+
+ /**
+ * add config variable to global vars
+ *
+ * @param array $vars
+ */
+ private function add_global_vars(array $vars)
+ {
+ if (!isset($this->compiler->config_data['vars'])) {
+ $this->compiler->config_data['vars'] = array();
+ }
+ foreach ($vars as $var) {
+ $this->set_var($var, $this->compiler->config_data);
+ }
+ }
+
+ /**
+ * add config variable to section
+ *
+ * @param string $section_name
+ * @param array $vars
+ */
+ private function add_section_vars($section_name, array $vars)
+ {
+ if (!isset($this->compiler->config_data['sections'][$section_name]['vars'])) {
+ $this->compiler->config_data['sections'][$section_name]['vars'] = array();
+ }
+ foreach ($vars as $var) {
+ $this->set_var($var, $this->compiler->config_data['sections'][$section_name]);
+ }
+ }
+
+ const TPC_OPENB = 1;
+ const TPC_SECTION = 2;
+ const TPC_CLOSEB = 3;
+ const TPC_DOT = 4;
+ const TPC_ID = 5;
+ const TPC_EQUAL = 6;
+ const TPC_FLOAT = 7;
+ const TPC_INT = 8;
+ const TPC_BOOL = 9;
+ const TPC_SINGLE_QUOTED_STRING = 10;
+ const TPC_DOUBLE_QUOTED_STRING = 11;
+ const TPC_TRIPPLE_QUOTES = 12;
+ const TPC_TRIPPLE_TEXT = 13;
+ const TPC_TRIPPLE_QUOTES_END = 14;
+ const TPC_NAKED_STRING = 15;
+ const TPC_OTHER = 16;
+ const TPC_NEWLINE = 17;
+ const TPC_COMMENTSTART = 18;
+ const YY_NO_ACTION = 60;
+ const YY_ACCEPT_ACTION = 59;
+ const YY_ERROR_ACTION = 58;
+
+ const YY_SZ_ACTTAB = 39;
+public static $yy_action = array(
+ 24, 25, 26, 27, 28, 12, 15, 23, 31, 32,
+ 59, 8, 9, 3, 21, 22, 33, 13, 33, 13,
+ 14, 10, 18, 16, 30, 11, 17, 20, 34, 7,
+ 5, 1, 2, 29, 4, 19, 52, 35, 6,
+ );
+ public static $yy_lookahead = array(
+ 7, 8, 9, 10, 11, 12, 5, 27, 15, 16,
+ 20, 21, 25, 23, 25, 26, 17, 18, 17, 18,
+ 2, 25, 4, 13, 14, 1, 15, 24, 17, 22,
+ 3, 23, 23, 14, 6, 2, 28, 17, 3,
+);
+ const YY_SHIFT_USE_DFLT = -8;
+ const YY_SHIFT_MAX = 19;
+ public static $yy_shift_ofst = array(
+ -8, 1, 1, 1, -7, -1, -1, 24, -8, -8,
+ -8, 18, 10, 11, 27, 28, 19, 20, 33, 35,
+);
+ const YY_REDUCE_USE_DFLT = -21;
+ const YY_REDUCE_MAX = 10;
+ public static $yy_reduce_ofst = array(
+ -10, -11, -11, -11, -20, -13, -4, 3, 7, 8,
+ 9,
+);
+ public static $yyExpectedTokens = array(
+ array(),
+ array(5, 17, 18, ),
+ array(5, 17, 18, ),
+ array(5, 17, 18, ),
+ array(7, 8, 9, 10, 11, 12, 15, 16, ),
+ array(17, 18, ),
+ array(17, 18, ),
+ array(1, ),
+ array(),
+ array(),
+ array(),
+ array(2, 4, ),
+ array(13, 14, ),
+ array(15, 17, ),
+ array(3, ),
+ array(6, ),
+ array(14, ),
+ array(17, ),
+ array(2, ),
+ array(3, ),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+);
+ public static $yy_default = array(
+ 44, 40, 41, 37, 58, 58, 58, 36, 39, 44,
+ 44, 58, 58, 58, 58, 58, 58, 58, 58, 58,
+ 38, 42, 43, 45, 46, 47, 48, 49, 50, 51,
+ 52, 53, 54, 55, 56, 57,
+);
+ const YYNOCODE = 29;
+ const YYSTACKDEPTH = 100;
+ const YYNSTATE = 36;
+ const YYNRULE = 22;
+ const YYERRORSYMBOL = 19;
+ const YYERRSYMDT = 'yy0';
+ const YYFALLBACK = 0;
+ public static $yyFallback = array(
+ );
+ public function Trace($TraceFILE, $zTracePrompt)
+ {
+ if (!$TraceFILE) {
+ $zTracePrompt = 0;
+ } elseif (!$zTracePrompt) {
+ $TraceFILE = 0;
+ }
+ $this->yyTraceFILE = $TraceFILE;
+ $this->yyTracePrompt = $zTracePrompt;
+ }
+
+ public function PrintTrace()
+ {
+ $this->yyTraceFILE = fopen('php://output', 'w');
+ $this->yyTracePrompt = ' ';
+ }
+
+ public $yyTraceFILE;
+ public $yyTracePrompt;
+ public $yyidx; /* Index of top element in stack */
+ public $yyerrcnt; /* Shifts left before out of the error */
+ public $yystack = array(); /* The parser's stack */
+
+ public $yyTokenName = array(
+ '$', 'OPENB', 'SECTION', 'CLOSEB',
+ 'DOT', 'ID', 'EQUAL', 'FLOAT',
+ 'INT', 'BOOL', 'SINGLE_QUOTED_STRING', 'DOUBLE_QUOTED_STRING',
+ 'TRIPPLE_QUOTES', 'TRIPPLE_TEXT', 'TRIPPLE_QUOTES_END', 'NAKED_STRING',
+ 'OTHER', 'NEWLINE', 'COMMENTSTART', 'error',
+ 'start', 'global_vars', 'sections', 'var_list',
+ 'section', 'newline', 'var', 'value',
+ );
+
+ public static $yyRuleName = array(
+ 'start ::= global_vars sections',
+ 'global_vars ::= var_list',
+ 'sections ::= sections section',
+ 'sections ::=',
+ 'section ::= OPENB SECTION CLOSEB newline var_list',
+ 'section ::= OPENB DOT SECTION CLOSEB newline var_list',
+ 'var_list ::= var_list newline',
+ 'var_list ::= var_list var',
+ 'var_list ::=',
+ 'var ::= ID EQUAL value',
+ 'value ::= FLOAT',
+ 'value ::= INT',
+ 'value ::= BOOL',
+ 'value ::= SINGLE_QUOTED_STRING',
+ 'value ::= DOUBLE_QUOTED_STRING',
+ 'value ::= TRIPPLE_QUOTES TRIPPLE_TEXT TRIPPLE_QUOTES_END',
+ 'value ::= TRIPPLE_QUOTES TRIPPLE_QUOTES_END',
+ 'value ::= NAKED_STRING',
+ 'value ::= OTHER',
+ 'newline ::= NEWLINE',
+ 'newline ::= COMMENTSTART NEWLINE',
+ 'newline ::= COMMENTSTART NAKED_STRING NEWLINE',
+ );
+
+ public function tokenName($tokenType)
+ {
+ if ($tokenType === 0) {
+ return 'End of Input';
+ }
+ if ($tokenType > 0 && $tokenType < count($this->yyTokenName)) {
+ return $this->yyTokenName[$tokenType];
+ } else {
+ return 'Unknown';
+ }
+ }
+
+ public static function yy_destructor($yymajor, $yypminor)
+ {
+ switch ($yymajor) {
+ default: break; /* If no destructor action specified: do nothing */
+ }
+ }
+
+ public function yy_pop_parser_stack()
+ {
+ if (empty($this->yystack)) {
+ return;
+ }
+ $yytos = array_pop($this->yystack);
+ if ($this->yyTraceFILE && $this->yyidx >= 0) {
+ fwrite($this->yyTraceFILE,
+ $this->yyTracePrompt . 'Popping ' . $this->yyTokenName[$yytos->major] .
+ "\n");
+ }
+ $yymajor = $yytos->major;
+ self::yy_destructor($yymajor, $yytos->minor);
+ $this->yyidx--;
+
+ return $yymajor;
+ }
+
+ public function __destruct()
+ {
+ while ($this->yystack !== Array()) {
+ $this->yy_pop_parser_stack();
+ }
+ if (is_resource($this->yyTraceFILE)) {
+ fclose($this->yyTraceFILE);
+ }
+ }
+
+ public function yy_get_expected_tokens($token)
+ {
+ static $res3 = array();
+ static $res4 = array();
+ $state = $this->yystack[$this->yyidx]->stateno;
+ $expected = self::$yyExpectedTokens[$state];
+ if (isset($res3[$state][$token])) {
+ if ($res3[$state][$token]) {
+ return $expected;
+ }
+ } else {
+ if ($res3[$state][$token] = in_array($token, self::$yyExpectedTokens[$state], true)) {
+ return $expected;
+ }
+ }
+ $stack = $this->yystack;
+ $yyidx = $this->yyidx;
+ do {
+ $yyact = $this->yy_find_shift_action($token);
+ if ($yyact >= self::YYNSTATE && $yyact < self::YYNSTATE + self::YYNRULE) {
+ // reduce action
+ $done = 0;
+ do {
+ if ($done++ === 100) {
+ $this->yyidx = $yyidx;
+ $this->yystack = $stack;
+ // too much recursion prevents proper detection
+ // so give up
+ return array_unique($expected);
+ }
+ $yyruleno = $yyact - self::YYNSTATE;
+ $this->yyidx -= self::$yyRuleInfo[$yyruleno][1];
+ $nextstate = $this->yy_find_reduce_action(
+ $this->yystack[$this->yyidx]->stateno,
+ self::$yyRuleInfo[$yyruleno][0]);
+ if (isset(self::$yyExpectedTokens[$nextstate])) {
+ $expected = array_merge($expected, self::$yyExpectedTokens[$nextstate]);
+ if (isset($res4[$nextstate][$token])) {
+ if ($res4[$nextstate][$token]) {
+ $this->yyidx = $yyidx;
+ $this->yystack = $stack;
+ return array_unique($expected);
+ }
+ } else {
+ if ($res4[$nextstate][$token] = in_array($token, self::$yyExpectedTokens[$nextstate], true)) {
+ $this->yyidx = $yyidx;
+ $this->yystack = $stack;
+ return array_unique($expected);
+ }
+ }
+ }
+ if ($nextstate < self::YYNSTATE) {
+ // we need to shift a non-terminal
+ $this->yyidx++;
+ $x = (object) ['stateno' => null, 'major' => null, 'minor' => null];
+ $x->stateno = $nextstate;
+ $x->major = self::$yyRuleInfo[$yyruleno][0];
+ $this->yystack[$this->yyidx] = $x;
+ continue 2;
+ } elseif ($nextstate === self::YYNSTATE + self::YYNRULE + 1) {
+ $this->yyidx = $yyidx;
+ $this->yystack = $stack;
+ // the last token was just ignored, we can't accept
+ // by ignoring input, this is in essence ignoring a
+ // syntax error!
+ return array_unique($expected);
+ } elseif ($nextstate === self::YY_NO_ACTION) {
+ $this->yyidx = $yyidx;
+ $this->yystack = $stack;
+ // input accepted, but not shifted (I guess)
+ return $expected;
+ } else {
+ $yyact = $nextstate;
+ }
+ } while (true);
+ }
+ break;
+ } while (true);
+ $this->yyidx = $yyidx;
+ $this->yystack = $stack;
+
+ return array_unique($expected);
+ }
+
+ public function yy_is_expected_token($token)
+ {
+ static $res = array();
+ static $res2 = array();
+ if ($token === 0) {
+ return true; // 0 is not part of this
+ }
+ $state = $this->yystack[$this->yyidx]->stateno;
+ if (isset($res[$state][$token])) {
+ if ($res[$state][$token]) {
+ return true;
+ }
+ } else {
+ if ($res[$state][$token] = in_array($token, self::$yyExpectedTokens[$state], true)) {
+ return true;
+ }
+ }
+ $stack = $this->yystack;
+ $yyidx = $this->yyidx;
+ do {
+ $yyact = $this->yy_find_shift_action($token);
+ if ($yyact >= self::YYNSTATE && $yyact < self::YYNSTATE + self::YYNRULE) {
+ // reduce action
+ $done = 0;
+ do {
+ if ($done++ === 100) {
+ $this->yyidx = $yyidx;
+ $this->yystack = $stack;
+ // too much recursion prevents proper detection
+ // so give up
+ return true;
+ }
+ $yyruleno = $yyact - self::YYNSTATE;
+ $this->yyidx -= self::$yyRuleInfo[$yyruleno][1];
+ $nextstate = $this->yy_find_reduce_action(
+ $this->yystack[$this->yyidx]->stateno,
+ self::$yyRuleInfo[$yyruleno][0]);
+ if (isset($res2[$nextstate][$token])) {
+ if ($res2[$nextstate][$token]) {
+ $this->yyidx = $yyidx;
+ $this->yystack = $stack;
+ return true;
+ }
+ } else {
+ if ($res2[$nextstate][$token] = (isset(self::$yyExpectedTokens[$nextstate]) && in_array($token, self::$yyExpectedTokens[$nextstate], true))) {
+ $this->yyidx = $yyidx;
+ $this->yystack = $stack;
+ return true;
+ }
+ }
+ if ($nextstate < self::YYNSTATE) {
+ // we need to shift a non-terminal
+ $this->yyidx++;
+ $x = (object) ['stateno' => null, 'major' => null, 'minor' => null];
+ $x->stateno = $nextstate;
+ $x->major = self::$yyRuleInfo[$yyruleno][0];
+ $this->yystack[$this->yyidx] = $x;
+ continue 2;
+ } elseif ($nextstate === self::YYNSTATE + self::YYNRULE + 1) {
+ $this->yyidx = $yyidx;
+ $this->yystack = $stack;
+ if (!$token) {
+ // end of input: this is valid
+ return true;
+ }
+ // the last token was just ignored, we can't accept
+ // by ignoring input, this is in essence ignoring a
+ // syntax error!
+ return false;
+ } elseif ($nextstate === self::YY_NO_ACTION) {
+ $this->yyidx = $yyidx;
+ $this->yystack = $stack;
+ // input accepted, but not shifted (I guess)
+ return true;
+ } else {
+ $yyact = $nextstate;
+ }
+ } while (true);
+ }
+ break;
+ } while (true);
+ $this->yyidx = $yyidx;
+ $this->yystack = $stack;
+
+ return true;
+ }
+
+ public function yy_find_shift_action($iLookAhead)
+ {
+ $stateno = $this->yystack[$this->yyidx]->stateno;
+
+ /* if ($this->yyidx < 0) return self::YY_NO_ACTION; */
+ if (!isset(self::$yy_shift_ofst[$stateno])) {
+ // no shift actions
+ return self::$yy_default[$stateno];
+ }
+ $i = self::$yy_shift_ofst[$stateno];
+ if ($i === self::YY_SHIFT_USE_DFLT) {
+ return self::$yy_default[$stateno];
+ }
+ if ($iLookAhead === self::YYNOCODE) {
+ return self::YY_NO_ACTION;
+ }
+ $i += $iLookAhead;
+ if ($i < 0 || $i >= self::YY_SZ_ACTTAB ||
+ self::$yy_lookahead[$i] != $iLookAhead) {
+ if (count(self::$yyFallback) && $iLookAhead < count(self::$yyFallback)
+ && ($iFallback = self::$yyFallback[$iLookAhead]) != 0) {
+ if ($this->yyTraceFILE) {
+ fwrite($this->yyTraceFILE, $this->yyTracePrompt . 'FALLBACK ' .
+ $this->yyTokenName[$iLookAhead] . ' => ' .
+ $this->yyTokenName[$iFallback] . "\n");
+ }
+
+ return $this->yy_find_shift_action($iFallback);
+ }
+
+ return self::$yy_default[$stateno];
+ } else {
+ return self::$yy_action[$i];
+ }
+ }
+
+ public function yy_find_reduce_action($stateno, $iLookAhead)
+ {
+ /* $stateno = $this->yystack[$this->yyidx]->stateno; */
+
+ if (!isset(self::$yy_reduce_ofst[$stateno])) {
+ return self::$yy_default[$stateno];
+ }
+ $i = self::$yy_reduce_ofst[$stateno];
+ if ($i === self::YY_REDUCE_USE_DFLT) {
+ return self::$yy_default[$stateno];
+ }
+ if ($iLookAhead === self::YYNOCODE) {
+ return self::YY_NO_ACTION;
+ }
+ $i += $iLookAhead;
+ if ($i < 0 || $i >= self::YY_SZ_ACTTAB ||
+ self::$yy_lookahead[$i] != $iLookAhead) {
+ return self::$yy_default[$stateno];
+ } else {
+ return self::$yy_action[$i];
+ }
+ }
+
+ public function yy_shift($yyNewState, $yyMajor, $yypMinor)
+ {
+ $this->yyidx++;
+ if ($this->yyidx >= self::YYSTACKDEPTH) {
+ $this->yyidx--;
+ if ($this->yyTraceFILE) {
+ fprintf($this->yyTraceFILE, "%sStack Overflow!\n", $this->yyTracePrompt);
+ }
+ while ($this->yyidx >= 0) {
+ $this->yy_pop_parser_stack();
+ }
+// line 245 "src/Parser/ConfigfileParser.y"
+
+ $this->internalError = true;
+ $this->compiler->trigger_config_file_error('Stack overflow in configfile parser');
+
+ return;
+ }
+ $yytos = (object) ['stateno' => null, 'major' => null, 'minor' => null];
+ $yytos->stateno = $yyNewState;
+ $yytos->major = $yyMajor;
+ $yytos->minor = $yypMinor;
+ $this->yystack[] = $yytos;
+ if ($this->yyTraceFILE && $this->yyidx > 0) {
+ fprintf($this->yyTraceFILE, "%sShift %d\n", $this->yyTracePrompt,
+ $yyNewState);
+ fprintf($this->yyTraceFILE, "%sStack:", $this->yyTracePrompt);
+ for ($i = 1; $i <= $this->yyidx; $i++) {
+ fprintf($this->yyTraceFILE, " %s",
+ $this->yyTokenName[$this->yystack[$i]->major]);
+ }
+ fwrite($this->yyTraceFILE,"\n");
+ }
+ }
+
+ public static $yyRuleInfo = array(
+ array( 0 => 20, 1 => 2 ),
+ array( 0 => 21, 1 => 1 ),
+ array( 0 => 22, 1 => 2 ),
+ array( 0 => 22, 1 => 0 ),
+ array( 0 => 24, 1 => 5 ),
+ array( 0 => 24, 1 => 6 ),
+ array( 0 => 23, 1 => 2 ),
+ array( 0 => 23, 1 => 2 ),
+ array( 0 => 23, 1 => 0 ),
+ array( 0 => 26, 1 => 3 ),
+ array( 0 => 27, 1 => 1 ),
+ array( 0 => 27, 1 => 1 ),
+ array( 0 => 27, 1 => 1 ),
+ array( 0 => 27, 1 => 1 ),
+ array( 0 => 27, 1 => 1 ),
+ array( 0 => 27, 1 => 3 ),
+ array( 0 => 27, 1 => 2 ),
+ array( 0 => 27, 1 => 1 ),
+ array( 0 => 27, 1 => 1 ),
+ array( 0 => 25, 1 => 1 ),
+ array( 0 => 25, 1 => 2 ),
+ array( 0 => 25, 1 => 3 ),
+ );
+
+ public static $yyReduceMap = array(
+ 0 => 0,
+ 2 => 0,
+ 3 => 0,
+ 19 => 0,
+ 20 => 0,
+ 21 => 0,
+ 1 => 1,
+ 4 => 4,
+ 5 => 5,
+ 6 => 6,
+ 7 => 7,
+ 8 => 8,
+ 9 => 9,
+ 10 => 10,
+ 11 => 11,
+ 12 => 12,
+ 13 => 13,
+ 14 => 14,
+ 15 => 15,
+ 16 => 16,
+ 17 => 17,
+ 18 => 17,
+ );
+// line 251 "src/Parser/ConfigfileParser.y"
+ public function yy_r0(){
+ $this->_retvalue = null;
+ }
+// line 256 "src/Parser/ConfigfileParser.y"
+ public function yy_r1(){
+ $this->add_global_vars($this->yystack[$this->yyidx + 0]->minor);
+ $this->_retvalue = null;
+ }
+// line 270 "src/Parser/ConfigfileParser.y"
+ public function yy_r4(){
+ $this->add_section_vars($this->yystack[$this->yyidx + -3]->minor, $this->yystack[$this->yyidx + 0]->minor);
+ $this->_retvalue = null;
+ }
+// line 275 "src/Parser/ConfigfileParser.y"
+ public function yy_r5(){
+ if ($this->configReadHidden) {
+ $this->add_section_vars($this->yystack[$this->yyidx + -3]->minor, $this->yystack[$this->yyidx + 0]->minor);
+ }
+ $this->_retvalue = null;
+ }
+// line 283 "src/Parser/ConfigfileParser.y"
+ public function yy_r6(){
+ $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor;
+ }
+// line 287 "src/Parser/ConfigfileParser.y"
+ public function yy_r7(){
+ $this->_retvalue = array_merge($this->yystack[$this->yyidx + -1]->minor, array($this->yystack[$this->yyidx + 0]->minor));
+ }
+// line 291 "src/Parser/ConfigfileParser.y"
+ public function yy_r8(){
+ $this->_retvalue = array();
+ }
+// line 297 "src/Parser/ConfigfileParser.y"
+ public function yy_r9(){
+ $this->_retvalue = array('key' => $this->yystack[$this->yyidx + -2]->minor, 'value' => $this->yystack[$this->yyidx + 0]->minor);
+ }
+// line 302 "src/Parser/ConfigfileParser.y"
+ public function yy_r10(){
+ $this->_retvalue = (float) $this->yystack[$this->yyidx + 0]->minor;
+ }
+// line 306 "src/Parser/ConfigfileParser.y"
+ public function yy_r11(){
+ $this->_retvalue = (int) $this->yystack[$this->yyidx + 0]->minor;
+ }
+// line 310 "src/Parser/ConfigfileParser.y"
+ public function yy_r12(){
+ $this->_retvalue = $this->parse_bool($this->yystack[$this->yyidx + 0]->minor);
+ }
+// line 314 "src/Parser/ConfigfileParser.y"
+ public function yy_r13(){
+ $this->_retvalue = self::parse_single_quoted_string($this->yystack[$this->yyidx + 0]->minor);
+ }
+// line 318 "src/Parser/ConfigfileParser.y"
+ public function yy_r14(){
+ $this->_retvalue = self::parse_double_quoted_string($this->yystack[$this->yyidx + 0]->minor);
+ }
+// line 322 "src/Parser/ConfigfileParser.y"
+ public function yy_r15(){
+ $this->_retvalue = self::parse_tripple_double_quoted_string($this->yystack[$this->yyidx + -1]->minor);
+ }
+// line 326 "src/Parser/ConfigfileParser.y"
+ public function yy_r16(){
+ $this->_retvalue = '';
+ }
+// line 330 "src/Parser/ConfigfileParser.y"
+ public function yy_r17(){
+ $this->_retvalue = $this->yystack[$this->yyidx + 0]->minor;
+ }
+
+ private $_retvalue;
+
+ public function yy_reduce($yyruleno)
+ {
+ if ($this->yyTraceFILE && $yyruleno >= 0
+ && $yyruleno < count(self::$yyRuleName)) {
+ fprintf($this->yyTraceFILE, "%sReduce (%d) [%s].\n",
+ $this->yyTracePrompt, $yyruleno,
+ self::$yyRuleName[$yyruleno]);
+ }
+
+ $this->_retvalue = $yy_lefthand_side = null;
+ if (isset(self::$yyReduceMap[$yyruleno])) {
+ // call the action
+ $this->_retvalue = null;
+ $this->{'yy_r' . self::$yyReduceMap[$yyruleno]}();
+ $yy_lefthand_side = $this->_retvalue;
+ }
+ $yygoto = self::$yyRuleInfo[$yyruleno][0];
+ $yysize = self::$yyRuleInfo[$yyruleno][1];
+ $this->yyidx -= $yysize;
+ for ($i = $yysize; $i; $i--) {
+ // pop all of the right-hand side parameters
+ array_pop($this->yystack);
+ }
+ $yyact = $this->yy_find_reduce_action($this->yystack[$this->yyidx]->stateno, $yygoto);
+ if ($yyact < self::YYNSTATE) {
+ if (!$this->yyTraceFILE && $yysize) {
+ $this->yyidx++;
+ $x = (object) ['stateno' => null, 'major' => null, 'minor' => null];
+ $x->stateno = $yyact;
+ $x->major = $yygoto;
+ $x->minor = $yy_lefthand_side;
+ $this->yystack[$this->yyidx] = $x;
+ } else {
+ $this->yy_shift($yyact, $yygoto, $yy_lefthand_side);
+ }
+ } elseif ($yyact === self::YYNSTATE + self::YYNRULE + 1) {
+ $this->yy_accept();
+ }
+ }
+
+ public function yy_parse_failed()
+ {
+ if ($this->yyTraceFILE) {
+ fprintf($this->yyTraceFILE, "%sFail!\n", $this->yyTracePrompt);
+ } while ($this->yyidx >= 0) {
+ $this->yy_pop_parser_stack();
+ }
+ }
+
+ public function yy_syntax_error($yymajor, $TOKEN)
+ {
+// line 238 "src/Parser/ConfigfileParser.y"
+
+ $this->internalError = true;
+ $this->yymajor = $yymajor;
+ $this->compiler->trigger_config_file_error();
+ }
+
+ public function yy_accept()
+ {
+ if ($this->yyTraceFILE) {
+ fprintf($this->yyTraceFILE, "%sAccept!\n", $this->yyTracePrompt);
+ } while ($this->yyidx >= 0) {
+ $this->yy_pop_parser_stack();
+ }
+// line 231 "src/Parser/ConfigfileParser.y"
+
+ $this->successful = !$this->internalError;
+ $this->internalError = false;
+ $this->retvalue = $this->_retvalue;
+ }
+
+ public function doParse($yymajor, $yytokenvalue)
+ {
+ $yyerrorhit = 0; /* True if yymajor has invoked an error */
+
+ if ($this->yyidx === null || $this->yyidx < 0) {
+ $this->yyidx = 0;
+ $this->yyerrcnt = -1;
+ $x = (object) ['stateno' => null, 'major' => null, 'minor' => null];
+ $x->stateno = 0;
+ $x->major = 0;
+ $this->yystack = array();
+ $this->yystack[] = $x;
+ }
+ $yyendofinput = ($yymajor==0);
+
+ if ($this->yyTraceFILE) {
+ fprintf($this->yyTraceFILE, "%sInput %s\n",
+ $this->yyTracePrompt, $this->yyTokenName[$yymajor]);
+ }
+
+ do {
+ $yyact = $this->yy_find_shift_action($yymajor);
+ if ($yymajor < self::YYERRORSYMBOL &&
+ !$this->yy_is_expected_token($yymajor)) {
+ // force a syntax error
+ $yyact = self::YY_ERROR_ACTION;
+ }
+ if ($yyact < self::YYNSTATE) {
+ $this->yy_shift($yyact, $yymajor, $yytokenvalue);
+ $this->yyerrcnt--;
+ if ($yyendofinput && $this->yyidx >= 0) {
+ $yymajor = 0;
+ } else {
+ $yymajor = self::YYNOCODE;
+ }
+ } elseif ($yyact < self::YYNSTATE + self::YYNRULE) {
+ $this->yy_reduce($yyact - self::YYNSTATE);
+ } elseif ($yyact === self::YY_ERROR_ACTION) {
+ if ($this->yyTraceFILE) {
+ fprintf($this->yyTraceFILE, "%sSyntax Error!\n",
+ $this->yyTracePrompt);
+ }
+ if (self::YYERRORSYMBOL) {
+ if ($this->yyerrcnt < 0) {
+ $this->yy_syntax_error($yymajor, $yytokenvalue);
+ }
+ $yymx = $this->yystack[$this->yyidx]->major;
+ if ($yymx === self::YYERRORSYMBOL || $yyerrorhit) {
+ if ($this->yyTraceFILE) {
+ fprintf($this->yyTraceFILE, "%sDiscard input token %s\n",
+ $this->yyTracePrompt, $this->yyTokenName[$yymajor]);
+ }
+ $this->yy_destructor($yymajor, $yytokenvalue);
+ $yymajor = self::YYNOCODE;
+ } else {
+ while ($this->yyidx >= 0 &&
+ $yymx !== self::YYERRORSYMBOL &&
+ ($yyact = $this->yy_find_shift_action(self::YYERRORSYMBOL)) >= self::YYNSTATE
+ ){
+ $this->yy_pop_parser_stack();
+ }
+ if ($this->yyidx < 0 || $yymajor==0) {
+ $this->yy_destructor($yymajor, $yytokenvalue);
+ $this->yy_parse_failed();
+ $yymajor = self::YYNOCODE;
+ } elseif ($yymx !== self::YYERRORSYMBOL) {
+ $u2 = 0;
+ $this->yy_shift($yyact, self::YYERRORSYMBOL, $u2);
+ }
+ }
+ $this->yyerrcnt = 3;
+ $yyerrorhit = 1;
+ } else {
+ if ($this->yyerrcnt <= 0) {
+ $this->yy_syntax_error($yymajor, $yytokenvalue);
+ }
+ $this->yyerrcnt = 3;
+ $this->yy_destructor($yymajor, $yytokenvalue);
+ if ($yyendofinput) {
+ $this->yy_parse_failed();
+ }
+ $yymajor = self::YYNOCODE;
+ }
+ } else {
+ $this->yy_accept();
+ $yymajor = self::YYNOCODE;
+ }
+ } while ($yymajor !== self::YYNOCODE && $this->yyidx >= 0);
+ }
+}
+
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/src/Parser/ConfigfileParser.y b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/src/Parser/ConfigfileParser.y
new file mode 100644
index 000000000..23afc2d8f
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/src/Parser/ConfigfileParser.y
@@ -0,0 +1,352 @@
+/**
+* ConfigfileParser
+*
+* This is the config file parser
+*
+*
+* @package Smarty
+* @subpackage Config
+* @author Uwe Tews
+*/
+%name TPC_
+%declare_class {
+
+namespace Smarty\Parser;
+
+use \Smarty\Lexer\ConfigfileLexer as Lexer;
+use \Smarty\Compiler\Configfile as Configfile;
+
+/**
+* Smarty Internal Plugin Configfileparse
+*
+* This is the config file parser.
+* It is generated from the ConfigfileParser.y file
+* @package Smarty
+* @subpackage Compiler
+* @author Uwe Tews
+*/
+class ConfigfileParser
+}
+%include_class
+{
+ /**
+ * result status
+ *
+ * @var bool
+ */
+ public $successful = true;
+ /**
+ * return value
+ *
+ * @var mixed
+ */
+ public $retvalue = 0;
+ /**
+ * @var
+ */
+ public $yymajor;
+ /**
+ * lexer object
+ *
+ * @var Lexer
+ */
+ private $lex;
+ /**
+ * internal error flag
+ *
+ * @var bool
+ */
+ private $internalError = false;
+ /**
+ * compiler object
+ *
+ * @var Configfile
+ */
+ public $compiler = null;
+ /**
+ * smarty object
+ *
+ * @var Smarty
+ */
+ public $smarty = null;
+ /**
+ * copy of config_overwrite property
+ *
+ * @var bool
+ */
+ private $configOverwrite = false;
+ /**
+ * copy of config_read_hidden property
+ *
+ * @var bool
+ */
+ private $configReadHidden = false;
+ /**
+ * helper map
+ *
+ * @var array
+ */
+ private static $escapes_single = array('\\' => '\\',
+ '\'' => '\'');
+
+ /**
+ * constructor
+ *
+ * @param Lexer $lex
+ * @param Configfile $compiler
+ */
+ public function __construct(Lexer $lex, Configfile $compiler)
+ {
+ $this->lex = $lex;
+ $this->smarty = $compiler->getSmarty();
+ $this->compiler = $compiler;
+ $this->configOverwrite = $this->smarty->config_overwrite;
+ $this->configReadHidden = $this->smarty->config_read_hidden;
+ }
+
+ /**
+ * parse optional boolean keywords
+ *
+ * @param string $str
+ *
+ * @return bool
+ */
+ private function parse_bool($str)
+ {
+ $str = strtolower($str);
+ if (in_array($str, array('on', 'yes', 'true'))) {
+ $res = true;
+ } else {
+ $res = false;
+ }
+ return $res;
+ }
+
+ /**
+ * parse single quoted string
+ * remove outer quotes
+ * unescape inner quotes
+ *
+ * @param string $qstr
+ *
+ * @return string
+ */
+ private static function parse_single_quoted_string($qstr)
+ {
+ $escaped_string = substr($qstr, 1, strlen($qstr) - 2); //remove outer quotes
+
+ $ss = preg_split('/(\\\\.)/', $escaped_string, - 1, PREG_SPLIT_DELIM_CAPTURE);
+
+ $str = '';
+ foreach ($ss as $s) {
+ if (strlen($s) === 2 && $s[0] === '\\') {
+ if (isset(self::$escapes_single[$s[1]])) {
+ $s = self::$escapes_single[$s[1]];
+ }
+ }
+ $str .= $s;
+ }
+ return $str;
+ }
+
+ /**
+ * parse double quoted string
+ *
+ * @param string $qstr
+ *
+ * @return string
+ */
+ private static function parse_double_quoted_string($qstr)
+ {
+ $inner_str = substr($qstr, 1, strlen($qstr) - 2);
+ return stripcslashes($inner_str);
+ }
+
+ /**
+ * parse triple quoted string
+ *
+ * @param string $qstr
+ *
+ * @return string
+ */
+ private static function parse_tripple_double_quoted_string($qstr)
+ {
+ return stripcslashes($qstr);
+ }
+
+ /**
+ * set a config variable in target array
+ *
+ * @param array $var
+ * @param array $target_array
+ */
+ private function set_var(array $var, array &$target_array)
+ {
+ $key = $var['key'];
+ $value = $var['value'];
+
+ if ($this->configOverwrite || !isset($target_array['vars'][$key])) {
+ $target_array['vars'][$key] = $value;
+ } else {
+ settype($target_array['vars'][$key], 'array');
+ $target_array['vars'][$key][] = $value;
+ }
+ }
+
+ /**
+ * add config variable to global vars
+ *
+ * @param array $vars
+ */
+ private function add_global_vars(array $vars)
+ {
+ if (!isset($this->compiler->config_data['vars'])) {
+ $this->compiler->config_data['vars'] = array();
+ }
+ foreach ($vars as $var) {
+ $this->set_var($var, $this->compiler->config_data);
+ }
+ }
+
+ /**
+ * add config variable to section
+ *
+ * @param string $section_name
+ * @param array $vars
+ */
+ private function add_section_vars($section_name, array $vars)
+ {
+ if (!isset($this->compiler->config_data['sections'][$section_name]['vars'])) {
+ $this->compiler->config_data['sections'][$section_name]['vars'] = array();
+ }
+ foreach ($vars as $var) {
+ $this->set_var($var, $this->compiler->config_data['sections'][$section_name]);
+ }
+ }
+}
+
+%token_prefix TPC_
+
+%parse_accept
+{
+ $this->successful = !$this->internalError;
+ $this->internalError = false;
+ $this->retvalue = $this->_retvalue;
+}
+
+%syntax_error
+{
+ $this->internalError = true;
+ $this->yymajor = $yymajor;
+ $this->compiler->trigger_config_file_error();
+}
+
+%stack_overflow
+{
+ $this->internalError = true;
+ $this->compiler->trigger_config_file_error('Stack overflow in configfile parser');
+}
+
+// Complete config file
+start(res) ::= global_vars sections. {
+ res = null;
+}
+
+// Global vars
+global_vars(res) ::= var_list(vl). {
+ $this->add_global_vars(vl);
+ res = null;
+}
+
+// Sections
+sections(res) ::= sections section. {
+ res = null;
+}
+
+sections(res) ::= . {
+ res = null;
+}
+
+section(res) ::= OPENB SECTION(i) CLOSEB newline var_list(vars). {
+ $this->add_section_vars(i, vars);
+ res = null;
+}
+
+section(res) ::= OPENB DOT SECTION(i) CLOSEB newline var_list(vars). {
+ if ($this->configReadHidden) {
+ $this->add_section_vars(i, vars);
+ }
+ res = null;
+}
+
+// Var list
+var_list(res) ::= var_list(vl) newline. {
+ res = vl;
+}
+
+var_list(res) ::= var_list(vl) var(v). {
+ res = array_merge(vl, array(v));
+}
+
+var_list(res) ::= . {
+ res = array();
+}
+
+
+// Var
+var(res) ::= ID(id) EQUAL value(v). {
+ res = array('key' => id, 'value' => v);
+}
+
+
+value(res) ::= FLOAT(i). {
+ res = (float) i;
+}
+
+value(res) ::= INT(i). {
+ res = (int) i;
+}
+
+value(res) ::= BOOL(i). {
+ res = $this->parse_bool(i);
+}
+
+value(res) ::= SINGLE_QUOTED_STRING(i). {
+ res = self::parse_single_quoted_string(i);
+}
+
+value(res) ::= DOUBLE_QUOTED_STRING(i). {
+ res = self::parse_double_quoted_string(i);
+}
+
+value(res) ::= TRIPPLE_QUOTES(i) TRIPPLE_TEXT(c) TRIPPLE_QUOTES_END(ii). {
+ res = self::parse_tripple_double_quoted_string(c);
+}
+
+value(res) ::= TRIPPLE_QUOTES(i) TRIPPLE_QUOTES_END(ii). {
+ res = '';
+}
+
+value(res) ::= NAKED_STRING(i). {
+ res = i;
+}
+
+// NOTE: this is not a valid rule
+// It is added hier to produce a usefull error message on a missing '=';
+value(res) ::= OTHER(i). {
+ res = i;
+}
+
+
+// Newline and comments
+newline(res) ::= NEWLINE. {
+ res = null;
+}
+
+newline(res) ::= COMMENTSTART NEWLINE. {
+ res = null;
+}
+
+newline(res) ::= COMMENTSTART NAKED_STRING NEWLINE. {
+ res = null;
+}
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/src/Parser/TemplateParser.php b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/src/Parser/TemplateParser.php
new file mode 100644
index 000000000..1e087c555
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/src/Parser/TemplateParser.php
@@ -0,0 +1,3051 @@
+
+*/
+class TemplateParser
+{
+// line 35 "src/Parser/TemplateParser.y"
+
+ const ERR1 = 'Security error: Call to private object member not allowed';
+ const ERR2 = 'Security error: Call to dynamic object member not allowed';
+
+ /**
+ * result status
+ *
+ * @var bool
+ */
+ public $successful = true;
+
+ /**
+ * return value
+ *
+ * @var mixed
+ */
+ public $retvalue = 0;
+
+ /**
+ * @var
+ */
+ public $yymajor;
+
+ /**
+ * last index of array variable
+ *
+ * @var mixed
+ */
+ public $last_index;
+
+ /**
+ * last variable name
+ *
+ * @var string
+ */
+ public $last_variable;
+
+ /**
+ * root parse tree buffer
+ *
+ * @var TemplateParseTree
+ */
+ public $root_buffer;
+
+ /**
+ * current parse tree object
+ *
+ * @var \Smarty\ParseTree\Base
+ */
+ public $current_buffer;
+
+ /**
+ * lexer object
+ *
+ * @var Lexer
+ */
+ public $lex;
+
+ /**
+ * internal error flag
+ *
+ * @var bool
+ */
+ private $internalError = false;
+
+ /**
+ * {strip} status
+ *
+ * @var bool
+ */
+ public $strip = false;
+ /**
+ * compiler object
+ *
+ * @var TemplateCompiler
+ */
+ public $compiler = null;
+
+ /**
+ * smarty object
+ *
+ * @var \Smarty\Smarty
+ */
+ public $smarty = null;
+
+ /**
+ * template object
+ *
+ * @var \Smarty\Template
+ */
+ public $template = null;
+
+ /**
+ * block nesting level
+ *
+ * @var int
+ */
+ public $block_nesting_level = 0;
+
+ /**
+ * security object
+ *
+ * @var \Smarty\Security
+ */
+ public $security = null;
+
+ /**
+ * template prefix array
+ *
+ * @var \Smarty\ParseTree\Base[]
+ */
+ public $template_prefix = array();
+
+ /**
+ * template prefix array
+ *
+ * @var \Smarty\ParseTree\Base[]
+ */
+ public $template_postfix = array();
+
+ /**
+ * constructor
+ *
+ * @param Lexer $lex
+ * @param TemplateCompiler $compiler
+ */
+ public function __construct(Lexer $lex, TemplateCompiler $compiler)
+ {
+ $this->lex = $lex;
+ $this->compiler = $compiler;
+ $this->template = $this->compiler->getTemplate();
+ $this->smarty = $this->template->getSmarty();
+ $this->security = $this->smarty->security_policy ?? false;
+ $this->current_buffer = $this->root_buffer = new TemplateParseTree();
+ }
+
+ /**
+ * insert PHP code in current buffer
+ *
+ * @param string $code
+ */
+ public function insertPhpCode($code)
+ {
+ $this->current_buffer->append_subtree($this, new Tag($this, $code));
+ }
+
+ /**
+ * error rundown
+ *
+ */
+ public function errorRunDown()
+ {
+ while ($this->yystack !== array()) {
+ $this->yy_pop_parser_stack();
+ }
+ if (is_resource($this->yyTraceFILE)) {
+ fclose($this->yyTraceFILE);
+ }
+ }
+
+ /**
+ * merge PHP code with prefix code and return parse tree tag object
+ *
+ * @param string $code
+ *
+ * @return Tag
+ */
+ private function mergePrefixCode($code)
+ {
+ $tmp = '';
+ foreach ($this->compiler->prefix_code as $preCode) {
+ $tmp .= $preCode;
+ }
+ $this->compiler->prefix_code = array();
+ $tmp .= $code;
+ return new Tag($this, $this->compiler->processNocacheCode($tmp));
+ }
+
+
+ const TP_VERT = 1;
+ const TP_COLON = 2;
+ const TP_TEXT = 3;
+ const TP_STRIPON = 4;
+ const TP_STRIPOFF = 5;
+ const TP_LITERALSTART = 6;
+ const TP_LITERALEND = 7;
+ const TP_LITERAL = 8;
+ const TP_SIMPELOUTPUT = 9;
+ const TP_SIMPLETAG = 10;
+ const TP_SMARTYBLOCKCHILDPARENT = 11;
+ const TP_LDEL = 12;
+ const TP_RDEL = 13;
+ const TP_DOLLARID = 14;
+ const TP_EQUAL = 15;
+ const TP_ID = 16;
+ const TP_PTR = 17;
+ const TP_LDELIF = 18;
+ const TP_LDELFOR = 19;
+ const TP_SEMICOLON = 20;
+ const TP_INCDEC = 21;
+ const TP_TO = 22;
+ const TP_STEP = 23;
+ const TP_LDELFOREACH = 24;
+ const TP_SPACE = 25;
+ const TP_AS = 26;
+ const TP_APTR = 27;
+ const TP_LDELSETFILTER = 28;
+ const TP_CLOSETAG = 29;
+ const TP_LDELSLASH = 30;
+ const TP_ATTR = 31;
+ const TP_INTEGER = 32;
+ const TP_COMMA = 33;
+ const TP_OPENP = 34;
+ const TP_CLOSEP = 35;
+ const TP_MATH = 36;
+ const TP_UNIMATH = 37;
+ const TP_ISIN = 38;
+ const TP_QMARK = 39;
+ const TP_NOT = 40;
+ const TP_TYPECAST = 41;
+ const TP_HEX = 42;
+ const TP_DOT = 43;
+ const TP_INSTANCEOF = 44;
+ const TP_SINGLEQUOTESTRING = 45;
+ const TP_DOUBLECOLON = 46;
+ const TP_NAMESPACE = 47;
+ const TP_AT = 48;
+ const TP_HATCH = 49;
+ const TP_OPENB = 50;
+ const TP_CLOSEB = 51;
+ const TP_DOLLAR = 52;
+ const TP_LOGOP = 53;
+ const TP_SLOGOP = 54;
+ const TP_TLOGOP = 55;
+ const TP_SINGLECOND = 56;
+ const TP_ARRAYOPEN = 57;
+ const TP_QUOTE = 58;
+ const TP_BACKTICK = 59;
+ const YY_NO_ACTION = 527;
+ const YY_ACCEPT_ACTION = 526;
+ const YY_ERROR_ACTION = 525;
+
+ const YY_SZ_ACTTAB = 2372;
+public static $yy_action = array(
+ 33, 197, 264, 299, 176, 298, 259, 242, 243, 244,
+ 1, 259, 135, 232, 199, 354, 6, 84, 495, 217,
+ 331, 354, 109, 104, 393, 248, 212, 256, 213, 51,
+ 219, 393, 21, 393, 51, 43, 393, 32, 44, 45,
+ 273, 221, 393, 277, 393, 200, 393, 83, 4, 136,
+ 295, 226, 149, 99, 220, 5, 52, 242, 243, 244,
+ 1, 307, 132, 211, 190, 9, 6, 84, 241, 217,
+ 211, 126, 109, 150, 261, 252, 212, 256, 213, 137,
+ 205, 98, 21, 313, 83, 43, 13, 295, 44, 45,
+ 273, 221, 260, 230, 197, 200, 293, 83, 4, 321,
+ 295, 35, 149, 86, 309, 5, 52, 242, 243, 244,
+ 1, 146, 97, 387, 82, 231, 6, 84, 14, 217,
+ 138, 251, 109, 148, 15, 387, 212, 256, 213, 452,
+ 219, 387, 21, 251, 439, 43, 452, 252, 44, 45,
+ 273, 221, 3, 277, 99, 200, 439, 83, 4, 252,
+ 295, 259, 526, 96, 252, 5, 52, 242, 243, 244,
+ 1, 136, 134, 262, 199, 103, 6, 84, 155, 217,
+ 252, 279, 109, 112, 51, 439, 212, 256, 213, 127,
+ 219, 316, 21, 99, 228, 43, 314, 439, 44, 45,
+ 273, 221, 318, 277, 263, 200, 83, 83, 4, 295,
+ 295, 46, 22, 280, 40, 5, 52, 242, 243, 244,
+ 1, 20, 134, 189, 191, 266, 6, 84, 254, 217,
+ 250, 19, 109, 152, 141, 253, 212, 256, 213, 197,
+ 219, 267, 21, 251, 251, 43, 175, 298, 44, 45,
+ 273, 221, 151, 277, 108, 200, 91, 83, 4, 87,
+ 295, 295, 251, 354, 180, 5, 52, 242, 243, 244,
+ 1, 259, 133, 140, 199, 354, 6, 84, 307, 217,
+ 211, 354, 109, 181, 197, 39, 212, 256, 213, 286,
+ 219, 14, 11, 94, 51, 43, 88, 15, 44, 45,
+ 273, 221, 153, 277, 143, 200, 92, 83, 4, 139,
+ 295, 295, 251, 154, 104, 5, 52, 242, 243, 244,
+ 1, 303, 134, 251, 186, 173, 6, 84, 36, 217,
+ 99, 126, 109, 181, 227, 285, 212, 256, 213, 137,
+ 208, 98, 21, 127, 180, 43, 13, 295, 44, 45,
+ 273, 221, 181, 277, 232, 200, 293, 83, 4, 112,
+ 295, 234, 196, 297, 104, 5, 52, 242, 243, 244,
+ 1, 29, 134, 224, 184, 156, 6, 84, 468, 217,
+ 197, 468, 109, 197, 23, 468, 212, 256, 213, 264,
+ 219, 18, 21, 175, 298, 43, 215, 15, 44, 45,
+ 273, 221, 232, 277, 170, 200, 168, 83, 4, 233,
+ 295, 295, 104, 144, 99, 5, 52, 242, 243, 244,
+ 1, 259, 134, 251, 199, 157, 6, 84, 26, 217,
+ 161, 181, 109, 181, 255, 439, 212, 256, 213, 178,
+ 185, 240, 21, 112, 51, 43, 164, 439, 44, 45,
+ 273, 221, 174, 277, 222, 200, 251, 83, 4, 305,
+ 295, 41, 42, 281, 12, 5, 52, 242, 243, 244,
+ 1, 197, 136, 163, 199, 167, 6, 84, 288, 289,
+ 290, 291, 109, 17, 304, 251, 212, 256, 213, 330,
+ 219, 16, 21, 258, 171, 47, 180, 25, 44, 45,
+ 273, 221, 39, 277, 93, 200, 255, 83, 4, 328,
+ 295, 41, 42, 281, 12, 5, 52, 242, 243, 244,
+ 1, 181, 136, 439, 199, 214, 6, 84, 288, 289,
+ 290, 291, 109, 177, 298, 439, 212, 256, 213, 28,
+ 219, 8, 21, 209, 194, 43, 89, 295, 44, 45,
+ 273, 221, 452, 277, 24, 200, 296, 83, 4, 452,
+ 295, 7, 440, 239, 240, 5, 52, 283, 210, 211,
+ 247, 95, 90, 106, 440, 188, 100, 81, 10, 9,
+ 254, 310, 98, 19, 294, 268, 269, 253, 195, 158,
+ 113, 169, 276, 201, 278, 172, 284, 293, 283, 210,
+ 211, 247, 197, 90, 106, 238, 187, 100, 58, 24,
+ 34, 322, 220, 98, 358, 159, 268, 269, 225, 223,
+ 317, 245, 179, 276, 201, 278, 14, 284, 293, 246,
+ 110, 283, 15, 211, 249, 439, 111, 106, 220, 188,
+ 100, 81, 24, 257, 323, 254, 98, 439, 19, 268,
+ 269, 118, 253, 265, 270, 272, 276, 201, 278, 7,
+ 284, 293, 283, 220, 211, 274, 292, 111, 85, 229,
+ 198, 116, 70, 275, 319, 160, 329, 98, 162, 320,
+ 268, 269, 36, 145, 216, 37, 332, 276, 201, 278,
+ 303, 284, 293, 41, 42, 281, 12, 303, 303, 283,
+ 303, 211, 204, 312, 111, 303, 303, 198, 116, 70,
+ 288, 289, 290, 291, 98, 303, 303, 268, 269, 303,
+ 303, 303, 303, 303, 276, 201, 278, 303, 284, 293,
+ 303, 303, 303, 283, 303, 211, 303, 303, 105, 203,
+ 312, 198, 119, 49, 303, 117, 303, 303, 98, 303,
+ 254, 268, 269, 19, 303, 303, 303, 253, 276, 201,
+ 278, 303, 284, 293, 303, 283, 14, 211, 147, 303,
+ 111, 303, 15, 198, 119, 65, 197, 303, 303, 303,
+ 98, 303, 468, 268, 269, 468, 197, 303, 355, 468,
+ 276, 201, 278, 303, 284, 293, 303, 303, 389, 283,
+ 355, 211, 207, 303, 111, 303, 355, 198, 119, 65,
+ 389, 303, 303, 303, 98, 303, 389, 268, 269, 303,
+ 197, 468, 303, 303, 276, 201, 278, 303, 284, 293,
+ 303, 303, 386, 283, 303, 211, 202, 303, 111, 303,
+ 303, 198, 116, 70, 386, 303, 303, 303, 98, 303,
+ 386, 268, 269, 303, 303, 303, 303, 303, 276, 201,
+ 278, 303, 284, 293, 303, 303, 303, 283, 303, 211,
+ 303, 303, 111, 303, 311, 198, 119, 65, 303, 303,
+ 303, 303, 98, 303, 303, 268, 269, 303, 303, 303,
+ 303, 303, 276, 201, 278, 303, 284, 293, 303, 303,
+ 303, 283, 303, 211, 206, 303, 105, 303, 303, 198,
+ 119, 56, 303, 233, 303, 303, 98, 303, 303, 268,
+ 269, 303, 303, 303, 303, 303, 276, 201, 278, 303,
+ 284, 293, 303, 283, 303, 211, 303, 303, 111, 303,
+ 303, 198, 115, 62, 303, 303, 303, 303, 98, 303,
+ 303, 268, 269, 303, 303, 303, 303, 303, 276, 201,
+ 278, 303, 284, 293, 303, 303, 303, 283, 303, 211,
+ 303, 303, 111, 303, 303, 193, 114, 57, 303, 303,
+ 303, 303, 98, 303, 303, 268, 269, 303, 303, 303,
+ 303, 303, 276, 201, 278, 303, 284, 293, 303, 283,
+ 303, 211, 303, 303, 111, 303, 303, 198, 101, 80,
+ 303, 303, 303, 303, 98, 303, 303, 268, 269, 303,
+ 303, 303, 303, 303, 276, 201, 278, 303, 284, 293,
+ 303, 303, 303, 283, 303, 211, 303, 303, 111, 303,
+ 303, 198, 102, 79, 303, 303, 303, 303, 98, 303,
+ 303, 268, 269, 303, 303, 303, 303, 303, 276, 201,
+ 278, 303, 284, 293, 303, 283, 303, 211, 303, 303,
+ 111, 303, 303, 198, 119, 53, 303, 303, 303, 303,
+ 98, 303, 303, 268, 269, 303, 303, 303, 303, 303,
+ 276, 201, 278, 303, 284, 293, 303, 303, 303, 283,
+ 303, 211, 303, 303, 111, 303, 303, 198, 119, 64,
+ 303, 303, 303, 303, 98, 303, 303, 268, 269, 303,
+ 303, 303, 303, 303, 276, 201, 278, 303, 284, 293,
+ 303, 283, 303, 211, 303, 303, 111, 303, 303, 198,
+ 101, 54, 303, 303, 303, 303, 98, 303, 303, 268,
+ 269, 303, 303, 303, 303, 303, 276, 201, 278, 303,
+ 284, 293, 303, 303, 303, 283, 303, 211, 303, 303,
+ 111, 303, 303, 198, 119, 63, 303, 303, 303, 303,
+ 98, 303, 303, 268, 269, 303, 303, 303, 303, 303,
+ 276, 201, 278, 303, 284, 293, 303, 283, 303, 211,
+ 303, 303, 111, 303, 303, 198, 119, 55, 303, 303,
+ 303, 303, 98, 303, 303, 268, 269, 303, 303, 303,
+ 303, 303, 276, 201, 278, 303, 284, 293, 303, 303,
+ 303, 283, 303, 211, 303, 303, 111, 303, 303, 198,
+ 119, 56, 303, 303, 303, 303, 98, 303, 303, 268,
+ 269, 303, 303, 303, 303, 303, 276, 201, 278, 303,
+ 284, 293, 303, 283, 303, 211, 303, 303, 111, 303,
+ 303, 198, 119, 66, 303, 303, 303, 303, 98, 303,
+ 303, 268, 269, 303, 303, 303, 303, 303, 276, 201,
+ 278, 303, 284, 293, 303, 303, 303, 283, 303, 211,
+ 303, 303, 111, 303, 303, 198, 119, 67, 303, 303,
+ 303, 303, 98, 303, 303, 268, 269, 303, 303, 303,
+ 303, 303, 276, 201, 278, 303, 284, 293, 303, 283,
+ 303, 211, 303, 303, 111, 303, 303, 198, 119, 68,
+ 303, 303, 303, 303, 98, 303, 303, 268, 269, 303,
+ 303, 303, 303, 303, 276, 201, 278, 303, 284, 293,
+ 303, 303, 303, 283, 303, 211, 303, 303, 111, 303,
+ 303, 198, 119, 69, 303, 303, 303, 303, 98, 303,
+ 303, 268, 269, 303, 303, 303, 303, 303, 276, 201,
+ 278, 303, 284, 293, 303, 283, 303, 211, 303, 303,
+ 111, 303, 303, 198, 119, 71, 303, 303, 303, 303,
+ 98, 303, 303, 268, 269, 303, 303, 303, 303, 303,
+ 276, 201, 278, 303, 284, 293, 303, 303, 303, 283,
+ 303, 211, 303, 303, 111, 303, 303, 192, 119, 59,
+ 303, 303, 303, 303, 98, 303, 303, 268, 269, 303,
+ 303, 303, 303, 303, 276, 201, 278, 303, 284, 293,
+ 303, 283, 303, 211, 303, 303, 111, 303, 303, 198,
+ 119, 60, 303, 303, 303, 303, 98, 303, 303, 268,
+ 269, 303, 303, 303, 303, 303, 276, 201, 278, 303,
+ 284, 293, 303, 303, 303, 283, 303, 211, 303, 303,
+ 111, 303, 303, 198, 119, 61, 303, 303, 303, 303,
+ 98, 303, 303, 268, 269, 303, 303, 303, 303, 303,
+ 276, 201, 278, 303, 284, 293, 303, 283, 303, 211,
+ 303, 303, 111, 303, 303, 198, 119, 72, 303, 303,
+ 303, 303, 98, 303, 303, 268, 269, 303, 303, 303,
+ 303, 303, 276, 201, 278, 303, 284, 293, 303, 303,
+ 303, 283, 303, 211, 303, 303, 111, 303, 303, 198,
+ 119, 73, 303, 303, 303, 303, 98, 303, 303, 268,
+ 269, 303, 303, 303, 303, 303, 276, 201, 278, 303,
+ 284, 293, 303, 283, 303, 211, 303, 303, 111, 303,
+ 303, 198, 119, 74, 303, 303, 303, 303, 98, 303,
+ 303, 268, 269, 303, 303, 303, 303, 303, 276, 201,
+ 278, 303, 284, 293, 303, 303, 303, 283, 303, 211,
+ 303, 303, 111, 303, 303, 198, 119, 75, 303, 303,
+ 303, 303, 98, 303, 303, 268, 269, 303, 303, 303,
+ 303, 303, 276, 201, 278, 303, 284, 293, 303, 283,
+ 303, 211, 303, 303, 111, 303, 303, 198, 119, 76,
+ 303, 303, 303, 303, 98, 303, 303, 268, 269, 303,
+ 303, 303, 303, 303, 276, 201, 278, 303, 284, 293,
+ 303, 303, 303, 283, 303, 211, 303, 303, 111, 303,
+ 303, 198, 119, 77, 303, 303, 303, 303, 98, 303,
+ 303, 268, 269, 303, 303, 303, 303, 303, 276, 201,
+ 278, 303, 284, 293, 303, 283, 303, 211, 303, 303,
+ 111, 303, 303, 198, 119, 78, 303, 303, 303, 303,
+ 98, 303, 303, 268, 269, 303, 303, 303, 303, 303,
+ 276, 201, 278, 303, 284, 293, 303, 303, 303, 283,
+ 303, 211, 303, 303, 111, 303, 303, 198, 119, 48,
+ 303, 303, 303, 303, 98, 303, 303, 268, 269, 303,
+ 303, 303, 303, 303, 276, 201, 278, 303, 284, 293,
+ 303, 283, 303, 211, 303, 303, 111, 303, 303, 198,
+ 119, 50, 303, 303, 303, 303, 98, 303, 303, 268,
+ 269, 303, 303, 303, 303, 303, 276, 201, 278, 303,
+ 284, 293, 308, 303, 303, 303, 303, 303, 242, 243,
+ 244, 2, 303, 306, 303, 303, 303, 6, 84, 254,
+ 303, 303, 19, 109, 303, 303, 253, 212, 256, 213,
+ 303, 303, 38, 303, 14, 14, 303, 303, 303, 165,
+ 15, 15, 303, 303, 303, 41, 42, 281, 12, 251,
+ 303, 303, 46, 22, 280, 40, 303, 301, 27, 303,
+ 303, 308, 288, 289, 290, 291, 303, 242, 243, 244,
+ 2, 303, 306, 303, 303, 303, 6, 84, 303, 303,
+ 303, 303, 109, 303, 14, 303, 212, 256, 213, 303,
+ 15, 142, 303, 303, 303, 41, 42, 281, 12, 303,
+ 303, 251, 303, 303, 46, 22, 280, 40, 303, 303,
+ 303, 303, 288, 289, 290, 291, 302, 27, 303, 303,
+ 235, 236, 237, 130, 303, 303, 242, 243, 244, 1,
+ 468, 303, 303, 468, 303, 6, 84, 468, 452, 303,
+ 303, 109, 303, 303, 303, 212, 256, 213, 283, 303,
+ 211, 303, 303, 111, 303, 303, 198, 131, 303, 303,
+ 303, 303, 303, 98, 452, 303, 303, 452, 303, 468,
+ 303, 452, 326, 276, 201, 278, 303, 284, 293, 303,
+ 218, 303, 303, 283, 303, 211, 303, 468, 111, 303,
+ 468, 198, 125, 3, 468, 452, 303, 303, 98, 271,
+ 303, 303, 303, 303, 303, 303, 303, 282, 276, 201,
+ 278, 303, 284, 293, 283, 303, 211, 303, 303, 111,
+ 166, 452, 198, 129, 452, 303, 468, 303, 452, 98,
+ 251, 303, 303, 46, 22, 280, 40, 303, 303, 276,
+ 201, 278, 303, 284, 293, 303, 218, 303, 303, 283,
+ 303, 211, 303, 468, 111, 303, 468, 198, 120, 35,
+ 468, 452, 303, 303, 98, 271, 303, 303, 303, 303,
+ 303, 303, 303, 303, 276, 201, 278, 303, 284, 293,
+ 283, 303, 211, 303, 303, 111, 303, 452, 198, 121,
+ 452, 303, 468, 303, 452, 98, 303, 303, 303, 303,
+ 303, 303, 303, 303, 303, 276, 201, 278, 303, 284,
+ 293, 303, 218, 303, 303, 283, 303, 211, 303, 468,
+ 111, 303, 468, 198, 122, 303, 468, 452, 303, 303,
+ 98, 271, 303, 303, 303, 303, 303, 303, 303, 303,
+ 276, 201, 278, 303, 284, 293, 283, 303, 211, 303,
+ 303, 111, 303, 452, 198, 123, 452, 303, 468, 303,
+ 452, 98, 303, 303, 303, 303, 303, 303, 303, 303,
+ 303, 276, 201, 278, 303, 284, 293, 303, 30, 303,
+ 303, 283, 303, 211, 218, 468, 111, 303, 468, 198,
+ 124, 468, 468, 452, 468, 303, 98, 271, 468, 452,
+ 303, 303, 303, 271, 303, 303, 276, 201, 278, 303,
+ 284, 293, 283, 402, 211, 303, 303, 111, 303, 452,
+ 198, 128, 452, 303, 468, 452, 452, 98, 452, 303,
+ 468, 303, 452, 287, 303, 107, 325, 276, 201, 278,
+ 303, 284, 293, 303, 303, 439, 303, 402, 402, 402,
+ 402, 41, 42, 281, 12, 303, 303, 439, 303, 41,
+ 42, 281, 12, 303, 402, 402, 402, 402, 288, 289,
+ 290, 291, 41, 42, 281, 12, 288, 289, 290, 291,
+ 300, 324, 41, 42, 281, 12, 182, 315, 303, 288,
+ 289, 290, 291, 183, 303, 303, 303, 303, 303, 288,
+ 289, 290, 291, 41, 42, 281, 12, 31, 303, 41,
+ 42, 281, 12, 303, 327, 303, 41, 42, 281, 12,
+ 288, 289, 290, 291, 303, 303, 288, 289, 290, 291,
+ 303, 303, 303, 288, 289, 290, 291, 41, 42, 281,
+ 12, 41, 42, 281, 12, 303, 303, 303, 303, 303,
+ 303, 303, 303, 303, 288, 289, 290, 291, 288, 289,
+ 290, 291,
+ );
+ public static $yy_lookahead = array(
+ 2, 1, 97, 13, 99, 100, 21, 9, 10, 11,
+ 12, 21, 14, 70, 16, 25, 18, 19, 1, 21,
+ 77, 31, 24, 80, 13, 69, 28, 29, 30, 44,
+ 32, 20, 34, 22, 44, 37, 25, 39, 40, 41,
+ 42, 43, 31, 45, 33, 47, 35, 49, 50, 14,
+ 52, 16, 96, 17, 43, 57, 58, 9, 10, 11,
+ 12, 65, 14, 67, 16, 33, 18, 19, 65, 21,
+ 67, 70, 24, 96, 73, 98, 28, 29, 30, 43,
+ 32, 80, 34, 51, 49, 37, 50, 52, 40, 41,
+ 42, 43, 91, 45, 1, 47, 95, 49, 50, 51,
+ 52, 15, 96, 107, 108, 57, 58, 9, 10, 11,
+ 12, 72, 14, 13, 16, 15, 18, 19, 25, 21,
+ 80, 82, 24, 72, 31, 25, 28, 29, 30, 43,
+ 32, 31, 34, 82, 34, 37, 50, 98, 40, 41,
+ 42, 43, 15, 45, 17, 47, 46, 49, 50, 98,
+ 52, 21, 61, 62, 98, 57, 58, 9, 10, 11,
+ 12, 14, 14, 16, 16, 80, 18, 19, 96, 21,
+ 98, 93, 24, 46, 44, 34, 28, 29, 30, 101,
+ 32, 51, 34, 17, 43, 37, 101, 46, 40, 41,
+ 42, 43, 51, 45, 47, 47, 49, 49, 50, 52,
+ 52, 85, 86, 87, 88, 57, 58, 9, 10, 11,
+ 12, 12, 14, 14, 16, 16, 18, 19, 9, 21,
+ 82, 12, 24, 72, 72, 16, 28, 29, 30, 1,
+ 32, 32, 34, 82, 82, 37, 99, 100, 40, 41,
+ 42, 43, 72, 45, 79, 47, 76, 49, 50, 80,
+ 52, 52, 82, 13, 103, 57, 58, 9, 10, 11,
+ 12, 21, 14, 14, 16, 25, 18, 19, 65, 21,
+ 67, 31, 24, 103, 1, 2, 28, 29, 30, 51,
+ 32, 25, 34, 34, 44, 37, 80, 31, 40, 41,
+ 42, 43, 72, 45, 70, 47, 76, 49, 50, 14,
+ 52, 52, 82, 72, 80, 57, 58, 9, 10, 11,
+ 12, 108, 14, 82, 16, 76, 18, 19, 15, 21,
+ 17, 70, 24, 103, 73, 93, 28, 29, 30, 43,
+ 32, 80, 34, 101, 103, 37, 50, 52, 40, 41,
+ 42, 43, 103, 45, 70, 47, 95, 49, 50, 46,
+ 52, 77, 78, 69, 80, 57, 58, 9, 10, 11,
+ 12, 12, 14, 14, 16, 16, 18, 19, 9, 21,
+ 1, 12, 24, 1, 2, 16, 28, 29, 30, 97,
+ 32, 25, 34, 99, 100, 37, 17, 31, 40, 41,
+ 42, 43, 70, 45, 76, 47, 76, 49, 50, 77,
+ 52, 52, 80, 72, 17, 57, 58, 9, 10, 11,
+ 12, 21, 14, 82, 16, 96, 18, 19, 27, 21,
+ 96, 103, 24, 103, 104, 34, 28, 29, 30, 6,
+ 32, 8, 34, 46, 44, 37, 72, 46, 40, 41,
+ 42, 43, 14, 45, 16, 47, 82, 49, 50, 59,
+ 52, 36, 37, 38, 39, 57, 58, 9, 10, 11,
+ 12, 1, 14, 96, 16, 72, 18, 19, 53, 54,
+ 55, 56, 24, 15, 59, 82, 28, 29, 30, 21,
+ 32, 20, 34, 16, 76, 37, 103, 27, 40, 41,
+ 42, 43, 2, 45, 33, 47, 104, 49, 50, 14,
+ 52, 36, 37, 38, 39, 57, 58, 9, 10, 11,
+ 12, 103, 14, 34, 16, 48, 18, 19, 53, 54,
+ 55, 56, 24, 99, 100, 46, 28, 29, 30, 12,
+ 32, 34, 34, 63, 64, 37, 96, 52, 40, 41,
+ 42, 43, 43, 45, 33, 47, 35, 49, 50, 50,
+ 52, 34, 34, 7, 8, 57, 58, 65, 66, 67,
+ 68, 81, 70, 71, 46, 73, 74, 75, 34, 33,
+ 9, 35, 80, 12, 100, 83, 84, 16, 64, 96,
+ 46, 81, 90, 91, 92, 81, 94, 95, 65, 66,
+ 67, 68, 1, 70, 71, 7, 73, 74, 75, 33,
+ 15, 35, 43, 80, 13, 96, 83, 84, 17, 48,
+ 51, 13, 16, 90, 91, 92, 25, 94, 95, 13,
+ 16, 65, 31, 67, 68, 34, 70, 71, 43, 73,
+ 74, 75, 33, 16, 35, 9, 80, 46, 12, 83,
+ 84, 16, 16, 16, 14, 16, 90, 91, 92, 34,
+ 94, 95, 65, 43, 67, 32, 16, 70, 16, 16,
+ 73, 74, 75, 32, 51, 49, 16, 80, 49, 51,
+ 83, 84, 15, 26, 48, 22, 35, 90, 91, 92,
+ 109, 94, 95, 36, 37, 38, 39, 109, 109, 65,
+ 109, 67, 105, 106, 70, 109, 109, 73, 74, 75,
+ 53, 54, 55, 56, 80, 109, 109, 83, 84, 109,
+ 109, 109, 109, 109, 90, 91, 92, 109, 94, 95,
+ 109, 109, 109, 65, 109, 67, 109, 109, 70, 105,
+ 106, 73, 74, 75, 109, 77, 109, 109, 80, 109,
+ 9, 83, 84, 12, 109, 109, 109, 16, 90, 91,
+ 92, 109, 94, 95, 109, 65, 25, 67, 27, 109,
+ 70, 109, 31, 73, 74, 75, 1, 109, 109, 109,
+ 80, 109, 9, 83, 84, 12, 1, 109, 13, 16,
+ 90, 91, 92, 109, 94, 95, 109, 109, 13, 65,
+ 25, 67, 102, 109, 70, 109, 31, 73, 74, 75,
+ 25, 109, 109, 109, 80, 109, 31, 83, 84, 109,
+ 1, 48, 109, 109, 90, 91, 92, 109, 94, 95,
+ 109, 109, 13, 65, 109, 67, 102, 109, 70, 109,
+ 109, 73, 74, 75, 25, 109, 109, 109, 80, 109,
+ 31, 83, 84, 109, 109, 109, 109, 109, 90, 91,
+ 92, 109, 94, 95, 109, 109, 109, 65, 109, 67,
+ 109, 109, 70, 109, 106, 73, 74, 75, 109, 109,
+ 109, 109, 80, 109, 109, 83, 84, 109, 109, 109,
+ 109, 109, 90, 91, 92, 109, 94, 95, 109, 109,
+ 109, 65, 109, 67, 102, 109, 70, 109, 109, 73,
+ 74, 75, 109, 77, 109, 109, 80, 109, 109, 83,
+ 84, 109, 109, 109, 109, 109, 90, 91, 92, 109,
+ 94, 95, 109, 65, 109, 67, 109, 109, 70, 109,
+ 109, 73, 74, 75, 109, 109, 109, 109, 80, 109,
+ 109, 83, 84, 109, 109, 109, 109, 109, 90, 91,
+ 92, 109, 94, 95, 109, 109, 109, 65, 109, 67,
+ 109, 109, 70, 109, 109, 73, 74, 75, 109, 109,
+ 109, 109, 80, 109, 109, 83, 84, 109, 109, 109,
+ 109, 109, 90, 91, 92, 109, 94, 95, 109, 65,
+ 109, 67, 109, 109, 70, 109, 109, 73, 74, 75,
+ 109, 109, 109, 109, 80, 109, 109, 83, 84, 109,
+ 109, 109, 109, 109, 90, 91, 92, 109, 94, 95,
+ 109, 109, 109, 65, 109, 67, 109, 109, 70, 109,
+ 109, 73, 74, 75, 109, 109, 109, 109, 80, 109,
+ 109, 83, 84, 109, 109, 109, 109, 109, 90, 91,
+ 92, 109, 94, 95, 109, 65, 109, 67, 109, 109,
+ 70, 109, 109, 73, 74, 75, 109, 109, 109, 109,
+ 80, 109, 109, 83, 84, 109, 109, 109, 109, 109,
+ 90, 91, 92, 109, 94, 95, 109, 109, 109, 65,
+ 109, 67, 109, 109, 70, 109, 109, 73, 74, 75,
+ 109, 109, 109, 109, 80, 109, 109, 83, 84, 109,
+ 109, 109, 109, 109, 90, 91, 92, 109, 94, 95,
+ 109, 65, 109, 67, 109, 109, 70, 109, 109, 73,
+ 74, 75, 109, 109, 109, 109, 80, 109, 109, 83,
+ 84, 109, 109, 109, 109, 109, 90, 91, 92, 109,
+ 94, 95, 109, 109, 109, 65, 109, 67, 109, 109,
+ 70, 109, 109, 73, 74, 75, 109, 109, 109, 109,
+ 80, 109, 109, 83, 84, 109, 109, 109, 109, 109,
+ 90, 91, 92, 109, 94, 95, 109, 65, 109, 67,
+ 109, 109, 70, 109, 109, 73, 74, 75, 109, 109,
+ 109, 109, 80, 109, 109, 83, 84, 109, 109, 109,
+ 109, 109, 90, 91, 92, 109, 94, 95, 109, 109,
+ 109, 65, 109, 67, 109, 109, 70, 109, 109, 73,
+ 74, 75, 109, 109, 109, 109, 80, 109, 109, 83,
+ 84, 109, 109, 109, 109, 109, 90, 91, 92, 109,
+ 94, 95, 109, 65, 109, 67, 109, 109, 70, 109,
+ 109, 73, 74, 75, 109, 109, 109, 109, 80, 109,
+ 109, 83, 84, 109, 109, 109, 109, 109, 90, 91,
+ 92, 109, 94, 95, 109, 109, 109, 65, 109, 67,
+ 109, 109, 70, 109, 109, 73, 74, 75, 109, 109,
+ 109, 109, 80, 109, 109, 83, 84, 109, 109, 109,
+ 109, 109, 90, 91, 92, 109, 94, 95, 109, 65,
+ 109, 67, 109, 109, 70, 109, 109, 73, 74, 75,
+ 109, 109, 109, 109, 80, 109, 109, 83, 84, 109,
+ 109, 109, 109, 109, 90, 91, 92, 109, 94, 95,
+ 109, 109, 109, 65, 109, 67, 109, 109, 70, 109,
+ 109, 73, 74, 75, 109, 109, 109, 109, 80, 109,
+ 109, 83, 84, 109, 109, 109, 109, 109, 90, 91,
+ 92, 109, 94, 95, 109, 65, 109, 67, 109, 109,
+ 70, 109, 109, 73, 74, 75, 109, 109, 109, 109,
+ 80, 109, 109, 83, 84, 109, 109, 109, 109, 109,
+ 90, 91, 92, 109, 94, 95, 109, 109, 109, 65,
+ 109, 67, 109, 109, 70, 109, 109, 73, 74, 75,
+ 109, 109, 109, 109, 80, 109, 109, 83, 84, 109,
+ 109, 109, 109, 109, 90, 91, 92, 109, 94, 95,
+ 109, 65, 109, 67, 109, 109, 70, 109, 109, 73,
+ 74, 75, 109, 109, 109, 109, 80, 109, 109, 83,
+ 84, 109, 109, 109, 109, 109, 90, 91, 92, 109,
+ 94, 95, 109, 109, 109, 65, 109, 67, 109, 109,
+ 70, 109, 109, 73, 74, 75, 109, 109, 109, 109,
+ 80, 109, 109, 83, 84, 109, 109, 109, 109, 109,
+ 90, 91, 92, 109, 94, 95, 109, 65, 109, 67,
+ 109, 109, 70, 109, 109, 73, 74, 75, 109, 109,
+ 109, 109, 80, 109, 109, 83, 84, 109, 109, 109,
+ 109, 109, 90, 91, 92, 109, 94, 95, 109, 109,
+ 109, 65, 109, 67, 109, 109, 70, 109, 109, 73,
+ 74, 75, 109, 109, 109, 109, 80, 109, 109, 83,
+ 84, 109, 109, 109, 109, 109, 90, 91, 92, 109,
+ 94, 95, 109, 65, 109, 67, 109, 109, 70, 109,
+ 109, 73, 74, 75, 109, 109, 109, 109, 80, 109,
+ 109, 83, 84, 109, 109, 109, 109, 109, 90, 91,
+ 92, 109, 94, 95, 109, 109, 109, 65, 109, 67,
+ 109, 109, 70, 109, 109, 73, 74, 75, 109, 109,
+ 109, 109, 80, 109, 109, 83, 84, 109, 109, 109,
+ 109, 109, 90, 91, 92, 109, 94, 95, 109, 65,
+ 109, 67, 109, 109, 70, 109, 109, 73, 74, 75,
+ 109, 109, 109, 109, 80, 109, 109, 83, 84, 109,
+ 109, 109, 109, 109, 90, 91, 92, 109, 94, 95,
+ 109, 109, 109, 65, 109, 67, 109, 109, 70, 109,
+ 109, 73, 74, 75, 109, 109, 109, 109, 80, 109,
+ 109, 83, 84, 109, 109, 109, 109, 109, 90, 91,
+ 92, 109, 94, 95, 109, 65, 109, 67, 109, 109,
+ 70, 109, 109, 73, 74, 75, 109, 109, 109, 109,
+ 80, 109, 109, 83, 84, 109, 109, 109, 109, 109,
+ 90, 91, 92, 109, 94, 95, 109, 109, 109, 65,
+ 109, 67, 109, 109, 70, 109, 109, 73, 74, 75,
+ 109, 109, 109, 109, 80, 109, 109, 83, 84, 109,
+ 109, 109, 109, 109, 90, 91, 92, 109, 94, 95,
+ 109, 65, 109, 67, 109, 109, 70, 109, 109, 73,
+ 74, 75, 109, 109, 109, 109, 80, 109, 109, 83,
+ 84, 109, 109, 109, 109, 109, 90, 91, 92, 109,
+ 94, 95, 3, 109, 109, 109, 109, 109, 9, 10,
+ 11, 12, 109, 14, 109, 109, 109, 18, 19, 9,
+ 109, 109, 12, 24, 109, 109, 16, 28, 29, 30,
+ 109, 109, 23, 109, 25, 25, 109, 109, 109, 72,
+ 31, 31, 109, 109, 109, 36, 37, 38, 39, 82,
+ 109, 109, 85, 86, 87, 88, 109, 58, 59, 109,
+ 109, 3, 53, 54, 55, 56, 109, 9, 10, 11,
+ 12, 109, 14, 109, 109, 109, 18, 19, 109, 109,
+ 109, 109, 24, 109, 25, 109, 28, 29, 30, 109,
+ 31, 72, 109, 109, 109, 36, 37, 38, 39, 109,
+ 109, 82, 109, 109, 85, 86, 87, 88, 109, 109,
+ 109, 109, 53, 54, 55, 56, 58, 59, 109, 109,
+ 3, 4, 5, 6, 109, 109, 9, 10, 11, 12,
+ 9, 109, 109, 12, 109, 18, 19, 16, 17, 109,
+ 109, 24, 109, 109, 109, 28, 29, 30, 65, 109,
+ 67, 109, 109, 70, 109, 109, 73, 74, 109, 109,
+ 109, 109, 109, 80, 43, 109, 109, 46, 109, 48,
+ 109, 50, 89, 90, 91, 92, 109, 94, 95, 109,
+ 2, 109, 109, 65, 109, 67, 109, 9, 70, 109,
+ 12, 73, 74, 15, 16, 17, 109, 109, 80, 21,
+ 109, 109, 109, 109, 109, 109, 109, 89, 90, 91,
+ 92, 109, 94, 95, 65, 109, 67, 109, 109, 70,
+ 72, 43, 73, 74, 46, 109, 48, 109, 50, 80,
+ 82, 109, 109, 85, 86, 87, 88, 109, 109, 90,
+ 91, 92, 109, 94, 95, 109, 2, 109, 109, 65,
+ 109, 67, 109, 9, 70, 109, 12, 73, 74, 15,
+ 16, 17, 109, 109, 80, 21, 109, 109, 109, 109,
+ 109, 109, 109, 109, 90, 91, 92, 109, 94, 95,
+ 65, 109, 67, 109, 109, 70, 109, 43, 73, 74,
+ 46, 109, 48, 109, 50, 80, 109, 109, 109, 109,
+ 109, 109, 109, 109, 109, 90, 91, 92, 109, 94,
+ 95, 109, 2, 109, 109, 65, 109, 67, 109, 9,
+ 70, 109, 12, 73, 74, 109, 16, 17, 109, 109,
+ 80, 21, 109, 109, 109, 109, 109, 109, 109, 109,
+ 90, 91, 92, 109, 94, 95, 65, 109, 67, 109,
+ 109, 70, 109, 43, 73, 74, 46, 109, 48, 109,
+ 50, 80, 109, 109, 109, 109, 109, 109, 109, 109,
+ 109, 90, 91, 92, 109, 94, 95, 109, 2, 109,
+ 109, 65, 109, 67, 2, 9, 70, 109, 12, 73,
+ 74, 9, 16, 17, 12, 109, 80, 21, 16, 17,
+ 109, 109, 109, 21, 109, 109, 90, 91, 92, 109,
+ 94, 95, 65, 2, 67, 109, 109, 70, 109, 43,
+ 73, 74, 46, 109, 48, 43, 50, 80, 46, 109,
+ 48, 109, 50, 51, 109, 20, 13, 90, 91, 92,
+ 109, 94, 95, 109, 109, 34, 109, 36, 37, 38,
+ 39, 36, 37, 38, 39, 109, 109, 46, 109, 36,
+ 37, 38, 39, 109, 53, 54, 55, 56, 53, 54,
+ 55, 56, 36, 37, 38, 39, 53, 54, 55, 56,
+ 13, 35, 36, 37, 38, 39, 13, 51, 109, 53,
+ 54, 55, 56, 13, 109, 109, 109, 109, 109, 53,
+ 54, 55, 56, 36, 37, 38, 39, 2, 109, 36,
+ 37, 38, 39, 109, 13, 109, 36, 37, 38, 39,
+ 53, 54, 55, 56, 109, 109, 53, 54, 55, 56,
+ 109, 109, 109, 53, 54, 55, 56, 36, 37, 38,
+ 39, 36, 37, 38, 39, 109, 109, 109, 109, 109,
+ 109, 109, 109, 109, 53, 54, 55, 56, 53, 54,
+ 55, 56,
+);
+ const YY_SHIFT_USE_DFLT = -16;
+ const YY_SHIFT_MAX = 234;
+ public static $yy_shift_ofst = array(
+ -16, 98, 98, 148, 198, 198, 248, 148, 148, 198,
+ 148, 248, -2, 48, 298, 148, 148, 148, 298, 148,
+ 148, 148, 148, 148, 148, 148, 148, 148, 148, 148,
+ 348, 148, 148, 148, 148, 398, 148, 148, 148, 448,
+ 498, 498, 498, 498, 498, 498, 498, 498, 1819, 1869,
+ 1869, 147, 1809, 2225, 647, 2233, 2256, 2246, 2277, 415,
+ 2283, 2290, 2315, 2311, 465, 465, 465, 465, 465, 465,
+ 465, 465, 465, 465, 465, 465, 465, 465, 465, 465,
+ 465, 465, 591, 35, 249, 93, 1868, 731, 1820, 36,
+ 127, 93, 93, 249, 249, 273, 1927, 1988, 561, 349,
+ 765, 775, 809, 209, 209, 303, 256, 285, 256, 356,
+ 369, 387, 428, 428, 228, 372, 460, 256, 0, 0,
+ 0, 0, 0, 0, 0, 0, 166, 166, 17, 0,
+ -16, -16, 2192, 2054, 2120, 2186, 1931, 199, 626, 359,
+ 86, 256, 256, 458, 256, 485, 256, 485, 256, 286,
+ 286, 256, 256, 256, 256, 286, 517, 286, 286, 286,
+ 499, 286, 499, 286, 256, 256, 256, 256, 0, 490,
+ 0, 0, 490, 0, 497, 166, 166, 166, -16, -16,
+ -16, -16, -16, -16, 2221, 11, 100, -10, 240, 763,
+ 141, 391, 390, 130, 423, 546, 461, 467, -15, 479,
+ 518, 534, 511, 536, 32, 559, 566, 599, 585, 588,
+ 598, 606, 596, 604, 617, 625, 627, 630, 629, 610,
+ 623, 631, 615, 640, 497, 642, 616, 619, 643, 613,
+ 618, 650, 657, 641, 653,
+);
+ const YY_REDUCE_USE_DFLT = -96;
+ const YY_REDUCE_MAX = 183;
+ public static $yy_reduce_ofst = array(
+ 91, 492, 523, 556, 587, 624, 658, 690, 724, 758,
+ 792, 826, 858, 892, 924, 958, 990, 1024, 1056, 1090,
+ 1122, 1156, 1188, 1222, 1254, 1288, 1320, 1354, 1386, 1420,
+ 1452, 1486, 1518, 1552, 1584, 1618, 1650, 1684, 1716, 1893,
+ 1928, 1959, 1994, 2025, 2060, 2091, 2126, 2157, 1777, 1829,
+ 1958, 1, -4, 116, 116, 116, 116, 116, 116, 116,
+ 116, 116, 116, 116, 116, 116, 116, 116, 116, 116,
+ 116, 116, 116, 116, 116, 116, 116, 116, 116, 116,
+ 116, 116, 170, 251, 274, 220, 203, 39, 51, -95,
+ 284, 151, 231, -57, 322, 320, 3, -44, -23, 85,
+ 239, 239, 239, 72, -23, 137, 152, 224, 331, 364,
+ 318, 137, 78, 232, 239, 239, 239, 393, 408, 239,
+ 239, 239, 239, 239, 239, 239, 137, 424, 239, 239,
+ 470, 239, 6, 6, 6, 6, 6, 40, 56, 6,
+ 6, 138, 138, 165, 138, 169, 138, 206, 138, 282,
+ 282, 138, 138, 138, 138, 282, 319, 282, 282, 282,
+ 324, 282, 367, 282, 138, 138, 138, 138, 383, 392,
+ 383, 383, 392, 383, 440, 474, 474, 474, 514, 480,
+ 500, 504, 483, 509,
+);
+ public static $yyExpectedTokens = array(
+ array(),
+ array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ),
+ array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ),
+ array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ),
+ array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ),
+ array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ),
+ array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ),
+ array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ),
+ array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ),
+ array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ),
+ array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ),
+ array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ),
+ array(2, 9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 39, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ),
+ array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 51, 52, 57, 58, ),
+ array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ),
+ array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ),
+ array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ),
+ array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ),
+ array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ),
+ array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ),
+ array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ),
+ array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ),
+ array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ),
+ array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ),
+ array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ),
+ array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ),
+ array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ),
+ array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ),
+ array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ),
+ array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ),
+ array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ),
+ array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ),
+ array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ),
+ array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ),
+ array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ),
+ array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ),
+ array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ),
+ array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ),
+ array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ),
+ array(9, 10, 11, 12, 14, 16, 18, 19, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ),
+ array(9, 10, 11, 12, 14, 16, 18, 19, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ),
+ array(9, 10, 11, 12, 14, 16, 18, 19, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ),
+ array(9, 10, 11, 12, 14, 16, 18, 19, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ),
+ array(9, 10, 11, 12, 14, 16, 18, 19, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ),
+ array(9, 10, 11, 12, 14, 16, 18, 19, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ),
+ array(9, 10, 11, 12, 14, 16, 18, 19, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ),
+ array(9, 10, 11, 12, 14, 16, 18, 19, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ),
+ array(9, 10, 11, 12, 14, 16, 18, 19, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ),
+ array(23, 25, 31, 36, 37, 38, 39, 53, 54, 55, 56, ),
+ array(25, 31, 36, 37, 38, 39, 53, 54, 55, 56, ),
+ array(25, 31, 36, 37, 38, 39, 53, 54, 55, 56, ),
+ array(14, 16, 47, 49, 52, ),
+ array(3, 9, 10, 11, 12, 14, 18, 19, 24, 28, 29, 30, 58, 59, ),
+ array(20, 36, 37, 38, 39, 53, 54, 55, 56, ),
+ array(26, 36, 37, 38, 39, 53, 54, 55, 56, ),
+ array(13, 36, 37, 38, 39, 53, 54, 55, 56, ),
+ array(35, 36, 37, 38, 39, 53, 54, 55, 56, ),
+ array(36, 37, 38, 39, 51, 53, 54, 55, 56, ),
+ array(13, 36, 37, 38, 39, 53, 54, 55, 56, ),
+ array(36, 37, 38, 39, 53, 54, 55, 56, 59, ),
+ array(13, 36, 37, 38, 39, 53, 54, 55, 56, ),
+ array(13, 36, 37, 38, 39, 53, 54, 55, 56, ),
+ array(2, 36, 37, 38, 39, 53, 54, 55, 56, ),
+ array(13, 36, 37, 38, 39, 53, 54, 55, 56, ),
+ array(36, 37, 38, 39, 53, 54, 55, 56, ),
+ array(36, 37, 38, 39, 53, 54, 55, 56, ),
+ array(36, 37, 38, 39, 53, 54, 55, 56, ),
+ array(36, 37, 38, 39, 53, 54, 55, 56, ),
+ array(36, 37, 38, 39, 53, 54, 55, 56, ),
+ array(36, 37, 38, 39, 53, 54, 55, 56, ),
+ array(36, 37, 38, 39, 53, 54, 55, 56, ),
+ array(36, 37, 38, 39, 53, 54, 55, 56, ),
+ array(36, 37, 38, 39, 53, 54, 55, 56, ),
+ array(36, 37, 38, 39, 53, 54, 55, 56, ),
+ array(36, 37, 38, 39, 53, 54, 55, 56, ),
+ array(36, 37, 38, 39, 53, 54, 55, 56, ),
+ array(36, 37, 38, 39, 53, 54, 55, 56, ),
+ array(36, 37, 38, 39, 53, 54, 55, 56, ),
+ array(36, 37, 38, 39, 53, 54, 55, 56, ),
+ array(36, 37, 38, 39, 53, 54, 55, 56, ),
+ array(36, 37, 38, 39, 53, 54, 55, 56, ),
+ array(36, 37, 38, 39, 53, 54, 55, 56, ),
+ array(1, 13, 17, 25, 31, 34, 46, ),
+ array(14, 16, 49, 52, ),
+ array(14, 34, 52, ),
+ array(1, 25, 31, ),
+ array(3, 9, 10, 11, 12, 14, 18, 19, 24, 28, 29, 30, 58, 59, ),
+ array(9, 12, 16, 25, 27, 31, ),
+ array(9, 12, 16, 25, 31, ),
+ array(17, 43, 50, ),
+ array(15, 17, 46, ),
+ array(1, 25, 31, ),
+ array(1, 25, 31, ),
+ array(14, 34, 52, ),
+ array(14, 34, 52, ),
+ array(1, 2, ),
+ array(3, 4, 5, 6, 9, 10, 11, 12, 18, 19, 24, 28, 29, 30, ),
+ array(2, 9, 12, 15, 16, 17, 21, 43, 46, 48, 50, ),
+ array(9, 12, 16, 48, ),
+ array(12, 14, 16, 52, ),
+ array(1, 13, 25, 31, ),
+ array(1, 13, 25, 31, ),
+ array(1, 13, 25, 31, ),
+ array(9, 12, 16, ),
+ array(9, 12, 16, ),
+ array(15, 17, 46, ),
+ array(25, 31, ),
+ array(14, 52, ),
+ array(25, 31, ),
+ array(25, 31, ),
+ array(1, 17, ),
+ array(17, 46, ),
+ array(14, 16, ),
+ array(14, 16, ),
+ array(1, 51, ),
+ array(1, 2, ),
+ array(1, 27, ),
+ array(25, 31, ),
+ array(1, ),
+ array(1, ),
+ array(1, ),
+ array(1, ),
+ array(1, ),
+ array(1, ),
+ array(1, ),
+ array(1, ),
+ array(17, ),
+ array(17, ),
+ array(1, ),
+ array(1, ),
+ array(),
+ array(),
+ array(2, 9, 12, 16, 17, 21, 43, 46, 48, 50, 51, ),
+ array(2, 9, 12, 15, 16, 17, 21, 43, 46, 48, 50, ),
+ array(2, 9, 12, 16, 17, 21, 43, 46, 48, 50, ),
+ array(2, 9, 12, 16, 17, 21, 43, 46, 48, 50, ),
+ array(9, 12, 16, 17, 43, 46, 48, 50, ),
+ array(12, 14, 16, 32, 52, ),
+ array(9, 12, 16, 48, ),
+ array(9, 12, 16, ),
+ array(15, 43, 50, ),
+ array(25, 31, ),
+ array(25, 31, ),
+ array(15, 21, ),
+ array(25, 31, ),
+ array(14, 52, ),
+ array(25, 31, ),
+ array(14, 52, ),
+ array(25, 31, ),
+ array(43, 50, ),
+ array(43, 50, ),
+ array(25, 31, ),
+ array(25, 31, ),
+ array(25, 31, ),
+ array(25, 31, ),
+ array(43, 50, ),
+ array(12, 34, ),
+ array(43, 50, ),
+ array(43, 50, ),
+ array(43, 50, ),
+ array(43, 50, ),
+ array(43, 50, ),
+ array(43, 50, ),
+ array(43, 50, ),
+ array(25, 31, ),
+ array(25, 31, ),
+ array(25, 31, ),
+ array(25, 31, ),
+ array(1, ),
+ array(2, ),
+ array(1, ),
+ array(1, ),
+ array(2, ),
+ array(1, ),
+ array(34, ),
+ array(17, ),
+ array(17, ),
+ array(17, ),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(2, 34, 36, 37, 38, 39, 46, 53, 54, 55, 56, ),
+ array(13, 20, 22, 25, 31, 33, 35, 43, ),
+ array(13, 15, 25, 31, 34, 46, ),
+ array(13, 21, 25, 31, 44, ),
+ array(13, 21, 25, 31, 44, ),
+ array(9, 12, 16, 48, ),
+ array(34, 43, 46, 51, ),
+ array(27, 34, 46, ),
+ array(21, 44, 59, ),
+ array(21, 44, 51, ),
+ array(6, 8, ),
+ array(7, 8, ),
+ array(20, 33, ),
+ array(16, 48, ),
+ array(21, 44, ),
+ array(34, 46, ),
+ array(34, 46, ),
+ array(34, 46, ),
+ array(33, 35, ),
+ array(33, 35, ),
+ array(33, 51, ),
+ array(43, 51, ),
+ array(33, 35, ),
+ array(33, 35, ),
+ array(15, 43, ),
+ array(7, ),
+ array(13, ),
+ array(13, ),
+ array(16, ),
+ array(16, ),
+ array(16, ),
+ array(16, ),
+ array(16, ),
+ array(14, ),
+ array(16, ),
+ array(43, ),
+ array(32, ),
+ array(32, ),
+ array(34, ),
+ array(16, ),
+ array(34, ),
+ array(16, ),
+ array(49, ),
+ array(49, ),
+ array(16, ),
+ array(51, ),
+ array(51, ),
+ array(16, ),
+ array(15, ),
+ array(35, ),
+ array(22, ),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+);
+ public static $yy_default = array(
+ 343, 525, 525, 525, 510, 510, 525, 487, 487, 525,
+ 487, 525, 525, 525, 525, 525, 525, 525, 525, 525,
+ 525, 525, 525, 525, 525, 525, 525, 525, 525, 525,
+ 525, 525, 525, 525, 525, 525, 525, 525, 525, 525,
+ 525, 525, 525, 525, 525, 525, 525, 525, 383, 362,
+ 383, 525, 525, 525, 388, 525, 525, 525, 356, 525,
+ 525, 525, 525, 525, 367, 486, 406, 413, 485, 511,
+ 513, 512, 412, 414, 411, 415, 390, 394, 395, 385,
+ 388, 356, 426, 525, 525, 383, 525, 383, 383, 500,
+ 442, 383, 383, 525, 525, 374, 333, 441, 452, 525,
+ 397, 397, 397, 452, 452, 442, 383, 525, 383, 383,
+ 377, 442, 525, 525, 397, 397, 397, 364, 379, 397,
+ 404, 417, 418, 419, 405, 410, 442, 497, 417, 403,
+ 341, 494, 441, 441, 441, 441, 441, 525, 454, 452,
+ 468, 353, 363, 525, 366, 525, 371, 525, 372, 449,
+ 450, 357, 359, 360, 361, 478, 452, 477, 480, 479,
+ 445, 446, 447, 448, 373, 369, 370, 365, 375, 488,
+ 378, 380, 489, 435, 452, 474, 501, 498, 341, 493,
+ 493, 493, 452, 452, 426, 422, 426, 416, 416, 453,
+ 426, 426, 416, 416, 339, 525, 525, 525, 416, 426,
+ 436, 525, 525, 525, 525, 422, 525, 525, 422, 525,
+ 525, 525, 525, 525, 525, 525, 525, 525, 525, 422,
+ 424, 525, 499, 525, 468, 525, 525, 525, 525, 525,
+ 431, 525, 525, 525, 391, 334, 335, 336, 337, 338,
+ 340, 342, 344, 345, 346, 347, 348, 349, 350, 352,
+ 381, 382, 470, 471, 472, 492, 376, 490, 491, 420,
+ 429, 430, 439, 440, 451, 455, 456, 457, 398, 399,
+ 400, 401, 402, 421, 423, 425, 427, 431, 432, 433,
+ 407, 408, 409, 434, 437, 438, 465, 463, 502, 503,
+ 504, 505, 443, 444, 476, 469, 484, 351, 475, 521,
+ 522, 514, 515, 516, 519, 518, 520, 523, 524, 517,
+ 507, 509, 508, 506, 481, 466, 464, 462, 459, 460,
+ 461, 467, 482, 483, 428, 458, 496, 473, 468, 384,
+ 368, 392, 396,
+);
+ const YYNOCODE = 110;
+ const YYSTACKDEPTH = 500;
+ const YYNSTATE = 333;
+ const YYNRULE = 192;
+ const YYERRORSYMBOL = 60;
+ const YYERRSYMDT = 'yy0';
+ const YYFALLBACK = 0;
+ public static $yyFallback = array(
+ );
+ public function Trace($TraceFILE, $zTracePrompt)
+ {
+ if (!$TraceFILE) {
+ $zTracePrompt = 0;
+ } elseif (!$zTracePrompt) {
+ $TraceFILE = 0;
+ }
+ $this->yyTraceFILE = $TraceFILE;
+ $this->yyTracePrompt = $zTracePrompt;
+ }
+
+ public function PrintTrace()
+ {
+ $this->yyTraceFILE = fopen('php://output', 'w');
+ $this->yyTracePrompt = ' ';
+ }
+
+ public $yyTraceFILE;
+ public $yyTracePrompt;
+ public $yyidx; /* Index of top element in stack */
+ public $yyerrcnt; /* Shifts left before out of the error */
+ public $yystack = array(); /* The parser's stack */
+
+ public $yyTokenName = array(
+ '$', 'VERT', 'COLON', 'TEXT',
+ 'STRIPON', 'STRIPOFF', 'LITERALSTART', 'LITERALEND',
+ 'LITERAL', 'SIMPELOUTPUT', 'SIMPLETAG', 'SMARTYBLOCKCHILDPARENT',
+ 'LDEL', 'RDEL', 'DOLLARID', 'EQUAL',
+ 'ID', 'PTR', 'LDELIF', 'LDELFOR',
+ 'SEMICOLON', 'INCDEC', 'TO', 'STEP',
+ 'LDELFOREACH', 'SPACE', 'AS', 'APTR',
+ 'LDELSETFILTER', 'CLOSETAG', 'LDELSLASH', 'ATTR',
+ 'INTEGER', 'COMMA', 'OPENP', 'CLOSEP',
+ 'MATH', 'UNIMATH', 'ISIN', 'QMARK',
+ 'NOT', 'TYPECAST', 'HEX', 'DOT',
+ 'INSTANCEOF', 'SINGLEQUOTESTRING', 'DOUBLECOLON', 'NAMESPACE',
+ 'AT', 'HATCH', 'OPENB', 'CLOSEB',
+ 'DOLLAR', 'LOGOP', 'SLOGOP', 'TLOGOP',
+ 'SINGLECOND', 'ARRAYOPEN', 'QUOTE', 'BACKTICK',
+ 'error', 'start', 'template', 'literal_e2',
+ 'literal_e1', 'smartytag', 'tagbody', 'tag',
+ 'outattr', 'eqoutattr', 'varindexed', 'output',
+ 'attributes', 'variable', 'value', 'expr',
+ 'modifierlist', 'statement', 'statements', 'foraction',
+ 'varvar', 'modparameters', 'attribute', 'nullcoalescing',
+ 'ternary', 'tlop', 'lop', 'scond',
+ 'isin', 'array', 'function', 'ns1',
+ 'doublequoted_with_quotes', 'static_class_access', 'arraydef', 'object',
+ 'arrayindex', 'indexdef', 'varvarele', 'objectchain',
+ 'objectelement', 'method', 'params', 'modifier',
+ 'modparameter', 'arrayelements', 'arrayelement', 'doublequoted',
+ 'doublequotedcontent',
+ );
+
+ public static $yyRuleName = array(
+ 'start ::= template',
+ 'template ::= template TEXT',
+ 'template ::= template STRIPON',
+ 'template ::= template STRIPOFF',
+ 'template ::= template LITERALSTART literal_e2 LITERALEND',
+ 'literal_e2 ::= literal_e1 LITERALSTART literal_e1 LITERALEND',
+ 'literal_e2 ::= literal_e1',
+ 'literal_e1 ::= literal_e1 LITERAL',
+ 'literal_e1 ::=',
+ 'template ::= template smartytag',
+ 'template ::=',
+ 'smartytag ::= SIMPELOUTPUT',
+ 'smartytag ::= SIMPLETAG',
+ 'smartytag ::= SMARTYBLOCKCHILDPARENT',
+ 'smartytag ::= LDEL tagbody RDEL',
+ 'smartytag ::= tag RDEL',
+ 'tagbody ::= outattr',
+ 'tagbody ::= DOLLARID eqoutattr',
+ 'tagbody ::= varindexed eqoutattr',
+ 'eqoutattr ::= EQUAL outattr',
+ 'outattr ::= output attributes',
+ 'output ::= variable',
+ 'output ::= value',
+ 'output ::= expr',
+ 'tag ::= LDEL ID attributes',
+ 'tag ::= LDEL ID',
+ 'tag ::= LDEL ID modifierlist attributes',
+ 'tag ::= LDEL ID PTR ID attributes',
+ 'tag ::= LDEL ID PTR ID modifierlist attributes',
+ 'tag ::= LDELIF expr',
+ 'tag ::= LDELIF expr attributes',
+ 'tag ::= LDELIF statement',
+ 'tag ::= LDELIF statement attributes',
+ 'tag ::= LDELFOR statements SEMICOLON expr SEMICOLON varindexed foraction attributes',
+ 'foraction ::= EQUAL expr',
+ 'foraction ::= INCDEC',
+ 'tag ::= LDELFOR statement TO expr attributes',
+ 'tag ::= LDELFOR statement TO expr STEP expr attributes',
+ 'tag ::= LDELFOREACH SPACE expr AS varvar attributes',
+ 'tag ::= LDELFOREACH SPACE expr AS varvar APTR varvar attributes',
+ 'tag ::= LDELFOREACH attributes',
+ 'tag ::= LDELSETFILTER ID modparameters',
+ 'tag ::= LDELSETFILTER ID modparameters modifierlist',
+ 'smartytag ::= CLOSETAG',
+ 'tag ::= LDELSLASH ID',
+ 'tag ::= LDELSLASH ID modifierlist',
+ 'tag ::= LDELSLASH ID PTR ID',
+ 'tag ::= LDELSLASH ID PTR ID modifierlist',
+ 'attributes ::= attributes attribute',
+ 'attributes ::= attribute',
+ 'attributes ::=',
+ 'attribute ::= SPACE ID EQUAL ID',
+ 'attribute ::= ATTR expr',
+ 'attribute ::= ATTR value',
+ 'attribute ::= SPACE ID',
+ 'attribute ::= SPACE expr',
+ 'attribute ::= SPACE value',
+ 'attribute ::= SPACE INTEGER EQUAL expr',
+ 'statements ::= statement',
+ 'statements ::= statements COMMA statement',
+ 'statement ::= DOLLARID EQUAL INTEGER',
+ 'statement ::= DOLLARID EQUAL expr',
+ 'statement ::= varindexed EQUAL expr',
+ 'statement ::= OPENP statement CLOSEP',
+ 'expr ::= value',
+ 'expr ::= nullcoalescing',
+ 'expr ::= ternary',
+ 'expr ::= INCDEC DOLLARID',
+ 'expr ::= DOLLARID INCDEC',
+ 'expr ::= DOLLARID COLON ID',
+ 'expr ::= expr MATH value',
+ 'expr ::= expr UNIMATH value',
+ 'expr ::= expr tlop value',
+ 'expr ::= expr lop expr',
+ 'expr ::= expr scond',
+ 'isin ::= ISIN',
+ 'expr ::= expr isin array',
+ 'expr ::= expr isin value',
+ 'nullcoalescing ::= expr QMARK QMARK expr',
+ 'ternary ::= expr QMARK DOLLARID COLON expr',
+ 'ternary ::= expr QMARK value COLON expr',
+ 'ternary ::= expr QMARK expr COLON expr',
+ 'ternary ::= expr QMARK COLON expr',
+ 'value ::= variable',
+ 'value ::= UNIMATH value',
+ 'value ::= NOT value',
+ 'value ::= TYPECAST value',
+ 'value ::= variable INCDEC',
+ 'value ::= HEX',
+ 'value ::= INTEGER',
+ 'value ::= INTEGER DOT INTEGER',
+ 'value ::= INTEGER DOT',
+ 'value ::= DOT INTEGER',
+ 'value ::= ID',
+ 'value ::= function',
+ 'value ::= OPENP expr CLOSEP',
+ 'value ::= variable INSTANCEOF ns1',
+ 'value ::= variable INSTANCEOF variable',
+ 'value ::= SINGLEQUOTESTRING',
+ 'value ::= doublequoted_with_quotes',
+ 'value ::= varindexed DOUBLECOLON static_class_access',
+ 'value ::= smartytag',
+ 'value ::= value modifierlist',
+ 'value ::= NAMESPACE',
+ 'value ::= arraydef',
+ 'value ::= ns1 DOUBLECOLON static_class_access',
+ 'ns1 ::= ID',
+ 'ns1 ::= NAMESPACE',
+ 'variable ::= DOLLARID',
+ 'variable ::= varindexed',
+ 'variable ::= varvar AT ID',
+ 'variable ::= object',
+ 'variable ::= HATCH ID HATCH',
+ 'variable ::= HATCH ID HATCH arrayindex',
+ 'variable ::= HATCH variable HATCH',
+ 'variable ::= HATCH variable HATCH arrayindex',
+ 'varindexed ::= DOLLARID arrayindex',
+ 'varindexed ::= varvar arrayindex',
+ 'arrayindex ::= arrayindex indexdef',
+ 'arrayindex ::=',
+ 'indexdef ::= DOT DOLLARID',
+ 'indexdef ::= DOT varvar',
+ 'indexdef ::= DOT varvar AT ID',
+ 'indexdef ::= DOT ID',
+ 'indexdef ::= DOT INTEGER',
+ 'indexdef ::= DOT LDEL expr RDEL',
+ 'indexdef ::= OPENB ID CLOSEB',
+ 'indexdef ::= OPENB ID DOT ID CLOSEB',
+ 'indexdef ::= OPENB SINGLEQUOTESTRING CLOSEB',
+ 'indexdef ::= OPENB INTEGER CLOSEB',
+ 'indexdef ::= OPENB DOLLARID CLOSEB',
+ 'indexdef ::= OPENB variable CLOSEB',
+ 'indexdef ::= OPENB value CLOSEB',
+ 'indexdef ::= OPENB expr CLOSEB',
+ 'indexdef ::= OPENB CLOSEB',
+ 'varvar ::= DOLLARID',
+ 'varvar ::= DOLLAR',
+ 'varvar ::= varvar varvarele',
+ 'varvarele ::= ID',
+ 'varvarele ::= SIMPELOUTPUT',
+ 'varvarele ::= LDEL expr RDEL',
+ 'object ::= varindexed objectchain',
+ 'objectchain ::= objectelement',
+ 'objectchain ::= objectchain objectelement',
+ 'objectelement ::= PTR ID arrayindex',
+ 'objectelement ::= PTR varvar arrayindex',
+ 'objectelement ::= PTR LDEL expr RDEL arrayindex',
+ 'objectelement ::= PTR ID LDEL expr RDEL arrayindex',
+ 'objectelement ::= PTR method',
+ 'function ::= ns1 OPENP params CLOSEP',
+ 'method ::= ID OPENP params CLOSEP',
+ 'method ::= DOLLARID OPENP params CLOSEP',
+ 'params ::= params COMMA expr',
+ 'params ::= expr',
+ 'params ::=',
+ 'modifierlist ::= modifierlist modifier modparameters',
+ 'modifierlist ::= modifier modparameters',
+ 'modifier ::= VERT AT ID',
+ 'modifier ::= VERT ID',
+ 'modparameters ::= modparameters modparameter',
+ 'modparameters ::=',
+ 'modparameter ::= COLON value',
+ 'modparameter ::= COLON UNIMATH value',
+ 'modparameter ::= COLON array',
+ 'static_class_access ::= method',
+ 'static_class_access ::= method objectchain',
+ 'static_class_access ::= ID',
+ 'static_class_access ::= DOLLARID arrayindex',
+ 'static_class_access ::= DOLLARID arrayindex objectchain',
+ 'lop ::= LOGOP',
+ 'lop ::= SLOGOP',
+ 'tlop ::= TLOGOP',
+ 'scond ::= SINGLECOND',
+ 'arraydef ::= OPENB arrayelements CLOSEB',
+ 'arraydef ::= ARRAYOPEN arrayelements CLOSEP',
+ 'arrayelements ::= arrayelement',
+ 'arrayelements ::= arrayelements COMMA arrayelement',
+ 'arrayelements ::=',
+ 'arrayelement ::= value APTR expr',
+ 'arrayelement ::= ID APTR expr',
+ 'arrayelement ::= expr',
+ 'doublequoted_with_quotes ::= QUOTE QUOTE',
+ 'doublequoted_with_quotes ::= QUOTE doublequoted QUOTE',
+ 'doublequoted ::= doublequoted doublequotedcontent',
+ 'doublequoted ::= doublequotedcontent',
+ 'doublequotedcontent ::= BACKTICK variable BACKTICK',
+ 'doublequotedcontent ::= BACKTICK expr BACKTICK',
+ 'doublequotedcontent ::= DOLLARID',
+ 'doublequotedcontent ::= LDEL variable RDEL',
+ 'doublequotedcontent ::= LDEL expr RDEL',
+ 'doublequotedcontent ::= smartytag',
+ 'doublequotedcontent ::= TEXT',
+ );
+
+ public function tokenName($tokenType)
+ {
+ if ($tokenType === 0) {
+ return 'End of Input';
+ }
+ if ($tokenType > 0 && $tokenType < count($this->yyTokenName)) {
+ return $this->yyTokenName[$tokenType];
+ } else {
+ return 'Unknown';
+ }
+ }
+
+ public static function yy_destructor($yymajor, $yypminor)
+ {
+ switch ($yymajor) {
+ default: break; /* If no destructor action specified: do nothing */
+ }
+ }
+
+ public function yy_pop_parser_stack()
+ {
+ if (empty($this->yystack)) {
+ return;
+ }
+ $yytos = array_pop($this->yystack);
+ if ($this->yyTraceFILE && $this->yyidx >= 0) {
+ fwrite($this->yyTraceFILE,
+ $this->yyTracePrompt . 'Popping ' . $this->yyTokenName[$yytos->major] .
+ "\n");
+ }
+ $yymajor = $yytos->major;
+ self::yy_destructor($yymajor, $yytos->minor);
+ $this->yyidx--;
+
+ return $yymajor;
+ }
+
+ public function __destruct()
+ {
+ while ($this->yystack !== Array()) {
+ $this->yy_pop_parser_stack();
+ }
+ if (is_resource($this->yyTraceFILE)) {
+ fclose($this->yyTraceFILE);
+ }
+ }
+
+ public function yy_get_expected_tokens($token)
+ {
+ static $res3 = array();
+ static $res4 = array();
+ $state = $this->yystack[$this->yyidx]->stateno;
+ $expected = self::$yyExpectedTokens[$state];
+ if (isset($res3[$state][$token])) {
+ if ($res3[$state][$token]) {
+ return $expected;
+ }
+ } else {
+ if ($res3[$state][$token] = in_array($token, self::$yyExpectedTokens[$state], true)) {
+ return $expected;
+ }
+ }
+ $stack = $this->yystack;
+ $yyidx = $this->yyidx;
+ do {
+ $yyact = $this->yy_find_shift_action($token);
+ if ($yyact >= self::YYNSTATE && $yyact < self::YYNSTATE + self::YYNRULE) {
+ // reduce action
+ $done = 0;
+ do {
+ if ($done++ === 100) {
+ $this->yyidx = $yyidx;
+ $this->yystack = $stack;
+ // too much recursion prevents proper detection
+ // so give up
+ return array_unique($expected);
+ }
+ $yyruleno = $yyact - self::YYNSTATE;
+ $this->yyidx -= self::$yyRuleInfo[$yyruleno][1];
+ $nextstate = $this->yy_find_reduce_action(
+ $this->yystack[$this->yyidx]->stateno,
+ self::$yyRuleInfo[$yyruleno][0]);
+ if (isset(self::$yyExpectedTokens[$nextstate])) {
+ $expected = array_merge($expected, self::$yyExpectedTokens[$nextstate]);
+ if (isset($res4[$nextstate][$token])) {
+ if ($res4[$nextstate][$token]) {
+ $this->yyidx = $yyidx;
+ $this->yystack = $stack;
+ return array_unique($expected);
+ }
+ } else {
+ if ($res4[$nextstate][$token] = in_array($token, self::$yyExpectedTokens[$nextstate], true)) {
+ $this->yyidx = $yyidx;
+ $this->yystack = $stack;
+ return array_unique($expected);
+ }
+ }
+ }
+ if ($nextstate < self::YYNSTATE) {
+ // we need to shift a non-terminal
+ $this->yyidx++;
+ $x = (object) ['stateno' => null, 'major' => null, 'minor' => null];
+ $x->stateno = $nextstate;
+ $x->major = self::$yyRuleInfo[$yyruleno][0];
+ $this->yystack[$this->yyidx] = $x;
+ continue 2;
+ } elseif ($nextstate === self::YYNSTATE + self::YYNRULE + 1) {
+ $this->yyidx = $yyidx;
+ $this->yystack = $stack;
+ // the last token was just ignored, we can't accept
+ // by ignoring input, this is in essence ignoring a
+ // syntax error!
+ return array_unique($expected);
+ } elseif ($nextstate === self::YY_NO_ACTION) {
+ $this->yyidx = $yyidx;
+ $this->yystack = $stack;
+ // input accepted, but not shifted (I guess)
+ return $expected;
+ } else {
+ $yyact = $nextstate;
+ }
+ } while (true);
+ }
+ break;
+ } while (true);
+ $this->yyidx = $yyidx;
+ $this->yystack = $stack;
+
+ return array_unique($expected);
+ }
+
+ public function yy_is_expected_token($token)
+ {
+ static $res = array();
+ static $res2 = array();
+ if ($token === 0) {
+ return true; // 0 is not part of this
+ }
+ $state = $this->yystack[$this->yyidx]->stateno;
+ if (isset($res[$state][$token])) {
+ if ($res[$state][$token]) {
+ return true;
+ }
+ } else {
+ if ($res[$state][$token] = in_array($token, self::$yyExpectedTokens[$state], true)) {
+ return true;
+ }
+ }
+ $stack = $this->yystack;
+ $yyidx = $this->yyidx;
+ do {
+ $yyact = $this->yy_find_shift_action($token);
+ if ($yyact >= self::YYNSTATE && $yyact < self::YYNSTATE + self::YYNRULE) {
+ // reduce action
+ $done = 0;
+ do {
+ if ($done++ === 100) {
+ $this->yyidx = $yyidx;
+ $this->yystack = $stack;
+ // too much recursion prevents proper detection
+ // so give up
+ return true;
+ }
+ $yyruleno = $yyact - self::YYNSTATE;
+ $this->yyidx -= self::$yyRuleInfo[$yyruleno][1];
+ $nextstate = $this->yy_find_reduce_action(
+ $this->yystack[$this->yyidx]->stateno,
+ self::$yyRuleInfo[$yyruleno][0]);
+ if (isset($res2[$nextstate][$token])) {
+ if ($res2[$nextstate][$token]) {
+ $this->yyidx = $yyidx;
+ $this->yystack = $stack;
+ return true;
+ }
+ } else {
+ if ($res2[$nextstate][$token] = (isset(self::$yyExpectedTokens[$nextstate]) && in_array($token, self::$yyExpectedTokens[$nextstate], true))) {
+ $this->yyidx = $yyidx;
+ $this->yystack = $stack;
+ return true;
+ }
+ }
+ if ($nextstate < self::YYNSTATE) {
+ // we need to shift a non-terminal
+ $this->yyidx++;
+ $x = (object) ['stateno' => null, 'major' => null, 'minor' => null];
+ $x->stateno = $nextstate;
+ $x->major = self::$yyRuleInfo[$yyruleno][0];
+ $this->yystack[$this->yyidx] = $x;
+ continue 2;
+ } elseif ($nextstate === self::YYNSTATE + self::YYNRULE + 1) {
+ $this->yyidx = $yyidx;
+ $this->yystack = $stack;
+ if (!$token) {
+ // end of input: this is valid
+ return true;
+ }
+ // the last token was just ignored, we can't accept
+ // by ignoring input, this is in essence ignoring a
+ // syntax error!
+ return false;
+ } elseif ($nextstate === self::YY_NO_ACTION) {
+ $this->yyidx = $yyidx;
+ $this->yystack = $stack;
+ // input accepted, but not shifted (I guess)
+ return true;
+ } else {
+ $yyact = $nextstate;
+ }
+ } while (true);
+ }
+ break;
+ } while (true);
+ $this->yyidx = $yyidx;
+ $this->yystack = $stack;
+
+ return true;
+ }
+
+ public function yy_find_shift_action($iLookAhead)
+ {
+ $stateno = $this->yystack[$this->yyidx]->stateno;
+
+ /* if ($this->yyidx < 0) return self::YY_NO_ACTION; */
+ if (!isset(self::$yy_shift_ofst[$stateno])) {
+ // no shift actions
+ return self::$yy_default[$stateno];
+ }
+ $i = self::$yy_shift_ofst[$stateno];
+ if ($i === self::YY_SHIFT_USE_DFLT) {
+ return self::$yy_default[$stateno];
+ }
+ if ($iLookAhead === self::YYNOCODE) {
+ return self::YY_NO_ACTION;
+ }
+ $i += $iLookAhead;
+ if ($i < 0 || $i >= self::YY_SZ_ACTTAB ||
+ self::$yy_lookahead[$i] != $iLookAhead) {
+ if (count(self::$yyFallback) && $iLookAhead < count(self::$yyFallback)
+ && ($iFallback = self::$yyFallback[$iLookAhead]) != 0) {
+ if ($this->yyTraceFILE) {
+ fwrite($this->yyTraceFILE, $this->yyTracePrompt . 'FALLBACK ' .
+ $this->yyTokenName[$iLookAhead] . ' => ' .
+ $this->yyTokenName[$iFallback] . "\n");
+ }
+
+ return $this->yy_find_shift_action($iFallback);
+ }
+
+ return self::$yy_default[$stateno];
+ } else {
+ return self::$yy_action[$i];
+ }
+ }
+
+ public function yy_find_reduce_action($stateno, $iLookAhead)
+ {
+ /* $stateno = $this->yystack[$this->yyidx]->stateno; */
+
+ if (!isset(self::$yy_reduce_ofst[$stateno])) {
+ return self::$yy_default[$stateno];
+ }
+ $i = self::$yy_reduce_ofst[$stateno];
+ if ($i === self::YY_REDUCE_USE_DFLT) {
+ return self::$yy_default[$stateno];
+ }
+ if ($iLookAhead === self::YYNOCODE) {
+ return self::YY_NO_ACTION;
+ }
+ $i += $iLookAhead;
+ if ($i < 0 || $i >= self::YY_SZ_ACTTAB ||
+ self::$yy_lookahead[$i] != $iLookAhead) {
+ return self::$yy_default[$stateno];
+ } else {
+ return self::$yy_action[$i];
+ }
+ }
+
+ public function yy_shift($yyNewState, $yyMajor, $yypMinor)
+ {
+ $this->yyidx++;
+ if ($this->yyidx >= self::YYSTACKDEPTH) {
+ $this->yyidx--;
+ if ($this->yyTraceFILE) {
+ fprintf($this->yyTraceFILE, "%sStack Overflow!\n", $this->yyTracePrompt);
+ }
+ while ($this->yyidx >= 0) {
+ $this->yy_pop_parser_stack();
+ }
+// line 232 "src/Parser/TemplateParser.y"
+
+ $this->internalError = true;
+ $this->compiler->trigger_template_error('Stack overflow in template parser');
+
+ return;
+ }
+ $yytos = (object) ['stateno' => null, 'major' => null, 'minor' => null];
+ $yytos->stateno = $yyNewState;
+ $yytos->major = $yyMajor;
+ $yytos->minor = $yypMinor;
+ $this->yystack[] = $yytos;
+ if ($this->yyTraceFILE && $this->yyidx > 0) {
+ fprintf($this->yyTraceFILE, "%sShift %d\n", $this->yyTracePrompt,
+ $yyNewState);
+ fprintf($this->yyTraceFILE, "%sStack:", $this->yyTracePrompt);
+ for ($i = 1; $i <= $this->yyidx; $i++) {
+ fprintf($this->yyTraceFILE, " %s",
+ $this->yyTokenName[$this->yystack[$i]->major]);
+ }
+ fwrite($this->yyTraceFILE,"\n");
+ }
+ }
+
+ public static $yyRuleInfo = array(
+ array( 0 => 61, 1 => 1 ),
+ array( 0 => 62, 1 => 2 ),
+ array( 0 => 62, 1 => 2 ),
+ array( 0 => 62, 1 => 2 ),
+ array( 0 => 62, 1 => 4 ),
+ array( 0 => 63, 1 => 4 ),
+ array( 0 => 63, 1 => 1 ),
+ array( 0 => 64, 1 => 2 ),
+ array( 0 => 64, 1 => 0 ),
+ array( 0 => 62, 1 => 2 ),
+ array( 0 => 62, 1 => 0 ),
+ array( 0 => 65, 1 => 1 ),
+ array( 0 => 65, 1 => 1 ),
+ array( 0 => 65, 1 => 1 ),
+ array( 0 => 65, 1 => 3 ),
+ array( 0 => 65, 1 => 2 ),
+ array( 0 => 66, 1 => 1 ),
+ array( 0 => 66, 1 => 2 ),
+ array( 0 => 66, 1 => 2 ),
+ array( 0 => 69, 1 => 2 ),
+ array( 0 => 68, 1 => 2 ),
+ array( 0 => 71, 1 => 1 ),
+ array( 0 => 71, 1 => 1 ),
+ array( 0 => 71, 1 => 1 ),
+ array( 0 => 67, 1 => 3 ),
+ array( 0 => 67, 1 => 2 ),
+ array( 0 => 67, 1 => 4 ),
+ array( 0 => 67, 1 => 5 ),
+ array( 0 => 67, 1 => 6 ),
+ array( 0 => 67, 1 => 2 ),
+ array( 0 => 67, 1 => 3 ),
+ array( 0 => 67, 1 => 2 ),
+ array( 0 => 67, 1 => 3 ),
+ array( 0 => 67, 1 => 8 ),
+ array( 0 => 79, 1 => 2 ),
+ array( 0 => 79, 1 => 1 ),
+ array( 0 => 67, 1 => 5 ),
+ array( 0 => 67, 1 => 7 ),
+ array( 0 => 67, 1 => 6 ),
+ array( 0 => 67, 1 => 8 ),
+ array( 0 => 67, 1 => 2 ),
+ array( 0 => 67, 1 => 3 ),
+ array( 0 => 67, 1 => 4 ),
+ array( 0 => 65, 1 => 1 ),
+ array( 0 => 67, 1 => 2 ),
+ array( 0 => 67, 1 => 3 ),
+ array( 0 => 67, 1 => 4 ),
+ array( 0 => 67, 1 => 5 ),
+ array( 0 => 72, 1 => 2 ),
+ array( 0 => 72, 1 => 1 ),
+ array( 0 => 72, 1 => 0 ),
+ array( 0 => 82, 1 => 4 ),
+ array( 0 => 82, 1 => 2 ),
+ array( 0 => 82, 1 => 2 ),
+ array( 0 => 82, 1 => 2 ),
+ array( 0 => 82, 1 => 2 ),
+ array( 0 => 82, 1 => 2 ),
+ array( 0 => 82, 1 => 4 ),
+ array( 0 => 78, 1 => 1 ),
+ array( 0 => 78, 1 => 3 ),
+ array( 0 => 77, 1 => 3 ),
+ array( 0 => 77, 1 => 3 ),
+ array( 0 => 77, 1 => 3 ),
+ array( 0 => 77, 1 => 3 ),
+ array( 0 => 75, 1 => 1 ),
+ array( 0 => 75, 1 => 1 ),
+ array( 0 => 75, 1 => 1 ),
+ array( 0 => 75, 1 => 2 ),
+ array( 0 => 75, 1 => 2 ),
+ array( 0 => 75, 1 => 3 ),
+ array( 0 => 75, 1 => 3 ),
+ array( 0 => 75, 1 => 3 ),
+ array( 0 => 75, 1 => 3 ),
+ array( 0 => 75, 1 => 3 ),
+ array( 0 => 75, 1 => 2 ),
+ array( 0 => 88, 1 => 1 ),
+ array( 0 => 75, 1 => 3 ),
+ array( 0 => 75, 1 => 3 ),
+ array( 0 => 83, 1 => 4 ),
+ array( 0 => 84, 1 => 5 ),
+ array( 0 => 84, 1 => 5 ),
+ array( 0 => 84, 1 => 5 ),
+ array( 0 => 84, 1 => 4 ),
+ array( 0 => 74, 1 => 1 ),
+ array( 0 => 74, 1 => 2 ),
+ array( 0 => 74, 1 => 2 ),
+ array( 0 => 74, 1 => 2 ),
+ array( 0 => 74, 1 => 2 ),
+ array( 0 => 74, 1 => 1 ),
+ array( 0 => 74, 1 => 1 ),
+ array( 0 => 74, 1 => 3 ),
+ array( 0 => 74, 1 => 2 ),
+ array( 0 => 74, 1 => 2 ),
+ array( 0 => 74, 1 => 1 ),
+ array( 0 => 74, 1 => 1 ),
+ array( 0 => 74, 1 => 3 ),
+ array( 0 => 74, 1 => 3 ),
+ array( 0 => 74, 1 => 3 ),
+ array( 0 => 74, 1 => 1 ),
+ array( 0 => 74, 1 => 1 ),
+ array( 0 => 74, 1 => 3 ),
+ array( 0 => 74, 1 => 1 ),
+ array( 0 => 74, 1 => 2 ),
+ array( 0 => 74, 1 => 1 ),
+ array( 0 => 74, 1 => 1 ),
+ array( 0 => 74, 1 => 3 ),
+ array( 0 => 91, 1 => 1 ),
+ array( 0 => 91, 1 => 1 ),
+ array( 0 => 73, 1 => 1 ),
+ array( 0 => 73, 1 => 1 ),
+ array( 0 => 73, 1 => 3 ),
+ array( 0 => 73, 1 => 1 ),
+ array( 0 => 73, 1 => 3 ),
+ array( 0 => 73, 1 => 4 ),
+ array( 0 => 73, 1 => 3 ),
+ array( 0 => 73, 1 => 4 ),
+ array( 0 => 70, 1 => 2 ),
+ array( 0 => 70, 1 => 2 ),
+ array( 0 => 96, 1 => 2 ),
+ array( 0 => 96, 1 => 0 ),
+ array( 0 => 97, 1 => 2 ),
+ array( 0 => 97, 1 => 2 ),
+ array( 0 => 97, 1 => 4 ),
+ array( 0 => 97, 1 => 2 ),
+ array( 0 => 97, 1 => 2 ),
+ array( 0 => 97, 1 => 4 ),
+ array( 0 => 97, 1 => 3 ),
+ array( 0 => 97, 1 => 5 ),
+ array( 0 => 97, 1 => 3 ),
+ array( 0 => 97, 1 => 3 ),
+ array( 0 => 97, 1 => 3 ),
+ array( 0 => 97, 1 => 3 ),
+ array( 0 => 97, 1 => 3 ),
+ array( 0 => 97, 1 => 3 ),
+ array( 0 => 97, 1 => 2 ),
+ array( 0 => 80, 1 => 1 ),
+ array( 0 => 80, 1 => 1 ),
+ array( 0 => 80, 1 => 2 ),
+ array( 0 => 98, 1 => 1 ),
+ array( 0 => 98, 1 => 1 ),
+ array( 0 => 98, 1 => 3 ),
+ array( 0 => 95, 1 => 2 ),
+ array( 0 => 99, 1 => 1 ),
+ array( 0 => 99, 1 => 2 ),
+ array( 0 => 100, 1 => 3 ),
+ array( 0 => 100, 1 => 3 ),
+ array( 0 => 100, 1 => 5 ),
+ array( 0 => 100, 1 => 6 ),
+ array( 0 => 100, 1 => 2 ),
+ array( 0 => 90, 1 => 4 ),
+ array( 0 => 101, 1 => 4 ),
+ array( 0 => 101, 1 => 4 ),
+ array( 0 => 102, 1 => 3 ),
+ array( 0 => 102, 1 => 1 ),
+ array( 0 => 102, 1 => 0 ),
+ array( 0 => 76, 1 => 3 ),
+ array( 0 => 76, 1 => 2 ),
+ array( 0 => 103, 1 => 3 ),
+ array( 0 => 103, 1 => 2 ),
+ array( 0 => 81, 1 => 2 ),
+ array( 0 => 81, 1 => 0 ),
+ array( 0 => 104, 1 => 2 ),
+ array( 0 => 104, 1 => 3 ),
+ array( 0 => 104, 1 => 2 ),
+ array( 0 => 93, 1 => 1 ),
+ array( 0 => 93, 1 => 2 ),
+ array( 0 => 93, 1 => 1 ),
+ array( 0 => 93, 1 => 2 ),
+ array( 0 => 93, 1 => 3 ),
+ array( 0 => 86, 1 => 1 ),
+ array( 0 => 86, 1 => 1 ),
+ array( 0 => 85, 1 => 1 ),
+ array( 0 => 87, 1 => 1 ),
+ array( 0 => 94, 1 => 3 ),
+ array( 0 => 94, 1 => 3 ),
+ array( 0 => 105, 1 => 1 ),
+ array( 0 => 105, 1 => 3 ),
+ array( 0 => 105, 1 => 0 ),
+ array( 0 => 106, 1 => 3 ),
+ array( 0 => 106, 1 => 3 ),
+ array( 0 => 106, 1 => 1 ),
+ array( 0 => 92, 1 => 2 ),
+ array( 0 => 92, 1 => 3 ),
+ array( 0 => 107, 1 => 2 ),
+ array( 0 => 107, 1 => 1 ),
+ array( 0 => 108, 1 => 3 ),
+ array( 0 => 108, 1 => 3 ),
+ array( 0 => 108, 1 => 1 ),
+ array( 0 => 108, 1 => 3 ),
+ array( 0 => 108, 1 => 3 ),
+ array( 0 => 108, 1 => 1 ),
+ array( 0 => 108, 1 => 1 ),
+ );
+
+ public static $yyReduceMap = array(
+ 0 => 0,
+ 1 => 1,
+ 2 => 2,
+ 3 => 3,
+ 4 => 4,
+ 5 => 5,
+ 6 => 6,
+ 21 => 6,
+ 22 => 6,
+ 23 => 6,
+ 35 => 6,
+ 55 => 6,
+ 56 => 6,
+ 64 => 6,
+ 65 => 6,
+ 66 => 6,
+ 83 => 6,
+ 88 => 6,
+ 89 => 6,
+ 94 => 6,
+ 98 => 6,
+ 99 => 6,
+ 103 => 6,
+ 104 => 6,
+ 106 => 6,
+ 111 => 6,
+ 175 => 6,
+ 180 => 6,
+ 7 => 7,
+ 8 => 8,
+ 9 => 9,
+ 11 => 11,
+ 12 => 12,
+ 13 => 13,
+ 14 => 14,
+ 15 => 15,
+ 16 => 16,
+ 17 => 17,
+ 18 => 18,
+ 19 => 19,
+ 20 => 20,
+ 24 => 24,
+ 25 => 25,
+ 26 => 26,
+ 27 => 27,
+ 28 => 28,
+ 29 => 29,
+ 30 => 30,
+ 32 => 30,
+ 31 => 31,
+ 33 => 33,
+ 34 => 34,
+ 36 => 36,
+ 37 => 37,
+ 38 => 38,
+ 39 => 39,
+ 40 => 40,
+ 41 => 41,
+ 42 => 42,
+ 43 => 43,
+ 44 => 44,
+ 45 => 45,
+ 46 => 46,
+ 47 => 47,
+ 48 => 48,
+ 49 => 49,
+ 58 => 49,
+ 153 => 49,
+ 157 => 49,
+ 161 => 49,
+ 163 => 49,
+ 50 => 50,
+ 154 => 50,
+ 160 => 50,
+ 51 => 51,
+ 52 => 52,
+ 53 => 52,
+ 54 => 54,
+ 138 => 54,
+ 57 => 57,
+ 59 => 59,
+ 60 => 60,
+ 61 => 60,
+ 62 => 62,
+ 63 => 63,
+ 67 => 67,
+ 68 => 68,
+ 69 => 69,
+ 70 => 70,
+ 71 => 70,
+ 72 => 72,
+ 73 => 73,
+ 74 => 74,
+ 75 => 75,
+ 76 => 76,
+ 77 => 77,
+ 78 => 78,
+ 79 => 79,
+ 80 => 80,
+ 81 => 80,
+ 82 => 82,
+ 84 => 84,
+ 86 => 84,
+ 87 => 84,
+ 118 => 84,
+ 85 => 85,
+ 90 => 90,
+ 91 => 91,
+ 92 => 92,
+ 93 => 93,
+ 95 => 95,
+ 96 => 96,
+ 97 => 96,
+ 100 => 100,
+ 101 => 101,
+ 102 => 102,
+ 105 => 105,
+ 107 => 107,
+ 108 => 108,
+ 109 => 109,
+ 110 => 110,
+ 112 => 112,
+ 113 => 113,
+ 114 => 114,
+ 115 => 115,
+ 116 => 116,
+ 117 => 117,
+ 119 => 119,
+ 177 => 119,
+ 120 => 120,
+ 121 => 121,
+ 122 => 122,
+ 123 => 123,
+ 124 => 124,
+ 125 => 125,
+ 133 => 125,
+ 126 => 126,
+ 127 => 127,
+ 128 => 128,
+ 129 => 128,
+ 131 => 128,
+ 132 => 128,
+ 130 => 130,
+ 134 => 134,
+ 135 => 135,
+ 136 => 136,
+ 181 => 136,
+ 137 => 137,
+ 139 => 139,
+ 140 => 140,
+ 141 => 141,
+ 142 => 142,
+ 143 => 143,
+ 144 => 144,
+ 145 => 145,
+ 146 => 146,
+ 147 => 147,
+ 148 => 148,
+ 149 => 149,
+ 150 => 150,
+ 151 => 151,
+ 152 => 152,
+ 155 => 155,
+ 156 => 156,
+ 158 => 158,
+ 159 => 159,
+ 162 => 162,
+ 164 => 164,
+ 165 => 165,
+ 166 => 166,
+ 167 => 167,
+ 168 => 168,
+ 169 => 169,
+ 170 => 170,
+ 171 => 171,
+ 172 => 172,
+ 173 => 173,
+ 174 => 173,
+ 176 => 176,
+ 178 => 178,
+ 179 => 179,
+ 182 => 182,
+ 183 => 183,
+ 184 => 184,
+ 185 => 185,
+ 188 => 185,
+ 186 => 186,
+ 189 => 186,
+ 187 => 187,
+ 190 => 190,
+ 191 => 191,
+ );
+// line 245 "src/Parser/TemplateParser.y"
+ public function yy_r0(){
+ $this->root_buffer->prepend_array($this, $this->template_prefix);
+ $this->root_buffer->append_array($this, $this->template_postfix);
+ $this->_retvalue = $this->root_buffer->to_smarty_php($this);
+ }
+// line 252 "src/Parser/TemplateParser.y"
+ public function yy_r1(){
+ $text = $this->yystack[ $this->yyidx + 0 ]->minor;
+
+ if ((string)$text == '') {
+ $this->current_buffer->append_subtree($this, null);
+ }
+
+ $this->current_buffer->append_subtree($this, new \Smarty\ParseTree\Text($text, $this->strip));
+ }
+// line 262 "src/Parser/TemplateParser.y"
+ public function yy_r2(){
+ $this->strip = true;
+ }
+// line 266 "src/Parser/TemplateParser.y"
+ public function yy_r3(){
+ $this->strip = false;
+ }
+// line 271 "src/Parser/TemplateParser.y"
+ public function yy_r4(){
+ $this->current_buffer->append_subtree($this, new \Smarty\ParseTree\Text($this->yystack[$this->yyidx + -1]->minor));
+ }
+// line 276 "src/Parser/TemplateParser.y"
+ public function yy_r5(){
+ $this->_retvalue = $this->yystack[$this->yyidx + -3]->minor.$this->yystack[$this->yyidx + -1]->minor;
+ }
+// line 279 "src/Parser/TemplateParser.y"
+ public function yy_r6(){
+ $this->_retvalue = $this->yystack[$this->yyidx + 0]->minor;
+ }
+// line 283 "src/Parser/TemplateParser.y"
+ public function yy_r7(){
+ $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor;
+
+ }
+// line 288 "src/Parser/TemplateParser.y"
+ public function yy_r8(){
+ $this->_retvalue = '';
+ }
+// line 292 "src/Parser/TemplateParser.y"
+ public function yy_r9(){
+ $this->current_buffer->append_subtree($this, $this->mergePrefixCode($this->yystack[$this->yyidx + 0]->minor));
+ $this->compiler->has_variable_string = false;
+ $this->block_nesting_level = $this->compiler->getTagStackCount();
+ }
+// line 302 "src/Parser/TemplateParser.y"
+ public function yy_r11(){
+ $var = trim(substr($this->yystack[$this->yyidx + 0]->minor, $this->compiler->getLdelLength(), -$this->compiler->getRdelLength()), ' $');
+ $attributes = [];
+ if (preg_match('/^(.*)(\s+nocache)$/', $var, $match)) {
+ $attributes[] = 'nocache';
+ $var = $match[1];
+ }
+ $this->_retvalue = $this->compiler->compilePrintExpression($this->compiler->compileVariable('\''.$var.'\''), $attributes);
+ }
+// line 313 "src/Parser/TemplateParser.y"
+ public function yy_r12(){
+ $tag = trim(substr($this->yystack[$this->yyidx + 0]->minor, $this->compiler->getLdelLength(), -$this->compiler->getRdelLength()));
+ if ($tag == 'strip') {
+ $this->strip = true;
+ $this->_retvalue = null;
+ } else {
+ if (defined($tag)) {
+ if ($this->security) {
+ $this->security->isTrustedConstant($tag, $this->compiler);
+ }
+ $this->_retvalue = $this->compiler->compilePrintExpression($tag);
+ } else {
+ if (preg_match('/^(.*)(\s+nocache)$/', $tag, $match)) {
+ $this->_retvalue = $this->compiler->compileTag($match[1],array('\'nocache\''));
+ } else {
+ $this->_retvalue = $this->compiler->compileTag($tag,array());
+ }
+ }
+ }
+ }
+// line 334 "src/Parser/TemplateParser.y"
+ public function yy_r13(){
+ $j = strrpos($this->yystack[$this->yyidx + 0]->minor,'.');
+ if ($this->yystack[$this->yyidx + 0]->minor[$j+1] == 'c') {
+ // {$smarty.block.child}
+ $this->_retvalue = $this->compiler->compileChildBlock();
+ } else {
+ // {$smarty.block.parent}
+ $this->_retvalue = $this->compiler->compileParentBlock();
+ }
+ }
+// line 345 "src/Parser/TemplateParser.y"
+ public function yy_r14(){
+ $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor;
+ }
+// line 349 "src/Parser/TemplateParser.y"
+ public function yy_r15(){
+ $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor;
+ }
+// line 353 "src/Parser/TemplateParser.y"
+ public function yy_r16(){
+ $this->_retvalue = $this->compiler->compilePrintExpression($this->yystack[$this->yyidx + 0]->minor[0], $this->yystack[$this->yyidx + 0]->minor[1]);
+ }
+// line 362 "src/Parser/TemplateParser.y"
+ public function yy_r17(){
+ $this->_retvalue = $this->compiler->compileTag('assign',array_merge(array(array('value'=>$this->yystack[$this->yyidx + 0]->minor[0]),array('var'=>'\''.substr($this->yystack[$this->yyidx + -1]->minor,1).'\'')),$this->yystack[$this->yyidx + 0]->minor[1]));
+ }
+// line 366 "src/Parser/TemplateParser.y"
+ public function yy_r18(){
+ $this->_retvalue = $this->compiler->compileTag('assign',array_merge(array(array('value'=>$this->yystack[$this->yyidx + 0]->minor[0]),array('var'=>$this->yystack[$this->yyidx + -1]->minor['var'])),$this->yystack[$this->yyidx + 0]->minor[1]),array('smarty_internal_index'=>$this->yystack[$this->yyidx + -1]->minor['smarty_internal_index']));
+ }
+// line 370 "src/Parser/TemplateParser.y"
+ public function yy_r19(){
+ $this->_retvalue = $this->yystack[$this->yyidx + 0]->minor;
+ }
+// line 374 "src/Parser/TemplateParser.y"
+ public function yy_r20(){
+ $this->_retvalue = array($this->yystack[$this->yyidx + -1]->minor,$this->yystack[$this->yyidx + 0]->minor);
+ }
+// line 389 "src/Parser/TemplateParser.y"
+ public function yy_r24(){
+ if (defined($this->yystack[$this->yyidx + -1]->minor)) {
+ if ($this->security) {
+ $this->security->isTrustedConstant($this->yystack[$this->yyidx + -1]->minor, $this->compiler);
+ }
+ $this->_retvalue = $this->compiler->compilePrintExpression($this->yystack[$this->yyidx + -1]->minor, $this->yystack[$this->yyidx + 0]->minor);
+ } else {
+ $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + -1]->minor,$this->yystack[$this->yyidx + 0]->minor);
+ }
+ }
+// line 399 "src/Parser/TemplateParser.y"
+ public function yy_r25(){
+ if (defined($this->yystack[$this->yyidx + 0]->minor)) {
+ if ($this->security) {
+ $this->security->isTrustedConstant($this->yystack[$this->yyidx + 0]->minor, $this->compiler);
+ }
+ $this->_retvalue = $this->compiler->compilePrintExpression($this->yystack[$this->yyidx + 0]->minor);
+ } else {
+ $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + 0]->minor,array());
+ }
+ }
+// line 412 "src/Parser/TemplateParser.y"
+ public function yy_r26(){
+ if (defined($this->yystack[$this->yyidx + -2]->minor)) {
+ if ($this->security) {
+ $this->security->isTrustedConstant($this->yystack[$this->yyidx + -2]->minor, $this->compiler);
+ }
+ $this->_retvalue = $this->compiler->compilePrintExpression($this->yystack[$this->yyidx + -2]->minor, $this->yystack[$this->yyidx + 0]->minor, $this->yystack[$this->yyidx + -1]->minor);
+ } else {
+ $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + -2]->minor,$this->yystack[$this->yyidx + 0]->minor, array('modifierlist'=>$this->yystack[$this->yyidx + -1]->minor));
+ }
+ }
+// line 424 "src/Parser/TemplateParser.y"
+ public function yy_r27(){
+ $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + -3]->minor,$this->yystack[$this->yyidx + 0]->minor,array('object_method'=>$this->yystack[$this->yyidx + -1]->minor));
+ }
+// line 429 "src/Parser/TemplateParser.y"
+ public function yy_r28(){
+ $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + -4]->minor,$this->yystack[$this->yyidx + 0]->minor,array('modifierlist'=>$this->yystack[$this->yyidx + -1]->minor, 'object_method'=>$this->yystack[$this->yyidx + -2]->minor));
+ }
+// line 434 "src/Parser/TemplateParser.y"
+ public function yy_r29(){
+ $tag = trim(substr($this->yystack[$this->yyidx + -1]->minor,$this->compiler->getLdelLength()));
+ $this->_retvalue = $this->compiler->compileTag(($tag === 'else if')? 'elseif' : $tag,array(),array('if condition'=>$this->yystack[$this->yyidx + 0]->minor));
+ }
+// line 439 "src/Parser/TemplateParser.y"
+ public function yy_r30(){
+ $tag = trim(substr($this->yystack[$this->yyidx + -2]->minor,$this->compiler->getLdelLength()));
+ $this->_retvalue = $this->compiler->compileTag(($tag === 'else if')? 'elseif' : $tag,$this->yystack[$this->yyidx + 0]->minor,array('if condition'=>$this->yystack[$this->yyidx + -1]->minor));
+ }
+// line 444 "src/Parser/TemplateParser.y"
+ public function yy_r31(){
+ $tag = trim(substr($this->yystack[$this->yyidx + -1]->minor,$this->compiler->getLdelLength()));
+ $this->_retvalue = $this->compiler->compileTag(($tag === 'else if')? 'elseif' : $tag,array(),array('if condition'=>$this->yystack[$this->yyidx + 0]->minor));
+ }
+// line 455 "src/Parser/TemplateParser.y"
+ public function yy_r33(){
+ $this->_retvalue = $this->compiler->compileTag('for',array_merge($this->yystack[$this->yyidx + 0]->minor,array(array('start'=>$this->yystack[$this->yyidx + -6]->minor),array('ifexp'=>$this->yystack[$this->yyidx + -4]->minor),array('var'=>$this->yystack[$this->yyidx + -2]->minor),array('step'=>$this->yystack[$this->yyidx + -1]->minor))),1);
+ }
+// line 459 "src/Parser/TemplateParser.y"
+ public function yy_r34(){
+ $this->_retvalue = '='.$this->yystack[$this->yyidx + 0]->minor;
+ }
+// line 467 "src/Parser/TemplateParser.y"
+ public function yy_r36(){
+ $this->_retvalue = $this->compiler->compileTag('for',array_merge($this->yystack[$this->yyidx + 0]->minor,array(array('start'=>$this->yystack[$this->yyidx + -3]->minor),array('to'=>$this->yystack[$this->yyidx + -1]->minor))),0);
+ }
+// line 471 "src/Parser/TemplateParser.y"
+ public function yy_r37(){
+ $this->_retvalue = $this->compiler->compileTag('for',array_merge($this->yystack[$this->yyidx + 0]->minor,array(array('start'=>$this->yystack[$this->yyidx + -5]->minor),array('to'=>$this->yystack[$this->yyidx + -3]->minor),array('step'=>$this->yystack[$this->yyidx + -1]->minor))),0);
+ }
+// line 476 "src/Parser/TemplateParser.y"
+ public function yy_r38(){
+ $this->_retvalue = $this->compiler->compileTag('foreach',array_merge($this->yystack[$this->yyidx + 0]->minor,array(array('from'=>$this->yystack[$this->yyidx + -3]->minor),array('item'=>$this->yystack[$this->yyidx + -1]->minor))));
+ }
+// line 480 "src/Parser/TemplateParser.y"
+ public function yy_r39(){
+ $this->_retvalue = $this->compiler->compileTag('foreach',array_merge($this->yystack[$this->yyidx + 0]->minor,array(array('from'=>$this->yystack[$this->yyidx + -5]->minor),array('item'=>$this->yystack[$this->yyidx + -1]->minor),array('key'=>$this->yystack[$this->yyidx + -3]->minor))));
+ }
+// line 483 "src/Parser/TemplateParser.y"
+ public function yy_r40(){
+ $this->_retvalue = $this->compiler->compileTag('foreach',$this->yystack[$this->yyidx + 0]->minor);
+ }
+// line 488 "src/Parser/TemplateParser.y"
+ public function yy_r41(){
+ $this->_retvalue = $this->compiler->compileTag('setfilter',array(),array('modifier_list'=>array(array_merge(array($this->yystack[$this->yyidx + -1]->minor),$this->yystack[$this->yyidx + 0]->minor))));
+ }
+// line 492 "src/Parser/TemplateParser.y"
+ public function yy_r42(){
+ $this->_retvalue = $this->compiler->compileTag('setfilter',array(),array('modifier_list'=>array_merge(array(array_merge(array($this->yystack[$this->yyidx + -2]->minor),$this->yystack[$this->yyidx + -1]->minor)),$this->yystack[$this->yyidx + 0]->minor)));
+ }
+// line 498 "src/Parser/TemplateParser.y"
+ public function yy_r43(){
+ $tag = trim(substr($this->yystack[$this->yyidx + 0]->minor, $this->compiler->getLdelLength(), -$this->compiler->getRdelLength()), ' /');
+ if ($tag === 'strip') {
+ $this->strip = false;
+ $this->_retvalue = null;
+ } else {
+ $this->_retvalue = $this->compiler->compileTag($tag.'close',array());
+ }
+ }
+// line 507 "src/Parser/TemplateParser.y"
+ public function yy_r44(){
+ $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + 0]->minor.'close',array());
+ }
+// line 511 "src/Parser/TemplateParser.y"
+ public function yy_r45(){
+ $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + -1]->minor.'close',array(),array('modifier_list'=>$this->yystack[$this->yyidx + 0]->minor));
+ }
+// line 516 "src/Parser/TemplateParser.y"
+ public function yy_r46(){
+ $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + -2]->minor.'close',array(),array('object_method'=>$this->yystack[$this->yyidx + 0]->minor));
+ }
+// line 520 "src/Parser/TemplateParser.y"
+ public function yy_r47(){
+ $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + -3]->minor.'close',array(),array('object_method'=>$this->yystack[$this->yyidx + -1]->minor, 'modifier_list'=>$this->yystack[$this->yyidx + 0]->minor));
+ }
+// line 528 "src/Parser/TemplateParser.y"
+ public function yy_r48(){
+ $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor;
+ $this->_retvalue[] = $this->yystack[$this->yyidx + 0]->minor;
+ }
+// line 534 "src/Parser/TemplateParser.y"
+ public function yy_r49(){
+ $this->_retvalue = array($this->yystack[$this->yyidx + 0]->minor);
+ }
+// line 539 "src/Parser/TemplateParser.y"
+ public function yy_r50(){
+ $this->_retvalue = array();
+ }
+// line 544 "src/Parser/TemplateParser.y"
+ public function yy_r51(){
+ if (defined($this->yystack[$this->yyidx + 0]->minor)) {
+ if ($this->security) {
+ $this->security->isTrustedConstant($this->yystack[$this->yyidx + 0]->minor, $this->compiler);
+ }
+ $this->_retvalue = array($this->yystack[$this->yyidx + -2]->minor=>$this->yystack[$this->yyidx + 0]->minor);
+ } else {
+ $this->_retvalue = array($this->yystack[$this->yyidx + -2]->minor=>'\''.$this->yystack[$this->yyidx + 0]->minor.'\'');
+ }
+ }
+// line 555 "src/Parser/TemplateParser.y"
+ public function yy_r52(){
+ $this->_retvalue = array(trim($this->yystack[$this->yyidx + -1]->minor," =\n\r\t")=>$this->yystack[$this->yyidx + 0]->minor);
+ }
+// line 563 "src/Parser/TemplateParser.y"
+ public function yy_r54(){
+ $this->_retvalue = '\''.$this->yystack[$this->yyidx + 0]->minor.'\'';
+ }
+// line 575 "src/Parser/TemplateParser.y"
+ public function yy_r57(){
+ $this->_retvalue = array($this->yystack[$this->yyidx + -2]->minor=>$this->yystack[$this->yyidx + 0]->minor);
+ }
+// line 588 "src/Parser/TemplateParser.y"
+ public function yy_r59(){
+ $this->yystack[$this->yyidx + -2]->minor[]=$this->yystack[$this->yyidx + 0]->minor;
+ $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor;
+ }
+// line 593 "src/Parser/TemplateParser.y"
+ public function yy_r60(){
+ $this->_retvalue = array('var' => '\''.substr($this->yystack[$this->yyidx + -2]->minor,1).'\'', 'value'=>$this->yystack[$this->yyidx + 0]->minor);
+ }
+// line 600 "src/Parser/TemplateParser.y"
+ public function yy_r62(){
+ $this->_retvalue = array('var' => $this->yystack[$this->yyidx + -2]->minor, 'value'=>$this->yystack[$this->yyidx + 0]->minor);
+ }
+// line 604 "src/Parser/TemplateParser.y"
+ public function yy_r63(){
+ $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor;
+ }
+// line 629 "src/Parser/TemplateParser.y"
+ public function yy_r67(){
+ $this->_retvalue = '$_smarty_tpl->getVariable(\''. substr($this->yystack[$this->yyidx + 0]->minor,1) .'\')->preIncDec(\'' . $this->yystack[$this->yyidx + -1]->minor . '\')';
+ }
+// line 634 "src/Parser/TemplateParser.y"
+ public function yy_r68(){
+ $this->_retvalue = '$_smarty_tpl->getVariable(\''. substr($this->yystack[$this->yyidx + -1]->minor,1) .'\')->postIncDec(\'' . $this->yystack[$this->yyidx + 0]->minor . '\')';
+ }
+// line 639 "src/Parser/TemplateParser.y"
+ public function yy_r69(){
+ $this->_retvalue = '$_smarty_tpl->getStreamVariable(\''.substr($this->yystack[$this->yyidx + -2]->minor,1).'://' . $this->yystack[$this->yyidx + 0]->minor . '\')';
+ }
+// line 644 "src/Parser/TemplateParser.y"
+ public function yy_r70(){
+ $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor . trim($this->yystack[$this->yyidx + -1]->minor) . $this->yystack[$this->yyidx + 0]->minor;
+ }
+// line 654 "src/Parser/TemplateParser.y"
+ public function yy_r72(){
+ $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor['pre']. $this->yystack[$this->yyidx + -2]->minor.$this->yystack[$this->yyidx + -1]->minor['op'].$this->yystack[$this->yyidx + 0]->minor .')';
+ }
+// line 658 "src/Parser/TemplateParser.y"
+ public function yy_r73(){
+ $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor.$this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor;
+ }
+// line 662 "src/Parser/TemplateParser.y"
+ public function yy_r74(){
+ $this->_retvalue = $this->yystack[$this->yyidx + 0]->minor . $this->yystack[$this->yyidx + -1]->minor . ')';
+ }
+// line 666 "src/Parser/TemplateParser.y"
+ public function yy_r75(){
+ static $isin = [
+ 'isin' => 'in_array(',
+ 'isnotin' => '!in_array(',
+ ];
+ $op = strtolower(str_replace(' ', '', $this->yystack[$this->yyidx + 0]->minor));
+ $this->_retvalue = $isin[$op];
+ }
+// line 675 "src/Parser/TemplateParser.y"
+ public function yy_r76(){
+ $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor . $this->yystack[$this->yyidx + -2]->minor.','.$this->yystack[$this->yyidx + 0]->minor.')';
+ }
+// line 679 "src/Parser/TemplateParser.y"
+ public function yy_r77(){
+ $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor . $this->yystack[$this->yyidx + -2]->minor.',(array)'.$this->yystack[$this->yyidx + 0]->minor.')';
+ }
+// line 684 "src/Parser/TemplateParser.y"
+ public function yy_r78(){
+ $this->_retvalue = $this->yystack[$this->yyidx + -3]->minor.' ?? '.$this->yystack[$this->yyidx + 0]->minor;
+ }
+// line 691 "src/Parser/TemplateParser.y"
+ public function yy_r79(){
+ $this->_retvalue = $this->yystack[$this->yyidx + -4]->minor.' ? '. $this->compiler->compileVariable('\''.substr($this->yystack[$this->yyidx + -2]->minor,1).'\'') . ' : '.$this->yystack[$this->yyidx + 0]->minor;
+ }
+// line 695 "src/Parser/TemplateParser.y"
+ public function yy_r80(){
+ $this->_retvalue = $this->yystack[$this->yyidx + -4]->minor.' ? '.$this->yystack[$this->yyidx + -2]->minor.' : '.$this->yystack[$this->yyidx + 0]->minor;
+ }
+// line 704 "src/Parser/TemplateParser.y"
+ public function yy_r82(){
+ $this->_retvalue = $this->yystack[$this->yyidx + -3]->minor.' ?: '.$this->yystack[$this->yyidx + 0]->minor;
+ }
+// line 714 "src/Parser/TemplateParser.y"
+ public function yy_r84(){
+ $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor;
+ }
+// line 719 "src/Parser/TemplateParser.y"
+ public function yy_r85(){
+ $this->_retvalue = '!'.$this->yystack[$this->yyidx + 0]->minor;
+ }
+// line 740 "src/Parser/TemplateParser.y"
+ public function yy_r90(){
+ $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor.'.'.$this->yystack[$this->yyidx + 0]->minor;
+ }
+// line 744 "src/Parser/TemplateParser.y"
+ public function yy_r91(){
+ $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor.'.';
+ }
+// line 748 "src/Parser/TemplateParser.y"
+ public function yy_r92(){
+ $this->_retvalue = '.'.$this->yystack[$this->yyidx + 0]->minor;
+ }
+// line 753 "src/Parser/TemplateParser.y"
+ public function yy_r93(){
+ if (defined($this->yystack[$this->yyidx + 0]->minor)) {
+ if ($this->security) {
+ $this->security->isTrustedConstant($this->yystack[$this->yyidx + 0]->minor, $this->compiler);
+ }
+ $this->_retvalue = $this->yystack[$this->yyidx + 0]->minor;
+ } else {
+ $this->_retvalue = '\''.$this->yystack[$this->yyidx + 0]->minor.'\'';
+ }
+ }
+// line 770 "src/Parser/TemplateParser.y"
+ public function yy_r95(){
+ $this->_retvalue = '('. $this->yystack[$this->yyidx + -1]->minor .')';
+ }
+// line 774 "src/Parser/TemplateParser.y"
+ public function yy_r96(){
+ $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor.$this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor;
+ }
+// line 792 "src/Parser/TemplateParser.y"
+ public function yy_r100(){
+ if ($this->security && $this->security->static_classes !== array()) {
+ $this->compiler->trigger_template_error('dynamic static class not allowed by security setting');
+ }
+ $prefixVar = $this->compiler->getNewPrefixVariable();
+ if ($this->yystack[$this->yyidx + -2]->minor['var'] === '\'smarty\'') {
+ $this->compiler->appendPrefixCode("compile(array(),$this->compiler,$this->yystack[$this->yyidx + -2]->minor['smarty_internal_index']).';?>');
+ } else {
+ $this->compiler->appendPrefixCode("compiler->compileVariable($this->yystack[$this->yyidx + -2]->minor['var']).$this->yystack[$this->yyidx + -2]->minor['smarty_internal_index'].';?>');
+ }
+ $this->_retvalue = $prefixVar .'::'.$this->yystack[$this->yyidx + 0]->minor[0].$this->yystack[$this->yyidx + 0]->minor[1];
+ }
+// line 806 "src/Parser/TemplateParser.y"
+ public function yy_r101(){
+ $prefixVar = $this->compiler->getNewPrefixVariable();
+ $tmp = $this->compiler->appendCode('', (string) $this->yystack[$this->yyidx + 0]->minor);
+ $this->compiler->appendPrefixCode($this->compiler->appendCode($tmp, ""));
+ $this->_retvalue = $prefixVar;
+ }
+// line 813 "src/Parser/TemplateParser.y"
+ public function yy_r102(){
+ $this->_retvalue = $this->compiler->compileModifier($this->yystack[$this->yyidx + 0]->minor, $this->yystack[$this->yyidx + -1]->minor);
+ }
+// line 826 "src/Parser/TemplateParser.y"
+ public function yy_r105(){
+ if (!in_array(strtolower($this->yystack[$this->yyidx + -2]->minor), array('self', 'parent')) && (!$this->security || $this->security->isTrustedStaticClassAccess($this->yystack[$this->yyidx + -2]->minor, $this->yystack[$this->yyidx + 0]->minor, $this->compiler))) {
+ if (isset($this->smarty->registered_classes[$this->yystack[$this->yyidx + -2]->minor])) {
+ $this->_retvalue = $this->smarty->registered_classes[$this->yystack[$this->yyidx + -2]->minor].'::'.$this->yystack[$this->yyidx + 0]->minor[0].$this->yystack[$this->yyidx + 0]->minor[1];
+ } else {
+ $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor.'::'.$this->yystack[$this->yyidx + 0]->minor[0].$this->yystack[$this->yyidx + 0]->minor[1];
+ }
+ } else {
+ $this->compiler->trigger_template_error ('static class \''.$this->yystack[$this->yyidx + -2]->minor.'\' is undefined or not allowed by security setting');
+ }
+ }
+// line 845 "src/Parser/TemplateParser.y"
+ public function yy_r107(){
+ $this->_retvalue = $this->yystack[$this->yyidx + 0]->minor;
+ }
+// line 856 "src/Parser/TemplateParser.y"
+ public function yy_r108(){
+ $this->_retvalue = $this->compiler->compileVariable('\''.substr($this->yystack[$this->yyidx + 0]->minor,1).'\'');
+ }
+// line 859 "src/Parser/TemplateParser.y"
+ public function yy_r109(){
+ if ($this->yystack[$this->yyidx + 0]->minor['var'] === '\'smarty\'') {
+ $smarty_var = (new \Smarty\Compile\SpecialVariableCompiler())->compile(array(),$this->compiler,$this->yystack[$this->yyidx + 0]->minor['smarty_internal_index']);
+ $this->_retvalue = $smarty_var;
+ } else {
+ // used for array reset,next,prev,end,current
+ $this->last_variable = $this->yystack[$this->yyidx + 0]->minor['var'];
+ $this->last_index = $this->yystack[$this->yyidx + 0]->minor['smarty_internal_index'];
+ $this->_retvalue = $this->compiler->compileVariable($this->yystack[$this->yyidx + 0]->minor['var']).$this->yystack[$this->yyidx + 0]->minor['smarty_internal_index'];
+ }
+ }
+// line 872 "src/Parser/TemplateParser.y"
+ public function yy_r110(){
+ $this->_retvalue = '$_smarty_tpl->getVariable('. $this->yystack[$this->yyidx + -2]->minor .')->'.$this->yystack[$this->yyidx + 0]->minor;
+ }
+// line 882 "src/Parser/TemplateParser.y"
+ public function yy_r112(){
+ $this->_retvalue = $this->compiler->compileConfigVariable('\'' . $this->yystack[$this->yyidx + -1]->minor . '\'');
+ }
+// line 886 "src/Parser/TemplateParser.y"
+ public function yy_r113(){
+ $this->_retvalue = '(is_array($tmp = ' . $this->compiler->compileConfigVariable('\'' . $this->yystack[$this->yyidx + -2]->minor . '\'') . ') ? $tmp'.$this->yystack[$this->yyidx + 0]->minor.' :null)';
+ }
+// line 890 "src/Parser/TemplateParser.y"
+ public function yy_r114(){
+ $this->_retvalue = $this->compiler->compileConfigVariable($this->yystack[$this->yyidx + -1]->minor);
+ }
+// line 894 "src/Parser/TemplateParser.y"
+ public function yy_r115(){
+ $this->_retvalue = '(is_array($tmp = ' . $this->compiler->compileConfigVariable($this->yystack[$this->yyidx + -2]->minor) . ') ? $tmp'.$this->yystack[$this->yyidx + 0]->minor.' : null)';
+ }
+// line 898 "src/Parser/TemplateParser.y"
+ public function yy_r116(){
+ $this->_retvalue = array('var'=>'\''.substr($this->yystack[$this->yyidx + -1]->minor,1).'\'', 'smarty_internal_index'=>$this->yystack[$this->yyidx + 0]->minor);
+ }
+// line 901 "src/Parser/TemplateParser.y"
+ public function yy_r117(){
+ $this->_retvalue = array('var'=>$this->yystack[$this->yyidx + -1]->minor, 'smarty_internal_index'=>$this->yystack[$this->yyidx + 0]->minor);
+ }
+// line 914 "src/Parser/TemplateParser.y"
+ public function yy_r119(){
+ return;
+ }
+// line 920 "src/Parser/TemplateParser.y"
+ public function yy_r120(){
+ $this->_retvalue = '['.$this->compiler->compileVariable('\''.substr($this->yystack[$this->yyidx + 0]->minor,1).'\'').']';
+ }
+// line 923 "src/Parser/TemplateParser.y"
+ public function yy_r121(){
+ $this->_retvalue = '['.$this->compiler->compileVariable($this->yystack[$this->yyidx + 0]->minor).']';
+ }
+// line 927 "src/Parser/TemplateParser.y"
+ public function yy_r122(){
+ $this->_retvalue = '['.$this->compiler->compileVariable($this->yystack[$this->yyidx + -2]->minor).'->'.$this->yystack[$this->yyidx + 0]->minor.']';
+ }
+// line 931 "src/Parser/TemplateParser.y"
+ public function yy_r123(){
+ $this->_retvalue = '[\''. $this->yystack[$this->yyidx + 0]->minor .'\']';
+ }
+// line 935 "src/Parser/TemplateParser.y"
+ public function yy_r124(){
+ $this->_retvalue = '['. $this->yystack[$this->yyidx + 0]->minor .']';
+ }
+// line 940 "src/Parser/TemplateParser.y"
+ public function yy_r125(){
+ $this->_retvalue = '['. $this->yystack[$this->yyidx + -1]->minor .']';
+ }
+// line 945 "src/Parser/TemplateParser.y"
+ public function yy_r126(){
+ $this->_retvalue = '['.(new \Smarty\Compile\SpecialVariableCompiler())->compile(array(),$this->compiler,'[\'section\'][\''.$this->yystack[$this->yyidx + -1]->minor.'\'][\'index\']').']';
+ }
+// line 949 "src/Parser/TemplateParser.y"
+ public function yy_r127(){
+ $this->_retvalue = '['.(new \Smarty\Compile\SpecialVariableCompiler())->compile(array(),$this->compiler,'[\'section\'][\''.$this->yystack[$this->yyidx + -3]->minor.'\'][\''.$this->yystack[$this->yyidx + -1]->minor.'\']').']';
+ }
+// line 952 "src/Parser/TemplateParser.y"
+ public function yy_r128(){
+ $this->_retvalue = '['.$this->yystack[$this->yyidx + -1]->minor.']';
+ }
+// line 958 "src/Parser/TemplateParser.y"
+ public function yy_r130(){
+ $this->_retvalue = '['.$this->compiler->compileVariable('\''.substr($this->yystack[$this->yyidx + -1]->minor,1).'\'').']';
+ }
+// line 974 "src/Parser/TemplateParser.y"
+ public function yy_r134(){
+ $this->_retvalue = '[]';
+ }
+// line 984 "src/Parser/TemplateParser.y"
+ public function yy_r135(){
+ $this->_retvalue = '\''.substr($this->yystack[$this->yyidx + 0]->minor,1).'\'';
+ }
+// line 988 "src/Parser/TemplateParser.y"
+ public function yy_r136(){
+ $this->_retvalue = '\'\'';
+ }
+// line 993 "src/Parser/TemplateParser.y"
+ public function yy_r137(){
+ $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor.'.'.$this->yystack[$this->yyidx + 0]->minor;
+ }
+// line 1001 "src/Parser/TemplateParser.y"
+ public function yy_r139(){
+ $var = trim(substr($this->yystack[$this->yyidx + 0]->minor, $this->compiler->getLdelLength(), -$this->compiler->getRdelLength()), ' $');
+ $this->_retvalue = $this->compiler->compileVariable('\''.$var.'\'');
+ }
+// line 1007 "src/Parser/TemplateParser.y"
+ public function yy_r140(){
+ $this->_retvalue = '('.$this->yystack[$this->yyidx + -1]->minor.')';
+ }
+// line 1014 "src/Parser/TemplateParser.y"
+ public function yy_r141(){
+ if ($this->yystack[$this->yyidx + -1]->minor['var'] === '\'smarty\'') {
+ $this->_retvalue = (new \Smarty\Compile\SpecialVariableCompiler())->compile(array(),$this->compiler,$this->yystack[$this->yyidx + -1]->minor['smarty_internal_index']).$this->yystack[$this->yyidx + 0]->minor;
+ } else {
+ $this->_retvalue = $this->compiler->compileVariable($this->yystack[$this->yyidx + -1]->minor['var']).$this->yystack[$this->yyidx + -1]->minor['smarty_internal_index'].$this->yystack[$this->yyidx + 0]->minor;
+ }
+ }
+// line 1023 "src/Parser/TemplateParser.y"
+ public function yy_r142(){
+ $this->_retvalue = $this->yystack[$this->yyidx + 0]->minor;
+ }
+// line 1028 "src/Parser/TemplateParser.y"
+ public function yy_r143(){
+ $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor;
+ }
+// line 1033 "src/Parser/TemplateParser.y"
+ public function yy_r144(){
+ if ($this->security && substr($this->yystack[$this->yyidx + -1]->minor,0,1) === '_') {
+ $this->compiler->trigger_template_error (self::ERR1);
+ }
+ $this->_retvalue = '->'.$this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor;
+ }
+// line 1040 "src/Parser/TemplateParser.y"
+ public function yy_r145(){
+ if ($this->security) {
+ $this->compiler->trigger_template_error (self::ERR2);
+ }
+ $this->_retvalue = '->{'.$this->compiler->compileVariable($this->yystack[$this->yyidx + -1]->minor).$this->yystack[$this->yyidx + 0]->minor.'}';
+ }
+// line 1047 "src/Parser/TemplateParser.y"
+ public function yy_r146(){
+ if ($this->security) {
+ $this->compiler->trigger_template_error (self::ERR2);
+ }
+ $this->_retvalue = '->{'.$this->yystack[$this->yyidx + -2]->minor.$this->yystack[$this->yyidx + 0]->minor.'}';
+ }
+// line 1054 "src/Parser/TemplateParser.y"
+ public function yy_r147(){
+ if ($this->security) {
+ $this->compiler->trigger_template_error (self::ERR2);
+ }
+ $this->_retvalue = '->{\''.$this->yystack[$this->yyidx + -4]->minor.'\'.'.$this->yystack[$this->yyidx + -2]->minor.$this->yystack[$this->yyidx + 0]->minor.'}';
+ }
+// line 1062 "src/Parser/TemplateParser.y"
+ public function yy_r148(){
+ $this->_retvalue = '->'.$this->yystack[$this->yyidx + 0]->minor;
+ }
+// line 1070 "src/Parser/TemplateParser.y"
+ public function yy_r149(){
+ $this->_retvalue = $this->compiler->compileModifierInExpression($this->yystack[$this->yyidx + -3]->minor, $this->yystack[$this->yyidx + -1]->minor);
+ }
+// line 1078 "src/Parser/TemplateParser.y"
+ public function yy_r150(){
+ if ($this->security && substr($this->yystack[$this->yyidx + -3]->minor,0,1) === '_') {
+ $this->compiler->trigger_template_error (self::ERR1);
+ }
+ $this->_retvalue = $this->yystack[$this->yyidx + -3]->minor . '('. implode(',',$this->yystack[$this->yyidx + -1]->minor) .')';
+ }
+// line 1085 "src/Parser/TemplateParser.y"
+ public function yy_r151(){
+ if ($this->security) {
+ $this->compiler->trigger_template_error (self::ERR2);
+ }
+ $prefixVar = $this->compiler->getNewPrefixVariable();
+ $this->compiler->appendPrefixCode("compiler->compileVariable('\''.substr($this->yystack[$this->yyidx + -3]->minor,1).'\'').';?>');
+ $this->_retvalue = $prefixVar .'('. implode(',',$this->yystack[$this->yyidx + -1]->minor) .')';
+ }
+// line 1096 "src/Parser/TemplateParser.y"
+ public function yy_r152(){
+ $this->_retvalue = array_merge($this->yystack[$this->yyidx + -2]->minor,array($this->yystack[$this->yyidx + 0]->minor));
+ }
+// line 1113 "src/Parser/TemplateParser.y"
+ public function yy_r155(){
+ $this->_retvalue = array_merge($this->yystack[$this->yyidx + -2]->minor,array(array_merge($this->yystack[$this->yyidx + -1]->minor,$this->yystack[$this->yyidx + 0]->minor)));
+ }
+// line 1117 "src/Parser/TemplateParser.y"
+ public function yy_r156(){
+ $this->_retvalue = array(array_merge($this->yystack[$this->yyidx + -1]->minor,$this->yystack[$this->yyidx + 0]->minor));
+ }
+// line 1125 "src/Parser/TemplateParser.y"
+ public function yy_r158(){
+ $this->_retvalue = array($this->yystack[$this->yyidx + 0]->minor);
+ }
+// line 1133 "src/Parser/TemplateParser.y"
+ public function yy_r159(){
+ $this->_retvalue = array_merge($this->yystack[$this->yyidx + -1]->minor,$this->yystack[$this->yyidx + 0]->minor);
+ }
+// line 1146 "src/Parser/TemplateParser.y"
+ public function yy_r162(){
+ $this->_retvalue = array(trim($this->yystack[$this->yyidx + -1]->minor).$this->yystack[$this->yyidx + 0]->minor);
+ }
+// line 1155 "src/Parser/TemplateParser.y"
+ public function yy_r164(){
+ $this->_retvalue = array($this->yystack[$this->yyidx + 0]->minor, '', 'method');
+ }
+// line 1160 "src/Parser/TemplateParser.y"
+ public function yy_r165(){
+ $this->_retvalue = array($this->yystack[$this->yyidx + -1]->minor, $this->yystack[$this->yyidx + 0]->minor, 'method');
+ }
+// line 1165 "src/Parser/TemplateParser.y"
+ public function yy_r166(){
+ $this->_retvalue = array($this->yystack[$this->yyidx + 0]->minor, '');
+ }
+// line 1170 "src/Parser/TemplateParser.y"
+ public function yy_r167(){
+ $this->_retvalue = array($this->yystack[$this->yyidx + -1]->minor, $this->yystack[$this->yyidx + 0]->minor, 'property');
+ }
+// line 1175 "src/Parser/TemplateParser.y"
+ public function yy_r168(){
+ $this->_retvalue = array($this->yystack[$this->yyidx + -2]->minor, $this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor, 'property');
+ }
+// line 1181 "src/Parser/TemplateParser.y"
+ public function yy_r169(){
+ $this->_retvalue = ' '. trim($this->yystack[$this->yyidx + 0]->minor) . ' ';
+ }
+// line 1185 "src/Parser/TemplateParser.y"
+ public function yy_r170(){
+ static $lops = array(
+ 'eq' => ' == ',
+ 'ne' => ' != ',
+ 'neq' => ' != ',
+ 'gt' => ' > ',
+ 'ge' => ' >= ',
+ 'gte' => ' >= ',
+ 'lt' => ' < ',
+ 'le' => ' <= ',
+ 'lte' => ' <= ',
+ 'mod' => ' % ',
+ 'and' => ' && ',
+ 'or' => ' || ',
+ 'xor' => ' xor ',
+ );
+ $op = strtolower(preg_replace('/\s*/', '', $this->yystack[$this->yyidx + 0]->minor));
+ $this->_retvalue = $lops[$op];
+ }
+// line 1204 "src/Parser/TemplateParser.y"
+ public function yy_r171(){
+ static $tlops = array(
+ 'isdivby' => array('op' => ' % ', 'pre' => '!('),
+ 'isnotdivby' => array('op' => ' % ', 'pre' => '('),
+ 'isevenby' => array('op' => ' / ', 'pre' => '!(1 & '),
+ 'isnotevenby' => array('op' => ' / ', 'pre' => '(1 & '),
+ 'isoddby' => array('op' => ' / ', 'pre' => '(1 & '),
+ 'isnotoddby' => array('op' => ' / ', 'pre' => '!(1 & '),
+ );
+ $op = strtolower(preg_replace('/\s*/', '', $this->yystack[$this->yyidx + 0]->minor));
+ $this->_retvalue = $tlops[$op];
+ }
+// line 1217 "src/Parser/TemplateParser.y"
+ public function yy_r172(){
+ static $scond = array (
+ 'iseven' => '!(1 & ',
+ 'isnoteven' => '(1 & ',
+ 'isodd' => '(1 & ',
+ 'isnotodd' => '!(1 & ',
+ );
+ $op = strtolower(str_replace(' ', '', $this->yystack[$this->yyidx + 0]->minor));
+ $this->_retvalue = $scond[$op];
+ }
+// line 1231 "src/Parser/TemplateParser.y"
+ public function yy_r173(){
+ $this->_retvalue = 'array('.$this->yystack[$this->yyidx + -1]->minor.')';
+ }
+// line 1242 "src/Parser/TemplateParser.y"
+ public function yy_r176(){
+ $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor.','.$this->yystack[$this->yyidx + 0]->minor;
+ }
+// line 1250 "src/Parser/TemplateParser.y"
+ public function yy_r178(){
+ $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor.'=>'.$this->yystack[$this->yyidx + 0]->minor;
+ }
+// line 1254 "src/Parser/TemplateParser.y"
+ public function yy_r179(){
+ $this->_retvalue = '\''.$this->yystack[$this->yyidx + -2]->minor.'\'=>'.$this->yystack[$this->yyidx + 0]->minor;
+ }
+// line 1270 "src/Parser/TemplateParser.y"
+ public function yy_r182(){
+ $this->compiler->leaveDoubleQuote();
+ $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor->to_smarty_php($this);
+ }
+// line 1276 "src/Parser/TemplateParser.y"
+ public function yy_r183(){
+ $this->yystack[$this->yyidx + -1]->minor->append_subtree($this, $this->yystack[$this->yyidx + 0]->minor);
+ $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor;
+ }
+// line 1281 "src/Parser/TemplateParser.y"
+ public function yy_r184(){
+ $this->_retvalue = new Dq($this, $this->yystack[$this->yyidx + 0]->minor);
+ }
+// line 1285 "src/Parser/TemplateParser.y"
+ public function yy_r185(){
+ $this->_retvalue = new Code('(string)'.$this->yystack[$this->yyidx + -1]->minor);
+ }
+// line 1289 "src/Parser/TemplateParser.y"
+ public function yy_r186(){
+ $this->_retvalue = new Code('(string)('.$this->yystack[$this->yyidx + -1]->minor.')');
+ }
+// line 1293 "src/Parser/TemplateParser.y"
+ public function yy_r187(){
+ $this->_retvalue = new Code('(string)$_smarty_tpl->getValue(\''. substr($this->yystack[$this->yyidx + 0]->minor,1) .'\')');
+ }
+// line 1305 "src/Parser/TemplateParser.y"
+ public function yy_r190(){
+ $this->_retvalue = new Tag($this, $this->yystack[$this->yyidx + 0]->minor);
+ }
+// line 1309 "src/Parser/TemplateParser.y"
+ public function yy_r191(){
+ $this->_retvalue = new DqContent($this->yystack[$this->yyidx + 0]->minor);
+ }
+
+ private $_retvalue;
+
+ public function yy_reduce($yyruleno)
+ {
+ if ($this->yyTraceFILE && $yyruleno >= 0
+ && $yyruleno < count(self::$yyRuleName)) {
+ fprintf($this->yyTraceFILE, "%sReduce (%d) [%s].\n",
+ $this->yyTracePrompt, $yyruleno,
+ self::$yyRuleName[$yyruleno]);
+ }
+
+ $this->_retvalue = $yy_lefthand_side = null;
+ if (isset(self::$yyReduceMap[$yyruleno])) {
+ // call the action
+ $this->_retvalue = null;
+ $this->{'yy_r' . self::$yyReduceMap[$yyruleno]}();
+ $yy_lefthand_side = $this->_retvalue;
+ }
+ $yygoto = self::$yyRuleInfo[$yyruleno][0];
+ $yysize = self::$yyRuleInfo[$yyruleno][1];
+ $this->yyidx -= $yysize;
+ for ($i = $yysize; $i; $i--) {
+ // pop all of the right-hand side parameters
+ array_pop($this->yystack);
+ }
+ $yyact = $this->yy_find_reduce_action($this->yystack[$this->yyidx]->stateno, $yygoto);
+ if ($yyact < self::YYNSTATE) {
+ if (!$this->yyTraceFILE && $yysize) {
+ $this->yyidx++;
+ $x = (object) ['stateno' => null, 'major' => null, 'minor' => null];
+ $x->stateno = $yyact;
+ $x->major = $yygoto;
+ $x->minor = $yy_lefthand_side;
+ $this->yystack[$this->yyidx] = $x;
+ } else {
+ $this->yy_shift($yyact, $yygoto, $yy_lefthand_side);
+ }
+ } elseif ($yyact === self::YYNSTATE + self::YYNRULE + 1) {
+ $this->yy_accept();
+ }
+ }
+
+ public function yy_parse_failed()
+ {
+ if ($this->yyTraceFILE) {
+ fprintf($this->yyTraceFILE, "%sFail!\n", $this->yyTracePrompt);
+ } while ($this->yyidx >= 0) {
+ $this->yy_pop_parser_stack();
+ }
+ }
+
+ public function yy_syntax_error($yymajor, $TOKEN)
+ {
+// line 225 "src/Parser/TemplateParser.y"
+
+ $this->internalError = true;
+ $this->yymajor = $yymajor;
+ $this->compiler->trigger_template_error();
+ }
+
+ public function yy_accept()
+ {
+ if ($this->yyTraceFILE) {
+ fprintf($this->yyTraceFILE, "%sAccept!\n", $this->yyTracePrompt);
+ } while ($this->yyidx >= 0) {
+ $this->yy_pop_parser_stack();
+ }
+// line 218 "src/Parser/TemplateParser.y"
+
+ $this->successful = !$this->internalError;
+ $this->internalError = false;
+ $this->retvalue = $this->_retvalue;
+ }
+
+ public function doParse($yymajor, $yytokenvalue)
+ {
+ $yyerrorhit = 0; /* True if yymajor has invoked an error */
+
+ if ($this->yyidx === null || $this->yyidx < 0) {
+ $this->yyidx = 0;
+ $this->yyerrcnt = -1;
+ $x = (object) ['stateno' => null, 'major' => null, 'minor' => null];
+ $x->stateno = 0;
+ $x->major = 0;
+ $this->yystack = array();
+ $this->yystack[] = $x;
+ }
+ $yyendofinput = ($yymajor==0);
+
+ if ($this->yyTraceFILE) {
+ fprintf($this->yyTraceFILE, "%sInput %s\n",
+ $this->yyTracePrompt, $this->yyTokenName[$yymajor]);
+ }
+
+ do {
+ $yyact = $this->yy_find_shift_action($yymajor);
+ if ($yymajor < self::YYERRORSYMBOL &&
+ !$this->yy_is_expected_token($yymajor)) {
+ // force a syntax error
+ $yyact = self::YY_ERROR_ACTION;
+ }
+ if ($yyact < self::YYNSTATE) {
+ $this->yy_shift($yyact, $yymajor, $yytokenvalue);
+ $this->yyerrcnt--;
+ if ($yyendofinput && $this->yyidx >= 0) {
+ $yymajor = 0;
+ } else {
+ $yymajor = self::YYNOCODE;
+ }
+ } elseif ($yyact < self::YYNSTATE + self::YYNRULE) {
+ $this->yy_reduce($yyact - self::YYNSTATE);
+ } elseif ($yyact === self::YY_ERROR_ACTION) {
+ if ($this->yyTraceFILE) {
+ fprintf($this->yyTraceFILE, "%sSyntax Error!\n",
+ $this->yyTracePrompt);
+ }
+ if (self::YYERRORSYMBOL) {
+ if ($this->yyerrcnt < 0) {
+ $this->yy_syntax_error($yymajor, $yytokenvalue);
+ }
+ $yymx = $this->yystack[$this->yyidx]->major;
+ if ($yymx === self::YYERRORSYMBOL || $yyerrorhit) {
+ if ($this->yyTraceFILE) {
+ fprintf($this->yyTraceFILE, "%sDiscard input token %s\n",
+ $this->yyTracePrompt, $this->yyTokenName[$yymajor]);
+ }
+ $this->yy_destructor($yymajor, $yytokenvalue);
+ $yymajor = self::YYNOCODE;
+ } else {
+ while ($this->yyidx >= 0 &&
+ $yymx !== self::YYERRORSYMBOL &&
+ ($yyact = $this->yy_find_shift_action(self::YYERRORSYMBOL)) >= self::YYNSTATE
+ ){
+ $this->yy_pop_parser_stack();
+ }
+ if ($this->yyidx < 0 || $yymajor==0) {
+ $this->yy_destructor($yymajor, $yytokenvalue);
+ $this->yy_parse_failed();
+ $yymajor = self::YYNOCODE;
+ } elseif ($yymx !== self::YYERRORSYMBOL) {
+ $u2 = 0;
+ $this->yy_shift($yyact, self::YYERRORSYMBOL, $u2);
+ }
+ }
+ $this->yyerrcnt = 3;
+ $yyerrorhit = 1;
+ } else {
+ if ($this->yyerrcnt <= 0) {
+ $this->yy_syntax_error($yymajor, $yytokenvalue);
+ }
+ $this->yyerrcnt = 3;
+ $this->yy_destructor($yymajor, $yytokenvalue);
+ if ($yyendofinput) {
+ $this->yy_parse_failed();
+ }
+ $yymajor = self::YYNOCODE;
+ }
+ } else {
+ $this->yy_accept();
+ $yymajor = self::YYNOCODE;
+ }
+ } while ($yymajor !== self::YYNOCODE && $this->yyidx >= 0);
+ }
+}
+
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/src/Parser/TemplateParser.y b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/src/Parser/TemplateParser.y
new file mode 100644
index 000000000..f1e3c35ef
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/src/Parser/TemplateParser.y
@@ -0,0 +1,1312 @@
+/*
+ * This file is part of Smarty.
+ *
+ * (c) 2015 Uwe Tews
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+%stack_size 500
+%name TP_
+%declare_class {
+
+namespace Smarty\Parser;
+
+use \Smarty\Lexer\TemplateLexer as Lexer;
+use \Smarty\ParseTree\Template as TemplateParseTree;
+use \Smarty\Compiler\Template as TemplateCompiler;
+use \Smarty\ParseTree\Code;
+use \Smarty\ParseTree\Dq;
+use \Smarty\ParseTree\DqContent;
+use \Smarty\ParseTree\Tag;
+
+
+/**
+* Smarty Template Parser Class
+*
+* This is the template parser.
+* It is generated from the TemplateParser.y file
+*
+* @author Uwe Tews
+*/
+class TemplateParser
+}
+%include_class
+{
+ const ERR1 = 'Security error: Call to private object member not allowed';
+ const ERR2 = 'Security error: Call to dynamic object member not allowed';
+
+ /**
+ * result status
+ *
+ * @var bool
+ */
+ public $successful = true;
+
+ /**
+ * return value
+ *
+ * @var mixed
+ */
+ public $retvalue = 0;
+
+ /**
+ * @var
+ */
+ public $yymajor;
+
+ /**
+ * last index of array variable
+ *
+ * @var mixed
+ */
+ public $last_index;
+
+ /**
+ * last variable name
+ *
+ * @var string
+ */
+ public $last_variable;
+
+ /**
+ * root parse tree buffer
+ *
+ * @var TemplateParseTree
+ */
+ public $root_buffer;
+
+ /**
+ * current parse tree object
+ *
+ * @var \Smarty\ParseTree\Base
+ */
+ public $current_buffer;
+
+ /**
+ * lexer object
+ *
+ * @var Lexer
+ */
+ public $lex;
+
+ /**
+ * internal error flag
+ *
+ * @var bool
+ */
+ private $internalError = false;
+
+ /**
+ * {strip} status
+ *
+ * @var bool
+ */
+ public $strip = false;
+ /**
+ * compiler object
+ *
+ * @var TemplateCompiler
+ */
+ public $compiler = null;
+
+ /**
+ * smarty object
+ *
+ * @var \Smarty\Smarty
+ */
+ public $smarty = null;
+
+ /**
+ * template object
+ *
+ * @var \Smarty\Template
+ */
+ public $template = null;
+
+ /**
+ * block nesting level
+ *
+ * @var int
+ */
+ public $block_nesting_level = 0;
+
+ /**
+ * security object
+ *
+ * @var \Smarty\Security
+ */
+ public $security = null;
+
+ /**
+ * template prefix array
+ *
+ * @var \Smarty\ParseTree\Base[]
+ */
+ public $template_prefix = array();
+
+ /**
+ * template prefix array
+ *
+ * @var \Smarty\ParseTree\Base[]
+ */
+ public $template_postfix = array();
+
+ /**
+ * constructor
+ *
+ * @param Lexer $lex
+ * @param TemplateCompiler $compiler
+ */
+ public function __construct(Lexer $lex, TemplateCompiler $compiler)
+ {
+ $this->lex = $lex;
+ $this->compiler = $compiler;
+ $this->template = $this->compiler->getTemplate();
+ $this->smarty = $this->template->getSmarty();
+ $this->security = $this->smarty->security_policy ?? false;
+ $this->current_buffer = $this->root_buffer = new TemplateParseTree();
+ }
+
+ /**
+ * insert PHP code in current buffer
+ *
+ * @param string $code
+ */
+ public function insertPhpCode($code)
+ {
+ $this->current_buffer->append_subtree($this, new Tag($this, $code));
+ }
+
+ /**
+ * error rundown
+ *
+ */
+ public function errorRunDown()
+ {
+ while ($this->yystack !== array()) {
+ $this->yy_pop_parser_stack();
+ }
+ if (is_resource($this->yyTraceFILE)) {
+ fclose($this->yyTraceFILE);
+ }
+ }
+
+ /**
+ * merge PHP code with prefix code and return parse tree tag object
+ *
+ * @param string $code
+ *
+ * @return Tag
+ */
+ private function mergePrefixCode($code)
+ {
+ $tmp = '';
+ foreach ($this->compiler->prefix_code as $preCode) {
+ $tmp .= $preCode;
+ }
+ $this->compiler->prefix_code = array();
+ $tmp .= $code;
+ return new Tag($this, $this->compiler->processNocacheCode($tmp));
+ }
+
+}
+
+%token_prefix TP_
+
+%parse_accept
+{
+ $this->successful = !$this->internalError;
+ $this->internalError = false;
+ $this->retvalue = $this->_retvalue;
+}
+
+%syntax_error
+{
+ $this->internalError = true;
+ $this->yymajor = $yymajor;
+ $this->compiler->trigger_template_error();
+}
+
+%stack_overflow
+{
+ $this->internalError = true;
+ $this->compiler->trigger_template_error('Stack overflow in template parser');
+}
+
+
+%right VERT.
+%left COLON.
+
+
+ //
+ // complete template
+ //
+start(res) ::= template. {
+ $this->root_buffer->prepend_array($this, $this->template_prefix);
+ $this->root_buffer->append_array($this, $this->template_postfix);
+ res = $this->root_buffer->to_smarty_php($this);
+}
+
+ // template text
+template ::= template TEXT(B). {
+ $text = $this->yystack[ $this->yyidx + 0 ]->minor;
+
+ if ((string)$text == '') {
+ $this->current_buffer->append_subtree($this, null);
+ }
+
+ $this->current_buffer->append_subtree($this, new \Smarty\ParseTree\Text($text, $this->strip));
+}
+ // strip on
+template ::= template STRIPON. {
+ $this->strip = true;
+}
+ // strip off
+template ::= template STRIPOFF. {
+ $this->strip = false;
+}
+
+ // Literal
+template ::= template LITERALSTART literal_e2(B) LITERALEND. {
+ $this->current_buffer->append_subtree($this, new \Smarty\ParseTree\Text(B));
+}
+
+
+literal_e2(A) ::= literal_e1(B) LITERALSTART literal_e1(C) LITERALEND. {
+ A = B.C;
+}
+literal_e2(A) ::= literal_e1(B). {
+ A = B;
+}
+
+literal_e1(A) ::= literal_e1(B) LITERAL(C). {
+ A = B.C;
+
+}
+
+literal_e1(A) ::= . {
+ A = '';
+}
+ // Smarty tag
+template ::= template smartytag(B). {
+ $this->current_buffer->append_subtree($this, $this->mergePrefixCode(B));
+ $this->compiler->has_variable_string = false;
+ $this->block_nesting_level = $this->compiler->getTagStackCount();
+}
+
+
+ // empty template
+template ::= .
+
+smartytag(A) ::= SIMPELOUTPUT(B). {
+ $var = trim(substr(B, $this->compiler->getLdelLength(), -$this->compiler->getRdelLength()), ' $');
+ $attributes = [];
+ if (preg_match('/^(.*)(\s+nocache)$/', $var, $match)) {
+ $attributes[] = 'nocache';
+ $var = $match[1];
+ }
+ A = $this->compiler->compilePrintExpression($this->compiler->compileVariable('\''.$var.'\''), $attributes);
+}
+
+// simple tag like {name}
+smartytag(A)::= SIMPLETAG(B). {
+ $tag = trim(substr(B, $this->compiler->getLdelLength(), -$this->compiler->getRdelLength()));
+ if ($tag == 'strip') {
+ $this->strip = true;
+ A = null;
+ } else {
+ if (defined($tag)) {
+ if ($this->security) {
+ $this->security->isTrustedConstant($tag, $this->compiler);
+ }
+ A = $this->compiler->compilePrintExpression($tag);
+ } else {
+ if (preg_match('/^(.*)(\s+nocache)$/', $tag, $match)) {
+ A = $this->compiler->compileTag($match[1],array('\'nocache\''));
+ } else {
+ A = $this->compiler->compileTag($tag,array());
+ }
+ }
+ }
+}
+ // {$smarty.block.child} or {$smarty.block.parent}
+smartytag(A) ::= SMARTYBLOCKCHILDPARENT(i). {
+ $j = strrpos(i,'.');
+ if (i[$j+1] == 'c') {
+ // {$smarty.block.child}
+ A = $this->compiler->compileChildBlock();
+ } else {
+ // {$smarty.block.parent}
+ A = $this->compiler->compileParentBlock();
+ }
+}
+
+smartytag(A) ::= LDEL tagbody(B) RDEL. {
+ A = B;
+}
+
+ smartytag(A) ::= tag(B) RDEL. {
+ A = B;
+ }
+ // output with optional attributes
+tagbody(A) ::= outattr(B). {
+ A = $this->compiler->compilePrintExpression(B[0], B[1]);
+}
+
+//
+// Smarty tags start here
+//
+
+ // assign new style
+tagbody(A) ::= DOLLARID(B) eqoutattr(C). {
+ A = $this->compiler->compileTag('assign',array_merge(array(array('value'=>C[0]),array('var'=>'\''.substr(B,1).'\'')),C[1]));
+}
+
+tagbody(A) ::= varindexed(B) eqoutattr(C). {
+ A = $this->compiler->compileTag('assign',array_merge(array(array('value'=>C[0]),array('var'=>B['var'])),C[1]),array('smarty_internal_index'=>B['smarty_internal_index']));
+}
+
+eqoutattr(A) ::= EQUAL outattr(B). {
+ A = B;
+}
+
+outattr(A) ::= output(B) attributes(C). {
+ A = array(B,C);
+}
+
+output(A) ::= variable(B). {
+ A = B;
+}
+output(A) ::= value(B). {
+ A = B;
+}
+output(A) ::= expr(B). {
+ A = B;
+}
+
+ // tag with optional Smarty2 style attributes
+tag(res) ::= LDEL ID(i) attributes(a). {
+ if (defined(i)) {
+ if ($this->security) {
+ $this->security->isTrustedConstant(i, $this->compiler);
+ }
+ res = $this->compiler->compilePrintExpression(i, a);
+ } else {
+ res = $this->compiler->compileTag(i,a);
+ }
+}
+tag(res) ::= LDEL ID(i). {
+ if (defined(i)) {
+ if ($this->security) {
+ $this->security->isTrustedConstant(i, $this->compiler);
+ }
+ res = $this->compiler->compilePrintExpression(i);
+ } else {
+ res = $this->compiler->compileTag(i,array());
+ }
+}
+
+
+ // tag with modifier and optional Smarty2 style attributes
+tag(res) ::= LDEL ID(i) modifierlist(l)attributes(a). {
+ if (defined(i)) {
+ if ($this->security) {
+ $this->security->isTrustedConstant(i, $this->compiler);
+ }
+ res = $this->compiler->compilePrintExpression(i, a, l);
+ } else {
+ res = $this->compiler->compileTag(i,a, array('modifierlist'=>l));
+ }
+}
+
+ // registered object tag
+tag(res) ::= LDEL ID(i) PTR ID(m) attributes(a). {
+ res = $this->compiler->compileTag(i,a,array('object_method'=>m));
+}
+
+ // registered object tag with modifiers
+tag(res) ::= LDEL ID(i) PTR ID(me) modifierlist(l) attributes(a). {
+ res = $this->compiler->compileTag(i,a,array('modifierlist'=>l, 'object_method'=>me));
+}
+
+ // {if}, {elseif} and {while} tag
+tag(res) ::= LDELIF(i) expr(ie). {
+ $tag = trim(substr(i,$this->compiler->getLdelLength()));
+ res = $this->compiler->compileTag(($tag === 'else if')? 'elseif' : $tag,array(),array('if condition'=>ie));
+}
+
+tag(res) ::= LDELIF(i) expr(ie) attributes(a). {
+ $tag = trim(substr(i,$this->compiler->getLdelLength()));
+ res = $this->compiler->compileTag(($tag === 'else if')? 'elseif' : $tag,a,array('if condition'=>ie));
+}
+
+tag(res) ::= LDELIF(i) statement(ie). {
+ $tag = trim(substr(i,$this->compiler->getLdelLength()));
+ res = $this->compiler->compileTag(($tag === 'else if')? 'elseif' : $tag,array(),array('if condition'=>ie));
+}
+
+tag(res) ::= LDELIF(i) statement(ie) attributes(a). {
+ $tag = trim(substr(i,$this->compiler->getLdelLength()));
+ res = $this->compiler->compileTag(($tag === 'else if')? 'elseif' : $tag,a,array('if condition'=>ie));
+}
+
+ // {for} tag
+tag(res) ::= LDELFOR statements(st) SEMICOLON expr(ie) SEMICOLON varindexed(v2) foraction(e2) attributes(a). {
+ res = $this->compiler->compileTag('for',array_merge(a,array(array('start'=>st),array('ifexp'=>ie),array('var'=>v2),array('step'=>e2))),1);
+}
+
+ foraction(res) ::= EQUAL expr(e). {
+ res = '='.e;
+}
+
+ foraction(res) ::= INCDEC(e). {
+ res = e;
+}
+
+tag(res) ::= LDELFOR statement(st) TO expr(v) attributes(a). {
+ res = $this->compiler->compileTag('for',array_merge(a,array(array('start'=>st),array('to'=>v))),0);
+}
+
+tag(res) ::= LDELFOR statement(st) TO expr(v) STEP expr(v2) attributes(a). {
+ res = $this->compiler->compileTag('for',array_merge(a,array(array('start'=>st),array('to'=>v),array('step'=>v2))),0);
+}
+
+ // {foreach} tag
+tag(res) ::= LDELFOREACH SPACE expr(e) AS varvar(v0) attributes(a). {
+ res = $this->compiler->compileTag('foreach',array_merge(a,array(array('from'=>e),array('item'=>v0))));
+}
+
+tag(res) ::= LDELFOREACH SPACE expr(e) AS varvar(v1) APTR varvar(v0) attributes(a). {
+ res = $this->compiler->compileTag('foreach',array_merge(a,array(array('from'=>e),array('item'=>v0),array('key'=>v1))));
+}
+tag(res) ::= LDELFOREACH attributes(a). {
+ res = $this->compiler->compileTag('foreach',a);
+}
+
+ // {setfilter}
+tag(res) ::= LDELSETFILTER ID(m) modparameters(p). {
+ res = $this->compiler->compileTag('setfilter',array(),array('modifier_list'=>array(array_merge(array(m),p))));
+}
+
+tag(res) ::= LDELSETFILTER ID(m) modparameters(p) modifierlist(l). {
+ res = $this->compiler->compileTag('setfilter',array(),array('modifier_list'=>array_merge(array(array_merge(array(m),p)),l)));
+}
+
+
+ // end of block tag {/....}
+smartytag(res)::= CLOSETAG(t). {
+ $tag = trim(substr(t, $this->compiler->getLdelLength(), -$this->compiler->getRdelLength()), ' /');
+ if ($tag === 'strip') {
+ $this->strip = false;
+ res = null;
+ } else {
+ res = $this->compiler->compileTag($tag.'close',array());
+ }
+ }
+tag(res) ::= LDELSLASH ID(i). {
+ res = $this->compiler->compileTag(i.'close',array());
+}
+
+tag(res) ::= LDELSLASH ID(i) modifierlist(l). {
+ res = $this->compiler->compileTag(i.'close',array(),array('modifier_list'=>l));
+}
+
+ // end of block object tag {/....}
+tag(res) ::= LDELSLASH ID(i) PTR ID(m). {
+ res = $this->compiler->compileTag(i.'close',array(),array('object_method'=>m));
+}
+
+tag(res) ::= LDELSLASH ID(i) PTR ID(m) modifierlist(l). {
+ res = $this->compiler->compileTag(i.'close',array(),array('object_method'=>m, 'modifier_list'=>l));
+}
+
+//
+//Attributes of Smarty tags
+//
+ // list of attributes
+attributes(res) ::= attributes(a1) attribute(a2). {
+ res = a1;
+ res[] = a2;
+}
+
+ // single attribute
+attributes(res) ::= attribute(a). {
+ res = array(a);
+}
+
+ // no attributes
+attributes(res) ::= . {
+ res = array();
+}
+
+ // attribute
+attribute(res) ::= SPACE ID(v) EQUAL ID(id). {
+ if (defined(id)) {
+ if ($this->security) {
+ $this->security->isTrustedConstant(id, $this->compiler);
+ }
+ res = array(v=>id);
+ } else {
+ res = array(v=>'\''.id.'\'');
+ }
+}
+
+attribute(res) ::= ATTR(v) expr(e). {
+ res = array(trim(v," =\n\r\t")=>e);
+}
+
+attribute(res) ::= ATTR(v) value(e). {
+ res = array(trim(v," =\n\r\t")=>e);
+}
+
+attribute(res) ::= SPACE ID(v). {
+ res = '\''.v.'\'';
+}
+
+attribute(res) ::= SPACE expr(e). {
+ res = e;
+}
+
+attribute(res) ::= SPACE value(v). {
+ res = v;
+}
+
+attribute(res) ::= SPACE INTEGER(i) EQUAL expr(e). {
+ res = array(i=>e);
+}
+
+
+
+//
+// statement
+//
+statements(res) ::= statement(s). {
+ res = array(s);
+}
+
+statements(res) ::= statements(s1) COMMA statement(s). {
+ s1[]=s;
+ res = s1;
+}
+
+statement(res) ::= DOLLARID(i) EQUAL INTEGER(e). {
+ res = array('var' => '\''.substr(i,1).'\'', 'value'=>e);
+}
+statement(res) ::= DOLLARID(i) EQUAL expr(e). {
+ res = array('var' => '\''.substr(i,1).'\'', 'value'=>e);
+}
+
+statement(res) ::= varindexed(vi) EQUAL expr(e). {
+ res = array('var' => vi, 'value'=>e);
+}
+
+statement(res) ::= OPENP statement(st) CLOSEP. {
+ res = st;
+}
+
+
+//
+// expressions
+//
+
+ // single value
+expr(res) ::= value(v). {
+ res = v;
+}
+
+ // nullcoalescing
+expr(res) ::= nullcoalescing(v). {
+ res = v;
+}
+
+ // ternary
+expr(res) ::= ternary(v). {
+ res = v;
+}
+
+ // ++$a / --$a
+expr(res) ::= INCDEC(i2) DOLLARID(i). {
+ res = '$_smarty_tpl->getVariable(\''. substr(i,1) .'\')->preIncDec(\'' . i2 . '\')';
+}
+
+ // $a++ / $a--
+expr(res) ::= DOLLARID(i) INCDEC(i2). {
+ res = '$_smarty_tpl->getVariable(\''. substr(i,1) .'\')->postIncDec(\'' . i2 . '\')';
+}
+
+ // resources/streams
+expr(res) ::= DOLLARID(i) COLON ID(i2). {
+ res = '$_smarty_tpl->getStreamVariable(\''.substr(i,1).'://' . i2 . '\')';
+}
+
+ // arithmetic expression
+expr(res) ::= expr(e) MATH(m) value(v). {
+ res = e . trim(m) . v;
+}
+
+expr(res) ::= expr(e) UNIMATH(m) value(v). {
+ res = e . trim(m) . v;
+}
+
+// if expression
+ // special conditions
+expr(res) ::= expr(e1) tlop(c) value(e2). {
+ res = c['pre']. e1.c['op'].e2 .')';
+}
+ // simple expression
+expr(res) ::= expr(e1) lop(c) expr(e2). {
+ res = e1.c.e2;
+}
+
+expr(res) ::= expr(e1) scond(c). {
+ res = c . e1 . ')';
+}
+
+isin(res) ::= ISIN(o). {
+ static $isin = [
+ 'isin' => 'in_array(',
+ 'isnotin' => '!in_array(',
+ ];
+ $op = strtolower(str_replace(' ', '', o));
+ res = $isin[$op];
+}
+
+expr(res) ::= expr(e1) isin(c) array(a). {
+ res = c . e1.','.a.')';
+}
+
+expr(res) ::= expr(e1) isin(c) value(v). {
+ res = c . e1.',(array)'.v.')';
+}
+
+// null coalescing
+nullcoalescing(res) ::= expr(v) QMARK QMARK expr(e2). {
+ res = v.' ?? '.e2;
+}
+
+//
+// ternary
+//
+ternary(res) ::= expr(v) QMARK DOLLARID(e1) COLON expr(e2). {
+ res = v.' ? '. $this->compiler->compileVariable('\''.substr(e1,1).'\'') . ' : '.e2;
+}
+
+ternary(res) ::= expr(v) QMARK value(e1) COLON expr(e2). {
+ res = v.' ? '.e1.' : '.e2;
+}
+
+ternary(res) ::= expr(v) QMARK expr(e1) COLON expr(e2). {
+ res = v.' ? '.e1.' : '.e2;
+}
+
+// shorthand ternary
+ternary(res) ::= expr(v) QMARK COLON expr(e2). {
+ res = v.' ?: '.e2;
+}
+
+ // value
+value(res) ::= variable(v). {
+ res = v;
+}
+
+ // +/- value
+value(res) ::= UNIMATH(m) value(v). {
+ res = m.v;
+}
+
+ // logical negation
+value(res) ::= NOT value(v). {
+ res = '!'.v;
+}
+
+value(res) ::= TYPECAST(t) value(v). {
+ res = t.v;
+}
+
+value(res) ::= variable(v) INCDEC(o). {
+ res = v.o;
+}
+
+ // numeric
+value(res) ::= HEX(n). {
+ res = n;
+}
+
+value(res) ::= INTEGER(n). {
+ res = n;
+}
+
+value(res) ::= INTEGER(n1) DOT INTEGER(n2). {
+ res = n1.'.'.n2;
+}
+
+value(res) ::= INTEGER(n1) DOT. {
+ res = n1.'.';
+}
+
+value(res) ::= DOT INTEGER(n1). {
+ res = '.'.n1;
+}
+
+ // ID, true, false, null
+value(res) ::= ID(id). {
+ if (defined(id)) {
+ if ($this->security) {
+ $this->security->isTrustedConstant(id, $this->compiler);
+ }
+ res = id;
+ } else {
+ res = '\''.id.'\'';
+ }
+}
+
+ // function call
+value(res) ::= function(f). {
+ res = f;
+}
+
+ // expression
+value(res) ::= OPENP expr(e) CLOSEP. {
+ res = '('. e .')';
+}
+
+value(res) ::= variable(v1) INSTANCEOF(i) ns1(v2). {
+ res = v1.i.v2;
+}
+value(res) ::= variable(v1) INSTANCEOF(i) variable(v2). {
+ res = v1.i.v2;
+}
+
+ // singele quoted string
+value(res) ::= SINGLEQUOTESTRING(t). {
+ res = t;
+}
+
+ // double quoted string
+value(res) ::= doublequoted_with_quotes(s). {
+ res = s;
+}
+
+
+value(res) ::= varindexed(vi) DOUBLECOLON static_class_access(r). {
+ if ($this->security && $this->security->static_classes !== array()) {
+ $this->compiler->trigger_template_error('dynamic static class not allowed by security setting');
+ }
+ $prefixVar = $this->compiler->getNewPrefixVariable();
+ if (vi['var'] === '\'smarty\'') {
+ $this->compiler->appendPrefixCode("compile(array(),$this->compiler,vi['smarty_internal_index']).';?>');
+ } else {
+ $this->compiler->appendPrefixCode("compiler->compileVariable(vi['var']).vi['smarty_internal_index'].';?>');
+ }
+ res = $prefixVar .'::'.r[0].r[1];
+}
+
+ // Smarty tag
+value(res) ::= smartytag(st). {
+ $prefixVar = $this->compiler->getNewPrefixVariable();
+ $tmp = $this->compiler->appendCode('', (string) st);
+ $this->compiler->appendPrefixCode($this->compiler->appendCode($tmp, ""));
+ res = $prefixVar;
+}
+
+value(res) ::= value(v) modifierlist(l). {
+ res = $this->compiler->compileModifier(l, v);
+}
+ // name space constant
+value(res) ::= NAMESPACE(c). {
+ res = c;
+}
+
+ // array
+value(res) ::= arraydef(a). {
+ res = a;
+}
+ // static class access
+value(res) ::= ns1(c)DOUBLECOLON static_class_access(s). {
+ if (!in_array(strtolower(c), array('self', 'parent')) && (!$this->security || $this->security->isTrustedStaticClassAccess(c, s, $this->compiler))) {
+ if (isset($this->smarty->registered_classes[c])) {
+ res = $this->smarty->registered_classes[c].'::'.s[0].s[1];
+ } else {
+ res = c.'::'.s[0].s[1];
+ }
+ } else {
+ $this->compiler->trigger_template_error ('static class \''.c.'\' is undefined or not allowed by security setting');
+ }
+}
+//
+// namespace stuff
+//
+
+ns1(res) ::= ID(i). {
+ res = i;
+}
+
+ns1(res) ::= NAMESPACE(i). {
+ res = i;
+ }
+
+
+
+
+//
+// variables
+//
+ // Smarty variable (optional array)
+variable(res) ::= DOLLARID(i). {
+ res = $this->compiler->compileVariable('\''.substr(i,1).'\'');
+}
+variable(res) ::= varindexed(vi). {
+ if (vi['var'] === '\'smarty\'') {
+ $smarty_var = (new \Smarty\Compile\SpecialVariableCompiler())->compile(array(),$this->compiler,vi['smarty_internal_index']);
+ res = $smarty_var;
+ } else {
+ // used for array reset,next,prev,end,current
+ $this->last_variable = vi['var'];
+ $this->last_index = vi['smarty_internal_index'];
+ res = $this->compiler->compileVariable(vi['var']).vi['smarty_internal_index'];
+ }
+}
+
+ // variable with property
+variable(res) ::= varvar(v) AT ID(p). {
+ res = '$_smarty_tpl->getVariable('. v .')->'.p;
+}
+
+ // object
+variable(res) ::= object(o). {
+ res = o;
+}
+
+ // config variable
+variable(res) ::= HATCH ID(i) HATCH. {
+ res = $this->compiler->compileConfigVariable('\'' . i . '\'');
+}
+
+variable(res) ::= HATCH ID(i) HATCH arrayindex(a). {
+ res = '(is_array($tmp = ' . $this->compiler->compileConfigVariable('\'' . i . '\'') . ') ? $tmp'.a.' :null)';
+}
+
+variable(res) ::= HATCH variable(v) HATCH. {
+ res = $this->compiler->compileConfigVariable(v);
+}
+
+variable(res) ::= HATCH variable(v) HATCH arrayindex(a). {
+ res = '(is_array($tmp = ' . $this->compiler->compileConfigVariable(v) . ') ? $tmp'.a.' : null)';
+}
+
+varindexed(res) ::= DOLLARID(i) arrayindex(a). {
+ res = array('var'=>'\''.substr(i,1).'\'', 'smarty_internal_index'=>a);
+}
+varindexed(res) ::= varvar(v) arrayindex(a). {
+ res = array('var'=>v, 'smarty_internal_index'=>a);
+}
+
+//
+// array index
+//
+ // multiple array index
+arrayindex(res) ::= arrayindex(a1) indexdef(a2). {
+ res = a1.a2;
+}
+
+ // no array index
+arrayindex ::= . {
+ return;
+}
+
+// single index definition
+ // Smarty2 style index
+indexdef(res) ::= DOT DOLLARID(i). {
+ res = '['.$this->compiler->compileVariable('\''.substr(i,1).'\'').']';
+}
+indexdef(res) ::= DOT varvar(v). {
+ res = '['.$this->compiler->compileVariable(v).']';
+}
+
+indexdef(res) ::= DOT varvar(v) AT ID(p). {
+ res = '['.$this->compiler->compileVariable(v).'->'.p.']';
+}
+
+indexdef(res) ::= DOT ID(i). {
+ res = '[\''. i .'\']';
+}
+
+indexdef(res) ::= DOT INTEGER(n). {
+ res = '['. n .']';
+}
+
+
+indexdef(res) ::= DOT LDEL expr(e) RDEL. {
+ res = '['. e .']';
+}
+
+ // section tag index
+indexdef(res) ::= OPENB ID(i)CLOSEB. {
+ res = '['.(new \Smarty\Compile\SpecialVariableCompiler())->compile(array(),$this->compiler,'[\'section\'][\''.i.'\'][\'index\']').']';
+}
+
+indexdef(res) ::= OPENB ID(i) DOT ID(i2) CLOSEB. {
+ res = '['.(new \Smarty\Compile\SpecialVariableCompiler())->compile(array(),$this->compiler,'[\'section\'][\''.i.'\'][\''.i2.'\']').']';
+}
+indexdef(res) ::= OPENB SINGLEQUOTESTRING(s) CLOSEB. {
+ res = '['.s.']';
+}
+indexdef(res) ::= OPENB INTEGER(n) CLOSEB. {
+ res = '['.n.']';
+}
+indexdef(res) ::= OPENB DOLLARID(i) CLOSEB. {
+ res = '['.$this->compiler->compileVariable('\''.substr(i,1).'\'').']';
+}
+indexdef(res) ::= OPENB variable(v) CLOSEB. {
+ res = '['.v.']';
+}
+indexdef(res) ::= OPENB value(v) CLOSEB. {
+ res = '['.v.']';
+}
+
+ // PHP style index
+indexdef(res) ::= OPENB expr(e) CLOSEB. {
+ res = '['. e .']';
+}
+
+ // for assign append array
+indexdef(res) ::= OPENB CLOSEB. {
+ res = '[]';
+}
+
+
+//
+// variable variable names
+//
+
+ // singel identifier element
+varvar(res) ::= DOLLARID(i). {
+ res = '\''.substr(i,1).'\'';
+}
+ // single $
+varvar(res) ::= DOLLAR. {
+ res = '\'\'';
+}
+
+ // sequence of identifier elements
+varvar(res) ::= varvar(v1) varvarele(v2). {
+ res = v1.'.'.v2;
+}
+
+ // fix sections of element
+varvarele(res) ::= ID(s). {
+ res = '\''.s.'\'';
+}
+varvarele(res) ::= SIMPELOUTPUT(i). {
+ $var = trim(substr(i, $this->compiler->getLdelLength(), -$this->compiler->getRdelLength()), ' $');
+ res = $this->compiler->compileVariable('\''.$var.'\'');
+}
+
+ // variable sections of element
+varvarele(res) ::= LDEL expr(e) RDEL. {
+ res = '('.e.')';
+}
+
+//
+// objects
+//
+object(res) ::= varindexed(vi) objectchain(oc). {
+ if (vi['var'] === '\'smarty\'') {
+ res = (new \Smarty\Compile\SpecialVariableCompiler())->compile(array(),$this->compiler,vi['smarty_internal_index']).oc;
+ } else {
+ res = $this->compiler->compileVariable(vi['var']).vi['smarty_internal_index'].oc;
+ }
+}
+
+ // single element
+objectchain(res) ::= objectelement(oe). {
+ res = oe;
+}
+
+ // chain of elements
+objectchain(res) ::= objectchain(oc) objectelement(oe). {
+ res = oc.oe;
+}
+
+ // variable
+objectelement(res)::= PTR ID(i) arrayindex(a). {
+ if ($this->security && substr(i,0,1) === '_') {
+ $this->compiler->trigger_template_error (self::ERR1);
+ }
+ res = '->'.i.a;
+}
+
+objectelement(res)::= PTR varvar(v) arrayindex(a). {
+ if ($this->security) {
+ $this->compiler->trigger_template_error (self::ERR2);
+ }
+ res = '->{'.$this->compiler->compileVariable(v).a.'}';
+}
+
+objectelement(res)::= PTR LDEL expr(e) RDEL arrayindex(a). {
+ if ($this->security) {
+ $this->compiler->trigger_template_error (self::ERR2);
+ }
+ res = '->{'.e.a.'}';
+}
+
+objectelement(res)::= PTR ID(ii) LDEL expr(e) RDEL arrayindex(a). {
+ if ($this->security) {
+ $this->compiler->trigger_template_error (self::ERR2);
+ }
+ res = '->{\''.ii.'\'.'.e.a.'}';
+}
+
+ // method
+objectelement(res)::= PTR method(f). {
+ res = '->'.f;
+}
+
+
+//
+// function
+//
+function(res) ::= ns1(f) OPENP params(p) CLOSEP. {
+ res = $this->compiler->compileModifierInExpression(f, p);
+}
+
+
+//
+// method
+//
+method(res) ::= ID(f) OPENP params(p) CLOSEP. {
+ if ($this->security && substr(f,0,1) === '_') {
+ $this->compiler->trigger_template_error (self::ERR1);
+ }
+ res = f . '('. implode(',',p) .')';
+}
+
+method(res) ::= DOLLARID(f) OPENP params(p) CLOSEP. {
+ if ($this->security) {
+ $this->compiler->trigger_template_error (self::ERR2);
+ }
+ $prefixVar = $this->compiler->getNewPrefixVariable();
+ $this->compiler->appendPrefixCode("compiler->compileVariable('\''.substr(f,1).'\'').';?>');
+ res = $prefixVar .'('. implode(',',p) .')';
+}
+
+// function/method parameter
+ // multiple parameters
+params(res) ::= params(p) COMMA expr(e). {
+ res = array_merge(p,array(e));
+}
+
+ // single parameter
+params(res) ::= expr(e). {
+ res = array(e);
+}
+
+ // no parameter
+params(res) ::= . {
+ res = array();
+}
+
+//
+// modifier
+//
+modifierlist(res) ::= modifierlist(l) modifier(m) modparameters(p). {
+ res = array_merge(l,array(array_merge(m,p)));
+}
+
+modifierlist(res) ::= modifier(m) modparameters(p). {
+ res = array(array_merge(m,p));
+}
+
+modifier(res) ::= VERT AT ID(m). {
+ res = array(m);
+}
+
+modifier(res) ::= VERT ID(m). {
+ res = array(m);
+}
+
+//
+// modifier parameter
+//
+ // multiple parameter
+modparameters(res) ::= modparameters(mps) modparameter(mp). {
+ res = array_merge(mps,mp);
+}
+
+ // no parameter
+modparameters(res) ::= . {
+ res = array();
+}
+
+ // parameter expression
+modparameter(res) ::= COLON value(mp). {
+ res = array(mp);
+}
+modparameter(res) ::= COLON UNIMATH(m) value(mp). {
+ res = array(trim(m).mp);
+}
+
+modparameter(res) ::= COLON array(mp). {
+ res = array(mp);
+}
+
+ // static class methode call
+static_class_access(res) ::= method(m). {
+ res = array(m, '', 'method');
+}
+
+ // static class methode call with object chainig
+static_class_access(res) ::= method(m) objectchain(oc). {
+ res = array(m, oc, 'method');
+}
+
+ // static class constant
+static_class_access(res) ::= ID(v). {
+ res = array(v, '');
+}
+
+ // static class variables
+static_class_access(res) ::= DOLLARID(v) arrayindex(a). {
+ res = array(v, a, 'property');
+}
+
+ // static class variables with object chain
+static_class_access(res) ::= DOLLARID(v) arrayindex(a) objectchain(oc). {
+ res = array(v, a.oc, 'property');
+}
+
+
+// if conditions and operators
+lop(res) ::= LOGOP(o). {
+ res = ' '. trim(o) . ' ';
+}
+
+lop(res) ::= SLOGOP(o). {
+ static $lops = array(
+ 'eq' => ' == ',
+ 'ne' => ' != ',
+ 'neq' => ' != ',
+ 'gt' => ' > ',
+ 'ge' => ' >= ',
+ 'gte' => ' >= ',
+ 'lt' => ' < ',
+ 'le' => ' <= ',
+ 'lte' => ' <= ',
+ 'mod' => ' % ',
+ 'and' => ' && ',
+ 'or' => ' || ',
+ 'xor' => ' xor ',
+ );
+ $op = strtolower(preg_replace('/\s*/', '', o));
+ res = $lops[$op];
+}
+tlop(res) ::= TLOGOP(o). {
+ static $tlops = array(
+ 'isdivby' => array('op' => ' % ', 'pre' => '!('),
+ 'isnotdivby' => array('op' => ' % ', 'pre' => '('),
+ 'isevenby' => array('op' => ' / ', 'pre' => '!(1 & '),
+ 'isnotevenby' => array('op' => ' / ', 'pre' => '(1 & '),
+ 'isoddby' => array('op' => ' / ', 'pre' => '(1 & '),
+ 'isnotoddby' => array('op' => ' / ', 'pre' => '!(1 & '),
+ );
+ $op = strtolower(preg_replace('/\s*/', '', o));
+ res = $tlops[$op];
+ }
+
+scond(res) ::= SINGLECOND(o). {
+ static $scond = array (
+ 'iseven' => '!(1 & ',
+ 'isnoteven' => '(1 & ',
+ 'isodd' => '(1 & ',
+ 'isnotodd' => '!(1 & ',
+ );
+ $op = strtolower(str_replace(' ', '', o));
+ res = $scond[$op];
+}
+
+//
+// ARRAY element assignment
+//
+arraydef(res) ::= OPENB arrayelements(a) CLOSEB. {
+ res = 'array('.a.')';
+}
+arraydef(res) ::= ARRAYOPEN arrayelements(a) CLOSEP. {
+ res = 'array('.a.')';
+}
+
+arrayelements(res) ::= arrayelement(a). {
+ res = a;
+}
+
+arrayelements(res) ::= arrayelements(a1) COMMA arrayelement(a). {
+ res = a1.','.a;
+}
+
+arrayelements ::= . {
+ return;
+}
+
+arrayelement(res) ::= value(e1) APTR expr(e2). {
+ res = e1.'=>'.e2;
+}
+
+arrayelement(res) ::= ID(i) APTR expr(e2). {
+ res = '\''.i.'\'=>'.e2;
+}
+
+arrayelement(res) ::= expr(e). {
+ res = e;
+}
+
+
+//
+// double quoted strings
+//
+doublequoted_with_quotes(res) ::= QUOTE QUOTE. {
+ res = '\'\'';
+}
+
+doublequoted_with_quotes(res) ::= QUOTE doublequoted(s) QUOTE. {
+ $this->compiler->leaveDoubleQuote();
+ res = s->to_smarty_php($this);
+}
+
+
+doublequoted(res) ::= doublequoted(o1) doublequotedcontent(o2). {
+ o1->append_subtree($this, o2);
+ res = o1;
+}
+
+doublequoted(res) ::= doublequotedcontent(o). {
+ res = new Dq($this, o);
+}
+
+doublequotedcontent(res) ::= BACKTICK variable(v) BACKTICK. {
+ res = new Code('(string)'.v);
+}
+
+doublequotedcontent(res) ::= BACKTICK expr(e) BACKTICK. {
+ res = new Code('(string)('.e.')');
+}
+
+doublequotedcontent(res) ::= DOLLARID(i). {
+ res = new Code('(string)$_smarty_tpl->getValue(\''. substr(i,1) .'\')');
+}
+
+doublequotedcontent(res) ::= LDEL variable(v) RDEL. {
+ res = new Code('(string)'.v);
+}
+
+doublequotedcontent(res) ::= LDEL expr(e) RDEL. {
+ res = new Code('(string)('.e.')');
+}
+
+doublequotedcontent(res) ::= smartytag(st). {
+ res = new Tag($this, st);
+}
+
+doublequotedcontent(res) ::= TEXT(o). {
+ res = new DqContent(o);
+}
+
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/src/Resource/BasePlugin.php b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/src/Resource/BasePlugin.php
new file mode 100644
index 000000000..56f7dfa05
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/src/Resource/BasePlugin.php
@@ -0,0 +1,145 @@
+ FilePlugin::class,
+ 'string' => StringPlugin::class,
+ 'extends' => ExtendsPlugin::class,
+ 'stream' => StreamPlugin::class,
+ 'eval' => StringEval::class,
+ ];
+
+ /**
+ * Source must be recompiled on every occasion
+ *
+ * @var boolean
+ */
+ public $recompiled = false;
+
+ /**
+ * Flag if resource does allow compilation
+ *
+ * @return bool
+ */
+ public function supportsCompiledTemplates(): bool {
+ return true;
+ }
+
+ /**
+ * Check if resource must check time stamps when loading compiled or cached templates.
+ * Resources like 'extends' which use source components my disable timestamp checks on own resource.
+ * @return bool
+ */
+ public function checkTimestamps()
+ {
+ return true;
+ }
+
+ /**
+ * Load Resource Handler
+ *
+ * @param Smarty $smarty smarty object
+ * @param string $type name of the resource
+ *
+ * @return BasePlugin Resource Handler
+ * @throws Exception
+ */
+ public static function load(Smarty $smarty, $type)
+ {
+ // try smarty's cache
+ if (isset($smarty->_resource_handlers[ $type ])) {
+ return $smarty->_resource_handlers[ $type ];
+ }
+ // try registered resource
+ if (isset($smarty->registered_resources[ $type ])) {
+ return $smarty->_resource_handlers[ $type ] = $smarty->registered_resources[ $type ];
+ }
+ // try sysplugins dir
+ if (isset(self::$sysplugins[ $type ])) {
+ $_resource_class = self::$sysplugins[ $type ];
+ return $smarty->_resource_handlers[ $type ] = new $_resource_class();
+ }
+ // try plugins dir
+ $_resource_class = 'Smarty_Resource_' . \smarty_ucfirst_ascii($type);
+ if (class_exists($_resource_class, false)) {
+ return $smarty->_resource_handlers[ $type ] = new $_resource_class();
+ }
+ // try streams
+ $_known_stream = stream_get_wrappers();
+ if (in_array($type, $_known_stream)) {
+ // is known stream
+ if (is_object($smarty->security_policy)) {
+ $smarty->security_policy->isTrustedStream($type);
+ }
+ return $smarty->_resource_handlers[ $type ] = new StreamPlugin();
+ }
+ // TODO: try default_(template|config)_handler
+ // give up
+ throw new \Smarty\Exception("Unknown resource type '{$type}'");
+ }
+
+ /**
+ * Load template's source into current template object
+ *
+ * @param Source $source source object
+ *
+ * @return string template source
+ * @throws \Smarty\Exception if source cannot be loaded
+ */
+ abstract public function getContent(Source $source);
+
+ /**
+ * populate Source Object with metadata from Resource
+ *
+ * @param Source $source source object
+ * @param Template|null $_template template object
+ */
+ abstract public function populate(Source $source, \Smarty\Template $_template = null);
+
+ /**
+ * populate Source Object with timestamp and exists from Resource
+ *
+ * @param Source $source source object
+ */
+ public function populateTimestamp(Source $source)
+ {
+ // intentionally left blank
+ }
+
+ /*
+ * Check if resource must check time stamps when when loading complied or cached templates.
+ * Resources like 'extends' which use source components my disable timestamp checks on own resource.
+ *
+ * @return bool
+ */
+ /**
+ * Determine basename for compiled filename
+ *
+ * @param \Smarty\Template\Source $source source object
+ *
+ * @return string resource's basename
+ */
+ public function getBasename(\Smarty\Template\Source $source)
+ {
+ return basename(preg_replace('![^\w]+!', '_', $source->name));
+ }
+
+}
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/src/Resource/CustomPlugin.php b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/src/Resource/CustomPlugin.php
new file mode 100644
index 000000000..b50ef7aaf
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/src/Resource/CustomPlugin.php
@@ -0,0 +1,105 @@
+uid = sha1($source->type . ':' . $source->name);
+ $mtime = $this->fetchTimestamp($source->name);
+ if ($mtime !== null) {
+ $source->timestamp = $mtime;
+ } else {
+ $this->fetch($source->name, $content, $timestamp);
+ $source->timestamp = $timestamp ?? false;
+ if (isset($content)) {
+ $source->content = $content;
+ }
+ }
+ $source->exists = !!$source->timestamp;
+ }
+
+ /**
+ * Load template's source into current template object
+ *
+ * @param Source $source source object
+ *
+ * @return string template source
+ * @throws Exception if source cannot be loaded
+ */
+ public function getContent(Source $source) {
+ $this->fetch($source->name, $content, $timestamp);
+ if (isset($content)) {
+ return $content;
+ }
+ throw new Exception("Unable to read template {$source->type} '{$source->name}'");
+ }
+
+ /**
+ * Determine basename for compiled filename
+ *
+ * @param Source $source source object
+ *
+ * @return string resource's basename
+ */
+ public function getBasename(Source $source) {
+ return basename($this->generateSafeName($source->name));
+ }
+
+ /**
+ * Removes special characters from $name and limits its length to 127 characters.
+ *
+ * @param $name
+ *
+ * @return string
+ */
+ private function generateSafeName($name): string {
+ return substr(preg_replace('/[^A-Za-z0-9._]/', '', (string)$name), 0, 127);
+ }
+}
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/src/Resource/ExtendsPlugin.php b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/src/Resource/ExtendsPlugin.php
new file mode 100644
index 000000000..acce54e2a
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/src/Resource/ExtendsPlugin.php
@@ -0,0 +1,112 @@
+name);
+ $smarty = $source->getSmarty();
+ $exists = true;
+ foreach ($components as $component) {
+ $_s = Source::load(null, $smarty, $component);
+ $sources[ $_s->uid ] = $_s;
+ $uid .= $_s->uid;
+ if ($_template) {
+ $exists = $exists && $_s->exists;
+ }
+ }
+ $source->components = $sources;
+ $source->uid = sha1($uid . $source->getSmarty()->_joined_template_dir);
+ $source->exists = $exists;
+ if ($_template) {
+ $source->timestamp = $_s->timestamp;
+ }
+ }
+
+ /**
+ * populate Source Object with timestamp and exists from Resource
+ *
+ * @param Source $source source object
+ */
+ public function populateTimestamp(Source $source)
+ {
+ $source->exists = true;
+ /* @var Source $_s */
+ foreach ($source->components as $_s) {
+ $source->exists = $source->exists && $_s->exists;
+ }
+ $source->timestamp = $source->exists ? $_s->getTimeStamp() : false;
+ }
+
+ /**
+ * Load template's source from files into current template object
+ *
+ * @param Source $source source object
+ *
+ * @return string template source
+ * @throws \Smarty\Exception if source cannot be loaded
+ */
+ public function getContent(Source $source)
+ {
+ if (!$source->exists) {
+ throw new \Smarty\Exception("Unable to load '{$source->type}:{$source->name}'");
+ }
+ $_components = array_reverse($source->components);
+ $_content = '';
+ /* @var Source $_s */
+ foreach ($_components as $_s) {
+ // read content
+ $_content .= $_s->getContent();
+ }
+ return $_content;
+ }
+
+ /**
+ * Determine basename for compiled filename
+ *
+ * @param Source $source source object
+ *
+ * @return string resource's basename
+ */
+ public function getBasename(Source $source)
+ {
+ return str_replace(':', '.', basename($source->getResourceName()));
+ }
+
+ /*
+ * Disable timestamp checks for extends resource.
+ * The individual source components will be checked.
+ *
+ * @return bool
+ */
+ /**
+ * @return bool
+ */
+ public function checkTimestamps()
+ {
+ return false;
+ }
+}
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/src/Resource/FilePlugin.php b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/src/Resource/FilePlugin.php
new file mode 100644
index 000000000..7fd8667d3
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/src/Resource/FilePlugin.php
@@ -0,0 +1,180 @@
+uid = sha1(
+ $source->name . ($source->isConfig ? $source->getSmarty()->_joined_config_dir :
+ $source->getSmarty()->_joined_template_dir)
+ );
+
+ if ($path = $this->getFilePath($source->name, $source->getSmarty(), $source->isConfig)) {
+ if (isset($source->getSmarty()->security_policy) && is_object($source->getSmarty()->security_policy)) {
+ $source->getSmarty()->security_policy->isTrustedResourceDir($path, $source->isConfig);
+ }
+ $source->exists = true;
+ $source->timestamp = filemtime($path);
+ } else {
+ $source->timestamp = $source->exists = false;
+ }
+ }
+
+ /**
+ * populate Source Object with timestamp and exists from Resource
+ *
+ * @param Source $source source object
+ */
+ public function populateTimestamp(Source $source) {
+ if (!$source->exists && $path = $this->getFilePath($source->name, $source->getSmarty(), $source->isConfig)) {
+ $source->timestamp = $source->exists = is_file($path);
+ }
+ if ($source->exists && $path) {
+ $source->timestamp = filemtime($path);
+ }
+ }
+
+ /**
+ * Load template's source from file into current template object
+ *
+ * @param Source $source source object
+ *
+ * @return string template source
+ * @throws Exception if source cannot be loaded
+ */
+ public function getContent(Source $source) {
+ if ($source->exists) {
+ return file_get_contents($this->getFilePath($source->getResourceName(), $source->getSmarty(), $source->isConfig()));
+ }
+ throw new Exception(
+ 'Unable to read ' . ($source->isConfig ? 'config' : 'template') .
+ " {$source->type} '{$source->name}'"
+ );
+ }
+
+ /**
+ * Determine basename for compiled filename
+ *
+ * @param Source $source source object
+ *
+ * @return string resource's basename
+ */
+ public function getBasename(Source $source) {
+ return basename($source->getResourceName());
+ }
+
+ /**
+ * build template filepath by traversing the template_dir array
+ *
+ * @param $file
+ * @param Smarty $smarty
+ * @param bool $isConfig
+ *
+ * @return string fully qualified filepath
+ */
+ public function getFilePath($file, \Smarty\Smarty $smarty, bool $isConfig = false) {
+ // absolute file ?
+ if ($file[0] === '/' || $file[1] === ':') {
+ $file = $smarty->_realpath($file, true);
+ return is_file($file) ? $file : false;
+ }
+
+ // normalize DIRECTORY_SEPARATOR
+ if (strpos($file, DIRECTORY_SEPARATOR === '/' ? '\\' : '/') !== false) {
+ $file = str_replace(DIRECTORY_SEPARATOR === '/' ? '\\' : '/', DIRECTORY_SEPARATOR, $file);
+ }
+ $_directories = $smarty->getTemplateDir(null, $isConfig);
+ // template_dir index?
+ if ($file[0] === '[' && preg_match('#^\[([^\]]+)\](.+)$#', $file, $fileMatch)) {
+ $file = $fileMatch[2];
+ $_indices = explode(',', $fileMatch[1]);
+ $_index_dirs = [];
+ foreach ($_indices as $index) {
+ $index = trim($index);
+ // try string indexes
+ if (isset($_directories[$index])) {
+ $_index_dirs[] = $_directories[$index];
+ } elseif (is_numeric($index)) {
+ // try numeric index
+ $index = (int)$index;
+ if (isset($_directories[$index])) {
+ $_index_dirs[] = $_directories[$index];
+ } else {
+ // try at location index
+ $keys = array_keys($_directories);
+ if (isset($_directories[$keys[$index]])) {
+ $_index_dirs[] = $_directories[$keys[$index]];
+ }
+ }
+ }
+ }
+ if (empty($_index_dirs)) {
+ // index not found
+ return false;
+ } else {
+ $_directories = $_index_dirs;
+ }
+ }
+ // relative file name?
+ foreach ($_directories as $_directory) {
+ $path = $_directory . $file;
+ if (is_file($path)) {
+ return (strpos($path, '.' . DIRECTORY_SEPARATOR) !== false) ? $smarty->_realpath($path) : $path;
+ }
+ }
+ if (!isset($_index_dirs)) {
+ // Could be relative to cwd
+ $path = $smarty->_realpath($file, true);
+ if (is_file($path)) {
+ return $path;
+ }
+ }
+ return false;
+ }
+
+ /**
+ * Returns the timestamp of the resource indicated by $resourceName, or false if it doesn't exist.
+ *
+ * @param string $resourceName
+ * @param Smarty $smarty
+ * @param bool $isConfig
+ *
+ * @return false|int
+ */
+ public function getResourceNameTimestamp(string $resourceName, \Smarty\Smarty $smarty, bool $isConfig = false) {
+ if ($path = $this->getFilePath($resourceName, $smarty, $isConfig)) {
+ return filemtime($path);
+ }
+ return false;
+ }
+}
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/src/Resource/RecompiledPlugin.php b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/src/Resource/RecompiledPlugin.php
new file mode 100644
index 000000000..f1c64bc78
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/src/Resource/RecompiledPlugin.php
@@ -0,0 +1,50 @@
+uid = false;
+ $source->content = $this->getContent($source);
+ $source->timestamp = $source->exists = !!$source->content;
+ }
+
+ /**
+ * Load template's source from stream into current template object
+ *
+ * @param Source $source source object
+ *
+ * @return string template source
+ */
+ public function getContent(Source $source) {
+
+ if (strpos($source->getResourceName(), '://') !== false) {
+ $filepath = $source->getResourceName();
+ } else {
+ $filepath = str_replace(':', '://', $source->getFullResourceName());
+ }
+
+ $t = '';
+ // the availability of the stream has already been checked in Smarty\Resource\Base::fetch()
+ $fp = fopen($filepath, 'r+');
+ if ($fp) {
+ while (!feof($fp) && ($current_line = fgets($fp)) !== false) {
+ $t .= $current_line;
+ }
+ fclose($fp);
+ return $t;
+ } else {
+ return false;
+ }
+ }
+
+}
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/src/Resource/StringEval.php b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/src/Resource/StringEval.php
new file mode 100644
index 000000000..5c35e7437
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/src/Resource/StringEval.php
@@ -0,0 +1,85 @@
+uid = sha1($source->name);
+ $source->timestamp = $source->exists = true;
+ }
+
+ /**
+ * Load template's source from $resource_name into current template object
+ *
+ * @param \Smarty\Template\Source $source source object
+ *
+ * @return string template source
+ *@uses decode() to decode base64 and urlencoded template_resources
+ *
+ */
+ public function getContent(\Smarty\Template\Source $source)
+ {
+ return $this->decode($source->name);
+ }
+
+ /**
+ * decode base64 and urlencode
+ *
+ * @param string $string template_resource to decode
+ *
+ * @return string decoded template_resource
+ */
+ protected function decode($string)
+ {
+ // decode if specified
+ if (($pos = strpos($string, ':')) !== false) {
+ if (!strncmp($string, 'base64', 6)) {
+ return base64_decode(substr($string, 7));
+ } elseif (!strncmp($string, 'urlencode', 9)) {
+ return urldecode(substr($string, 10));
+ }
+ }
+ return $string;
+ }
+
+ /**
+ * Determine basename for compiled filename
+ *
+ * @param \Smarty\Template\Source $source source object
+ *
+ * @return string resource's basename
+ */
+ public function getBasename(\Smarty\Template\Source $source)
+ {
+ return '';
+ }
+}
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/src/Resource/StringPlugin.php b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/src/Resource/StringPlugin.php
new file mode 100644
index 000000000..6b5bee4dd
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/src/Resource/StringPlugin.php
@@ -0,0 +1,94 @@
+uid = sha1($source->name);
+ $source->timestamp = $source->exists = true;
+ }
+
+ /**
+ * Load template's source from $resource_name into current template object
+ *
+ * @param Source $source source object
+ *
+ * @return string template source
+ * @uses decode() to decode base64 and urlencoded template_resources
+ *
+ */
+ public function getContent(Source $source) {
+ return $this->decode($source->name);
+ }
+
+ /**
+ * decode base64 and urlencode
+ *
+ * @param string $string template_resource to decode
+ *
+ * @return string decoded template_resource
+ */
+ protected function decode($string) {
+ // decode if specified
+ if (($pos = strpos($string, ':')) !== false) {
+ if (!strncmp($string, 'base64', 6)) {
+ return base64_decode(substr($string, 7));
+ } elseif (!strncmp($string, 'urlencode', 9)) {
+ return urldecode(substr($string, 10));
+ }
+ }
+ return $string;
+ }
+
+ /**
+ * Determine basename for compiled filename
+ * Always returns an empty string.
+ *
+ * @param Source $source source object
+ *
+ * @return string resource's basename
+ */
+ public function getBasename(Source $source) {
+ return '';
+ }
+
+ /*
+ * Disable timestamp checks for string resource.
+ *
+ * @return bool
+ */
+ /**
+ * @return bool
+ */
+ public function checkTimestamps() {
+ return false;
+ }
+}
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/src/Runtime/Block.php b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/src/Runtime/Block.php
new file mode 100644
index 000000000..90eab9cbb
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/src/Runtime/Block.php
@@ -0,0 +1,92 @@
+name = $name;
+ $this->tplIndex = $tplIndex;
+ }
+
+ /**
+ * Compiled block code overloaded by {block} class
+ *
+ * @param \Smarty\Template $tpl
+ */
+ public function callBlock(\Smarty\Template $tpl)
+ {
+ }
+}
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/src/Runtime/CaptureRuntime.php b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/src/Runtime/CaptureRuntime.php
new file mode 100644
index 000000000..3f37c59fc
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/src/Runtime/CaptureRuntime.php
@@ -0,0 +1,163 @@
+registerCallbacks($_template);
+
+ $this->captureStack[] = [
+ $buffer,
+ $assign,
+ $append,
+ ];
+ $this->captureCount++;
+ ob_start();
+ }
+
+ /**
+ * Register callbacks in template class
+ *
+ * @param \Smarty\Template $_template
+ */
+ private function registerCallbacks(Template $_template) {
+
+ foreach ($_template->startRenderCallbacks as $callback) {
+ if (is_array($callback) && get_class($callback[0]) == self::class) {
+ // already registered
+ return;
+ }
+ }
+
+ $_template->startRenderCallbacks[] = [
+ $this,
+ 'startRender',
+ ];
+ $_template->endRenderCallbacks[] = [
+ $this,
+ 'endRender',
+ ];
+ $this->startRender($_template);
+ }
+
+ /**
+ * Start render callback
+ *
+ * @param \Smarty\Template $_template
+ */
+ public function startRender(Template $_template) {
+ $this->countStack[] = $this->captureCount;
+ $this->captureCount = 0;
+ }
+
+ /**
+ * Close capture section
+ *
+ * @param \Smarty\Template $_template
+ *
+ * @throws \Smarty\Exception
+ */
+ public function close(Template $_template) {
+ if ($this->captureCount) {
+ [$buffer, $assign, $append] = array_pop($this->captureStack);
+ $this->captureCount--;
+ if (isset($assign)) {
+ $_template->assign($assign, ob_get_contents());
+ }
+ if (isset($append)) {
+ $_template->append($append, ob_get_contents());
+ }
+ $this->namedBuffer[$buffer] = ob_get_clean();
+ } else {
+ $this->error($_template);
+ }
+ }
+
+ /**
+ * Error exception on not matching {capture}{/capture}
+ *
+ * @param \Smarty\Template $_template
+ *
+ * @throws \Smarty\Exception
+ */
+ public function error(Template $_template) {
+ throw new \Smarty\Exception("Not matching {capture}{/capture} in '{$_template->template_resource}'");
+ }
+
+ /**
+ * Return content of named capture buffer by key or as array
+ *
+ * @param \Smarty\Template $_template
+ * @param string|null $name
+ *
+ * @return string|string[]|null
+ */
+ public function getBuffer(Template $_template, $name = null) {
+ if (isset($name)) {
+ return $this->namedBuffer[$name] ?? null;
+ } else {
+ return $this->namedBuffer;
+ }
+ }
+
+ /**
+ * End render callback
+ *
+ * @param \Smarty\Template $_template
+ *
+ * @throws \Smarty\Exception
+ */
+ public function endRender(Template $_template) {
+ if ($this->captureCount) {
+ $this->error($_template);
+ } else {
+ $this->captureCount = array_pop($this->countStack);
+ }
+ }
+}
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/src/Runtime/DefaultPluginHandlerRuntime.php b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/src/Runtime/DefaultPluginHandlerRuntime.php
new file mode 100644
index 000000000..ad6ed74d3
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/src/Runtime/DefaultPluginHandlerRuntime.php
@@ -0,0 +1,73 @@
+defaultPluginHandler = $defaultPluginHandler;
+ }
+
+ public function hasPlugin($tag, $plugin_type): bool {
+ if ($this->defaultPluginHandler === null) {
+ return false;
+ }
+
+ $callback = null;
+
+ // these are not used here
+ $script = null;
+ $cacheable = null;
+
+ return (call_user_func_array(
+ $this->defaultPluginHandler,
+ [
+ $tag,
+ $plugin_type,
+ null, // This used to pass $this->template, but this parameter has been removed in 5.0
+ &$callback,
+ &$script,
+ &$cacheable,
+ ]
+ ) && $callback);
+ }
+
+ /**
+ * @throws Exception
+ */
+ public function getCallback($tag, $plugin_type) {
+
+ if ($this->defaultPluginHandler === null) {
+ return false;
+ }
+
+ $callback = null;
+
+ // these are not used here
+ $script = null;
+ $cacheable = null;
+
+ if (call_user_func_array(
+ $this->defaultPluginHandler,
+ [
+ $tag,
+ $plugin_type,
+ null, // This used to pass $this->template, but this parameter has been removed in 5.0
+ &$callback,
+ &$script,
+ &$cacheable,
+ ]
+ ) && $callback) {
+ return $callback;
+ }
+ throw new Exception("Default plugin handler: Returned callback for '{$tag}' not callable at runtime");
+ }
+
+}
\ No newline at end of file
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/src/Runtime/ForeachRuntime.php b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/src/Runtime/ForeachRuntime.php
new file mode 100644
index 000000000..06da7d546
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/src/Runtime/ForeachRuntime.php
@@ -0,0 +1,160 @@
+count($from);
+ }
+ } else {
+ settype($from, 'array');
+ }
+ }
+ if (!isset($total)) {
+ $total = empty($from) ? 0 : ($needTotal ? count($from) : 1);
+ }
+ if ($tpl->hasVariable($item)) {
+ $saveVars['item'] = [
+ $item,
+ $tpl->getVariable($item)->getValue(),
+ ];
+ }
+ $tpl->assign($item,null);
+ if ($total === 0) {
+ $from = null;
+ } else {
+ if ($key) {
+ if ($tpl->hasVariable($key)) {
+ $saveVars['key'] = [
+ $key,
+ clone $tpl->getVariable($key),
+ ];
+ }
+ $tpl->assign($key, null);
+ }
+ }
+ if ($needTotal) {
+ $tpl->getVariable($item)->total = $total;
+ }
+ if ($name) {
+ $namedVar = "__smarty_foreach_{$name}";
+ if ($tpl->hasVariable($namedVar)) {
+ $saveVars['named'] = [
+ $namedVar,
+ clone $tpl->getVariable($namedVar),
+ ];
+ }
+ $namedProp = [];
+ if (isset($properties['total'])) {
+ $namedProp['total'] = $total;
+ }
+ if (isset($properties['iteration'])) {
+ $namedProp['iteration'] = 0;
+ }
+ if (isset($properties['index'])) {
+ $namedProp['index'] = -1;
+ }
+ if (isset($properties['show'])) {
+ $namedProp['show'] = ($total > 0);
+ }
+ $tpl->assign($namedVar, $namedProp);
+ }
+ $this->stack[] = $saveVars;
+ return $from;
+ }
+
+ /**
+ * [util function] counts an array, arrayAccess/traversable or PDOStatement object
+ *
+ * @param mixed $value
+ *
+ * @return int the count for arrays and objects that implement countable, 1 for other objects that don't, and 0
+ * for empty elements
+ * @throws \Exception
+ */
+ public function count($value): int
+ {
+ if ($value instanceof \IteratorAggregate) {
+ // Note: getIterator() returns a Traversable, not an Iterator
+ // thus rewind() and valid() methods may not be present
+ return iterator_count($value->getIterator());
+ } elseif ($value instanceof \Iterator) {
+ return $value instanceof \Generator ? 1 : iterator_count($value);
+ } elseif ($value instanceof \Countable) {
+ return count($value);
+ }
+ return count((array) $value);
+ }
+
+ /**
+ * Restore saved variables
+ *
+ * will be called by {break n} or {continue n} for the required number of levels
+ *
+ * @param \Smarty\Template $tpl
+ * @param int $levels number of levels
+ */
+ public function restore(Template $tpl, $levels = 1) {
+ while ($levels) {
+ $saveVars = array_pop($this->stack);
+ if (!empty($saveVars)) {
+ if (isset($saveVars['item'])) {
+ $tpl->getVariable($saveVars['item'][0])->setValue($saveVars['item'][1]);
+ }
+ if (isset($saveVars['key'])) {
+ $tpl->setVariable($saveVars['key'][0], $saveVars['key'][1]);
+ }
+ if (isset($saveVars['named'])) {
+ $tpl->setVariable($saveVars['named'][0], $saveVars['named'][1]);
+ }
+ }
+ $levels--;
+ }
+ }
+}
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/src/Runtime/InheritanceRuntime.php b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/src/Runtime/InheritanceRuntime.php
new file mode 100644
index 000000000..ffd7aae66
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/src/Runtime/InheritanceRuntime.php
@@ -0,0 +1,243 @@
+state === 3 && (strpos($tpl->template_resource, 'extendsall') === false)) {
+ $tpl->setInheritance(clone $tpl->getSmarty()->getRuntime('Inheritance'));
+ $tpl->getInheritance()->init($tpl, $initChild, $blockNames);
+ return;
+ }
+ ++$this->tplIndex;
+ $this->sources[$this->tplIndex] = $tpl->getSource();
+ // start of child sub template(s)
+ if ($initChild) {
+ $this->state = 1;
+ if (!$this->inheritanceLevel) {
+ //grab any output of child templates
+ ob_start();
+ }
+ ++$this->inheritanceLevel;
+ }
+ // if state was waiting for parent change state to parent
+ if ($this->state === 2) {
+ $this->state = 3;
+ }
+ }
+
+ /**
+ * End of child template(s)
+ * - if outer level is reached flush output buffer and switch to wait for parent template state
+ *
+ * @param \Smarty\Template $tpl
+ * @param null|string $template optional name of inheritance parent template
+ *
+ * @throws \Exception
+ * @throws \Smarty\Exception
+ */
+ public function endChild(Template $tpl, $template = null, ?string $currentDir = null) {
+ --$this->inheritanceLevel;
+ if (!$this->inheritanceLevel) {
+ ob_end_clean();
+ $this->state = 2;
+ }
+ if (isset($template)) {
+ $tpl->renderSubTemplate(
+ $template,
+ $tpl->cache_id,
+ $tpl->compile_id,
+ $tpl->caching ? \Smarty\Template::CACHING_NOCACHE_CODE : 0,
+ $tpl->cache_lifetime,
+ [],
+ null,
+ $currentDir
+ );
+ }
+ }
+
+ /**
+ * \Smarty\Runtime\Block constructor.
+ * - if outer level {block} of child template ($state === 1) save it as child root block
+ * - otherwise process inheritance and render
+ *
+ * @param \Smarty\Template $tpl
+ * @param $className
+ * @param string $name
+ * @param int|null $tplIndex index of outer level {block} if nested
+ *
+ * @throws \Smarty\Exception
+ */
+ public function instanceBlock(Template $tpl, $className, $name, $tplIndex = null) {
+ $block = new $className($name, isset($tplIndex) ? $tplIndex : $this->tplIndex);
+ if (isset($this->childRoot[$name])) {
+ $block->child = $this->childRoot[$name];
+ }
+ if ($this->state === 1) {
+ $this->childRoot[$name] = $block;
+ return;
+ }
+ // make sure we got child block of child template of current block
+ while ($block->child && $block->child->child && $block->tplIndex <= $block->child->tplIndex) {
+ $block->child = $block->child->child;
+ }
+ $this->processBlock($tpl, $block);
+ }
+
+ /**
+ * Goto child block or render this
+ *
+ * @param Template $tpl
+ * @param \Smarty\Runtime\Block $block
+ * @param \Smarty\Runtime\Block|null $parent
+ *
+ * @throws Exception
+ */
+ private function processBlock(
+ Template $tpl,
+ \Smarty\Runtime\Block $block,
+ \Smarty\Runtime\Block $parent = null
+ ) {
+ if ($block->hide && !isset($block->child)) {
+ return;
+ }
+ if (isset($block->child) && $block->child->hide && !isset($block->child->child)) {
+ $block->child = null;
+ }
+ $block->parent = $parent;
+ if ($block->append && !$block->prepend && isset($parent)) {
+ $this->callParent($tpl, $block, '\'{block append}\'');
+ }
+ if ($block->callsChild || !isset($block->child) || ($block->child->hide && !isset($block->child->child))) {
+ $this->callBlock($block, $tpl);
+ } else {
+ $this->processBlock($tpl, $block->child, $block);
+ }
+ if ($block->prepend && isset($parent)) {
+ $this->callParent($tpl, $block, '{block prepend}');
+ if ($block->append) {
+ if ($block->callsChild || !isset($block->child)
+ || ($block->child->hide && !isset($block->child->child))
+ ) {
+ $this->callBlock($block, $tpl);
+ } else {
+ $this->processBlock($tpl, $block->child, $block);
+ }
+ }
+ }
+ $block->parent = null;
+ }
+
+ /**
+ * Render child on \$smarty.block.child
+ *
+ * @param Template $tpl
+ * @param \Smarty\Runtime\Block $block
+ *
+ * @return null|string block content
+ * @throws Exception
+ */
+ public function callChild(Template $tpl, \Smarty\Runtime\Block $block) {
+ if (isset($block->child)) {
+ $this->processBlock($tpl, $block->child, $block);
+ }
+ }
+
+ /**
+ * Render parent block on \$smarty.block.parent or {block append/prepend}
+ *
+ * @param Template $tpl
+ * @param \Smarty\Runtime\Block $block
+ * @param string $tag
+ *
+ * @return null|string block content
+ * @throws Exception
+ */
+ public function callParent(Template $tpl, \Smarty\Runtime\Block $block) {
+ if (isset($block->parent)) {
+ $this->callBlock($block->parent, $tpl);
+ } else {
+ throw new Exception("inheritance: illegal '{\$smarty.block.parent}' used in child template '" .
+ "{$tpl->getInheritance()->sources[$block->tplIndex]->getResourceName()}' block '{$block->name}'");
+ }
+ }
+
+ /**
+ * render block
+ *
+ * @param \Smarty\Runtime\Block $block
+ * @param Template $tpl
+ */
+ public function callBlock(\Smarty\Runtime\Block $block, Template $tpl) {
+ $this->sourceStack[] = $tpl->getSource();
+ $tpl->setSource($this->sources[$block->tplIndex]);
+ $block->callBlock($tpl);
+ $tpl->setSource(array_pop($this->sourceStack));
+ }
+}
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/src/Runtime/TplFunctionRuntime.php b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/src/Runtime/TplFunctionRuntime.php
new file mode 100644
index 000000000..6c4b93d73
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/src/Runtime/TplFunctionRuntime.php
@@ -0,0 +1,144 @@
+tplFunctions[$name] ?? ($tpl->getSmarty()->tplFunctions[$name] ?? null);
+ if (!isset($funcParam)) {
+ throw new \Smarty\Exception("Unable to find template function '{$name}'");
+ }
+
+ if (!$tpl->caching || ($tpl->caching && $nocache)) {
+ $function = $funcParam['call_name'];
+ } else {
+ if (isset($funcParam['call_name_caching'])) {
+ $function = $funcParam['call_name_caching'];
+ } else {
+ $function = $funcParam['call_name'];
+ }
+ }
+ if (!function_exists($function) && !$this->addTplFuncToCache($tpl, $name, $function)) {
+ throw new \Smarty\Exception("Unable to find template function '{$name}'");
+ }
+
+ $tpl->pushStack();
+ $function($tpl, $params);
+ $tpl->popStack();
+ }
+
+ /**
+ * Register template functions defined by template
+ *
+ * @param \Smarty|\Smarty\Template|\Smarty\TemplateBase $obj
+ * @param array $tplFunctions source information array of
+ * template functions defined
+ * in template
+ * @param bool $override if true replace existing
+ * functions with same name
+ */
+ public function registerTplFunctions(TemplateBase $obj, $tplFunctions, $override = true) {
+ $obj->tplFunctions =
+ $override ? array_merge($obj->tplFunctions, $tplFunctions) : array_merge($tplFunctions, $obj->tplFunctions);
+ // make sure that the template functions are known in parent templates
+ if ($obj->_isSubTpl()) {
+ $this->registerTplFunctions($obj->parent, $tplFunctions, false);
+ } else {
+ $obj->getSmarty()->tplFunctions = $override ? array_merge($obj->getSmarty()->tplFunctions, $tplFunctions) :
+ array_merge($tplFunctions, $obj->getSmarty()->tplFunctions);
+ }
+ }
+
+ /**
+ * Return source parameter array for single or all template functions
+ *
+ * @param \Smarty\Template $tpl template object
+ * @param null|string $name template function name
+ *
+ * @return array|bool|mixed
+ */
+ public function getTplFunction(Template $tpl, $name = null) {
+ if (isset($name)) {
+ return $tpl->tplFunctions[$name] ?? ($tpl->getSmarty()->tplFunctions[$name] ?? false);
+ } else {
+ return empty($tpl->tplFunctions) ? $tpl->getSmarty()->tplFunctions : $tpl->tplFunctions;
+ }
+ }
+
+ /**
+ * Add template function to cache file for nocache calls
+ *
+ * @param Template $tpl
+ * @param string $_name template function name
+ * @param string $_function PHP function name
+ *
+ * @return bool
+ * @throws Exception
+ */
+ private function addTplFuncToCache(Template $tpl, $_name, $_function) {
+ $funcParam = $tpl->tplFunctions[$_name];
+ if (is_file($funcParam['compiled_filepath'])) {
+ // read compiled file
+ $code = file_get_contents($funcParam['compiled_filepath']);
+ // grab template function
+ if (preg_match("/\/\* {$_function} \*\/([\S\s]*?)\/\*\/ {$_function} \*\//", $code, $match)) {
+ // grab source info from file dependency
+ preg_match("/\s*'{$funcParam['uid']}'([\S\s]*?)\),/", $code, $match1);
+ unset($code);
+ // make PHP function known
+ eval($match[0]);
+ if (function_exists($_function)) {
+
+ // Some magic code existed here, testing if the cached property had been set
+ // and then bubbling up until it found a parent template that had the cached property.
+ // This is no longer possible, so somehow this might break.
+
+ // add template function code to cache file
+ $content = $tpl->getCached()->readCache($tpl);
+ if ($content) {
+ // check if we must update file dependency
+ if (!preg_match("/'{$funcParam['uid']}'(.*?)'nocache_hash'/", $content, $match2)) {
+ $content = preg_replace("/('file_dependency'(.*?)\()/", "\\1{$match1[0]}", $content);
+ }
+ $tpl->getCached()->writeCache(
+ $tpl,
+ preg_replace('/\s*\?>\s*$/', "\n", $content) .
+ "\n" . preg_replace(
+ [
+ '/^\s*<\?php\s+/',
+ '/\s*\?>\s*$/',
+ ],
+ "\n",
+ $match[0]
+ )
+ );
+ }
+ return true;
+ }
+ }
+ }
+ return false;
+ }
+
+}
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/src/Security.php b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/src/Security.php
new file mode 100644
index 000000000..250b3bca7
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/src/Security.php
@@ -0,0 +1,560 @@
+ array('method_1', 'method_2'), // allowed methods listed
+ * 'class_2' => array(), // all methods of class allowed
+ * )
+ * If set to null none is allowed.
+ *
+ * @var array
+ */
+ public $trusted_static_methods = [];
+
+ /**
+ * This is an array of trusted static properties.
+ * If empty access to all static classes and properties is allowed.
+ * Format:
+ * array (
+ * 'class_1' => array('prop_1', 'prop_2'), // allowed properties listed
+ * 'class_2' => array(), // all properties of class allowed
+ * )
+ * If set to null none is allowed.
+ *
+ * @var array
+ */
+ public $trusted_static_properties = [];
+
+ /**
+ * This is an array of allowed tags.
+ * If empty no restriction by allowed_tags.
+ *
+ * @var array
+ */
+ public $allowed_tags = [];
+
+ /**
+ * This is an array of disabled tags.
+ * If empty no restriction by disabled_tags.
+ *
+ * @var array
+ */
+ public $disabled_tags = [];
+
+ /**
+ * This is an array of allowed modifier plugins.
+ * If empty no restriction by allowed_modifiers.
+ *
+ * @var array
+ */
+ public $allowed_modifiers = [];
+
+ /**
+ * This is an array of disabled modifier plugins.
+ * If empty no restriction by disabled_modifiers.
+ *
+ * @var array
+ */
+ public $disabled_modifiers = [];
+
+ /**
+ * This is an array of disabled special $smarty variables.
+ *
+ * @var array
+ */
+ public $disabled_special_smarty_vars = [];
+
+ /**
+ * This is an array of trusted streams.
+ * If empty all streams are allowed.
+ * To disable all streams set $streams = null.
+ *
+ * @var array
+ */
+ public $streams = ['file'];
+
+ /**
+ * + flag if constants can be accessed from template
+ *
+ * @var boolean
+ */
+ public $allow_constants = true;
+
+ /**
+ * + flag if super globals can be accessed from template
+ *
+ * @var boolean
+ */
+ public $allow_super_globals = true;
+
+ /**
+ * max template nesting level
+ *
+ * @var int
+ */
+ public $max_template_nesting = 0;
+
+ /**
+ * current template nesting level
+ *
+ * @var int
+ */
+ private $_current_template_nesting = 0;
+
+ /**
+ * Cache for $resource_dir lookup
+ *
+ * @var array
+ */
+ protected $_resource_dir = [];
+
+ /**
+ * Cache for $template_dir lookup
+ *
+ * @var array
+ */
+ protected $_template_dir = [];
+
+ /**
+ * Cache for $config_dir lookup
+ *
+ * @var array
+ */
+ protected $_config_dir = [];
+
+ /**
+ * Cache for $secure_dir lookup
+ *
+ * @var array
+ */
+ protected $_secure_dir = [];
+
+ /**
+ * @param Smarty $smarty
+ */
+ public function __construct(Smarty $smarty) {
+ $this->smarty = $smarty;
+ }
+
+ /**
+ * Check if static class is trusted.
+ *
+ * @param string $class_name
+ * @param object $compiler compiler object
+ *
+ * @return boolean true if class is trusted
+ */
+ public function isTrustedStaticClass($class_name, $compiler) {
+ if (isset($this->static_classes)
+ && (empty($this->static_classes) || in_array($class_name, $this->static_classes))
+ ) {
+ return true;
+ }
+ $compiler->trigger_template_error("access to static class '{$class_name}' not allowed by security setting");
+ return false; // should not, but who knows what happens to the compiler in the future?
+ }
+
+ /**
+ * Check if static class method/property is trusted.
+ *
+ * @param string $class_name
+ * @param string $params
+ * @param object $compiler compiler object
+ *
+ * @return boolean true if class method is trusted
+ */
+ public function isTrustedStaticClassAccess($class_name, $params, $compiler) {
+ if (!isset($params[2])) {
+ // fall back
+ return $this->isTrustedStaticClass($class_name, $compiler);
+ }
+ if ($params[2] === 'method') {
+ $allowed = $this->trusted_static_methods;
+ $name = substr($params[0], 0, strpos($params[0], '('));
+ } else {
+ $allowed = $this->trusted_static_properties;
+ // strip '$'
+ $name = substr($params[0], 1);
+ }
+ if (isset($allowed)) {
+ if (empty($allowed)) {
+ // fall back
+ return $this->isTrustedStaticClass($class_name, $compiler);
+ }
+ if (isset($allowed[$class_name])
+ && (empty($allowed[$class_name]) || in_array($name, $allowed[$class_name]))
+ ) {
+ return true;
+ }
+ }
+ $compiler->trigger_template_error("access to static class '{$class_name}' {$params[2]} '{$name}' not allowed by security setting");
+ return false; // should not, but who knows what happens to the compiler in the future?
+ }
+
+ /**
+ * Check if tag is trusted.
+ *
+ * @param string $tag_name
+ * @param object $compiler compiler object
+ *
+ * @return boolean true if tag is trusted
+ */
+ public function isTrustedTag($tag_name, $compiler) {
+ $tag_name = strtolower($tag_name);
+
+ // check for internal always required tags
+ if (in_array($tag_name, ['assign', 'call'])) {
+ return true;
+ }
+ // check security settings
+ if (empty($this->allowed_tags)) {
+ if (empty($this->disabled_tags) || !in_array($tag_name, $this->disabled_tags)) {
+ return true;
+ } else {
+ $compiler->trigger_template_error("tag '{$tag_name}' disabled by security setting", null, true);
+ }
+ } elseif (in_array($tag_name, $this->allowed_tags) && !in_array($tag_name, $this->disabled_tags)) {
+ return true;
+ } else {
+ $compiler->trigger_template_error("tag '{$tag_name}' not allowed by security setting", null, true);
+ }
+ return false; // should not, but who knows what happens to the compiler in the future?
+ }
+
+ /**
+ * Check if special $smarty variable is trusted.
+ *
+ * @param string $var_name
+ * @param object $compiler compiler object
+ *
+ * @return boolean true if tag is trusted
+ */
+ public function isTrustedSpecialSmartyVar($var_name, $compiler) {
+ if (!in_array($var_name, $this->disabled_special_smarty_vars)) {
+ return true;
+ } else {
+ $compiler->trigger_template_error(
+ "special variable '\$smarty.{$var_name}' not allowed by security setting",
+ null,
+ true
+ );
+ }
+ return false; // should not, but who knows what happens to the compiler in the future?
+ }
+
+ /**
+ * Check if modifier plugin is trusted.
+ *
+ * @param string $modifier_name
+ * @param object $compiler compiler object
+ *
+ * @return boolean true if tag is trusted
+ */
+ public function isTrustedModifier($modifier_name, $compiler) {
+ // check for internal always allowed modifier
+ if (in_array($modifier_name, ['default'])) {
+ return true;
+ }
+ // check security settings
+ if (empty($this->allowed_modifiers)) {
+ if (empty($this->disabled_modifiers) || !in_array($modifier_name, $this->disabled_modifiers)) {
+ return true;
+ } else {
+ $compiler->trigger_template_error(
+ "modifier '{$modifier_name}' disabled by security setting",
+ null,
+ true
+ );
+ }
+ } elseif (in_array($modifier_name, $this->allowed_modifiers)
+ && !in_array($modifier_name, $this->disabled_modifiers)
+ ) {
+ return true;
+ } else {
+ $compiler->trigger_template_error(
+ "modifier '{$modifier_name}' not allowed by security setting",
+ null,
+ true
+ );
+ }
+ return false; // should not, but who knows what happens to the compiler in the future?
+ }
+
+ /**
+ * Check if constants are enabled or trusted
+ *
+ * @param string $const constant name
+ * @param object $compiler compiler object
+ *
+ * @return bool
+ */
+ public function isTrustedConstant($const, $compiler) {
+ if (in_array($const, ['true', 'false', 'null'])) {
+ return true;
+ }
+ if (!empty($this->trusted_constants)) {
+ if (!in_array(strtolower($const), $this->trusted_constants)) {
+ $compiler->trigger_template_error("Security: access to constant '{$const}' not permitted");
+ return false;
+ }
+ return true;
+ }
+ if ($this->allow_constants) {
+ return true;
+ }
+ $compiler->trigger_template_error("Security: access to constants not permitted");
+ return false;
+ }
+
+ /**
+ * Check if stream is trusted.
+ *
+ * @param string $stream_name
+ *
+ * @return boolean true if stream is trusted
+ * @throws Exception if stream is not trusted
+ */
+ public function isTrustedStream($stream_name) {
+ if (isset($this->streams) && (empty($this->streams) || in_array($stream_name, $this->streams))) {
+ return true;
+ }
+ throw new Exception("stream '{$stream_name}' not allowed by security setting");
+ }
+
+ /**
+ * Check if directory of file resource is trusted.
+ *
+ * @param string $filepath
+ * @param null|bool $isConfig
+ *
+ * @return bool true if directory is trusted
+ * @throws \Smarty\Exception if directory is not trusted
+ */
+ public function isTrustedResourceDir($filepath, $isConfig = null) {
+ $_dir = $this->smarty->getTemplateDir();
+ if ($this->_template_dir !== $_dir) {
+ $this->_updateResourceDir($this->_template_dir, $_dir);
+ $this->_template_dir = $_dir;
+ }
+ $_dir = $this->smarty->getConfigDir();
+ if ($this->_config_dir !== $_dir) {
+ $this->_updateResourceDir($this->_config_dir, $_dir);
+ $this->_config_dir = $_dir;
+ }
+ if ($this->_secure_dir !== $this->secure_dir) {
+ $this->secure_dir = (array)$this->secure_dir;
+ foreach ($this->secure_dir as $k => $d) {
+ $this->secure_dir[$k] = $this->smarty->_realpath($d . DIRECTORY_SEPARATOR, true);
+ }
+ $this->_updateResourceDir($this->_secure_dir, $this->secure_dir);
+ $this->_secure_dir = $this->secure_dir;
+ }
+ $addPath = $this->_checkDir($filepath, $this->_resource_dir);
+ if ($addPath !== false) {
+ $this->_resource_dir = array_merge($this->_resource_dir, $addPath);
+ }
+ return true;
+ }
+
+ /**
+ * Check if URI (e.g. {fetch} or {html_image}) is trusted
+ * To simplify things, isTrustedUri() resolves all input to "{$PROTOCOL}://{$HOSTNAME}".
+ * So "http://username:password@hello.world.example.org:8080/some-path?some=query-string"
+ * is reduced to "http://hello.world.example.org" prior to applying the patters from {@link $trusted_uri}.
+ *
+ * @param string $uri
+ *
+ * @return boolean true if URI is trusted
+ * @throws Exception if URI is not trusted
+ * @uses $trusted_uri for list of patterns to match against $uri
+ */
+ public function isTrustedUri($uri) {
+ $_uri = parse_url($uri);
+ if (!empty($_uri['scheme']) && !empty($_uri['host'])) {
+ $_uri = $_uri['scheme'] . '://' . $_uri['host'];
+ foreach ($this->trusted_uri as $pattern) {
+ if (preg_match($pattern, $_uri)) {
+ return true;
+ }
+ }
+ }
+ throw new Exception("URI '{$uri}' not allowed by security setting");
+ }
+
+ /**
+ * Remove old directories and its sub folders, add new directories
+ *
+ * @param array $oldDir
+ * @param array $newDir
+ */
+ private function _updateResourceDir($oldDir, $newDir) {
+ foreach ($oldDir as $directory) {
+ // $directory = $this->smarty->_realpath($directory, true);
+ $length = strlen($directory);
+ foreach ($this->_resource_dir as $dir) {
+ if (substr($dir, 0, $length) === $directory) {
+ unset($this->_resource_dir[$dir]);
+ }
+ }
+ }
+ foreach ($newDir as $directory) {
+ // $directory = $this->smarty->_realpath($directory, true);
+ $this->_resource_dir[$directory] = true;
+ }
+ }
+
+ /**
+ * Check if file is inside a valid directory
+ *
+ * @param string $filepath
+ * @param array $dirs valid directories
+ *
+ * @return array|bool
+ * @throws \Smarty\Exception
+ */
+ private function _checkDir($filepath, $dirs) {
+ $directory = dirname($this->smarty->_realpath($filepath, true)) . DIRECTORY_SEPARATOR;
+ $_directory = [];
+ if (!preg_match('#[\\\\/][.][.][\\\\/]#', $directory)) {
+ while (true) {
+ // test if the directory is trusted
+ if (isset($dirs[$directory])) {
+ return $_directory;
+ }
+ // abort if we've reached root
+ if (!preg_match('#[\\\\/][^\\\\/]+[\\\\/]$#', $directory)) {
+ // give up
+ break;
+ }
+ // remember the directory to add it to _resource_dir in case we're successful
+ $_directory[$directory] = true;
+ // bubble up one level
+ $directory = preg_replace('#[\\\\/][^\\\\/]+[\\\\/]$#', DIRECTORY_SEPARATOR, $directory);
+ }
+ }
+ // give up
+ throw new Exception(sprintf('Smarty Security: not trusted file path \'%s\' ', $filepath));
+ }
+
+ /**
+ * Loads security class and enables security
+ *
+ * @param \Smarty $smarty
+ * @param string|Security $security_class if a string is used, it must be class-name
+ *
+ * @return \Smarty current Smarty instance for chaining
+ * @throws \Smarty\Exception when an invalid class name is provided
+ */
+ public static function enableSecurity(Smarty $smarty, $security_class) {
+ if ($security_class instanceof Security) {
+ $smarty->security_policy = $security_class;
+ return $smarty;
+ } elseif (is_object($security_class)) {
+ throw new Exception("Class '" . get_class($security_class) . "' must extend \\Smarty\\Security.");
+ }
+ if ($security_class === null) {
+ $security_class = $smarty->security_class;
+ }
+ if (!class_exists($security_class)) {
+ throw new Exception("Security class '$security_class' is not defined");
+ } elseif ($security_class !== Security::class && !is_subclass_of($security_class, Security::class)) {
+ throw new Exception("Class '$security_class' must extend " . Security::class . ".");
+ } else {
+ $smarty->security_policy = new $security_class($smarty);
+ }
+ return $smarty;
+ }
+
+ /**
+ * Start template processing
+ *
+ * @param $template
+ *
+ * @throws Exception
+ */
+ public function startTemplate($template) {
+ if ($this->max_template_nesting > 0 && $this->_current_template_nesting++ >= $this->max_template_nesting) {
+ throw new Exception("maximum template nesting level of '{$this->max_template_nesting}' exceeded when calling '{$template->template_resource}'");
+ }
+ }
+
+ /**
+ * Exit template processing
+ */
+ public function endTemplate() {
+ if ($this->max_template_nesting > 0) {
+ $this->_current_template_nesting--;
+ }
+ }
+
+ /**
+ * Register callback functions call at start/end of template rendering
+ *
+ * @param \Smarty\Template $template
+ */
+ public function registerCallBacks(Template $template) {
+ $template->startRenderCallbacks[] = [$this, 'startTemplate'];
+ $template->endRenderCallbacks[] = [$this, 'endTemplate'];
+ }
+}
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/src/Smarty.php b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/src/Smarty.php
new file mode 100644
index 000000000..5af9c9b36
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/src/Smarty.php
@@ -0,0 +1,2224 @@
+
+ * @author Uwe Tews
+ * @author Rodney Rehm
+ * @author Simon Wisselink
+ */
+
+/**
+ * This is the main Smarty class
+ */
+class Smarty extends \Smarty\TemplateBase {
+
+ /**
+ * smarty version
+ */
+ const SMARTY_VERSION = '5.2.0';
+
+ /**
+ * define caching modes
+ */
+ const CACHING_OFF = 0;
+ const CACHING_LIFETIME_CURRENT = 1;
+ const CACHING_LIFETIME_SAVED = 2;
+ /**
+ * define constant for clearing cache files be saved expiration dates
+ */
+ const CLEAR_EXPIRED = -1;
+ /**
+ * define compile check modes
+ */
+ const COMPILECHECK_OFF = 0;
+ const COMPILECHECK_ON = 1;
+ /**
+ * filter types
+ */
+ const FILTER_POST = 'post';
+ const FILTER_PRE = 'pre';
+ const FILTER_OUTPUT = 'output';
+ const FILTER_VARIABLE = 'variable';
+ /**
+ * plugin types
+ */
+ const PLUGIN_FUNCTION = 'function';
+ const PLUGIN_BLOCK = 'block';
+ const PLUGIN_COMPILER = 'compiler';
+ const PLUGIN_MODIFIER = 'modifier';
+ const PLUGIN_MODIFIERCOMPILER = 'modifiercompiler';
+
+ /**
+ * The character set to adhere to (defaults to "UTF-8")
+ */
+ public static $_CHARSET = 'UTF-8';
+
+ /**
+ * The date format to be used internally
+ * (accepts date() and strftime())
+ */
+ public static $_DATE_FORMAT = '%b %e, %Y';
+
+ /**
+ * Flag denoting if PCRE should run in UTF-8 mode
+ */
+ public static $_UTF8_MODIFIER = 'u';
+
+ /**
+ * Flag denoting if operating system is windows
+ */
+ public static $_IS_WINDOWS = false;
+
+ /**
+ * auto literal on delimiters with whitespace
+ *
+ * @var boolean
+ */
+ public $auto_literal = true;
+
+ /**
+ * display error on not assigned variables
+ *
+ * @var boolean
+ */
+ public $error_unassigned = false;
+
+ /**
+ * flag if template_dir is normalized
+ *
+ * @var bool
+ */
+ public $_templateDirNormalized = false;
+
+ /**
+ * joined template directory string used in cache keys
+ *
+ * @var string
+ */
+ public $_joined_template_dir = null;
+
+ /**
+ * flag if config_dir is normalized
+ *
+ * @var bool
+ */
+ public $_configDirNormalized = false;
+
+ /**
+ * joined config directory string used in cache keys
+ *
+ * @var string
+ */
+ public $_joined_config_dir = null;
+
+ /**
+ * default template handler
+ *
+ * @var callable
+ */
+ public $default_template_handler_func = null;
+
+ /**
+ * default config handler
+ *
+ * @var callable
+ */
+ public $default_config_handler_func = null;
+
+ /**
+ * default plugin handler
+ *
+ * @var callable
+ */
+ private $default_plugin_handler_func = null;
+
+ /**
+ * flag if template_dir is normalized
+ *
+ * @var bool
+ */
+ public $_compileDirNormalized = false;
+
+ /**
+ * flag if template_dir is normalized
+ *
+ * @var bool
+ */
+ public $_cacheDirNormalized = false;
+
+ /**
+ * force template compiling?
+ *
+ * @var boolean
+ */
+ public $force_compile = false;
+
+ /**
+ * use sub dirs for compiled/cached files?
+ *
+ * @var boolean
+ */
+ public $use_sub_dirs = false;
+
+ /**
+ * merge compiled includes
+ *
+ * @var boolean
+ */
+ public $merge_compiled_includes = false;
+
+ /**
+ * force cache file creation
+ *
+ * @var boolean
+ */
+ public $force_cache = false;
+
+ /**
+ * template left-delimiter
+ *
+ * @var string
+ */
+ private $left_delimiter = "{";
+
+ /**
+ * template right-delimiter
+ *
+ * @var string
+ */
+ private $right_delimiter = "}";
+
+ /**
+ * array of strings which shall be treated as literal by compiler
+ *
+ * @var array string
+ */
+ public $literals = [];
+
+ /**
+ * class name
+ * This should be instance of \Smarty\Security.
+ *
+ * @var string
+ * @see \Smarty\Security
+ */
+ public $security_class = \Smarty\Security::class;
+
+ /**
+ * implementation of security class
+ *
+ * @var \Smarty\Security
+ */
+ public $security_policy = null;
+
+ /**
+ * debug mode
+ * Setting this to true enables the debug-console. Setting it to 2 enables individual Debug Console window by
+ * template name.
+ *
+ * @var boolean|int
+ */
+ public $debugging = false;
+
+ /**
+ * This determines if debugging is enable-able from the browser.
+ *
+ * NONE => no debugging control allowed
+ * URL => enable debugging when SMARTY_DEBUG is found in the URL.
+ *
+ *
+ * @var string
+ */
+ public $debugging_ctrl = 'NONE';
+
+ /**
+ * Name of debugging URL-param.
+ * Only used when $debugging_ctrl is set to 'URL'.
+ * The name of the URL-parameter that activates debugging.
+ *
+ * @var string
+ */
+ public $smarty_debug_id = 'SMARTY_DEBUG';
+
+ /**
+ * Path of debug template.
+ *
+ * @var string
+ */
+ public $debug_tpl = null;
+
+ /**
+ * When set, smarty uses this value as error_reporting-level.
+ *
+ * @var int
+ */
+ public $error_reporting = null;
+
+ /**
+ * Controls whether variables with the same name overwrite each other.
+ *
+ * @var boolean
+ */
+ public $config_overwrite = true;
+
+ /**
+ * Controls whether config values of on/true/yes and off/false/no get converted to boolean.
+ *
+ * @var boolean
+ */
+ public $config_booleanize = true;
+
+ /**
+ * Controls whether hidden config sections/vars are read from the file.
+ *
+ * @var boolean
+ */
+ public $config_read_hidden = false;
+
+ /**
+ * locking concurrent compiles
+ *
+ * @var boolean
+ */
+ public $compile_locking = true;
+
+ /**
+ * Controls whether cache resources should use locking mechanism
+ *
+ * @var boolean
+ */
+ public $cache_locking = false;
+
+ /**
+ * seconds to wait for acquiring a lock before ignoring the write lock
+ *
+ * @var float
+ */
+ public $locking_timeout = 10;
+
+ /**
+ * resource type used if none given
+ * Must be a valid key of $registered_resources.
+ *
+ * @var string
+ */
+ public $default_resource_type = 'file';
+
+ /**
+ * cache resource
+ * Must be a subclass of \Smarty\Cacheresource\Base
+ *
+ * @var \Smarty\Cacheresource\Base
+ */
+ private $cacheResource;
+
+ /**
+ * config type
+ *
+ * @var string
+ */
+ public $default_config_type = 'file';
+
+ /**
+ * check If-Modified-Since headers
+ *
+ * @var boolean
+ */
+ public $cache_modified_check = false;
+
+ /**
+ * registered plugins
+ *
+ * @var array
+ */
+ public $registered_plugins = [];
+
+ /**
+ * registered objects
+ *
+ * @var array
+ */
+ public $registered_objects = [];
+
+ /**
+ * registered classes
+ *
+ * @var array
+ */
+ public $registered_classes = [];
+
+ /**
+ * registered resources
+ *
+ * @var array
+ */
+ public $registered_resources = [];
+
+ /**
+ * registered cache resources
+ *
+ * @var array
+ * @deprecated since 5.0
+ */
+ private $registered_cache_resources = [];
+
+ /**
+ * default modifier
+ *
+ * @var array
+ */
+ public $default_modifiers = [];
+
+ /**
+ * autoescape variable output
+ *
+ * @var boolean
+ */
+ public $escape_html = false;
+
+ /**
+ * start time for execution time calculation
+ *
+ * @var int
+ */
+ public $start_time = 0;
+
+ /**
+ * internal flag to enable parser debugging
+ *
+ * @var bool
+ */
+ public $_parserdebug = false;
+
+ /**
+ * Debug object
+ *
+ * @var \Smarty\Debug
+ */
+ public $_debug = null;
+
+ /**
+ * template directory
+ *
+ * @var array
+ */
+ protected $template_dir = ['./templates/'];
+
+ /**
+ * flags for normalized template directory entries
+ *
+ * @var array
+ */
+ protected $_processedTemplateDir = [];
+
+ /**
+ * config directory
+ *
+ * @var array
+ */
+ protected $config_dir = ['./configs/'];
+
+ /**
+ * flags for normalized template directory entries
+ *
+ * @var array
+ */
+ protected $_processedConfigDir = [];
+
+ /**
+ * compile directory
+ *
+ * @var string
+ */
+ protected $compile_dir = './templates_c/';
+
+ /**
+ * cache directory
+ *
+ * @var string
+ */
+ protected $cache_dir = './cache/';
+
+ /**
+ * PHP7 Compatibility mode
+ *
+ * @var bool
+ */
+ private $isMutingUndefinedOrNullWarnings = false;
+
+ /**
+ * Cache of loaded resource handlers.
+ *
+ * @var array
+ */
+ public $_resource_handlers = [];
+
+ /**
+ * Cache of loaded cacheresource handlers.
+ *
+ * @var array
+ */
+ public $_cacheresource_handlers = [];
+
+ /**
+ * List of extensions
+ *
+ * @var ExtensionInterface[]
+ */
+ private $extensions = [];
+ /**
+ * @var BCPluginsAdapter
+ */
+ private $BCPluginsAdapter;
+
+ /**
+ * Initialize new Smarty object
+ */
+ public function __construct() {
+
+ $this->start_time = microtime(true);
+ // Check if we're running on Windows
+ \Smarty\Smarty::$_IS_WINDOWS = strtoupper(substr(PHP_OS, 0, 3)) === 'WIN';
+ // let PCRE (preg_*) treat strings as ISO-8859-1 if we're not dealing with UTF-8
+ if (\Smarty\Smarty::$_CHARSET !== 'UTF-8') {
+ \Smarty\Smarty::$_UTF8_MODIFIER = '';
+ }
+
+ $this->BCPluginsAdapter = new BCPluginsAdapter($this);
+
+ $this->extensions[] = new CoreExtension();
+ $this->extensions[] = new DefaultExtension();
+ $this->extensions[] = $this->BCPluginsAdapter;
+
+ $this->cacheResource = new File();
+ }
+
+ /**
+ * Load an additional extension.
+ *
+ * @return void
+ */
+ public function addExtension(ExtensionInterface $extension) {
+ $this->extensions[] = $extension;
+ }
+
+ /**
+ * Returns all loaded extensions
+ *
+ * @return array|ExtensionInterface[]
+ */
+ public function getExtensions(): array {
+ return $this->extensions;
+ }
+
+ /**
+ * Replace the entire list extensions, allowing you to determine the exact order of the extensions.
+ *
+ * @param ExtensionInterface[] $extensions
+ *
+ * @return void
+ */
+ public function setExtensions(array $extensions): void {
+ $this->extensions = $extensions;
+ }
+
+ /**
+ * Check if a template resource exists
+ *
+ * @param string $resource_name template name
+ *
+ * @return bool status
+ * @throws \Smarty\Exception
+ */
+ public function templateExists($resource_name) {
+ // create source object
+ $source = Template\Source::load(null, $this, $resource_name);
+ return $source->exists;
+ }
+
+ /**
+ * Loads security class and enables security
+ *
+ * @param string|\Smarty\Security $security_class if a string is used, it must be class-name
+ *
+ * @return static current Smarty instance for chaining
+ * @throws \Smarty\Exception
+ */
+ public function enableSecurity($security_class = null) {
+ \Smarty\Security::enableSecurity($this, $security_class);
+ return $this;
+ }
+
+ /**
+ * Disable security
+ *
+ * @return static current Smarty instance for chaining
+ */
+ public function disableSecurity() {
+ $this->security_policy = null;
+ return $this;
+ }
+
+ /**
+ * Add template directory(s)
+ *
+ * @param string|array $template_dir directory(s) of template sources
+ * @param string $key of the array element to assign the template dir to
+ * @param bool $isConfig true for config_dir
+ *
+ * @return static current Smarty instance for chaining
+ */
+ public function addTemplateDir($template_dir, $key = null, $isConfig = false) {
+ if ($isConfig) {
+ $processed = &$this->_processedConfigDir;
+ $dir = &$this->config_dir;
+ $this->_configDirNormalized = false;
+ } else {
+ $processed = &$this->_processedTemplateDir;
+ $dir = &$this->template_dir;
+ $this->_templateDirNormalized = false;
+ }
+ if (is_array($template_dir)) {
+ foreach ($template_dir as $k => $v) {
+ if (is_int($k)) {
+ // indexes are not merged but appended
+ $dir[] = $v;
+ } else {
+ // string indexes are overridden
+ $dir[$k] = $v;
+ unset($processed[$key]);
+ }
+ }
+ } else {
+ if ($key !== null) {
+ // override directory at specified index
+ $dir[$key] = $template_dir;
+ unset($processed[$key]);
+ } else {
+ // append new directory
+ $dir[] = $template_dir;
+ }
+ }
+ return $this;
+ }
+
+ /**
+ * Get template directories
+ *
+ * @param mixed $index index of directory to get, null to get all
+ * @param bool $isConfig true for config_dir
+ *
+ * @return array|string list of template directories, or directory of $index
+ */
+ public function getTemplateDir($index = null, $isConfig = false) {
+ if ($isConfig) {
+ $dir = &$this->config_dir;
+ } else {
+ $dir = &$this->template_dir;
+ }
+ if ($isConfig ? !$this->_configDirNormalized : !$this->_templateDirNormalized) {
+ $this->_normalizeTemplateConfig($isConfig);
+ }
+ if ($index !== null) {
+ return isset($dir[$index]) ? $dir[$index] : null;
+ }
+ return $dir;
+ }
+
+ /**
+ * Set template directory
+ *
+ * @param string|array $template_dir directory(s) of template sources
+ * @param bool $isConfig true for config_dir
+ *
+ * @return static current Smarty instance for chaining
+ */
+ public function setTemplateDir($template_dir, $isConfig = false) {
+ if ($isConfig) {
+ $this->config_dir = [];
+ $this->_processedConfigDir = [];
+ } else {
+ $this->template_dir = [];
+ $this->_processedTemplateDir = [];
+ }
+ $this->addTemplateDir($template_dir, null, $isConfig);
+ return $this;
+ }
+
+ /**
+ * Add config directory(s)
+ *
+ * @param string|array $config_dir directory(s) of config sources
+ * @param mixed $key key of the array element to assign the config dir to
+ *
+ * @return static current Smarty instance for chaining
+ */
+ public function addConfigDir($config_dir, $key = null) {
+ return $this->addTemplateDir($config_dir, $key, true);
+ }
+
+ /**
+ * Get config directory
+ *
+ * @param mixed $index index of directory to get, null to get all
+ *
+ * @return array configuration directory
+ */
+ public function getConfigDir($index = null) {
+ return $this->getTemplateDir($index, true);
+ }
+
+ /**
+ * Set config directory
+ *
+ * @param $config_dir
+ *
+ * @return static current Smarty instance for chaining
+ */
+ public function setConfigDir($config_dir) {
+ return $this->setTemplateDir($config_dir, true);
+ }
+
+ /**
+ * Registers plugin to be used in templates
+ *
+ * @param string $type plugin type
+ * @param string $name name of template tag
+ * @param callable $callback PHP callback to register
+ * @param bool $cacheable if true (default) this function is cache able
+ *
+ * @return $this
+ * @throws \Smarty\Exception
+ *
+ * @api Smarty::registerPlugin()
+ */
+ public function registerPlugin($type, $name, $callback, $cacheable = true) {
+ if (isset($this->registered_plugins[$type][$name])) {
+ throw new Exception("Plugin tag '{$name}' already registered");
+ } elseif (!is_callable($callback) && !class_exists($callback)) {
+ throw new Exception("Plugin '{$name}' not callable");
+ } else {
+ $this->registered_plugins[$type][$name] = [$callback, (bool)$cacheable];
+ }
+ return $this;
+ }
+
+ /**
+ * Returns plugin previously registered using ::registerPlugin as a numerical array as follows or null if not found:
+ * [
+ * 0 => the callback
+ * 1 => (bool) $cacheable
+ * 2 => (array) $cache_attr
+ * ]
+ *
+ * @param string $type plugin type
+ * @param string $name name of template tag
+ *
+ * @return array|null
+ *
+ * @api Smarty::unregisterPlugin()
+ */
+ public function getRegisteredPlugin($type, $name): ?array {
+ if (isset($this->registered_plugins[$type][$name])) {
+ return $this->registered_plugins[$type][$name];
+ }
+ return null;
+ }
+
+ /**
+ * Unregisters plugin previously registered using ::registerPlugin
+ *
+ * @param string $type plugin type
+ * @param string $name name of template tag
+ *
+ * @return $this
+ *
+ * @api Smarty::unregisterPlugin()
+ */
+ public function unregisterPlugin($type, $name) {
+ if (isset($this->registered_plugins[$type][$name])) {
+ unset($this->registered_plugins[$type][$name]);
+ }
+ return $this;
+ }
+
+ /**
+ * Adds directory of plugin files
+ *
+ * @param null|array|string $plugins_dir
+ *
+ * @return static current Smarty instance for chaining
+ * @deprecated since 5.0
+ */
+ public function addPluginsDir($plugins_dir) {
+ trigger_error('Using Smarty::addPluginsDir() to load plugins is deprecated and will be ' .
+ 'removed in a future release. Use Smarty::addExtension() to add an extension or Smarty::registerPlugin to ' .
+ 'quickly register a plugin using a callback function.', E_USER_DEPRECATED);
+
+ foreach ((array)$plugins_dir as $v) {
+ $path = $this->_realpath(rtrim($v ?? '', '/\\') . DIRECTORY_SEPARATOR, true);
+ $this->BCPluginsAdapter->loadPluginsFromDir($path);
+ }
+
+ return $this;
+ }
+
+ /**
+ * Get plugin directories
+ *
+ * @return array list of plugin directories
+ * @deprecated since 5.0
+ */
+ public function getPluginsDir() {
+ trigger_error('Using Smarty::getPluginsDir() is deprecated and will be ' .
+ 'removed in a future release. It will always return an empty array.', E_USER_DEPRECATED);
+ return [];
+ }
+
+ /**
+ * Set plugins directory
+ *
+ * @param string|array $plugins_dir directory(s) of plugins
+ *
+ * @return static current Smarty instance for chaining
+ * @deprecated since 5.0
+ */
+ public function setPluginsDir($plugins_dir) {
+ trigger_error('Using Smarty::getPluginsDir() is deprecated and will be ' .
+ 'removed in a future release. For now, it will remove the DefaultExtension from the extensions list and ' .
+ 'proceed to call Smartyy::addPluginsDir..', E_USER_DEPRECATED);
+
+ $this->extensions = array_filter(
+ $this->extensions,
+ function ($extension) {
+ return !($extension instanceof DefaultExtension);
+ }
+ );
+
+ return $this->addPluginsDir($plugins_dir);
+ }
+
+ /**
+ * Registers a default plugin handler
+ *
+ * @param callable $callback class/method name
+ *
+ * @return $this
+ * @throws Exception if $callback is not callable
+ *
+ * @api Smarty::registerDefaultPluginHandler()
+ *
+ * @deprecated since 5.0
+ */
+ public function registerDefaultPluginHandler($callback) {
+
+ trigger_error('Using Smarty::registerDefaultPluginHandler() is deprecated and will be ' .
+ 'removed in a future release. Please rewrite your plugin handler as an extension.',
+ E_USER_DEPRECATED);
+
+ if (is_callable($callback)) {
+ $this->default_plugin_handler_func = $callback;
+ } else {
+ throw new Exception("Default plugin handler '$callback' not callable");
+ }
+ return $this;
+ }
+
+ /**
+ * Get compiled directory
+ *
+ * @return string path to compiled templates
+ */
+ public function getCompileDir() {
+ if (!$this->_compileDirNormalized) {
+ $this->_normalizeDir('compile_dir', $this->compile_dir);
+ $this->_compileDirNormalized = true;
+ }
+ return $this->compile_dir;
+ }
+
+ /**
+ *
+ * @param string $compile_dir directory to store compiled templates in
+ *
+ * @return static current Smarty instance for chaining
+ */
+ public function setCompileDir($compile_dir) {
+ $this->_normalizeDir('compile_dir', $compile_dir);
+ $this->_compileDirNormalized = true;
+ return $this;
+ }
+
+ /**
+ * Get cache directory
+ *
+ * @return string path of cache directory
+ */
+ public function getCacheDir() {
+ if (!$this->_cacheDirNormalized) {
+ $this->_normalizeDir('cache_dir', $this->cache_dir);
+ $this->_cacheDirNormalized = true;
+ }
+ return $this->cache_dir;
+ }
+
+ /**
+ * Set cache directory
+ *
+ * @param string $cache_dir directory to store cached templates in
+ *
+ * @return static current Smarty instance for chaining
+ */
+ public function setCacheDir($cache_dir) {
+ $this->_normalizeDir('cache_dir', $cache_dir);
+ $this->_cacheDirNormalized = true;
+ return $this;
+ }
+
+ private $templates = [];
+
+ /**
+ * Creates a template object
+ *
+ * @param string $template_name
+ * @param mixed $cache_id cache id to be used with this template
+ * @param mixed $compile_id compile id to be used with this template
+ * @param null $parent next higher level of Smarty variables
+ *
+ * @return Template template object
+ * @throws Exception
+ */
+ public function createTemplate($template_name, $cache_id = null, $compile_id = null, $parent = null): Template {
+
+ $data = [];
+
+ // Shuffle params for backward compatibility: if 2nd param is an object, it's the parent
+ if (is_object($cache_id)) {
+ $parent = $cache_id;
+ $cache_id = null;
+ }
+
+ // Shuffle params for backward compatibility: if 2nd param is an array, it's data
+ if (is_array($cache_id)) {
+ $data = $cache_id;
+ $cache_id = null;
+ }
+
+ return $this->doCreateTemplate($template_name, $cache_id, $compile_id, $parent, null, null, false, $data);
+ }
+
+ /**
+ * Get unique template id
+ *
+ * @param string $resource_name
+ * @param null|mixed $cache_id
+ * @param null|mixed $compile_id
+ * @param null $caching
+ *
+ * @return string
+ */
+ private function generateUniqueTemplateId(
+ $resource_name,
+ $cache_id = null,
+ $compile_id = null,
+ $caching = null
+ ): string {
+ // defaults for optional params
+ $cache_id = $cache_id ?? $this->cache_id;
+ $compile_id = $compile_id ?? $this->compile_id;
+ $caching = (int)$caching ?? $this->caching;
+
+ // Add default resource type to resource name if it is missing
+ if (strpos($resource_name, ':') === false) {
+ $resource_name = "{$this->default_resource_type}:{$resource_name}";
+ }
+
+ $_templateId = $resource_name . '#' . $cache_id . '#' . $compile_id . '#' . $caching;
+
+ // hash very long IDs to prevent problems with filename length
+ // do not hash shorter IDs, so they remain recognizable
+ if (strlen($_templateId) > 150) {
+ $_templateId = sha1($_templateId);
+ }
+
+ return $_templateId;
+ }
+
+ /**
+ * Normalize path
+ * - remove /./ and /../
+ * - make it absolute if required
+ *
+ * @param string $path file path
+ * @param bool $realpath if true - convert to absolute
+ * false - convert to relative
+ * null - keep as it is but
+ * remove /./ /../
+ *
+ * @return string
+ */
+ public function _realpath($path, $realpath = null) {
+ $nds = ['/' => '\\', '\\' => '/'];
+ preg_match(
+ '%^(?(?:[[:alpha:]]:[\\\\/]|/|[\\\\]{2}[[:alpha:]]+|[[:print:]]{2,}:[/]{2}|[\\\\])?)(?(.*))$%u',
+ $path,
+ $parts
+ );
+ $path = $parts['path'];
+ if ($parts['root'] === '\\') {
+ $parts['root'] = substr(getcwd(), 0, 2) . $parts['root'];
+ } else {
+ if ($realpath !== null && !$parts['root']) {
+ $path = getcwd() . DIRECTORY_SEPARATOR . $path;
+ }
+ }
+ // normalize DIRECTORY_SEPARATOR
+ $path = str_replace($nds[DIRECTORY_SEPARATOR], DIRECTORY_SEPARATOR, $path);
+ $parts['root'] = str_replace($nds[DIRECTORY_SEPARATOR], DIRECTORY_SEPARATOR, $parts['root']);
+ do {
+ $path = preg_replace(
+ ['#[\\\\/]{2}#', '#[\\\\/][.][\\\\/]#', '#[\\\\/]([^\\\\/.]+)[\\\\/][.][.][\\\\/]#'],
+ DIRECTORY_SEPARATOR,
+ $path,
+ -1,
+ $count
+ );
+ } while ($count > 0);
+ return $realpath !== false ? $parts['root'] . $path : str_ireplace(getcwd(), '.', $parts['root'] . $path);
+ }
+
+ /**
+ * @param boolean $use_sub_dirs
+ */
+ public function setUseSubDirs($use_sub_dirs) {
+ $this->use_sub_dirs = $use_sub_dirs;
+ }
+
+ /**
+ * @param int $error_reporting
+ */
+ public function setErrorReporting($error_reporting) {
+ $this->error_reporting = $error_reporting;
+ }
+
+ /**
+ * @param boolean $escape_html
+ */
+ public function setEscapeHtml($escape_html) {
+ $this->escape_html = $escape_html;
+ }
+
+ /**
+ * Return auto_literal flag
+ *
+ * @return boolean
+ */
+ public function getAutoLiteral() {
+ return $this->auto_literal;
+ }
+
+ /**
+ * Set auto_literal flag
+ *
+ * @param boolean $auto_literal
+ */
+ public function setAutoLiteral($auto_literal = true) {
+ $this->auto_literal = $auto_literal;
+ }
+
+ /**
+ * @param boolean $force_compile
+ */
+ public function setForceCompile($force_compile) {
+ $this->force_compile = $force_compile;
+ }
+
+ /**
+ * @param boolean $merge_compiled_includes
+ */
+ public function setMergeCompiledIncludes($merge_compiled_includes) {
+ $this->merge_compiled_includes = $merge_compiled_includes;
+ }
+
+ /**
+ * Get left delimiter
+ *
+ * @return string
+ */
+ public function getLeftDelimiter() {
+ return $this->left_delimiter;
+ }
+
+ /**
+ * Set left delimiter
+ *
+ * @param string $left_delimiter
+ */
+ public function setLeftDelimiter($left_delimiter) {
+ $this->left_delimiter = $left_delimiter;
+ }
+
+ /**
+ * Get right delimiter
+ *
+ * @return string $right_delimiter
+ */
+ public function getRightDelimiter() {
+ return $this->right_delimiter;
+ }
+
+ /**
+ * Set right delimiter
+ *
+ * @param string
+ */
+ public function setRightDelimiter($right_delimiter) {
+ $this->right_delimiter = $right_delimiter;
+ }
+
+ /**
+ * @param boolean $debugging
+ */
+ public function setDebugging($debugging) {
+ $this->debugging = $debugging;
+ }
+
+ /**
+ * @param boolean $config_overwrite
+ */
+ public function setConfigOverwrite($config_overwrite) {
+ $this->config_overwrite = $config_overwrite;
+ }
+
+ /**
+ * @param boolean $config_booleanize
+ */
+ public function setConfigBooleanize($config_booleanize) {
+ $this->config_booleanize = $config_booleanize;
+ }
+
+ /**
+ * @param boolean $config_read_hidden
+ */
+ public function setConfigReadHidden($config_read_hidden) {
+ $this->config_read_hidden = $config_read_hidden;
+ }
+
+ /**
+ * @param boolean $compile_locking
+ */
+ public function setCompileLocking($compile_locking) {
+ $this->compile_locking = $compile_locking;
+ }
+
+ /**
+ * @param string $default_resource_type
+ */
+ public function setDefaultResourceType($default_resource_type) {
+ $this->default_resource_type = $default_resource_type;
+ }
+
+ /**
+ * Test install
+ *
+ * @param null $errors
+ */
+ public function testInstall(&$errors = null) {
+ \Smarty\TestInstall::testInstall($this, $errors);
+ }
+
+ /**
+ * Get Smarty object
+ *
+ * @return static
+ */
+ public function getSmarty() {
+ return $this;
+ }
+
+ /**
+ * Normalize and set directory string
+ *
+ * @param string $dirName cache_dir or compile_dir
+ * @param string $dir filepath of folder
+ */
+ private function _normalizeDir($dirName, $dir) {
+ $this->{$dirName} = $this->_realpath(rtrim($dir ?? '', "/\\") . DIRECTORY_SEPARATOR, true);
+ }
+
+ /**
+ * Normalize template_dir or config_dir
+ *
+ * @param bool $isConfig true for config_dir
+ */
+ private function _normalizeTemplateConfig($isConfig) {
+ if ($isConfig) {
+ $processed = &$this->_processedConfigDir;
+ $dir = &$this->config_dir;
+ } else {
+ $processed = &$this->_processedTemplateDir;
+ $dir = &$this->template_dir;
+ }
+ if (!is_array($dir)) {
+ $dir = (array)$dir;
+ }
+ foreach ($dir as $k => $v) {
+ if (!isset($processed[$k])) {
+ $dir[$k] = $this->_realpath(rtrim($v ?? '', "/\\") . DIRECTORY_SEPARATOR, true);
+ $processed[$k] = true;
+ }
+ }
+
+ if ($isConfig) {
+ $this->_configDirNormalized = true;
+ $this->_joined_config_dir = join('#', $this->config_dir);
+ } else {
+ $this->_templateDirNormalized = true;
+ $this->_joined_template_dir = join('#', $this->template_dir);
+ }
+
+ }
+
+ /**
+ * Mutes errors for "undefined index", "undefined array key" and "trying to read property of null".
+ *
+ * @void
+ */
+ public function muteUndefinedOrNullWarnings(): void {
+ $this->isMutingUndefinedOrNullWarnings = true;
+ }
+
+ /**
+ * Indicates if Smarty will mute errors for "undefined index", "undefined array key" and "trying to read property of null".
+ *
+ * @return bool
+ */
+ public function isMutingUndefinedOrNullWarnings(): bool {
+ return $this->isMutingUndefinedOrNullWarnings;
+ }
+
+ /**
+ * Empty cache for a specific template
+ *
+ * @param string $template_name template name
+ * @param string $cache_id cache id
+ * @param string $compile_id compile id
+ * @param integer $exp_time expiration time
+ * @param string $type resource type
+ *
+ * @return int number of cache files deleted
+ * @throws \Smarty\Exception
+ *
+ * @api Smarty::clearCache()
+ */
+ public function clearCache(
+ $template_name,
+ $cache_id = null,
+ $compile_id = null,
+ $exp_time = null
+ ) {
+ return $this->getCacheResource()->clear($this, $template_name, $cache_id, $compile_id, $exp_time);
+ }
+
+ /**
+ * Empty cache folder
+ *
+ * @param integer $exp_time expiration time
+ * @param string $type resource type
+ *
+ * @return int number of cache files deleted
+ *
+ * @api Smarty::clearAllCache()
+ */
+ public function clearAllCache($exp_time = null) {
+ return $this->getCacheResource()->clearAll($this, $exp_time);
+ }
+
+ /**
+ * Delete compiled template file
+ *
+ * @param string $resource_name template name
+ * @param string $compile_id compile id
+ * @param integer $exp_time expiration time
+ *
+ * @return int number of template files deleted
+ * @throws \Smarty\Exception
+ *
+ * @api Smarty::clearCompiledTemplate()
+ */
+ public function clearCompiledTemplate($resource_name = null, $compile_id = null, $exp_time = null) {
+ $_compile_dir = $this->getCompileDir();
+ if ($_compile_dir === '/') { //We should never want to delete this!
+ return 0;
+ }
+ $_compile_id = isset($compile_id) ? preg_replace('![^\w]+!', '_', $compile_id) : null;
+ $_dir_sep = $this->use_sub_dirs ? DIRECTORY_SEPARATOR : '^';
+ if (isset($resource_name)) {
+ $_save_stat = $this->caching;
+ $this->caching = \Smarty\Smarty::CACHING_OFF;
+ /* @var Template $tpl */
+ $tpl = $this->doCreateTemplate($resource_name);
+ $this->caching = $_save_stat;
+ if (!$tpl->getSource()->handler->recompiled && $tpl->getSource()->exists) {
+ $_resource_part_1 = basename(str_replace('^', DIRECTORY_SEPARATOR, $tpl->getCompiled()->filepath));
+ $_resource_part_1_length = strlen($_resource_part_1);
+ } else {
+ return 0;
+ }
+ $_resource_part_2 = str_replace('.php', '.cache.php', $_resource_part_1);
+ $_resource_part_2_length = strlen($_resource_part_2);
+ }
+ $_dir = $_compile_dir;
+ if ($this->use_sub_dirs && isset($_compile_id)) {
+ $_dir .= $_compile_id . $_dir_sep;
+ }
+ if (isset($_compile_id)) {
+ $_compile_id_part = $_compile_dir . $_compile_id . $_dir_sep;
+ $_compile_id_part_length = strlen($_compile_id_part);
+ }
+ $_count = 0;
+ try {
+ $_compileDirs = new RecursiveDirectoryIterator($_dir);
+ } catch (\UnexpectedValueException $e) {
+ // path not found / not a dir
+ return 0;
+ }
+ $_compile = new RecursiveIteratorIterator($_compileDirs, RecursiveIteratorIterator::CHILD_FIRST);
+ foreach ($_compile as $_file) {
+ if (substr(basename($_file->getPathname()), 0, 1) === '.') {
+ continue;
+ }
+ $_filepath = (string)$_file;
+ if ($_file->isDir()) {
+ if (!$_compile->isDot()) {
+ // delete folder if empty
+ @rmdir($_file->getPathname());
+ }
+ } else {
+ // delete only php files
+ if (substr($_filepath, -4) !== '.php') {
+ continue;
+ }
+ $unlink = false;
+ if ((!isset($_compile_id) ||
+ (isset($_filepath[$_compile_id_part_length]) &&
+ $a = !strncmp($_filepath, $_compile_id_part, $_compile_id_part_length)))
+ && (!isset($resource_name) || (isset($_filepath[$_resource_part_1_length])
+ && substr_compare(
+ $_filepath,
+ $_resource_part_1,
+ -$_resource_part_1_length,
+ $_resource_part_1_length
+ ) === 0) || (isset($_filepath[$_resource_part_2_length])
+ && substr_compare(
+ $_filepath,
+ $_resource_part_2,
+ -$_resource_part_2_length,
+ $_resource_part_2_length
+ ) === 0))
+ ) {
+ if (isset($exp_time)) {
+ if (is_file($_filepath) && time() - filemtime($_filepath) >= $exp_time) {
+ $unlink = true;
+ }
+ } else {
+ $unlink = true;
+ }
+ }
+ if ($unlink && is_file($_filepath) && @unlink($_filepath)) {
+ $_count++;
+ if (function_exists('opcache_invalidate')
+ && (!function_exists('ini_get') || strlen(ini_get('opcache.restrict_api')) < 1)
+ ) {
+ opcache_invalidate($_filepath, true);
+ } elseif (function_exists('apc_delete_file')) {
+ apc_delete_file($_filepath);
+ }
+ }
+ }
+ }
+ return $_count;
+ }
+
+ /**
+ * Compile all template files
+ *
+ * @param string $extension file extension
+ * @param bool $force_compile force all to recompile
+ * @param int $time_limit
+ * @param int $max_errors
+ *
+ * @return integer number of template files recompiled
+ * @api Smarty::compileAllTemplates()
+ *
+ */
+ public function compileAllTemplates(
+ $extension = '.tpl',
+ $force_compile = false,
+ $time_limit = 0,
+ $max_errors = null
+ ) {
+ return $this->compileAll($extension, $force_compile, $time_limit, $max_errors);
+ }
+
+ /**
+ * Compile all config files
+ *
+ * @param string $extension file extension
+ * @param bool $force_compile force all to recompile
+ * @param int $time_limit
+ * @param int $max_errors
+ *
+ * @return int number of template files recompiled
+ * @api Smarty::compileAllConfig()
+ *
+ */
+ public function compileAllConfig(
+ $extension = '.conf',
+ $force_compile = false,
+ $time_limit = 0,
+ $max_errors = null
+ ) {
+ return $this->compileAll($extension, $force_compile, $time_limit, $max_errors, true);
+ }
+
+ /**
+ * Compile all template or config files
+ *
+ * @param string $extension template file name extension
+ * @param bool $force_compile force all to recompile
+ * @param int $time_limit set maximum execution time
+ * @param int $max_errors set maximum allowed errors
+ * @param bool $isConfig flag true if called for config files
+ *
+ * @return int number of template files compiled
+ */
+ protected function compileAll(
+ $extension,
+ $force_compile,
+ $time_limit,
+ $max_errors,
+ $isConfig = false
+ ) {
+ // switch off time limit
+ if (function_exists('set_time_limit')) {
+ @set_time_limit($time_limit);
+ }
+ $_count = 0;
+ $_error_count = 0;
+ $sourceDir = $isConfig ? $this->getConfigDir() : $this->getTemplateDir();
+ // loop over array of source directories
+ foreach ($sourceDir as $_dir) {
+ $_dir_1 = new RecursiveDirectoryIterator(
+ $_dir,
+ defined('FilesystemIterator::FOLLOW_SYMLINKS') ?
+ FilesystemIterator::FOLLOW_SYMLINKS : 0
+ );
+ $_dir_2 = new RecursiveIteratorIterator($_dir_1);
+ foreach ($_dir_2 as $_fileinfo) {
+ $_file = $_fileinfo->getFilename();
+ if (substr(basename($_fileinfo->getPathname()), 0, 1) === '.' || strpos($_file, '.svn') !== false) {
+ continue;
+ }
+ if (substr_compare($_file, $extension, -strlen($extension)) !== 0) {
+ continue;
+ }
+ if ($_fileinfo->getPath() !== substr($_dir, 0, -1)) {
+ $_file = substr($_fileinfo->getPath(), strlen($_dir)) . DIRECTORY_SEPARATOR . $_file;
+ }
+ echo "\n", $_dir, '---', $_file;
+ flush();
+ $_start_time = microtime(true);
+ $_smarty = clone $this;
+ //
+ $_smarty->force_compile = $force_compile;
+ try {
+ $_tpl = $this->doCreateTemplate($_file);
+ $_tpl->caching = self::CACHING_OFF;
+ $_tpl->setSource(
+ $isConfig ? \Smarty\Template\Config::load($_tpl) : \Smarty\Template\Source::load($_tpl)
+ );
+ if ($_tpl->mustCompile()) {
+ $_tpl->compileTemplateSource();
+ $_count++;
+ echo ' compiled in ', microtime(true) - $_start_time, ' seconds';
+ flush();
+ } else {
+ echo ' is up to date';
+ flush();
+ }
+ } catch (\Exception $e) {
+ echo "\n ------>Error: ", $e->getMessage(), "\n";
+ $_error_count++;
+ }
+ // free memory
+ unset($_tpl);
+ if ($max_errors !== null && $_error_count === $max_errors) {
+ echo "\ntoo many errors\n";
+ exit(1);
+ }
+ }
+ }
+ echo "\n";
+ return $_count;
+ }
+
+ /**
+ * check client side cache
+ *
+ * @param \Smarty\Template\Cached $cached
+ * @param Template $_template
+ * @param string $content
+ *
+ * @throws \Exception
+ * @throws \Smarty\Exception
+ */
+ public function cacheModifiedCheck(Template\Cached $cached, Template $_template, $content) {
+ $_isCached = $_template->isCached() && !$_template->getCompiled()->getNocacheCode();
+ $_last_modified_date =
+ @substr($_SERVER['HTTP_IF_MODIFIED_SINCE'], 0, strpos($_SERVER['HTTP_IF_MODIFIED_SINCE'], 'GMT') + 3);
+ if ($_isCached && $cached->timestamp <= strtotime($_last_modified_date)) {
+ switch (PHP_SAPI) {
+ case 'cgi': // php-cgi < 5.3
+ case 'cgi-fcgi': // php-cgi >= 5.3
+ case 'fpm-fcgi': // php-fpm >= 5.3.3
+ header('Status: 304 Not Modified');
+ break;
+ case 'cli':
+ if (/* ^phpunit */
+ !empty($_SERVER['SMARTY_PHPUNIT_DISABLE_HEADERS']) /* phpunit$ */
+ ) {
+ $_SERVER['SMARTY_PHPUNIT_HEADERS'][] = '304 Not Modified';
+ }
+ break;
+ default:
+ if (/* ^phpunit */
+ !empty($_SERVER['SMARTY_PHPUNIT_DISABLE_HEADERS']) /* phpunit$ */
+ ) {
+ $_SERVER['SMARTY_PHPUNIT_HEADERS'][] = '304 Not Modified';
+ } else {
+ header($_SERVER['SERVER_PROTOCOL'] . ' 304 Not Modified');
+ }
+ break;
+ }
+ } else {
+ switch (PHP_SAPI) {
+ case 'cli':
+ if (/* ^phpunit */
+ !empty($_SERVER['SMARTY_PHPUNIT_DISABLE_HEADERS']) /* phpunit$ */
+ ) {
+ $_SERVER['SMARTY_PHPUNIT_HEADERS'][] =
+ 'Last-Modified: ' . gmdate('D, d M Y H:i:s', $cached->timestamp) . ' GMT';
+ }
+ break;
+ default:
+ header('Last-Modified: ' . gmdate('D, d M Y H:i:s', $cached->timestamp) . ' GMT');
+ break;
+ }
+ echo $content;
+ }
+ }
+
+ public function getModifierCallback(string $modifierName) {
+ foreach ($this->getExtensions() as $extension) {
+ if ($callback = $extension->getModifierCallback($modifierName)) {
+ return [new CallbackWrapper($modifierName, $callback), 'handle'];
+ }
+ }
+ return null;
+ }
+
+ public function getFunctionHandler(string $functionName): ?\Smarty\FunctionHandler\FunctionHandlerInterface {
+ foreach ($this->getExtensions() as $extension) {
+ if ($handler = $extension->getFunctionHandler($functionName)) {
+ return $handler;
+ }
+ }
+ return null;
+ }
+
+ public function getBlockHandler(string $blockTagName): ?\Smarty\BlockHandler\BlockHandlerInterface {
+ foreach ($this->getExtensions() as $extension) {
+ if ($handler = $extension->getBlockHandler($blockTagName)) {
+ return $handler;
+ }
+ }
+ return null;
+ }
+
+ public function getModifierCompiler(string $modifier): ?\Smarty\Compile\Modifier\ModifierCompilerInterface {
+ foreach ($this->getExtensions() as $extension) {
+ if ($handler = $extension->getModifierCompiler($modifier)) {
+ return $handler;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Run pre-filters over template source
+ *
+ * @param string $source the content which shall be processed by the filters
+ * @param Template $template template object
+ *
+ * @return string the filtered source
+ */
+ public function runPreFilters($source, Template $template) {
+
+ foreach ($this->getExtensions() as $extension) {
+ /** @var \Smarty\Filter\FilterInterface $filter */
+ foreach ($extension->getPreFilters() as $filter) {
+ $source = $filter->filter($source, $template);
+ }
+ }
+
+ // return filtered output
+ return $source;
+ }
+
+ /**
+ * Run post-filters over template's compiled code
+ *
+ * @param string $code the content which shall be processed by the filters
+ * @param Template $template template object
+ *
+ * @return string the filtered code
+ */
+ public function runPostFilters($code, Template $template) {
+
+ foreach ($this->getExtensions() as $extension) {
+ /** @var \Smarty\Filter\FilterInterface $filter */
+ foreach ($extension->getPostFilters() as $filter) {
+ $code = $filter->filter($code, $template);
+ }
+ }
+
+ // return filtered output
+ return $code;
+ }
+
+ /**
+ * Run filters over template output
+ *
+ * @param string $content the content which shall be processed by the filters
+ * @param Template $template template object
+ *
+ * @return string the filtered (modified) output
+ */
+ public function runOutputFilters($content, Template $template) {
+
+ foreach ($this->getExtensions() as $extension) {
+ /** @var \Smarty\Filter\FilterInterface $filter */
+ foreach ($extension->getOutputFilters() as $filter) {
+ $content = $filter->filter($content, $template);
+ }
+ }
+
+ // return filtered output
+ return $content;
+ }
+
+ /**
+ * Writes file in a safe way to disk
+ *
+ * @param string $_filepath complete filepath
+ * @param string $_contents file content
+ *
+ * @return boolean true
+ * @throws Exception
+ */
+ public function writeFile($_filepath, $_contents) {
+ $_error_reporting = error_reporting();
+ error_reporting($_error_reporting & ~E_NOTICE & ~E_WARNING);
+ $_dirpath = dirname($_filepath);
+ // if subdirs, create dir structure
+ if ($_dirpath !== '.') {
+ $i = 0;
+ // loop if concurrency problem occurs
+ // see https://bugs.php.net/bug.php?id=35326
+ while (!is_dir($_dirpath)) {
+ if (@mkdir($_dirpath, 0777, true)) {
+ break;
+ }
+ clearstatcache();
+ if (++$i === 3) {
+ error_reporting($_error_reporting);
+ throw new Exception("unable to create directory {$_dirpath}");
+ }
+ sleep(1);
+ }
+ }
+ // write to tmp file, then move to overt file lock race condition
+ $_tmp_file = $_dirpath . DIRECTORY_SEPARATOR . str_replace(['.', ','], '_', uniqid('wrt', true));
+ if (!file_put_contents($_tmp_file, $_contents)) {
+ error_reporting($_error_reporting);
+ throw new Exception("unable to write file {$_tmp_file}");
+ }
+ /*
+ * Windows' rename() fails if the destination exists,
+ * Linux' rename() properly handles the overwrite.
+ * Simply unlink()ing a file might cause other processes
+ * currently reading that file to fail, but linux' rename()
+ * seems to be smart enough to handle that for us.
+ */
+ if (\Smarty\Smarty::$_IS_WINDOWS) {
+ // remove original file
+ if (is_file($_filepath)) {
+ @unlink($_filepath);
+ }
+ // rename tmp file
+ $success = @rename($_tmp_file, $_filepath);
+ } else {
+ // rename tmp file
+ $success = @rename($_tmp_file, $_filepath);
+ if (!$success) {
+ // remove original file
+ if (is_file($_filepath)) {
+ @unlink($_filepath);
+ }
+ // rename tmp file
+ $success = @rename($_tmp_file, $_filepath);
+ }
+ }
+ if (!$success) {
+ error_reporting($_error_reporting);
+ throw new Exception("unable to write file {$_filepath}");
+ }
+ // set file permissions
+ @chmod($_filepath, 0666 & ~umask());
+ error_reporting($_error_reporting);
+ return true;
+ }
+
+ private $runtimes = [];
+
+ /**
+ * Loads and returns a runtime extension or null if not found
+ *
+ * @param string $type
+ *
+ * @return object|null
+ */
+ public function getRuntime(string $type) {
+
+ if (isset($this->runtimes[$type])) {
+ return $this->runtimes[$type];
+ }
+
+ // Lazy load runtimes when/if needed
+ switch ($type) {
+ case 'Capture':
+ return $this->runtimes[$type] = new CaptureRuntime();
+ case 'Foreach':
+ return $this->runtimes[$type] = new ForeachRuntime();
+ case 'Inheritance':
+ return $this->runtimes[$type] = new InheritanceRuntime();
+ case 'TplFunction':
+ return $this->runtimes[$type] = new TplFunctionRuntime();
+ case 'DefaultPluginHandler':
+ return $this->runtimes[$type] = new DefaultPluginHandlerRuntime(
+ $this->getDefaultPluginHandlerFunc()
+ );
+ }
+
+ throw new \Smarty\Exception('Trying to load invalid runtime ' . $type);
+ }
+
+ /**
+ * Indicates if a runtime is available.
+ *
+ * @param string $type
+ *
+ * @return bool
+ */
+ public function hasRuntime(string $type): bool {
+ try {
+ $this->getRuntime($type);
+ return true;
+ } catch (\Smarty\Exception $e) {
+ return false;
+ }
+ }
+
+ /**
+ * @return callable|null
+ */
+ public function getDefaultPluginHandlerFunc(): ?callable {
+ return $this->default_plugin_handler_func;
+ }
+
+ /**
+ * load a filter of specified type and name
+ *
+ * @param string $type filter type
+ * @param string $name filter name
+ *
+ * @return bool
+ * @throws \Smarty\Exception
+ * @api Smarty::loadFilter()
+ *
+ * @deprecated since 5.0
+ */
+ public function loadFilter($type, $name) {
+
+ if ($type == \Smarty\Smarty::FILTER_VARIABLE) {
+ foreach ($this->getExtensions() as $extension) {
+ if ($extension->getModifierCallback($name)) {
+
+ trigger_error('Using Smarty::loadFilter() to load variable filters is deprecated and will ' .
+ 'be removed in a future release. Use Smarty::addDefaultModifiers() to add a modifier.',
+ E_USER_DEPRECATED);
+
+ $this->addDefaultModifiers([$name]);
+ return true;
+ }
+ }
+ }
+
+ trigger_error('Using Smarty::loadFilter() to load filters is deprecated and will be ' .
+ 'removed in a future release. Use Smarty::addExtension() to add an extension or Smarty::registerFilter to ' .
+ 'quickly register a filter using a callback function.', E_USER_DEPRECATED);
+
+ if ($type == \Smarty\Smarty::FILTER_OUTPUT && $name == 'trimwhitespace') {
+ $this->BCPluginsAdapter->addOutputFilter(new TrimWhitespace());
+ return true;
+ }
+
+ $_plugin = "smarty_{$type}filter_{$name}";
+ if (!is_callable($_plugin) && class_exists($_plugin, false)) {
+ $_plugin = [$_plugin, 'execute'];
+ }
+
+ if (is_callable($_plugin)) {
+ $this->registerFilter($type, $_plugin, $name);
+ return true;
+ }
+
+ throw new Exception("{$type}filter '{$name}' not found or callable");
+ }
+
+ /**
+ * load a filter of specified type and name
+ *
+ * @param string $type filter type
+ * @param string $name filter name
+ *
+ * @return static
+ * @throws \Smarty\Exception
+ * @api Smarty::unloadFilter()
+ *
+ *
+ * @deprecated since 5.0
+ */
+ public function unloadFilter($type, $name) {
+ trigger_error('Using Smarty::unloadFilter() to unload filters is deprecated and will be ' .
+ 'removed in a future release. Use Smarty::addExtension() to add an extension or Smarty::(un)registerFilter to ' .
+ 'quickly (un)register a filter using a callback function.', E_USER_DEPRECATED);
+
+ return $this->unregisterFilter($type, $name);
+ }
+
+ private $_caching_type = 'file';
+
+ /**
+ * @param $type
+ *
+ * @return void
+ * @deprecated since 5.0
+ */
+ public function setCachingType($type) {
+ trigger_error('Using Smarty::setCachingType() is deprecated and will be ' .
+ 'removed in a future release. Use Smarty::setCacheResource() instead.', E_USER_DEPRECATED);
+ $this->_caching_type = $type;
+ $this->activateBCCacheResource();
+ }
+
+ /**
+ * @return string
+ * @deprecated since 5.0
+ */
+ public function getCachingType(): string {
+ trigger_error('Using Smarty::getCachingType() is deprecated and will be ' .
+ 'removed in a future release.', E_USER_DEPRECATED);
+ return $this->_caching_type;
+ }
+
+ /**
+ * Registers a resource to fetch a template
+ *
+ * @param string $name name of resource type
+ * @param Base $resource_handler
+ *
+ * @return static
+ *
+ * @api Smarty::registerCacheResource()
+ *
+ * @deprecated since 5.0
+ */
+ public function registerCacheResource($name, \Smarty\Cacheresource\Base $resource_handler) {
+
+ trigger_error('Using Smarty::registerCacheResource() is deprecated and will be ' .
+ 'removed in a future release. Use Smarty::setCacheResource() instead.', E_USER_DEPRECATED);
+
+ $this->registered_cache_resources[$name] = $resource_handler;
+ $this->activateBCCacheResource();
+ return $this;
+ }
+
+ /**
+ * Unregisters a resource to fetch a template
+ *
+ * @param $name
+ *
+ * @return static
+ * @api Smarty::unregisterCacheResource()
+ *
+ * @deprecated since 5.0
+ *
+ */
+ public function unregisterCacheResource($name) {
+
+ trigger_error('Using Smarty::unregisterCacheResource() is deprecated and will be ' .
+ 'removed in a future release.', E_USER_DEPRECATED);
+
+ if (isset($this->registered_cache_resources[$name])) {
+ unset($this->registered_cache_resources[$name]);
+ }
+ return $this;
+ }
+
+ private function activateBCCacheResource() {
+ if ($this->_caching_type == 'file') {
+ $this->setCacheResource(new File());
+ }
+ if (isset($this->registered_cache_resources[$this->_caching_type])) {
+ $this->setCacheResource($this->registered_cache_resources[$this->_caching_type]);
+ }
+ }
+
+ /**
+ * Registers a filter function
+ *
+ * @param string $type filter type
+ * @param callable $callback
+ * @param string|null $name optional filter name
+ *
+ * @return static
+ * @throws \Smarty\Exception
+ *
+ * @api Smarty::registerFilter()
+ */
+ public function registerFilter($type, $callback, $name = null) {
+ $name = $name ?? $this->_getFilterName($callback);
+ if (!is_callable($callback)) {
+ throw new Exception("{$type}filter '{$name}' not callable");
+ }
+ switch ($type) {
+ case 'variable':
+ $this->registerPlugin(self::PLUGIN_MODIFIER, $name, $callback);
+ trigger_error('Using Smarty::registerFilter() to register variable filters is deprecated and ' .
+ 'will be removed in a future release. Use Smarty::addDefaultModifiers() to add a modifier.',
+ E_USER_DEPRECATED);
+
+ $this->addDefaultModifiers([$name]);
+ break;
+ case 'output':
+ $this->BCPluginsAdapter->addCallableAsOutputFilter($callback, $name);
+ break;
+ case 'pre':
+ $this->BCPluginsAdapter->addCallableAsPreFilter($callback, $name);
+ break;
+ case 'post':
+ $this->BCPluginsAdapter->addCallableAsPostFilter($callback, $name);
+ break;
+ default:
+ throw new Exception("Illegal filter type '{$type}'");
+ }
+
+ return $this;
+ }
+
+ /**
+ * Return internal filter name
+ *
+ * @param callback $callable
+ *
+ * @return string|null internal filter name or null if callable cannot be serialized
+ */
+ private function _getFilterName($callable) {
+ if (is_array($callable)) {
+ $_class_name = is_object($callable[0]) ? get_class($callable[0]) : $callable[0];
+ return $_class_name . '_' . $callable[1];
+ } elseif (is_string($callable)) {
+ return $callable;
+ }
+ return null;
+ }
+
+ /**
+ * Unregisters a filter function. Smarty cannot unregister closures/anonymous functions if
+ * no name was given in ::registerFilter.
+ *
+ * @param string $type filter type
+ * @param callback|string $name the name previously used in ::registerFilter
+ *
+ * @return static
+ * @throws \Smarty\Exception
+ * @api Smarty::unregisterFilter()
+ *
+ *
+ */
+ public function unregisterFilter($type, $name) {
+
+ if (!is_string($name)) {
+ $name = $this->_getFilterName($name);
+ }
+
+ if ($name) {
+ switch ($type) {
+ case 'output':
+ $this->BCPluginsAdapter->removeOutputFilter($name);
+ break;
+ case 'pre':
+ $this->BCPluginsAdapter->removePreFilter($name);
+ break;
+ case 'post':
+ $this->BCPluginsAdapter->removePostFilter($name);
+ break;
+ default:
+ throw new Exception("Illegal filter type '{$type}'");
+ }
+ }
+
+ return $this;
+ }
+
+ /**
+ * Add default modifiers
+ *
+ * @param array|string $modifiers modifier or list of modifiers
+ * to add
+ *
+ * @return static
+ * @api Smarty::addDefaultModifiers()
+ *
+ */
+ public function addDefaultModifiers($modifiers) {
+ if (is_array($modifiers)) {
+ $this->default_modifiers = array_merge($this->default_modifiers, $modifiers);
+ } else {
+ $this->default_modifiers[] = $modifiers;
+ }
+ return $this;
+ }
+
+ /**
+ * Get default modifiers
+ *
+ * @return array list of default modifiers
+ * @api Smarty::getDefaultModifiers()
+ *
+ */
+ public function getDefaultModifiers() {
+ return $this->default_modifiers;
+ }
+
+ /**
+ * Set default modifiers
+ *
+ * @param array|string $modifiers modifier or list of modifiers
+ * to set
+ *
+ * @return static
+ * @api Smarty::setDefaultModifiers()
+ *
+ */
+ public function setDefaultModifiers($modifiers) {
+ $this->default_modifiers = (array)$modifiers;
+ return $this;
+ }
+
+ /**
+ * @return Cacheresource\Base
+ */
+ public function getCacheResource(): Cacheresource\Base {
+ return $this->cacheResource;
+ }
+
+ /**
+ * @param Cacheresource\Base $cacheResource
+ */
+ public function setCacheResource(Cacheresource\Base $cacheResource): void {
+ $this->cacheResource = $cacheResource;
+ }
+
+ /**
+ * fetches a rendered Smarty template
+ *
+ * @param string $template the resource handle of the template file or template object
+ * @param mixed $cache_id cache id to be used with this template
+ * @param mixed $compile_id compile id to be used with this template
+ *
+ * @return string rendered template output
+ * @throws Exception
+ * @throws Exception
+ */
+ public function fetch($template = null, $cache_id = null, $compile_id = null) {
+ return $this->returnOrCreateTemplate($template, $cache_id, $compile_id)->fetch();
+ }
+
+ /**
+ * displays a Smarty template
+ *
+ * @param string $template the resource handle of the template file or template object
+ * @param mixed $cache_id cache id to be used with this template
+ * @param mixed $compile_id compile id to be used with this template
+ *
+ * @throws \Exception
+ * @throws \Smarty\Exception
+ */
+ public function display($template = null, $cache_id = null, $compile_id = null) {
+ $this->returnOrCreateTemplate($template, $cache_id, $compile_id)->display();
+ }
+
+ /**
+ * @param $resource_name
+ * @param $cache_id
+ * @param $compile_id
+ * @param $parent
+ * @param $caching
+ * @param $cache_lifetime
+ * @param bool $isConfig
+ * @param array $data
+ *
+ * @return Template
+ * @throws Exception
+ */
+ public function doCreateTemplate(
+ $resource_name,
+ $cache_id = null,
+ $compile_id = null,
+ $parent = null,
+ $caching = null,
+ $cache_lifetime = null,
+ bool $isConfig = false,
+ array $data = []): Template {
+
+ if (!$this->_templateDirNormalized) {
+ $this->_normalizeTemplateConfig(false);
+ }
+
+ $_templateId = $this->generateUniqueTemplateId($resource_name, $cache_id, $compile_id, $caching);
+
+ if (!isset($this->templates[$_templateId])) {
+ $newTemplate = new Template($resource_name, $this, $parent ?: $this, $cache_id, $compile_id, $caching, $isConfig);
+ $newTemplate->templateId = $_templateId; // @TODO this could go in constructor ^?
+ $this->templates[$_templateId] = $newTemplate;
+ }
+
+ $tpl = clone $this->templates[$_templateId];
+
+ $tpl->setParent($parent ?: $this);
+
+ if ($cache_lifetime) {
+ $tpl->setCacheLifetime($cache_lifetime);
+ }
+
+ // fill data if present
+ foreach ($data as $_key => $_val) {
+ $tpl->assign($_key, $_val);
+ }
+
+ $tpl->tplFunctions = array_merge($parent->tplFunctions ?? [], $tpl->tplFunctions ?? []);
+
+ if (!$this->debugging && $this->debugging_ctrl === 'URL') {
+ $tpl->getSmarty()->getDebug()->debugUrl($tpl->getSmarty());
+ }
+ return $tpl;
+ }
+
+ /**
+ * test if cache is valid
+ *
+ * @param null|string|Template $template the resource handle of the template file or template
+ * object
+ * @param mixed $cache_id cache id to be used with this template
+ * @param mixed $compile_id compile id to be used with this template
+ *
+ * @return bool cache status
+ * @throws \Exception
+ * @throws \Smarty\Exception
+ *
+ * @api Smarty::isCached()
+ */
+ public function isCached($template = null, $cache_id = null, $compile_id = null) {
+ return $this->returnOrCreateTemplate($template, $cache_id, $compile_id)->isCached();
+ }
+
+ /**
+ * @param $template
+ * @param $cache_id
+ * @param $compile_id
+ * @param $parent
+ *
+ * @return Template
+ * @throws Exception
+ */
+ private function returnOrCreateTemplate($template, $cache_id = null, $compile_id = null) {
+ if (!($template instanceof Template)) {
+ $template = $this->createTemplate($template, $cache_id, $compile_id, $this);
+ $template->caching = $this->caching;
+ }
+ return $template;
+ }
+
+ /**
+ * Sets if Smarty should check If-Modified-Since headers to determine cache validity.
+ * @param bool $cache_modified_check
+ * @return void
+ */
+ public function setCacheModifiedCheck($cache_modified_check): void {
+ $this->cache_modified_check = (bool) $cache_modified_check;
+ }
+
+}
+
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/src/Template.php b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/src/Template.php
new file mode 100644
index 000000000..fcb0f58d2
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/src/Template.php
@@ -0,0 +1,732 @@
+getSmarty()-getLeftDelimiter().
+ *
+ * @var string
+ */
+ private $left_delimiter = null;
+
+ /**
+ * Template right-delimiter. If null, defaults to $this->getSmarty()-getRightDelimiter().
+ *
+ * @var string
+ */
+ private $right_delimiter = null;
+
+ /**
+ * @var InheritanceRuntime|null
+ */
+ private $inheritance;
+
+ /**
+ * Create template data object
+ * Some of the global Smarty settings copied to template scope
+ * It load the required template resources and caching plugins
+ *
+ * @param string $template_resource template resource string
+ * @param Smarty $smarty Smarty instance
+ * @param \Smarty\Data|null $_parent back pointer to parent object with variables or null
+ * @param mixed $_cache_id cache id or null
+ * @param mixed $_compile_id compile id or null
+ * @param bool|int|null $_caching use caching?
+ * @param bool $_isConfig
+ *
+ * @throws \Smarty\Exception
+ */
+ public function __construct(
+ $template_resource,
+ Smarty $smarty,
+ \Smarty\Data $_parent = null,
+ $_cache_id = null,
+ $_compile_id = null,
+ $_caching = null,
+ $_isConfig = false
+ ) {
+ $this->smarty = $smarty;
+ // Smarty parameter
+ $this->cache_id = $_cache_id === null ? $this->smarty->cache_id : $_cache_id;
+ $this->compile_id = $_compile_id === null ? $this->smarty->compile_id : $_compile_id;
+ $this->caching = (int)($_caching === null ? $this->smarty->caching : $_caching);
+ $this->cache_lifetime = $this->smarty->cache_lifetime;
+ $this->compile_check = (int)$smarty->compile_check;
+ $this->parent = $_parent;
+ // Template resource
+ $this->template_resource = $template_resource;
+
+ $this->source = $_isConfig ? Config::load($this) : Source::load($this);
+ $this->compiled = Compiled::load($this);
+
+ if ($smarty->security_policy) {
+ $smarty->security_policy->registerCallBacks($this);
+ }
+ }
+
+ /**
+ * render template
+ *
+ * @param bool $no_output_filter if true do not run output filter
+ * @param null|bool $display true: display, false: fetch null: sub-template
+ *
+ * @return string
+ * @throws \Exception
+ * @throws \Smarty\Exception
+ */
+ private function render($no_output_filter = true, $display = null) {
+ if ($this->smarty->debugging) {
+ $this->smarty->getDebug()->start_template($this, $display);
+ }
+ // checks if template exists
+ if ($this->compile_check && !$this->getSource()->exists) {
+ throw new Exception(
+ "Unable to load '{$this->getSource()->type}:{$this->getSource()->name}'" .
+ ($this->_isSubTpl() ? " in '{$this->parent->template_resource}'" : '')
+ );
+ }
+
+ // disable caching for evaluated code
+ if ($this->getSource()->handler->recompiled) {
+ $this->caching = \Smarty\Smarty::CACHING_OFF;
+ }
+
+ foreach ($this->startRenderCallbacks as $callback) {
+ call_user_func($callback, $this);
+ }
+
+ try {
+
+ // read from cache or render
+ if ($this->caching === \Smarty\Smarty::CACHING_LIFETIME_CURRENT || $this->caching === \Smarty\Smarty::CACHING_LIFETIME_SAVED) {
+ $this->getCached()->render($this, $no_output_filter);
+ } else {
+ $this->getCompiled()->render($this);
+ }
+
+ } finally {
+ foreach ($this->endRenderCallbacks as $callback) {
+ call_user_func($callback, $this);
+ }
+ }
+
+ // display or fetch
+ if ($display) {
+ if ($this->caching && $this->smarty->cache_modified_check) {
+ $this->smarty->cacheModifiedCheck(
+ $this->getCached(),
+ $this,
+ isset($content) ? $content : ob_get_clean()
+ );
+ } else {
+ if ((!$this->caching || $this->getCached()->getNocacheCode() || $this->getSource()->handler->recompiled)
+ && !$no_output_filter
+ ) {
+ echo $this->smarty->runOutputFilters(ob_get_clean(), $this);
+ } else {
+ echo ob_get_clean();
+ }
+ }
+ if ($this->smarty->debugging) {
+ $this->smarty->getDebug()->end_template($this);
+ // debug output
+ $this->smarty->getDebug()->display_debug($this, true);
+ }
+ return '';
+ } else {
+ if ($this->smarty->debugging) {
+ $this->smarty->getDebug()->end_template($this);
+ if ($this->smarty->debugging === 2 && $display === false) {
+ $this->smarty->getDebug()->display_debug($this, true);
+ }
+ }
+ if (
+ !$no_output_filter
+ && (!$this->caching || $this->getCached()->getNocacheCode() || $this->getSource()->handler->recompiled)
+ ) {
+
+ return $this->smarty->runOutputFilters(ob_get_clean(), $this);
+ }
+ // return cache content
+ return null;
+ }
+ }
+
+ /**
+ * Runtime function to render sub-template
+ *
+ * @param string $template_name template name
+ * @param mixed $cache_id cache id
+ * @param mixed $compile_id compile id
+ * @param integer $caching cache mode
+ * @param integer $cache_lifetime lifetime of cache data
+ * @param array $extra_vars passed parameter template variables
+ * @param int|null $scope
+ *
+ * @throws Exception
+ */
+ public function renderSubTemplate(
+ $template_name,
+ $cache_id,
+ $compile_id,
+ $caching,
+ $cache_lifetime,
+ array $extra_vars = [],
+ int $scope = null,
+ ?string $currentDir = null
+ ) {
+
+ $name = $this->parseResourceName($template_name);
+ if ($currentDir && preg_match('/^\.{1,2}\//', $name)) {
+ // relative template resource name, append it to current template name
+ $template_name = $currentDir . DIRECTORY_SEPARATOR . $name;
+ }
+
+ $tpl = $this->smarty->doCreateTemplate($template_name, $cache_id, $compile_id, $this, $caching, $cache_lifetime);
+
+ $tpl->inheritance = $this->getInheritance(); // re-use the same Inheritance object inside the inheritance tree
+
+ if ($scope) {
+ $tpl->defaultScope = $scope;
+ }
+
+ if ($caching) {
+ if ($tpl->templateId !== $this->templateId && $caching !== \Smarty\Template::CACHING_NOCACHE_CODE) {
+ $tpl->getCached(true);
+ } else {
+ // re-use the same Cache object across subtemplates to gather hashes and file dependencies.
+ $tpl->setCached($this->getCached());
+ }
+ }
+
+ foreach ($extra_vars as $_key => $_val) {
+ $tpl->assign($_key, $_val);
+ }
+ if ($tpl->caching === \Smarty\Template::CACHING_NOCACHE_CODE) {
+ if ($tpl->getCompiled()->getNocacheCode()) {
+ $this->getCached()->hashes[$tpl->getCompiled()->nocache_hash] = true;
+ }
+ }
+
+ $tpl->render();
+ }
+
+ /**
+ * Remove type indicator from resource name if present.
+ * E.g. $this->parseResourceName('file:template.tpl') returns 'template.tpl'
+ *
+ * @note "C:/foo.tpl" was forced to file resource up till Smarty 3.1.3 (including).
+ *
+ * @param string $resource_name template_resource or config_resource to parse
+ *
+ * @return string
+ */
+ private function parseResourceName($resource_name): string {
+ if (preg_match('/^([A-Za-z0-9_\-]{2,}):/', $resource_name, $match)) {
+ return substr($resource_name, strlen($match[0]));
+ }
+ return $resource_name;
+ }
+
+ /**
+ * Check if this is a sub template
+ *
+ * @return bool true is sub template
+ */
+ public function _isSubTpl() {
+ return isset($this->parent) && $this->parent instanceof Template;
+ }
+
+ public function assign($tpl_var, $value = null, $nocache = false, $scope = null) {
+ return parent::assign($tpl_var, $value, $nocache, $scope);
+ }
+
+ /**
+ * Compiles the template
+ * If the template is not evaluated the compiled template is saved on disk
+ *
+ * @TODO only used in compileAll and 1 unit test: can we move this and make compileAndWrite private?
+ *
+ * @throws \Exception
+ */
+ public function compileTemplateSource() {
+ return $this->getCompiled()->compileAndWrite($this);
+ }
+
+ /**
+ * Return cached content
+ *
+ * @return null|string
+ * @throws Exception
+ */
+ public function getCachedContent() {
+ return $this->getCached()->getContent($this);
+ }
+
+ /**
+ * Writes the content to cache resource
+ *
+ * @param string $content
+ *
+ * @return bool
+ *
+ * @TODO this method is only used in unit tests that (mostly) try to test CacheResources.
+ */
+ public function writeCachedContent($content) {
+ if ($this->getSource()->handler->recompiled || !$this->caching
+ ) {
+ // don't write cache file
+ return false;
+ }
+ $codeframe = $this->createCodeFrame($content, '', true);
+ return $this->getCached()->writeCache($this, $codeframe);
+ }
+
+ /**
+ * Get unique template id
+ *
+ * @return string
+ */
+ public function getTemplateId() {
+ return $this->templateId;
+ }
+
+ /**
+ * runtime error not matching capture tags
+ *
+ * @throws \Smarty\Exception
+ */
+ public function capture_error() {
+ throw new Exception("Not matching {capture} open/close in '{$this->template_resource}'");
+ }
+
+ /**
+ * Return Compiled object
+ *
+ * @param bool $forceNew force new compiled object
+ */
+ public function getCompiled($forceNew = false) {
+ if ($forceNew || !isset($this->compiled)) {
+ $this->compiled = Compiled::load($this);
+ }
+ return $this->compiled;
+ }
+
+ /**
+ * Return Cached object
+ *
+ * @param bool $forceNew force new cached object
+ *
+ * @throws Exception
+ */
+ public function getCached($forceNew = false): Cached {
+ if ($forceNew || !isset($this->cached)) {
+ $cacheResource = $this->smarty->getCacheResource();
+ $this->cached = new Cached(
+ $this->source,
+ $cacheResource,
+ $this->compile_id,
+ $this->cache_id
+ );
+ if ($this->isCachingEnabled()) {
+ $cacheResource->populate($this->cached, $this);
+ } else {
+ $this->cached->setValid(false);
+ }
+ }
+ return $this->cached;
+ }
+
+ private function isCachingEnabled(): bool {
+ return $this->caching && !$this->getSource()->handler->recompiled;
+ }
+
+ /**
+ * Helper function for InheritanceRuntime object
+ *
+ * @return InheritanceRuntime
+ * @throws Exception
+ */
+ public function getInheritance(): InheritanceRuntime {
+ if (is_null($this->inheritance)) {
+ $this->inheritance = clone $this->getSmarty()->getRuntime('Inheritance');
+ }
+ return $this->inheritance;
+ }
+
+ /**
+ * Sets a new InheritanceRuntime object.
+ *
+ * @param InheritanceRuntime $inheritanceRuntime
+ *
+ * @return void
+ */
+ public function setInheritance(InheritanceRuntime $inheritanceRuntime) {
+ $this->inheritance = $inheritanceRuntime;
+ }
+
+ /**
+ * Return Compiler object
+ */
+ public function getCompiler() {
+ if (!isset($this->compiler)) {
+ $this->compiler = $this->getSource()->createCompiler();
+ }
+ return $this->compiler;
+ }
+
+ /**
+ * Create code frame for compiled and cached templates
+ *
+ * @param string $content optional template content
+ * @param string $functions compiled template function and block code
+ * @param bool $cache flag for cache file
+ * @param Compiler\Template|null $compiler
+ *
+ * @return string
+ * @throws Exception
+ */
+ public function createCodeFrame($content = '', $functions = '', $cache = false, \Smarty\Compiler\Template $compiler = null) {
+ return $this->getCodeFrameCompiler()->create($content, $functions, $cache, $compiler);
+ }
+
+ /**
+ * Template data object destructor
+ */
+ public function __destruct() {
+ if ($this->smarty->cache_locking && $this->getCached()->is_locked) {
+ $this->getCached()->handler->releaseLock($this->smarty, $this->getCached());
+ }
+ }
+
+ /**
+ * Returns if the current template must be compiled by the Smarty compiler
+ * It does compare the timestamps of template source and the compiled templates and checks the force compile
+ * configuration
+ *
+ * @return bool
+ * @throws \Smarty\Exception
+ */
+ public function mustCompile(): bool {
+ if (!$this->getSource()->exists) {
+ if ($this->_isSubTpl()) {
+ $parent_resource = " in '{$this->parent->template_resource}'";
+ } else {
+ $parent_resource = '';
+ }
+ throw new Exception("Unable to load {$this->getSource()->type} '{$this->getSource()->name}'{$parent_resource}");
+ }
+
+ // @TODO move this logic to Compiled
+ return $this->smarty->force_compile
+ || $this->getSource()->handler->recompiled
+ || !$this->getCompiled()->exists
+ || ($this->compile_check && $this->getCompiled()->getTimeStamp() < $this->getSource()->getTimeStamp());
+ }
+
+ private function getCodeFrameCompiler(): Compiler\CodeFrame {
+ return new \Smarty\Compiler\CodeFrame($this);
+ }
+
+ /**
+ * Get left delimiter
+ *
+ * @return string
+ */
+ public function getLeftDelimiter()
+ {
+ return $this->left_delimiter ?? $this->getSmarty()->getLeftDelimiter();
+ }
+
+ /**
+ * Set left delimiter
+ *
+ * @param string $left_delimiter
+ */
+ public function setLeftDelimiter($left_delimiter)
+ {
+ $this->left_delimiter = $left_delimiter;
+ }
+
+ /**
+ * Get right delimiter
+ *
+ * @return string $right_delimiter
+ */
+ public function getRightDelimiter()
+ {
+ return $this->right_delimiter ?? $this->getSmarty()->getRightDelimiter();;
+ }
+
+ /**
+ * Set right delimiter
+ *
+ * @param string
+ */
+ public function setRightDelimiter($right_delimiter)
+ {
+ $this->right_delimiter = $right_delimiter;
+ }
+
+ /**
+ * gets a stream variable
+ *
+ * @param string $variable the stream of the variable
+ *
+ * @return mixed
+ * @throws \Smarty\Exception
+ *
+ */
+ public function getStreamVariable($variable)
+ {
+
+ trigger_error("Using stream variables (\`\{\$foo:bar\}\`)is deprecated.", E_USER_DEPRECATED);
+
+ $_result = '';
+ $fp = fopen($variable, 'r+');
+ if ($fp) {
+ while (!feof($fp) && ($current_line = fgets($fp)) !== false) {
+ $_result .= $current_line;
+ }
+ fclose($fp);
+ return $_result;
+ }
+ if ($this->getSmarty()->error_unassigned) {
+ throw new Exception('Undefined stream variable "' . $variable . '"');
+ }
+ return null;
+ }
+ /**
+ * @inheritdoc
+ */
+ public function configLoad($config_file, $sections = null)
+ {
+ $confObj = parent::configLoad($config_file, $sections);
+
+ $this->getCompiled()->file_dependency[ $confObj->getSource()->uid ] =
+ array($confObj->getSource()->getResourceName(), $confObj->getSource()->getTimeStamp(), $confObj->getSource()->type);
+
+ return $confObj;
+ }
+
+ public function fetch() {
+ $result = $this->_execute(0);
+ return $result === null ? ob_get_clean() : $result;
+ }
+
+ public function display() {
+ $this->_execute(1);
+ }
+
+ /**
+ * test if cache is valid
+ *
+ * @param mixed $cache_id cache id to be used with this template
+ * @param mixed $compile_id compile id to be used with this template
+ * @param object $parent next higher level of Smarty variables
+ *
+ * @return bool cache status
+ * @throws \Exception
+ * @throws \Smarty\Exception
+ *
+ * @api Smarty::isCached()
+ */
+ public function isCached(): bool {
+ return (bool) $this->_execute(2);
+ }
+
+ /**
+ * fetches a rendered Smarty template
+ *
+ * @param string $function function type 0 = fetch, 1 = display, 2 = isCache
+ *
+ * @return mixed
+ * @throws Exception
+ * @throws \Throwable
+ */
+ private function _execute($function) {
+
+ $smarty = $this->getSmarty();
+
+ // make sure we have integer values
+ $this->caching = (int)$this->caching;
+ // fetch template content
+ $level = ob_get_level();
+ try {
+ $_smarty_old_error_level =
+ isset($smarty->error_reporting) ? error_reporting($smarty->error_reporting) : null;
+
+ if ($smarty->isMutingUndefinedOrNullWarnings()) {
+ $errorHandler = new \Smarty\ErrorHandler();
+ $errorHandler->activate();
+ }
+
+ if ($function === 2) {
+ if ($this->caching) {
+ // return cache status of template
+ $result = $this->getCached()->isCached($this);
+ } else {
+ return false;
+ }
+ } else {
+
+ // After rendering a template, the tpl/config variables are reset, so the template can be re-used.
+ $this->pushStack();
+
+ // Start output-buffering.
+ ob_start();
+
+ $result = $this->render(false, $function);
+
+ // Restore the template to its previous state
+ $this->popStack();
+ }
+
+ if (isset($errorHandler)) {
+ $errorHandler->deactivate();
+ }
+
+ if (isset($_smarty_old_error_level)) {
+ error_reporting($_smarty_old_error_level);
+ }
+ return $result;
+ } catch (\Throwable $e) {
+ while (ob_get_level() > $level) {
+ ob_end_clean();
+ }
+ if (isset($errorHandler)) {
+ $errorHandler->deactivate();
+ }
+
+ if (isset($_smarty_old_error_level)) {
+ error_reporting($_smarty_old_error_level);
+ }
+ throw $e;
+ }
+ }
+
+ /**
+ * @return Config|Source|null
+ */
+ public function getSource() {
+ return $this->source;
+ }
+
+ /**
+ * @param Config|Source|null $source
+ */
+ public function setSource($source): void {
+ $this->source = $source;
+ }
+
+ /**
+ * Sets the Cached object, so subtemplates can share one Cached object to gather meta-data.
+ *
+ * @param Cached $cached
+ *
+ * @return void
+ */
+ private function setCached(Cached $cached) {
+ $this->cached = $cached;
+ }
+
+ /**
+ * @param string $compile_id
+ *
+ * @throws Exception
+ */
+ public function setCompileId($compile_id) {
+ parent::setCompileId($compile_id);
+ $this->getCompiled(true);
+ if ($this->caching) {
+ $this->getCached(true);
+ }
+ }
+
+ /**
+ * @param string $cache_id
+ *
+ * @throws Exception
+ */
+ public function setCacheId($cache_id) {
+ parent::setCacheId($cache_id);
+ $this->getCached(true);
+ }
+
+}
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/src/Template/Cached.php b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/src/Template/Cached.php
new file mode 100644
index 000000000..78635db06
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/src/Template/Cached.php
@@ -0,0 +1,428 @@
+valid = $valid;
+ }
+
+ /**
+ * CacheResource Handler
+ *
+ * @var \Smarty\Cacheresource\Base
+ */
+ public $handler = null;
+
+ /**
+ * Template Cache Id (\Smarty\Template::$cache_id)
+ *
+ * @var string
+ */
+ public $cache_id = null;
+
+ /**
+ * saved cache lifetime in seconds
+ *
+ * @var int
+ */
+ public $cache_lifetime = 0;
+
+ /**
+ * Id for cache locking
+ *
+ * @var string
+ */
+ public $lock_id = null;
+
+ /**
+ * flag that cache is locked by this instance
+ *
+ * @var bool
+ */
+ public $is_locked = false;
+
+ /**
+ * Source Object
+ *
+ * @var Source
+ */
+ public $source = null;
+
+ /**
+ * Nocache hash codes of processed compiled templates
+ *
+ * @var array
+ */
+ public $hashes = [];
+
+ /**
+ * Content buffer
+ *
+ * @var string
+ */
+ public $content = null;
+
+ /**
+ * create Cached Object container
+ *
+ * @param Source $source
+ * @param \Smarty\Cacheresource\Base $handler
+ * @param $compile_id
+ * @param $cache_id
+ */
+ public function __construct(Source $source, \Smarty\Cacheresource\Base $handler, $compile_id, $cache_id) {
+ $this->compile_id = $compile_id;
+ $this->cache_id = $cache_id;
+ $this->source = $source;
+ $this->handler = $handler;
+ }
+
+ /**
+ * Render cache template
+ *
+ * @param \Smarty\Template $_template
+ * @param bool $no_output_filter
+ *
+ * @throws \Exception
+ */
+ public function render(Template $_template, $no_output_filter = true) {
+
+ if (!$this->isCached($_template)) {
+ $this->updateCache($_template, $no_output_filter);
+ } else {
+ if (!$this->processed) {
+ $this->process($_template);
+ }
+ }
+
+ if ($_template->getSmarty()->debugging) {
+ $_template->getSmarty()->getDebug()->start_cache($_template);
+ }
+
+ $this->getRenderedTemplateCode($_template, $this->unifunc);
+
+ if ($_template->getSmarty()->debugging) {
+ $_template->getSmarty()->getDebug()->end_cache($_template);
+ }
+
+ }
+
+ /**
+ * Check if cache is valid, lock cache if required
+ *
+ * @param Template $_template
+ *
+ * @return bool flag true if cache is valid
+ * @throws Exception
+ */
+ public function isCached(Template $_template) {
+ if ($this->valid !== null) {
+ return $this->valid;
+ }
+ while (true) {
+ while (true) {
+ if ($this->exists === false || $_template->getSmarty()->force_compile || $_template->getSmarty()->force_cache) {
+ $this->valid = false;
+ } else {
+ $this->valid = true;
+ }
+ if ($this->valid && $_template->caching === \Smarty\Smarty::CACHING_LIFETIME_CURRENT
+ && $_template->cache_lifetime >= 0 && time() > ($this->timestamp + $_template->cache_lifetime)
+ ) {
+ // lifetime expired
+ $this->valid = false;
+ }
+ if ($this->valid && $_template->compile_check === \Smarty\Smarty::COMPILECHECK_ON
+ && $_template->getSource()->getTimeStamp() > $this->timestamp
+ ) {
+ $this->valid = false;
+ }
+ if ($this->valid || !$_template->getSmarty()->cache_locking) {
+ break;
+ }
+ if (!$this->handler->locked($_template->getSmarty(), $this)) {
+ $this->handler->acquireLock($_template->getSmarty(), $this);
+ break 2;
+ }
+ $this->handler->populate($this, $_template);
+ }
+ if ($this->valid) {
+ if (!$_template->getSmarty()->cache_locking || $this->handler->locked($_template->getSmarty(), $this) === null) {
+ // load cache file for the following checks
+ if ($_template->getSmarty()->debugging) {
+ $_template->getSmarty()->getDebug()->start_cache($_template);
+ }
+ if ($this->handler->process($_template, $this) === false) {
+ $this->valid = false;
+ } else {
+ $this->processed = true;
+ }
+ if ($_template->getSmarty()->debugging) {
+ $_template->getSmarty()->getDebug()->end_cache($_template);
+ }
+ } else {
+ $this->is_locked = true;
+ continue;
+ }
+ } else {
+ return $this->valid;
+ }
+ if ($this->valid && $_template->caching === \Smarty\Smarty::CACHING_LIFETIME_SAVED
+ && $_template->getCached()->cache_lifetime >= 0
+ && (time() > ($_template->getCached()->timestamp + $_template->getCached()->cache_lifetime))
+ ) {
+ $this->valid = false;
+ }
+ if ($_template->getSmarty()->cache_locking) {
+ if (!$this->valid) {
+ $this->handler->acquireLock($_template->getSmarty(), $this);
+ } elseif ($this->is_locked) {
+ $this->handler->releaseLock($_template->getSmarty(), $this);
+ }
+ }
+ return $this->valid;
+ }
+ return $this->valid;
+ }
+
+ /**
+ * Process cached template
+ *
+ * @param Template $_template template object
+ */
+ private function process(Template $_template) {
+ if ($this->handler->process($_template, $this) === false) {
+ $this->valid = false;
+ }
+ $this->processed = $this->valid;
+ }
+
+ /**
+ * Read cache content from handler
+ *
+ * @param Template $_template template object
+ *
+ * @return string|false content
+ */
+ public function readCache(Template $_template) {
+ if (!$_template->getSource()->handler->recompiled) {
+ return $this->handler->retrieveCachedContent($_template);
+ }
+ return false;
+ }
+
+ /**
+ * Write this cache object to handler
+ *
+ * @param string $content content to cache
+ *
+ * @return bool success
+ */
+ public function writeCache(Template $_template, $content) {
+ if (!$_template->getSource()->handler->recompiled) {
+ if ($this->handler->storeCachedContent($_template, $content)) {
+ $this->content = null;
+ $this->timestamp = time();
+ $this->exists = true;
+ $this->valid = true;
+ $this->cache_lifetime = $_template->cache_lifetime;
+ $this->processed = false;
+ if ($_template->getSmarty()->cache_locking) {
+ $this->handler->releaseLock($_template->getSmarty(), $this);
+ }
+ return true;
+ }
+ $this->content = null;
+ $this->timestamp = false;
+ $this->exists = false;
+ $this->valid = false;
+ $this->processed = false;
+ }
+ return false;
+ }
+
+ /**
+ * Cache was invalid , so render from compiled and write to cache
+ *
+ * @param Template $_template
+ * @param bool $no_output_filter
+ *
+ * @throws \Smarty\Exception
+ */
+ private function updateCache(Template $_template, $no_output_filter) {
+
+ ob_start();
+
+ $_template->getCompiled()->render($_template);
+
+ if ($_template->getSmarty()->debugging) {
+ $_template->getSmarty()->getDebug()->start_cache($_template);
+ }
+
+ $this->removeNoCacheHash($_template, $no_output_filter);
+ $this->process($_template);
+
+ if ($_template->getSmarty()->debugging) {
+ $_template->getSmarty()->getDebug()->end_cache($_template);
+ }
+ }
+
+ /**
+ * Sanitize content and write it to cache resource
+ *
+ * @param Template $_template
+ * @param bool $no_output_filter
+ *
+ * @throws \Smarty\Exception
+ */
+ private function removeNoCacheHash(Template $_template, $no_output_filter) {
+ $php_pattern = '/(<%|%>|<\?php|<\?|\?>|
diff --git a/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/src/functions.php b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/src/functions.php
new file mode 100644
index 000000000..590789ba3
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/smarty/smarty/src/functions.php
@@ -0,0 +1,253 @@
+
+ *
+ * @param DateTime|int|string $string date object, timestamp or string that can be converted using strtotime()
+ *
+ * @return int
+ */
+function smarty_make_timestamp($string)
+{
+ if (empty($string)) {
+ // use "now":
+ return time();
+ } elseif ($string instanceof DateTime
+ || (interface_exists('DateTimeInterface', false) && $string instanceof DateTimeInterface)
+ ) {
+ return (int)$string->format('U'); // PHP 5.2 BC
+ } elseif (strlen($string) === 14 && ctype_digit((string)$string)) {
+ // it is mysql timestamp format of YYYYMMDDHHMMSS?
+ return mktime(
+ substr($string, 8, 2),
+ substr($string, 10, 2),
+ substr($string, 12, 2),
+ substr($string, 4, 2),
+ substr($string, 6, 2),
+ substr($string, 0, 4)
+ );
+ } elseif (is_numeric($string)) {
+ // it is a numeric string, we handle it as timestamp
+ return (int)$string;
+ } else {
+ // strtotime should handle it
+ $time = strtotime($string);
+ if ($time === -1 || $time === false) {
+ // strtotime() was not able to parse $string, use "now":
+ return time();
+ }
+ return $time;
+ }
+}
+
+/**
+ * Multibyte string replace
+ *
+ * @param string|string[] $search the string to be searched
+ * @param string|string[] $replace the replacement string
+ * @param string $subject the source string
+ * @param int &$count number of matches found
+ *
+ * @return string replaced string
+ * @author Rodney Rehm
+ */
+function smarty_mb_str_replace($search, $replace, $subject, &$count = 0)
+{
+ if (!is_array($search) && is_array($replace)) {
+ return false;
+ }
+ if (is_array($subject)) {
+ // call mb_replace for each single string in $subject
+ foreach ($subject as &$string) {
+ $string = smarty_mb_str_replace($search, $replace, $string, $c);
+ $count += $c;
+ }
+ } elseif (is_array($search)) {
+ if (!is_array($replace)) {
+ foreach ($search as &$string) {
+ $subject = smarty_mb_str_replace($string, $replace, $subject, $c);
+ $count += $c;
+ }
+ } else {
+ $n = max(count($search), count($replace));
+ while ($n--) {
+ $subject = smarty_mb_str_replace(current($search), current($replace), $subject, $c);
+ $count += $c;
+ next($search);
+ next($replace);
+ }
+ }
+ } else {
+ $mb_reg_charset = mb_regex_encoding();
+ // Check if mbstring regex is using UTF-8
+ $reg_is_unicode = !strcasecmp($mb_reg_charset, "UTF-8");
+ if(!$reg_is_unicode) {
+ // ...and set to UTF-8 if not
+ mb_regex_encoding("UTF-8");
+ }
+
+ // See if charset used by Smarty is matching one used by regex...
+ $current_charset = mb_regex_encoding();
+ $convert_result = (bool)strcasecmp(\Smarty\Smarty::$_CHARSET, $current_charset);
+ if($convert_result) {
+ // ...convert to it if not.
+ $subject = mb_convert_encoding($subject, $current_charset, \Smarty\Smarty::$_CHARSET);
+ $search = mb_convert_encoding($search, $current_charset, \Smarty\Smarty::$_CHARSET);
+ $replace = mb_convert_encoding($replace, $current_charset, \Smarty\Smarty::$_CHARSET);
+ }
+
+ $parts = mb_split(preg_quote($search), $subject ?? "") ?: array();
+ // If original regex encoding was not unicode...
+ if(!$reg_is_unicode) {
+ // ...restore original regex encoding to avoid breaking the system.
+ mb_regex_encoding($mb_reg_charset);
+ }
+ if($parts === false) {
+ // This exception is thrown if call to mb_split failed.
+ // Usually it happens, when $search or $replace are not valid for given mb_regex_encoding().
+ // There may be other cases for it to fail, please file an issue if you find a reproducible one.
+ throw new Exception("Source string is not a valid $current_charset sequence (probably)");
+ }
+
+ $count = count($parts) - 1;
+ $subject = implode($replace, $parts);
+ // Convert results back to charset used by Smarty, if needed.
+ if($convert_result) {
+ $subject = mb_convert_encoding($subject, \Smarty\Smarty::$_CHARSET, $current_charset);
+ }
+ }
+ return $subject;
+}
+/**
+ * escape_special_chars common function
+ * Function: smarty_function_escape_special_chars
+ * Purpose: used by other smarty functions to escape
+ * special chars except for already escaped ones
+ *
+ * @author Monte Ohrt
+ *
+ * @param string $string text that should by escaped
+ *
+ * @return string
+ */
+function smarty_function_escape_special_chars($string)
+{
+ if (!is_array($string)) {
+ $string = htmlspecialchars((string) $string, ENT_COMPAT, \Smarty\Smarty::$_CHARSET, false);
+ }
+ return $string;
+}
+
+/**
+ * Smarty wordwrap supporting multibyte
+ * Name: smarty_mb_wordwrap
+ * Purpose: Wrap a string to a given number of characters
+ *
+ * @link https://php.net/manual/en/function.wordwrap.php for similarity
+ *
+ * @param string $str the string to wrap
+ * @param int $width the width of the output
+ * @param string $break the character used to break the line
+ * @param boolean $cut ignored parameter, just for the sake of
+ *
+ * @return string wrapped string
+ * @author Rodney Rehm
+ */
+function smarty_mb_wordwrap($str, $width = 75, $break = "\n", $cut = false)
+{
+ // break words into tokens using white space as a delimiter
+ $tokens = preg_split('!(\s)!S' . \Smarty\Smarty::$_UTF8_MODIFIER, $str, -1, PREG_SPLIT_NO_EMPTY + PREG_SPLIT_DELIM_CAPTURE);
+ $length = 0;
+ $t = '';
+ $_previous = false;
+ $_space = false;
+ foreach ($tokens as $_token) {
+ $token_length = mb_strlen($_token, \Smarty\Smarty::$_CHARSET);
+ $_tokens = array($_token);
+ if ($token_length > $width) {
+ if ($cut) {
+ $_tokens = preg_split(
+ '!(.{' . $width . '})!S' . \Smarty\Smarty::$_UTF8_MODIFIER,
+ $_token,
+ -1,
+ PREG_SPLIT_NO_EMPTY + PREG_SPLIT_DELIM_CAPTURE
+ );
+ }
+ }
+ foreach ($_tokens as $token) {
+ $_space = !!preg_match('!^\s$!S' . \Smarty\Smarty::$_UTF8_MODIFIER, $token);
+ $token_length = mb_strlen($token, \Smarty\Smarty::$_CHARSET);
+ $length += $token_length;
+ if ($length > $width) {
+ // remove space before inserted break
+ if ($_previous) {
+ $t = mb_substr($t, 0, -1, \Smarty\Smarty::$_CHARSET);
+ }
+ if (!$_space) {
+ // add the break before the token
+ if (!empty($t)) {
+ $t .= $break;
+ }
+ $length = $token_length;
+ }
+ } elseif ($token === "\n") {
+ // hard break must reset counters
+ $length = 0;
+ }
+ $_previous = $_space;
+ // add the token
+ $t .= $token;
+ }
+ }
+ return $t;
+}
diff --git a/www/modules/civicrm/packages/smarty5/vendor/symfony/polyfill-mbstring/LICENSE b/www/modules/civicrm/packages/smarty5/vendor/symfony/polyfill-mbstring/LICENSE
new file mode 100644
index 000000000..6e3afce69
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/symfony/polyfill-mbstring/LICENSE
@@ -0,0 +1,19 @@
+Copyright (c) 2015-present Fabien Potencier
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is furnished
+to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/www/modules/civicrm/packages/smarty5/vendor/symfony/polyfill-mbstring/Mbstring.php b/www/modules/civicrm/packages/smarty5/vendor/symfony/polyfill-mbstring/Mbstring.php
new file mode 100644
index 000000000..2e0b96940
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/symfony/polyfill-mbstring/Mbstring.php
@@ -0,0 +1,947 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Polyfill\Mbstring;
+
+/**
+ * Partial mbstring implementation in PHP, iconv based, UTF-8 centric.
+ *
+ * Implemented:
+ * - mb_chr - Returns a specific character from its Unicode code point
+ * - mb_convert_encoding - Convert character encoding
+ * - mb_convert_variables - Convert character code in variable(s)
+ * - mb_decode_mimeheader - Decode string in MIME header field
+ * - mb_encode_mimeheader - Encode string for MIME header XXX NATIVE IMPLEMENTATION IS REALLY BUGGED
+ * - mb_decode_numericentity - Decode HTML numeric string reference to character
+ * - mb_encode_numericentity - Encode character to HTML numeric string reference
+ * - mb_convert_case - Perform case folding on a string
+ * - mb_detect_encoding - Detect character encoding
+ * - mb_get_info - Get internal settings of mbstring
+ * - mb_http_input - Detect HTTP input character encoding
+ * - mb_http_output - Set/Get HTTP output character encoding
+ * - mb_internal_encoding - Set/Get internal character encoding
+ * - mb_list_encodings - Returns an array of all supported encodings
+ * - mb_ord - Returns the Unicode code point of a character
+ * - mb_output_handler - Callback function converts character encoding in output buffer
+ * - mb_scrub - Replaces ill-formed byte sequences with substitute characters
+ * - mb_strlen - Get string length
+ * - mb_strpos - Find position of first occurrence of string in a string
+ * - mb_strrpos - Find position of last occurrence of a string in a string
+ * - mb_str_split - Convert a string to an array
+ * - mb_strtolower - Make a string lowercase
+ * - mb_strtoupper - Make a string uppercase
+ * - mb_substitute_character - Set/Get substitution character
+ * - mb_substr - Get part of string
+ * - mb_stripos - Finds position of first occurrence of a string within another, case insensitive
+ * - mb_stristr - Finds first occurrence of a string within another, case insensitive
+ * - mb_strrchr - Finds the last occurrence of a character in a string within another
+ * - mb_strrichr - Finds the last occurrence of a character in a string within another, case insensitive
+ * - mb_strripos - Finds position of last occurrence of a string within another, case insensitive
+ * - mb_strstr - Finds first occurrence of a string within another
+ * - mb_strwidth - Return width of string
+ * - mb_substr_count - Count the number of substring occurrences
+ *
+ * Not implemented:
+ * - mb_convert_kana - Convert "kana" one from another ("zen-kaku", "han-kaku" and more)
+ * - mb_ereg_* - Regular expression with multibyte support
+ * - mb_parse_str - Parse GET/POST/COOKIE data and set global variable
+ * - mb_preferred_mime_name - Get MIME charset string
+ * - mb_regex_encoding - Returns current encoding for multibyte regex as string
+ * - mb_regex_set_options - Set/Get the default options for mbregex functions
+ * - mb_send_mail - Send encoded mail
+ * - mb_split - Split multibyte string using regular expression
+ * - mb_strcut - Get part of string
+ * - mb_strimwidth - Get truncated string with specified width
+ *
+ * @author Nicolas Grekas
+ *
+ * @internal
+ */
+final class Mbstring
+{
+ public const MB_CASE_FOLD = \PHP_INT_MAX;
+
+ private const SIMPLE_CASE_FOLD = [
+ ['µ', 'ſ', "\xCD\x85", 'ς', "\xCF\x90", "\xCF\x91", "\xCF\x95", "\xCF\x96", "\xCF\xB0", "\xCF\xB1", "\xCF\xB5", "\xE1\xBA\x9B", "\xE1\xBE\xBE"],
+ ['μ', 's', 'ι', 'σ', 'β', 'θ', 'φ', 'Ï€', 'κ', 'Ï', 'ε', "\xE1\xB9\xA1", 'ι'],
+ ];
+
+ private static $encodingList = ['ASCII', 'UTF-8'];
+ private static $language = 'neutral';
+ private static $internalEncoding = 'UTF-8';
+
+ public static function mb_convert_encoding($s, $toEncoding, $fromEncoding = null)
+ {
+ if (\is_array($fromEncoding) || (null !== $fromEncoding && false !== strpos($fromEncoding, ','))) {
+ $fromEncoding = self::mb_detect_encoding($s, $fromEncoding);
+ } else {
+ $fromEncoding = self::getEncoding($fromEncoding);
+ }
+
+ $toEncoding = self::getEncoding($toEncoding);
+
+ if ('BASE64' === $fromEncoding) {
+ $s = base64_decode($s);
+ $fromEncoding = $toEncoding;
+ }
+
+ if ('BASE64' === $toEncoding) {
+ return base64_encode($s);
+ }
+
+ if ('HTML-ENTITIES' === $toEncoding || 'HTML' === $toEncoding) {
+ if ('HTML-ENTITIES' === $fromEncoding || 'HTML' === $fromEncoding) {
+ $fromEncoding = 'Windows-1252';
+ }
+ if ('UTF-8' !== $fromEncoding) {
+ $s = iconv($fromEncoding, 'UTF-8//IGNORE', $s);
+ }
+
+ return preg_replace_callback('/[\x80-\xFF]+/', [__CLASS__, 'html_encoding_callback'], $s);
+ }
+
+ if ('HTML-ENTITIES' === $fromEncoding) {
+ $s = html_entity_decode($s, \ENT_COMPAT, 'UTF-8');
+ $fromEncoding = 'UTF-8';
+ }
+
+ return iconv($fromEncoding, $toEncoding.'//IGNORE', $s);
+ }
+
+ public static function mb_convert_variables($toEncoding, $fromEncoding, &...$vars)
+ {
+ $ok = true;
+ array_walk_recursive($vars, function (&$v) use (&$ok, $toEncoding, $fromEncoding) {
+ if (false === $v = self::mb_convert_encoding($v, $toEncoding, $fromEncoding)) {
+ $ok = false;
+ }
+ });
+
+ return $ok ? $fromEncoding : false;
+ }
+
+ public static function mb_decode_mimeheader($s)
+ {
+ return iconv_mime_decode($s, 2, self::$internalEncoding);
+ }
+
+ public static function mb_encode_mimeheader($s, $charset = null, $transferEncoding = null, $linefeed = null, $indent = null)
+ {
+ trigger_error('mb_encode_mimeheader() is bugged. Please use iconv_mime_encode() instead', \E_USER_WARNING);
+ }
+
+ public static function mb_decode_numericentity($s, $convmap, $encoding = null)
+ {
+ if (null !== $s && !\is_scalar($s) && !(\is_object($s) && method_exists($s, '__toString'))) {
+ trigger_error('mb_decode_numericentity() expects parameter 1 to be string, '.\gettype($s).' given', \E_USER_WARNING);
+
+ return null;
+ }
+
+ if (!\is_array($convmap) || (80000 > \PHP_VERSION_ID && !$convmap)) {
+ return false;
+ }
+
+ if (null !== $encoding && !\is_scalar($encoding)) {
+ trigger_error('mb_decode_numericentity() expects parameter 3 to be string, '.\gettype($s).' given', \E_USER_WARNING);
+
+ return ''; // Instead of null (cf. mb_encode_numericentity).
+ }
+
+ $s = (string) $s;
+ if ('' === $s) {
+ return '';
+ }
+
+ $encoding = self::getEncoding($encoding);
+
+ if ('UTF-8' === $encoding) {
+ $encoding = null;
+ if (!preg_match('//u', $s)) {
+ $s = @iconv('UTF-8', 'UTF-8//IGNORE', $s);
+ }
+ } else {
+ $s = iconv($encoding, 'UTF-8//IGNORE', $s);
+ }
+
+ $cnt = floor(\count($convmap) / 4) * 4;
+
+ for ($i = 0; $i < $cnt; $i += 4) {
+ // collector_decode_htmlnumericentity ignores $convmap[$i + 3]
+ $convmap[$i] += $convmap[$i + 2];
+ $convmap[$i + 1] += $convmap[$i + 2];
+ }
+
+ $s = preg_replace_callback('/(?:0*([0-9]+)|x0*([0-9a-fA-F]+))(?!&);?/', function (array $m) use ($cnt, $convmap) {
+ $c = isset($m[2]) ? (int) hexdec($m[2]) : $m[1];
+ for ($i = 0; $i < $cnt; $i += 4) {
+ if ($c >= $convmap[$i] && $c <= $convmap[$i + 1]) {
+ return self::mb_chr($c - $convmap[$i + 2]);
+ }
+ }
+
+ return $m[0];
+ }, $s);
+
+ if (null === $encoding) {
+ return $s;
+ }
+
+ return iconv('UTF-8', $encoding.'//IGNORE', $s);
+ }
+
+ public static function mb_encode_numericentity($s, $convmap, $encoding = null, $is_hex = false)
+ {
+ if (null !== $s && !\is_scalar($s) && !(\is_object($s) && method_exists($s, '__toString'))) {
+ trigger_error('mb_encode_numericentity() expects parameter 1 to be string, '.\gettype($s).' given', \E_USER_WARNING);
+
+ return null;
+ }
+
+ if (!\is_array($convmap) || (80000 > \PHP_VERSION_ID && !$convmap)) {
+ return false;
+ }
+
+ if (null !== $encoding && !\is_scalar($encoding)) {
+ trigger_error('mb_encode_numericentity() expects parameter 3 to be string, '.\gettype($s).' given', \E_USER_WARNING);
+
+ return null; // Instead of '' (cf. mb_decode_numericentity).
+ }
+
+ if (null !== $is_hex && !\is_scalar($is_hex)) {
+ trigger_error('mb_encode_numericentity() expects parameter 4 to be boolean, '.\gettype($s).' given', \E_USER_WARNING);
+
+ return null;
+ }
+
+ $s = (string) $s;
+ if ('' === $s) {
+ return '';
+ }
+
+ $encoding = self::getEncoding($encoding);
+
+ if ('UTF-8' === $encoding) {
+ $encoding = null;
+ if (!preg_match('//u', $s)) {
+ $s = @iconv('UTF-8', 'UTF-8//IGNORE', $s);
+ }
+ } else {
+ $s = iconv($encoding, 'UTF-8//IGNORE', $s);
+ }
+
+ static $ulenMask = ["\xC0" => 2, "\xD0" => 2, "\xE0" => 3, "\xF0" => 4];
+
+ $cnt = floor(\count($convmap) / 4) * 4;
+ $i = 0;
+ $len = \strlen($s);
+ $result = '';
+
+ while ($i < $len) {
+ $ulen = $s[$i] < "\x80" ? 1 : $ulenMask[$s[$i] & "\xF0"];
+ $uchr = substr($s, $i, $ulen);
+ $i += $ulen;
+ $c = self::mb_ord($uchr);
+
+ for ($j = 0; $j < $cnt; $j += 4) {
+ if ($c >= $convmap[$j] && $c <= $convmap[$j + 1]) {
+ $cOffset = ($c + $convmap[$j + 2]) & $convmap[$j + 3];
+ $result .= $is_hex ? sprintf('%X;', $cOffset) : ''.$cOffset.';';
+ continue 2;
+ }
+ }
+ $result .= $uchr;
+ }
+
+ if (null === $encoding) {
+ return $result;
+ }
+
+ return iconv('UTF-8', $encoding.'//IGNORE', $result);
+ }
+
+ public static function mb_convert_case($s, $mode, $encoding = null)
+ {
+ $s = (string) $s;
+ if ('' === $s) {
+ return '';
+ }
+
+ $encoding = self::getEncoding($encoding);
+
+ if ('UTF-8' === $encoding) {
+ $encoding = null;
+ if (!preg_match('//u', $s)) {
+ $s = @iconv('UTF-8', 'UTF-8//IGNORE', $s);
+ }
+ } else {
+ $s = iconv($encoding, 'UTF-8//IGNORE', $s);
+ }
+
+ if (\MB_CASE_TITLE == $mode) {
+ static $titleRegexp = null;
+ if (null === $titleRegexp) {
+ $titleRegexp = self::getData('titleCaseRegexp');
+ }
+ $s = preg_replace_callback($titleRegexp, [__CLASS__, 'title_case'], $s);
+ } else {
+ if (\MB_CASE_UPPER == $mode) {
+ static $upper = null;
+ if (null === $upper) {
+ $upper = self::getData('upperCase');
+ }
+ $map = $upper;
+ } else {
+ if (self::MB_CASE_FOLD === $mode) {
+ static $caseFolding = null;
+ if (null === $caseFolding) {
+ $caseFolding = self::getData('caseFolding');
+ }
+ $s = strtr($s, $caseFolding);
+ }
+
+ static $lower = null;
+ if (null === $lower) {
+ $lower = self::getData('lowerCase');
+ }
+ $map = $lower;
+ }
+
+ static $ulenMask = ["\xC0" => 2, "\xD0" => 2, "\xE0" => 3, "\xF0" => 4];
+
+ $i = 0;
+ $len = \strlen($s);
+
+ while ($i < $len) {
+ $ulen = $s[$i] < "\x80" ? 1 : $ulenMask[$s[$i] & "\xF0"];
+ $uchr = substr($s, $i, $ulen);
+ $i += $ulen;
+
+ if (isset($map[$uchr])) {
+ $uchr = $map[$uchr];
+ $nlen = \strlen($uchr);
+
+ if ($nlen == $ulen) {
+ $nlen = $i;
+ do {
+ $s[--$nlen] = $uchr[--$ulen];
+ } while ($ulen);
+ } else {
+ $s = substr_replace($s, $uchr, $i - $ulen, $ulen);
+ $len += $nlen - $ulen;
+ $i += $nlen - $ulen;
+ }
+ }
+ }
+ }
+
+ if (null === $encoding) {
+ return $s;
+ }
+
+ return iconv('UTF-8', $encoding.'//IGNORE', $s);
+ }
+
+ public static function mb_internal_encoding($encoding = null)
+ {
+ if (null === $encoding) {
+ return self::$internalEncoding;
+ }
+
+ $normalizedEncoding = self::getEncoding($encoding);
+
+ if ('UTF-8' === $normalizedEncoding || false !== @iconv($normalizedEncoding, $normalizedEncoding, ' ')) {
+ self::$internalEncoding = $normalizedEncoding;
+
+ return true;
+ }
+
+ if (80000 > \PHP_VERSION_ID) {
+ return false;
+ }
+
+ throw new \ValueError(sprintf('Argument #1 ($encoding) must be a valid encoding, "%s" given', $encoding));
+ }
+
+ public static function mb_language($lang = null)
+ {
+ if (null === $lang) {
+ return self::$language;
+ }
+
+ switch ($normalizedLang = strtolower($lang)) {
+ case 'uni':
+ case 'neutral':
+ self::$language = $normalizedLang;
+
+ return true;
+ }
+
+ if (80000 > \PHP_VERSION_ID) {
+ return false;
+ }
+
+ throw new \ValueError(sprintf('Argument #1 ($language) must be a valid language, "%s" given', $lang));
+ }
+
+ public static function mb_list_encodings()
+ {
+ return ['UTF-8'];
+ }
+
+ public static function mb_encoding_aliases($encoding)
+ {
+ switch (strtoupper($encoding)) {
+ case 'UTF8':
+ case 'UTF-8':
+ return ['utf8'];
+ }
+
+ return false;
+ }
+
+ public static function mb_check_encoding($var = null, $encoding = null)
+ {
+ if (PHP_VERSION_ID < 70200 && \is_array($var)) {
+ trigger_error('mb_check_encoding() expects parameter 1 to be string, array given', \E_USER_WARNING);
+
+ return null;
+ }
+
+ if (null === $encoding) {
+ if (null === $var) {
+ return false;
+ }
+ $encoding = self::$internalEncoding;
+ }
+
+ if (!\is_array($var)) {
+ return self::mb_detect_encoding($var, [$encoding]) || false !== @iconv($encoding, $encoding, $var);
+ }
+
+ foreach ($var as $key => $value) {
+ if (!self::mb_check_encoding($key, $encoding)) {
+ return false;
+ }
+ if (!self::mb_check_encoding($value, $encoding)) {
+ return false;
+ }
+ }
+
+ return true;
+
+ }
+
+ public static function mb_detect_encoding($str, $encodingList = null, $strict = false)
+ {
+ if (null === $encodingList) {
+ $encodingList = self::$encodingList;
+ } else {
+ if (!\is_array($encodingList)) {
+ $encodingList = array_map('trim', explode(',', $encodingList));
+ }
+ $encodingList = array_map('strtoupper', $encodingList);
+ }
+
+ foreach ($encodingList as $enc) {
+ switch ($enc) {
+ case 'ASCII':
+ if (!preg_match('/[\x80-\xFF]/', $str)) {
+ return $enc;
+ }
+ break;
+
+ case 'UTF8':
+ case 'UTF-8':
+ if (preg_match('//u', $str)) {
+ return 'UTF-8';
+ }
+ break;
+
+ default:
+ if (0 === strncmp($enc, 'ISO-8859-', 9)) {
+ return $enc;
+ }
+ }
+ }
+
+ return false;
+ }
+
+ public static function mb_detect_order($encodingList = null)
+ {
+ if (null === $encodingList) {
+ return self::$encodingList;
+ }
+
+ if (!\is_array($encodingList)) {
+ $encodingList = array_map('trim', explode(',', $encodingList));
+ }
+ $encodingList = array_map('strtoupper', $encodingList);
+
+ foreach ($encodingList as $enc) {
+ switch ($enc) {
+ default:
+ if (strncmp($enc, 'ISO-8859-', 9)) {
+ return false;
+ }
+ // no break
+ case 'ASCII':
+ case 'UTF8':
+ case 'UTF-8':
+ }
+ }
+
+ self::$encodingList = $encodingList;
+
+ return true;
+ }
+
+ public static function mb_strlen($s, $encoding = null)
+ {
+ $encoding = self::getEncoding($encoding);
+ if ('CP850' === $encoding || 'ASCII' === $encoding) {
+ return \strlen($s);
+ }
+
+ return @iconv_strlen($s, $encoding);
+ }
+
+ public static function mb_strpos($haystack, $needle, $offset = 0, $encoding = null)
+ {
+ $encoding = self::getEncoding($encoding);
+ if ('CP850' === $encoding || 'ASCII' === $encoding) {
+ return strpos($haystack, $needle, $offset);
+ }
+
+ $needle = (string) $needle;
+ if ('' === $needle) {
+ if (80000 > \PHP_VERSION_ID) {
+ trigger_error(__METHOD__.': Empty delimiter', \E_USER_WARNING);
+
+ return false;
+ }
+
+ return 0;
+ }
+
+ return iconv_strpos($haystack, $needle, $offset, $encoding);
+ }
+
+ public static function mb_strrpos($haystack, $needle, $offset = 0, $encoding = null)
+ {
+ $encoding = self::getEncoding($encoding);
+ if ('CP850' === $encoding || 'ASCII' === $encoding) {
+ return strrpos($haystack, $needle, $offset);
+ }
+
+ if ($offset != (int) $offset) {
+ $offset = 0;
+ } elseif ($offset = (int) $offset) {
+ if ($offset < 0) {
+ if (0 > $offset += self::mb_strlen($needle)) {
+ $haystack = self::mb_substr($haystack, 0, $offset, $encoding);
+ }
+ $offset = 0;
+ } else {
+ $haystack = self::mb_substr($haystack, $offset, 2147483647, $encoding);
+ }
+ }
+
+ $pos = '' !== $needle || 80000 > \PHP_VERSION_ID
+ ? iconv_strrpos($haystack, $needle, $encoding)
+ : self::mb_strlen($haystack, $encoding);
+
+ return false !== $pos ? $offset + $pos : false;
+ }
+
+ public static function mb_str_split($string, $split_length = 1, $encoding = null)
+ {
+ if (null !== $string && !\is_scalar($string) && !(\is_object($string) && method_exists($string, '__toString'))) {
+ trigger_error('mb_str_split() expects parameter 1 to be string, '.\gettype($string).' given', \E_USER_WARNING);
+
+ return null;
+ }
+
+ if (1 > $split_length = (int) $split_length) {
+ if (80000 > \PHP_VERSION_ID) {
+ trigger_error('The length of each segment must be greater than zero', \E_USER_WARNING);
+
+ return false;
+ }
+
+ throw new \ValueError('Argument #2 ($length) must be greater than 0');
+ }
+
+ if (null === $encoding) {
+ $encoding = mb_internal_encoding();
+ }
+
+ if ('UTF-8' === $encoding = self::getEncoding($encoding)) {
+ $rx = '/(';
+ while (65535 < $split_length) {
+ $rx .= '.{65535}';
+ $split_length -= 65535;
+ }
+ $rx .= '.{'.$split_length.'})/us';
+
+ return preg_split($rx, $string, -1, \PREG_SPLIT_DELIM_CAPTURE | \PREG_SPLIT_NO_EMPTY);
+ }
+
+ $result = [];
+ $length = mb_strlen($string, $encoding);
+
+ for ($i = 0; $i < $length; $i += $split_length) {
+ $result[] = mb_substr($string, $i, $split_length, $encoding);
+ }
+
+ return $result;
+ }
+
+ public static function mb_strtolower($s, $encoding = null)
+ {
+ return self::mb_convert_case($s, \MB_CASE_LOWER, $encoding);
+ }
+
+ public static function mb_strtoupper($s, $encoding = null)
+ {
+ return self::mb_convert_case($s, \MB_CASE_UPPER, $encoding);
+ }
+
+ public static function mb_substitute_character($c = null)
+ {
+ if (null === $c) {
+ return 'none';
+ }
+ if (0 === strcasecmp($c, 'none')) {
+ return true;
+ }
+ if (80000 > \PHP_VERSION_ID) {
+ return false;
+ }
+ if (\is_int($c) || 'long' === $c || 'entity' === $c) {
+ return false;
+ }
+
+ throw new \ValueError('Argument #1 ($substitute_character) must be "none", "long", "entity" or a valid codepoint');
+ }
+
+ public static function mb_substr($s, $start, $length = null, $encoding = null)
+ {
+ $encoding = self::getEncoding($encoding);
+ if ('CP850' === $encoding || 'ASCII' === $encoding) {
+ return (string) substr($s, $start, null === $length ? 2147483647 : $length);
+ }
+
+ if ($start < 0) {
+ $start = iconv_strlen($s, $encoding) + $start;
+ if ($start < 0) {
+ $start = 0;
+ }
+ }
+
+ if (null === $length) {
+ $length = 2147483647;
+ } elseif ($length < 0) {
+ $length = iconv_strlen($s, $encoding) + $length - $start;
+ if ($length < 0) {
+ return '';
+ }
+ }
+
+ return (string) iconv_substr($s, $start, $length, $encoding);
+ }
+
+ public static function mb_stripos($haystack, $needle, $offset = 0, $encoding = null)
+ {
+ [$haystack, $needle] = str_replace(self::SIMPLE_CASE_FOLD[0], self::SIMPLE_CASE_FOLD[1], [
+ self::mb_convert_case($haystack, \MB_CASE_LOWER, $encoding),
+ self::mb_convert_case($needle, \MB_CASE_LOWER, $encoding),
+ ]);
+
+ return self::mb_strpos($haystack, $needle, $offset, $encoding);
+ }
+
+ public static function mb_stristr($haystack, $needle, $part = false, $encoding = null)
+ {
+ $pos = self::mb_stripos($haystack, $needle, 0, $encoding);
+
+ return self::getSubpart($pos, $part, $haystack, $encoding);
+ }
+
+ public static function mb_strrchr($haystack, $needle, $part = false, $encoding = null)
+ {
+ $encoding = self::getEncoding($encoding);
+ if ('CP850' === $encoding || 'ASCII' === $encoding) {
+ $pos = strrpos($haystack, $needle);
+ } else {
+ $needle = self::mb_substr($needle, 0, 1, $encoding);
+ $pos = iconv_strrpos($haystack, $needle, $encoding);
+ }
+
+ return self::getSubpart($pos, $part, $haystack, $encoding);
+ }
+
+ public static function mb_strrichr($haystack, $needle, $part = false, $encoding = null)
+ {
+ $needle = self::mb_substr($needle, 0, 1, $encoding);
+ $pos = self::mb_strripos($haystack, $needle, $encoding);
+
+ return self::getSubpart($pos, $part, $haystack, $encoding);
+ }
+
+ public static function mb_strripos($haystack, $needle, $offset = 0, $encoding = null)
+ {
+ $haystack = self::mb_convert_case($haystack, \MB_CASE_LOWER, $encoding);
+ $needle = self::mb_convert_case($needle, \MB_CASE_LOWER, $encoding);
+
+ $haystack = str_replace(self::SIMPLE_CASE_FOLD[0], self::SIMPLE_CASE_FOLD[1], $haystack);
+ $needle = str_replace(self::SIMPLE_CASE_FOLD[0], self::SIMPLE_CASE_FOLD[1], $needle);
+
+ return self::mb_strrpos($haystack, $needle, $offset, $encoding);
+ }
+
+ public static function mb_strstr($haystack, $needle, $part = false, $encoding = null)
+ {
+ $pos = strpos($haystack, $needle);
+ if (false === $pos) {
+ return false;
+ }
+ if ($part) {
+ return substr($haystack, 0, $pos);
+ }
+
+ return substr($haystack, $pos);
+ }
+
+ public static function mb_get_info($type = 'all')
+ {
+ $info = [
+ 'internal_encoding' => self::$internalEncoding,
+ 'http_output' => 'pass',
+ 'http_output_conv_mimetypes' => '^(text/|application/xhtml\+xml)',
+ 'func_overload' => 0,
+ 'func_overload_list' => 'no overload',
+ 'mail_charset' => 'UTF-8',
+ 'mail_header_encoding' => 'BASE64',
+ 'mail_body_encoding' => 'BASE64',
+ 'illegal_chars' => 0,
+ 'encoding_translation' => 'Off',
+ 'language' => self::$language,
+ 'detect_order' => self::$encodingList,
+ 'substitute_character' => 'none',
+ 'strict_detection' => 'Off',
+ ];
+
+ if ('all' === $type) {
+ return $info;
+ }
+ if (isset($info[$type])) {
+ return $info[$type];
+ }
+
+ return false;
+ }
+
+ public static function mb_http_input($type = '')
+ {
+ return false;
+ }
+
+ public static function mb_http_output($encoding = null)
+ {
+ return null !== $encoding ? 'pass' === $encoding : 'pass';
+ }
+
+ public static function mb_strwidth($s, $encoding = null)
+ {
+ $encoding = self::getEncoding($encoding);
+
+ if ('UTF-8' !== $encoding) {
+ $s = iconv($encoding, 'UTF-8//IGNORE', $s);
+ }
+
+ $s = preg_replace('/[\x{1100}-\x{115F}\x{2329}\x{232A}\x{2E80}-\x{303E}\x{3040}-\x{A4CF}\x{AC00}-\x{D7A3}\x{F900}-\x{FAFF}\x{FE10}-\x{FE19}\x{FE30}-\x{FE6F}\x{FF00}-\x{FF60}\x{FFE0}-\x{FFE6}\x{20000}-\x{2FFFD}\x{30000}-\x{3FFFD}]/u', '', $s, -1, $wide);
+
+ return ($wide << 1) + iconv_strlen($s, 'UTF-8');
+ }
+
+ public static function mb_substr_count($haystack, $needle, $encoding = null)
+ {
+ return substr_count($haystack, $needle);
+ }
+
+ public static function mb_output_handler($contents, $status)
+ {
+ return $contents;
+ }
+
+ public static function mb_chr($code, $encoding = null)
+ {
+ if (0x80 > $code %= 0x200000) {
+ $s = \chr($code);
+ } elseif (0x800 > $code) {
+ $s = \chr(0xC0 | $code >> 6).\chr(0x80 | $code & 0x3F);
+ } elseif (0x10000 > $code) {
+ $s = \chr(0xE0 | $code >> 12).\chr(0x80 | $code >> 6 & 0x3F).\chr(0x80 | $code & 0x3F);
+ } else {
+ $s = \chr(0xF0 | $code >> 18).\chr(0x80 | $code >> 12 & 0x3F).\chr(0x80 | $code >> 6 & 0x3F).\chr(0x80 | $code & 0x3F);
+ }
+
+ if ('UTF-8' !== $encoding = self::getEncoding($encoding)) {
+ $s = mb_convert_encoding($s, $encoding, 'UTF-8');
+ }
+
+ return $s;
+ }
+
+ public static function mb_ord($s, $encoding = null)
+ {
+ if ('UTF-8' !== $encoding = self::getEncoding($encoding)) {
+ $s = mb_convert_encoding($s, 'UTF-8', $encoding);
+ }
+
+ if (1 === \strlen($s)) {
+ return \ord($s);
+ }
+
+ $code = ($s = unpack('C*', substr($s, 0, 4))) ? $s[1] : 0;
+ if (0xF0 <= $code) {
+ return (($code - 0xF0) << 18) + (($s[2] - 0x80) << 12) + (($s[3] - 0x80) << 6) + $s[4] - 0x80;
+ }
+ if (0xE0 <= $code) {
+ return (($code - 0xE0) << 12) + (($s[2] - 0x80) << 6) + $s[3] - 0x80;
+ }
+ if (0xC0 <= $code) {
+ return (($code - 0xC0) << 6) + $s[2] - 0x80;
+ }
+
+ return $code;
+ }
+
+ public static function mb_str_pad(string $string, int $length, string $pad_string = ' ', int $pad_type = \STR_PAD_RIGHT, string $encoding = null): string
+ {
+ if (!\in_array($pad_type, [\STR_PAD_RIGHT, \STR_PAD_LEFT, \STR_PAD_BOTH], true)) {
+ throw new \ValueError('mb_str_pad(): Argument #4 ($pad_type) must be STR_PAD_LEFT, STR_PAD_RIGHT, or STR_PAD_BOTH');
+ }
+
+ if (null === $encoding) {
+ $encoding = self::mb_internal_encoding();
+ }
+
+ try {
+ $validEncoding = @self::mb_check_encoding('', $encoding);
+ } catch (\ValueError $e) {
+ throw new \ValueError(sprintf('mb_str_pad(): Argument #5 ($encoding) must be a valid encoding, "%s" given', $encoding));
+ }
+
+ // BC for PHP 7.3 and lower
+ if (!$validEncoding) {
+ throw new \ValueError(sprintf('mb_str_pad(): Argument #5 ($encoding) must be a valid encoding, "%s" given', $encoding));
+ }
+
+ if (self::mb_strlen($pad_string, $encoding) <= 0) {
+ throw new \ValueError('mb_str_pad(): Argument #3 ($pad_string) must be a non-empty string');
+ }
+
+ $paddingRequired = $length - self::mb_strlen($string, $encoding);
+
+ if ($paddingRequired < 1) {
+ return $string;
+ }
+
+ switch ($pad_type) {
+ case \STR_PAD_LEFT:
+ return self::mb_substr(str_repeat($pad_string, $paddingRequired), 0, $paddingRequired, $encoding).$string;
+ case \STR_PAD_RIGHT:
+ return $string.self::mb_substr(str_repeat($pad_string, $paddingRequired), 0, $paddingRequired, $encoding);
+ default:
+ $leftPaddingLength = floor($paddingRequired / 2);
+ $rightPaddingLength = $paddingRequired - $leftPaddingLength;
+
+ return self::mb_substr(str_repeat($pad_string, $leftPaddingLength), 0, $leftPaddingLength, $encoding).$string.self::mb_substr(str_repeat($pad_string, $rightPaddingLength), 0, $rightPaddingLength, $encoding);
+ }
+ }
+
+ private static function getSubpart($pos, $part, $haystack, $encoding)
+ {
+ if (false === $pos) {
+ return false;
+ }
+ if ($part) {
+ return self::mb_substr($haystack, 0, $pos, $encoding);
+ }
+
+ return self::mb_substr($haystack, $pos, null, $encoding);
+ }
+
+ private static function html_encoding_callback(array $m)
+ {
+ $i = 1;
+ $entities = '';
+ $m = unpack('C*', htmlentities($m[0], \ENT_COMPAT, 'UTF-8'));
+
+ while (isset($m[$i])) {
+ if (0x80 > $m[$i]) {
+ $entities .= \chr($m[$i++]);
+ continue;
+ }
+ if (0xF0 <= $m[$i]) {
+ $c = (($m[$i++] - 0xF0) << 18) + (($m[$i++] - 0x80) << 12) + (($m[$i++] - 0x80) << 6) + $m[$i++] - 0x80;
+ } elseif (0xE0 <= $m[$i]) {
+ $c = (($m[$i++] - 0xE0) << 12) + (($m[$i++] - 0x80) << 6) + $m[$i++] - 0x80;
+ } else {
+ $c = (($m[$i++] - 0xC0) << 6) + $m[$i++] - 0x80;
+ }
+
+ $entities .= ''.$c.';';
+ }
+
+ return $entities;
+ }
+
+ private static function title_case(array $s)
+ {
+ return self::mb_convert_case($s[1], \MB_CASE_UPPER, 'UTF-8').self::mb_convert_case($s[2], \MB_CASE_LOWER, 'UTF-8');
+ }
+
+ private static function getData($file)
+ {
+ if (file_exists($file = __DIR__.'/Resources/unidata/'.$file.'.php')) {
+ return require $file;
+ }
+
+ return false;
+ }
+
+ private static function getEncoding($encoding)
+ {
+ if (null === $encoding) {
+ return self::$internalEncoding;
+ }
+
+ if ('UTF-8' === $encoding) {
+ return 'UTF-8';
+ }
+
+ $encoding = strtoupper($encoding);
+
+ if ('8BIT' === $encoding || 'BINARY' === $encoding) {
+ return 'CP850';
+ }
+
+ if ('UTF8' === $encoding) {
+ return 'UTF-8';
+ }
+
+ return $encoding;
+ }
+}
diff --git a/www/modules/civicrm/packages/smarty5/vendor/symfony/polyfill-mbstring/README.md b/www/modules/civicrm/packages/smarty5/vendor/symfony/polyfill-mbstring/README.md
new file mode 100644
index 000000000..478b40da2
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/symfony/polyfill-mbstring/README.md
@@ -0,0 +1,13 @@
+Symfony Polyfill / Mbstring
+===========================
+
+This component provides a partial, native PHP implementation for the
+[Mbstring](https://php.net/mbstring) extension.
+
+More information can be found in the
+[main Polyfill README](https://github.com/symfony/polyfill/blob/main/README.md).
+
+License
+=======
+
+This library is released under the [MIT license](LICENSE).
diff --git a/www/modules/civicrm/packages/smarty5/vendor/symfony/polyfill-mbstring/Resources/unidata/caseFolding.php b/www/modules/civicrm/packages/smarty5/vendor/symfony/polyfill-mbstring/Resources/unidata/caseFolding.php
new file mode 100644
index 000000000..512bba0bf
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/symfony/polyfill-mbstring/Resources/unidata/caseFolding.php
@@ -0,0 +1,119 @@
+ 'i̇',
+ 'µ' => 'μ',
+ 'Å¿' => 's',
+ 'ͅ' => 'ι',
+ 'ς' => 'σ',
+ 'Ï' => 'β',
+ 'ϑ' => 'θ',
+ 'ϕ' => 'φ',
+ 'Ï–' => 'Ï€',
+ 'ϰ' => 'κ',
+ 'ϱ' => 'Ï',
+ 'ϵ' => 'ε',
+ 'ẛ' => 'ṡ',
+ 'ι' => 'ι',
+ 'ß' => 'ss',
+ 'ʼn' => 'ʼn',
+ 'Ç°' => 'Ç°',
+ 'Î' => 'Î',
+ 'ΰ' => 'ΰ',
+ 'Ö‡' => 'Õ¥Ö‚',
+ 'ẖ' => 'ẖ',
+ 'ẗ' => 'ẗ',
+ 'ẘ' => 'ẘ',
+ 'ẙ' => 'ẙ',
+ 'ẚ' => 'aʾ',
+ 'ẞ' => 'ss',
+ 'á½' => 'á½',
+ 'á½’' => 'á½’',
+ 'á½”' => 'á½”',
+ 'á½–' => 'á½–',
+ 'ᾀ' => 'ἀι',
+ 'á¾' => 'á¼Î¹',
+ 'ᾂ' => 'ἂι',
+ 'ᾃ' => 'ἃι',
+ 'ᾄ' => 'ἄι',
+ 'ᾅ' => 'ἅι',
+ 'ᾆ' => 'ἆι',
+ 'ᾇ' => 'ἇι',
+ 'ᾈ' => 'ἀι',
+ 'ᾉ' => 'á¼Î¹',
+ 'ᾊ' => 'ἂι',
+ 'ᾋ' => 'ἃι',
+ 'ᾌ' => 'ἄι',
+ 'á¾' => 'ἅι',
+ 'ᾎ' => 'ἆι',
+ 'á¾' => 'ἇι',
+ 'á¾' => 'ἠι',
+ 'ᾑ' => 'ἡι',
+ 'ᾒ' => 'ἢι',
+ 'ᾓ' => 'ἣι',
+ 'ᾔ' => 'ἤι',
+ 'ᾕ' => 'ἥι',
+ 'ᾖ' => 'ἦι',
+ 'ᾗ' => 'ἧι',
+ 'ᾘ' => 'ἠι',
+ 'ᾙ' => 'ἡι',
+ 'ᾚ' => 'ἢι',
+ 'ᾛ' => 'ἣι',
+ 'ᾜ' => 'ἤι',
+ 'á¾' => 'ἥι',
+ 'ᾞ' => 'ἦι',
+ 'ᾟ' => 'ἧι',
+ 'ᾠ' => 'ὠι',
+ 'ᾡ' => 'ὡι',
+ 'ᾢ' => 'ὢι',
+ 'ᾣ' => 'ὣι',
+ 'ᾤ' => 'ὤι',
+ 'ᾥ' => 'ὥι',
+ 'ᾦ' => 'ὦι',
+ 'ᾧ' => 'ὧι',
+ 'ᾨ' => 'ὠι',
+ 'ᾩ' => 'ὡι',
+ 'ᾪ' => 'ὢι',
+ 'ᾫ' => 'ὣι',
+ 'ᾬ' => 'ὤι',
+ 'á¾' => 'ὥι',
+ 'ᾮ' => 'ὦι',
+ 'ᾯ' => 'ὧι',
+ 'ᾲ' => 'ὰι',
+ 'ᾳ' => 'αι',
+ 'ᾴ' => 'άι',
+ 'ᾶ' => 'ᾶ',
+ 'ᾷ' => 'ᾶι',
+ 'ᾼ' => 'αι',
+ 'ῂ' => 'ὴι',
+ 'ῃ' => 'ηι',
+ 'ῄ' => 'ήι',
+ 'ῆ' => 'ῆ',
+ 'ῇ' => 'ῆι',
+ 'ῌ' => 'ηι',
+ 'á¿’' => 'á¿’',
+ 'á¿–' => 'á¿–',
+ 'á¿—' => 'á¿—',
+ 'á¿¢' => 'á¿¢',
+ 'ῤ' => 'ῤ',
+ 'ῦ' => 'ῦ',
+ 'ῧ' => 'ῧ',
+ 'ῲ' => 'ὼι',
+ 'ῳ' => 'ωι',
+ 'ῴ' => 'ώι',
+ 'ῶ' => 'ῶ',
+ 'ῷ' => 'ῶι',
+ 'ῼ' => 'ωι',
+ 'ff' => 'ff',
+ 'ï¬' => 'fi',
+ 'fl' => 'fl',
+ 'ffi' => 'ffi',
+ 'ffl' => 'ffl',
+ 'ſt' => 'st',
+ 'st' => 'st',
+ 'ﬓ' => 'մն',
+ 'ﬔ' => 'մե',
+ 'ﬕ' => 'մի',
+ 'ﬖ' => 'վն',
+ 'ﬗ' => 'Õ´Õ',
+];
diff --git a/www/modules/civicrm/packages/smarty5/vendor/symfony/polyfill-mbstring/Resources/unidata/lowerCase.php b/www/modules/civicrm/packages/smarty5/vendor/symfony/polyfill-mbstring/Resources/unidata/lowerCase.php
new file mode 100644
index 000000000..fac60b081
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/symfony/polyfill-mbstring/Resources/unidata/lowerCase.php
@@ -0,0 +1,1397 @@
+ 'a',
+ 'B' => 'b',
+ 'C' => 'c',
+ 'D' => 'd',
+ 'E' => 'e',
+ 'F' => 'f',
+ 'G' => 'g',
+ 'H' => 'h',
+ 'I' => 'i',
+ 'J' => 'j',
+ 'K' => 'k',
+ 'L' => 'l',
+ 'M' => 'm',
+ 'N' => 'n',
+ 'O' => 'o',
+ 'P' => 'p',
+ 'Q' => 'q',
+ 'R' => 'r',
+ 'S' => 's',
+ 'T' => 't',
+ 'U' => 'u',
+ 'V' => 'v',
+ 'W' => 'w',
+ 'X' => 'x',
+ 'Y' => 'y',
+ 'Z' => 'z',
+ 'À' => 'à ',
+ 'Ã' => 'á',
+ 'Â' => 'â',
+ 'Ã' => 'ã',
+ 'Ä' => 'ä',
+ 'Ã…' => 'Ã¥',
+ 'Æ' => 'æ',
+ 'Ç' => 'ç',
+ 'È' => 'è',
+ 'É' => 'é',
+ 'Ê' => 'ê',
+ 'Ë' => 'ë',
+ 'Ì' => 'ì',
+ 'Ã' => 'Ã',
+ 'Î' => 'î',
+ 'Ã' => 'ï',
+ 'Ã' => 'ð',
+ 'Ñ' => 'ñ',
+ 'Ò' => 'ò',
+ 'Ó' => 'ó',
+ 'Ô' => 'ô',
+ 'Õ' => 'õ',
+ 'Ö' => 'ö',
+ 'Ø' => 'ø',
+ 'Ù' => 'ù',
+ 'Ú' => 'ú',
+ 'Û' => 'û',
+ 'Ü' => 'ü',
+ 'Ã' => 'ý',
+ 'Þ' => 'þ',
+ 'Ä€' => 'Ä',
+ 'Ă' => 'ă',
+ 'Ä„' => 'Ä…',
+ 'Ć' => 'ć',
+ 'Ĉ' => 'ĉ',
+ 'ÄŠ' => 'Ä‹',
+ 'ÄŒ' => 'Ä',
+ 'ÄŽ' => 'Ä',
+ 'Ä' => 'Ä‘',
+ 'Ä’' => 'Ä“',
+ 'Ä”' => 'Ä•',
+ 'Ä–' => 'Ä—',
+ 'Ę' => 'ę',
+ 'Äš' => 'Ä›',
+ 'Äœ' => 'Ä',
+ 'Äž' => 'ÄŸ',
+ 'Ä ' => 'Ä¡',
+ 'Ä¢' => 'Ä£',
+ 'Ĥ' => 'ĥ',
+ 'Ħ' => 'ħ',
+ 'Ĩ' => 'ĩ',
+ 'Ī' => 'ī',
+ 'Ĭ' => 'Ä',
+ 'Į' => 'į',
+ 'İ' => 'i̇',
+ 'IJ' => 'ij',
+ 'Ĵ' => 'ĵ',
+ 'Ķ' => 'ķ',
+ 'Ĺ' => 'ĺ',
+ 'Ļ' => 'ļ',
+ 'Ľ' => 'ľ',
+ 'Ä¿' => 'Å€',
+ 'Å' => 'Å‚',
+ 'Ń' => 'ń',
+ 'Ņ' => 'ņ',
+ 'Ň' => 'ň',
+ 'ÅŠ' => 'Å‹',
+ 'ÅŒ' => 'Å',
+ 'ÅŽ' => 'Å',
+ 'Å' => 'Å‘',
+ 'Å’' => 'Å“',
+ 'Å”' => 'Å•',
+ 'Å–' => 'Å—',
+ 'Ř' => 'ř',
+ 'Åš' => 'Å›',
+ 'Åœ' => 'Å',
+ 'Åž' => 'ÅŸ',
+ 'Å ' => 'Å¡',
+ 'Å¢' => 'Å£',
+ 'Ť' => 'ť',
+ 'Ŧ' => 'ŧ',
+ 'Ũ' => 'ũ',
+ 'Ū' => 'ū',
+ 'Ŭ' => 'Å',
+ 'Ů' => 'ů',
+ 'Ű' => 'ű',
+ 'Ų' => 'ų',
+ 'Ŵ' => 'ŵ',
+ 'Ŷ' => 'ŷ',
+ 'Ÿ' => 'ÿ',
+ 'Ź' => 'ź',
+ 'Ż' => 'ż',
+ 'Ž' => 'ž',
+ 'Æ' => 'É“',
+ 'Ƃ' => 'ƃ',
+ 'Æ„' => 'Æ…',
+ 'Ɔ' => 'ɔ',
+ 'Ƈ' => 'ƈ',
+ 'Ɖ' => 'ɖ',
+ 'ÆŠ' => 'É—',
+ 'Ƌ' => 'ƌ',
+ 'ÆŽ' => 'Ç',
+ 'Æ' => 'É™',
+ 'Æ' => 'É›',
+ 'Æ‘' => 'Æ’',
+ 'Æ“' => 'É ',
+ 'Æ”' => 'É£',
+ 'Æ–' => 'É©',
+ 'Ɨ' => 'ɨ',
+ 'Ƙ' => 'ƙ',
+ 'Ɯ' => 'ɯ',
+ 'Æ' => 'ɲ',
+ 'Ɵ' => 'ɵ',
+ 'Æ ' => 'Æ¡',
+ 'Æ¢' => 'Æ£',
+ 'Ƥ' => 'ƥ',
+ 'Ʀ' => 'ʀ',
+ 'Ƨ' => 'ƨ',
+ 'Ʃ' => 'ʃ',
+ 'Ƭ' => 'Æ',
+ 'Ʈ' => 'ʈ',
+ 'Ư' => 'ư',
+ 'Ʊ' => 'ʊ',
+ 'Ʋ' => 'ʋ',
+ 'Ƴ' => 'ƴ',
+ 'Ƶ' => 'ƶ',
+ 'Æ·' => 'Ê’',
+ 'Ƹ' => 'ƹ',
+ 'Ƽ' => 'ƽ',
+ 'DŽ' => 'dž',
+ 'Dž' => 'dž',
+ 'LJ' => 'lj',
+ 'Lj' => 'lj',
+ 'NJ' => 'nj',
+ 'Nj' => 'nj',
+ 'Ç' => 'ÇŽ',
+ 'Ç' => 'Ç',
+ 'Ç‘' => 'Ç’',
+ 'Ç“' => 'Ç”',
+ 'Ç•' => 'Ç–',
+ 'Ǘ' => 'ǘ',
+ 'Ç™' => 'Çš',
+ 'Ǜ' => 'ǜ',
+ 'Çž' => 'ÇŸ',
+ 'Ç ' => 'Ç¡',
+ 'Ç¢' => 'Ç£',
+ 'Ǥ' => 'ǥ',
+ 'Ǧ' => 'ǧ',
+ 'Ǩ' => 'ǩ',
+ 'Ǫ' => 'ǫ',
+ 'Ǭ' => 'Ç',
+ 'Ǯ' => 'ǯ',
+ 'DZ' => 'dz',
+ 'Dz' => 'dz',
+ 'Ǵ' => 'ǵ',
+ 'Ƕ' => 'ƕ',
+ 'Ç·' => 'Æ¿',
+ 'Ǹ' => 'ǹ',
+ 'Ǻ' => 'ǻ',
+ 'Ǽ' => 'ǽ',
+ 'Ǿ' => 'ǿ',
+ 'È€' => 'È',
+ 'Ȃ' => 'ȃ',
+ 'È„' => 'È…',
+ 'Ȇ' => 'ȇ',
+ 'Ȉ' => 'ȉ',
+ 'ÈŠ' => 'È‹',
+ 'ÈŒ' => 'È',
+ 'ÈŽ' => 'È',
+ 'È' => 'È‘',
+ 'È’' => 'È“',
+ 'È”' => 'È•',
+ 'È–' => 'È—',
+ 'Ș' => 'ș',
+ 'Èš' => 'È›',
+ 'Èœ' => 'È',
+ 'Èž' => 'ÈŸ',
+ 'È ' => 'Æž',
+ 'È¢' => 'È£',
+ 'Ȥ' => 'ȥ',
+ 'Ȧ' => 'ȧ',
+ 'Ȩ' => 'ȩ',
+ 'Ȫ' => 'ȫ',
+ 'Ȭ' => 'È',
+ 'Ȯ' => 'ȯ',
+ 'Ȱ' => 'ȱ',
+ 'Ȳ' => 'ȳ',
+ 'Ⱥ' => 'ⱥ',
+ 'Ȼ' => 'ȼ',
+ 'Ƚ' => 'ƚ',
+ 'Ⱦ' => 'ⱦ',
+ 'É' => 'É‚',
+ 'Ƀ' => 'ƀ',
+ 'Ʉ' => 'ʉ',
+ 'Ʌ' => 'ʌ',
+ 'Ɇ' => 'ɇ',
+ 'Ɉ' => 'ɉ',
+ 'ÉŠ' => 'É‹',
+ 'ÉŒ' => 'É',
+ 'ÉŽ' => 'É',
+ 'Ͱ' => 'ͱ',
+ 'Ͳ' => 'ͳ',
+ 'Ͷ' => 'ͷ',
+ 'Ϳ' => 'ϳ',
+ 'Ά' => 'ά',
+ 'Έ' => 'Î',
+ 'Ή' => 'ή',
+ 'Ί' => 'ί',
+ 'Ό' => 'ό',
+ 'ÎŽ' => 'Ï',
+ 'Î' => 'ÏŽ',
+ 'Α' => 'α',
+ 'Β' => 'β',
+ 'Γ' => 'γ',
+ 'Δ' => 'δ',
+ 'Ε' => 'ε',
+ 'Ζ' => 'ζ',
+ 'Η' => 'η',
+ 'Θ' => 'θ',
+ 'Ι' => 'ι',
+ 'Κ' => 'κ',
+ 'Λ' => 'λ',
+ 'Μ' => 'μ',
+ 'Î' => 'ν',
+ 'Ξ' => 'ξ',
+ 'Ο' => 'ο',
+ 'Î ' => 'Ï€',
+ 'Ρ' => 'Ï',
+ 'Σ' => 'σ',
+ 'Τ' => 'τ',
+ 'Î¥' => 'Ï…',
+ 'Φ' => 'φ',
+ 'Χ' => 'χ',
+ 'Ψ' => 'ψ',
+ 'Ω' => 'ω',
+ 'Ϊ' => 'ϊ',
+ 'Ϋ' => 'ϋ',
+ 'Ï' => 'Ï—',
+ 'Ϙ' => 'ϙ',
+ 'Ïš' => 'Ï›',
+ 'Ïœ' => 'Ï',
+ 'Ïž' => 'ÏŸ',
+ 'Ï ' => 'Ï¡',
+ 'Ï¢' => 'Ï£',
+ 'Ϥ' => 'ϥ',
+ 'Ϧ' => 'ϧ',
+ 'Ϩ' => 'ϩ',
+ 'Ϫ' => 'ϫ',
+ 'Ϭ' => 'Ï',
+ 'Ϯ' => 'ϯ',
+ 'ϴ' => 'θ',
+ 'Ϸ' => 'ϸ',
+ 'Ϲ' => 'ϲ',
+ 'Ϻ' => 'ϻ',
+ 'Ͻ' => 'ͻ',
+ 'Ͼ' => 'ͼ',
+ 'Ͽ' => 'ͽ',
+ 'Ѐ' => 'Ñ',
+ 'Ð' => 'Ñ‘',
+ 'Ђ' => 'ђ',
+ 'Ѓ' => 'ѓ',
+ 'Є' => 'є',
+ 'Ð…' => 'Ñ•',
+ 'І' => 'і',
+ 'Ї' => 'ї',
+ 'Ј' => 'ј',
+ 'Љ' => 'љ',
+ 'Њ' => 'њ',
+ 'Ћ' => 'ћ',
+ 'Ќ' => 'ќ',
+ 'Ð' => 'Ñ',
+ 'ÐŽ' => 'Ñž',
+ 'Ð' => 'ÑŸ',
+ 'Ð' => 'а',
+ 'Б' => 'б',
+ 'В' => 'в',
+ 'Г' => 'г',
+ 'Д' => 'д',
+ 'Е' => 'е',
+ 'Ж' => 'ж',
+ 'З' => 'з',
+ 'И' => 'и',
+ 'Й' => 'й',
+ 'К' => 'к',
+ 'Л' => 'л',
+ 'М' => 'м',
+ 'Ð' => 'н',
+ 'О' => 'о',
+ 'П' => 'п',
+ 'Ð ' => 'Ñ€',
+ 'С' => 'Ñ',
+ 'Т' => 'т',
+ 'У' => 'у',
+ 'Ф' => 'ф',
+ 'Ð¥' => 'Ñ…',
+ 'Ц' => 'ц',
+ 'Ч' => 'ч',
+ 'Ш' => 'ш',
+ 'Щ' => 'щ',
+ 'Ъ' => 'ъ',
+ 'Ы' => 'ы',
+ 'Ь' => 'ь',
+ 'Ð' => 'Ñ',
+ 'Ю' => 'ю',
+ 'Я' => 'Ñ',
+ 'Ñ ' => 'Ñ¡',
+ 'Ñ¢' => 'Ñ£',
+ 'Ѥ' => 'ѥ',
+ 'Ѧ' => 'ѧ',
+ 'Ѩ' => 'ѩ',
+ 'Ѫ' => 'ѫ',
+ 'Ѭ' => 'Ñ',
+ 'Ѯ' => 'ѯ',
+ 'Ѱ' => 'ѱ',
+ 'Ѳ' => 'ѳ',
+ 'Ѵ' => 'ѵ',
+ 'Ѷ' => 'ѷ',
+ 'Ѹ' => 'ѹ',
+ 'Ѻ' => 'ѻ',
+ 'Ѽ' => 'ѽ',
+ 'Ѿ' => 'ѿ',
+ 'Ò€' => 'Ò',
+ 'ÒŠ' => 'Ò‹',
+ 'ÒŒ' => 'Ò',
+ 'ÒŽ' => 'Ò',
+ 'Ò' => 'Ò‘',
+ 'Ò’' => 'Ò“',
+ 'Ò”' => 'Ò•',
+ 'Ò–' => 'Ò—',
+ 'Ò˜' => 'Ò™',
+ 'Òš' => 'Ò›',
+ 'Òœ' => 'Ò',
+ 'Òž' => 'ÒŸ',
+ 'Ò ' => 'Ò¡',
+ 'Ò¢' => 'Ò£',
+ 'Ò¤' => 'Ò¥',
+ 'Ò¦' => 'Ò§',
+ 'Ò¨' => 'Ò©',
+ 'Òª' => 'Ò«',
+ 'Ò¬' => 'Ò',
+ 'Ò®' => 'Ò¯',
+ 'Ò°' => 'Ò±',
+ 'Ò²' => 'Ò³',
+ 'Ò´' => 'Òµ',
+ 'Ò¶' => 'Ò·',
+ 'Ò¸' => 'Ò¹',
+ 'Òº' => 'Ò»',
+ 'Ò¼' => 'Ò½',
+ 'Ò¾' => 'Ò¿',
+ 'Ó€' => 'Ó',
+ 'Ó' => 'Ó‚',
+ 'Óƒ' => 'Ó„',
+ 'Ó…' => 'Ó†',
+ 'Ó‡' => 'Óˆ',
+ 'Ó‰' => 'ÓŠ',
+ 'Ӌ' => 'ӌ',
+ 'Ó' => 'ÓŽ',
+ 'Ó' => 'Ó‘',
+ 'Ó’' => 'Ó“',
+ 'Ó”' => 'Ó•',
+ 'Ó–' => 'Ó—',
+ 'Ó˜' => 'Ó™',
+ 'Óš' => 'Ó›',
+ 'Óœ' => 'Ó',
+ 'Óž' => 'ÓŸ',
+ 'Ó ' => 'Ó¡',
+ 'Ó¢' => 'Ó£',
+ 'Ó¤' => 'Ó¥',
+ 'Ó¦' => 'Ó§',
+ 'Ó¨' => 'Ó©',
+ 'Óª' => 'Ó«',
+ 'Ó¬' => 'Ó',
+ 'Ó®' => 'Ó¯',
+ 'Ó°' => 'Ó±',
+ 'Ó²' => 'Ó³',
+ 'Ó´' => 'Óµ',
+ 'Ó¶' => 'Ó·',
+ 'Ó¸' => 'Ó¹',
+ 'Óº' => 'Ó»',
+ 'Ó¼' => 'Ó½',
+ 'Ó¾' => 'Ó¿',
+ 'Ô€' => 'Ô',
+ 'Ô‚' => 'Ôƒ',
+ 'Ô„' => 'Ô…',
+ 'Ô†' => 'Ô‡',
+ 'Ôˆ' => 'Ô‰',
+ 'ÔŠ' => 'Ô‹',
+ 'ÔŒ' => 'Ô',
+ 'ÔŽ' => 'Ô',
+ 'Ô' => 'Ô‘',
+ 'Ô’' => 'Ô“',
+ 'Ô”' => 'Ô•',
+ 'Ô–' => 'Ô—',
+ 'Ô˜' => 'Ô™',
+ 'Ôš' => 'Ô›',
+ 'Ôœ' => 'Ô',
+ 'Ôž' => 'ÔŸ',
+ 'Ô ' => 'Ô¡',
+ 'Ô¢' => 'Ô£',
+ 'Ô¤' => 'Ô¥',
+ 'Ô¦' => 'Ô§',
+ 'Ô¨' => 'Ô©',
+ 'Ôª' => 'Ô«',
+ 'Ô¬' => 'Ô',
+ 'Ô®' => 'Ô¯',
+ 'Ô±' => 'Õ¡',
+ 'Ô²' => 'Õ¢',
+ 'Ô³' => 'Õ£',
+ 'Ô´' => 'Õ¤',
+ 'Ôµ' => 'Õ¥',
+ 'Ô¶' => 'Õ¦',
+ 'Ô·' => 'Õ§',
+ 'Ô¸' => 'Õ¨',
+ 'Ô¹' => 'Õ©',
+ 'Ôº' => 'Õª',
+ 'Ô»' => 'Õ«',
+ 'Ô¼' => 'Õ¬',
+ 'Ô½' => 'Õ',
+ 'Ô¾' => 'Õ®',
+ 'Ô¿' => 'Õ¯',
+ 'Õ€' => 'Õ°',
+ 'Õ' => 'Õ±',
+ 'Õ‚' => 'Õ²',
+ 'Õƒ' => 'Õ³',
+ 'Õ„' => 'Õ´',
+ 'Õ…' => 'Õµ',
+ 'Õ†' => 'Õ¶',
+ 'Õ‡' => 'Õ·',
+ 'Õˆ' => 'Õ¸',
+ 'Õ‰' => 'Õ¹',
+ 'ÕŠ' => 'Õº',
+ 'Õ‹' => 'Õ»',
+ 'Ռ' => 'ռ',
+ 'Õ' => 'Õ½',
+ 'ÕŽ' => 'Õ¾',
+ 'Õ' => 'Õ¿',
+ 'Õ' => 'Ö€',
+ 'Õ‘' => 'Ö',
+ 'Õ’' => 'Ö‚',
+ 'Õ“' => 'Öƒ',
+ 'Õ”' => 'Ö„',
+ 'Õ•' => 'Ö…',
+ 'Õ–' => 'Ö†',
+ 'á‚ ' => 'â´€',
+ 'á‚¡' => 'â´',
+ 'á‚¢' => 'â´‚',
+ 'á‚£' => 'â´ƒ',
+ 'Ⴄ' => 'ⴄ',
+ 'á‚¥' => 'â´…',
+ 'Ⴆ' => 'ⴆ',
+ 'Ⴇ' => 'ⴇ',
+ 'Ⴈ' => 'ⴈ',
+ 'á‚©' => 'â´‰',
+ 'Ⴊ' => 'ⴊ',
+ 'á‚«' => 'â´‹',
+ 'Ⴌ' => 'ⴌ',
+ 'á‚' => 'â´',
+ 'á‚®' => 'â´Ž',
+ 'Ⴏ' => 'â´',
+ 'á‚°' => 'â´',
+ 'Ⴑ' => 'ⴑ',
+ 'Ⴒ' => 'ⴒ',
+ 'Ⴓ' => 'ⴓ',
+ 'á‚´' => 'â´”',
+ 'Ⴕ' => 'ⴕ',
+ 'Ⴖ' => 'ⴖ',
+ 'á‚·' => 'â´—',
+ 'Ⴘ' => 'ⴘ',
+ 'Ⴙ' => 'ⴙ',
+ 'Ⴚ' => 'ⴚ',
+ 'á‚»' => 'â´›',
+ 'Ⴜ' => 'ⴜ',
+ 'Ⴝ' => 'â´',
+ 'Ⴞ' => 'ⴞ',
+ 'á‚¿' => 'â´Ÿ',
+ 'Ⴠ' => 'ⴠ',
+ 'áƒ' => 'â´¡',
+ 'Ⴢ' => 'ⴢ',
+ 'Ⴣ' => 'ⴣ',
+ 'Ⴤ' => 'ⴤ',
+ 'Ⴥ' => 'ⴥ',
+ 'Ⴧ' => 'ⴧ',
+ 'áƒ' => 'â´',
+ 'Ꭰ' => 'ê°',
+ 'Ꭱ' => 'ê±',
+ 'Ꭲ' => 'ê²',
+ 'Ꭳ' => 'ê³',
+ 'Ꭴ' => 'ê´',
+ 'Ꭵ' => 'êµ',
+ 'Ꭶ' => 'ê¶',
+ 'Ꭷ' => 'ê·',
+ 'Ꭸ' => 'ê¸',
+ 'Ꭹ' => 'ê¹',
+ 'Ꭺ' => 'êº',
+ 'Ꭻ' => 'ê»',
+ 'Ꭼ' => 'ê¼',
+ 'áŽ' => 'ê½',
+ 'Ꭾ' => 'ê¾',
+ 'Ꭿ' => 'ê¿',
+ 'Ꮀ' => 'ꮀ',
+ 'Ꮁ' => 'ê®',
+ 'Ꮂ' => 'ꮂ',
+ 'Ꮃ' => 'ꮃ',
+ 'Ꮄ' => 'ꮄ',
+ 'Ꮅ' => 'ꮅ',
+ 'Ꮆ' => 'ꮆ',
+ 'Ꮇ' => 'ꮇ',
+ 'Ꮈ' => 'ꮈ',
+ 'Ꮉ' => 'ꮉ',
+ 'Ꮊ' => 'ꮊ',
+ 'Ꮋ' => 'ꮋ',
+ 'Ꮌ' => 'ꮌ',
+ 'Ꮍ' => 'ê®',
+ 'Ꮎ' => 'ꮎ',
+ 'Ꮏ' => 'ê®',
+ 'á€' => 'ê®',
+ 'á' => 'ꮑ',
+ 'á‚' => 'ê®’',
+ 'áƒ' => 'ꮓ',
+ 'á„' => 'ê®”',
+ 'á…' => 'ꮕ',
+ 'á†' => 'ê®–',
+ 'á‡' => 'ê®—',
+ 'áˆ' => 'ꮘ',
+ 'á‰' => 'ê®™',
+ 'áŠ' => 'ꮚ',
+ 'á‹' => 'ê®›',
+ 'áŒ' => 'ꮜ',
+ 'á' => 'ê®',
+ 'áŽ' => 'ꮞ',
+ 'á' => 'ꮟ',
+ 'á' => 'ê® ',
+ 'á‘' => 'ꮡ',
+ 'á’' => 'ꮢ',
+ 'á“' => 'ꮣ',
+ 'á”' => 'ꮤ',
+ 'á•' => 'ꮥ',
+ 'á–' => 'ꮦ',
+ 'á—' => 'ꮧ',
+ 'á˜' => 'ꮨ',
+ 'á™' => 'ꮩ',
+ 'áš' => 'ꮪ',
+ 'á›' => 'ꮫ',
+ 'áœ' => 'ꮬ',
+ 'á' => 'ê®',
+ 'áž' => 'ê®®',
+ 'áŸ' => 'ꮯ',
+ 'á ' => 'ê®°',
+ 'á¡' => 'ê®±',
+ 'á¢' => 'ꮲ',
+ 'á£' => 'ꮳ',
+ 'á¤' => 'ê®´',
+ 'á¥' => 'ꮵ',
+ 'á¦' => 'ꮶ',
+ 'á§' => 'ê®·',
+ 'á¨' => 'ꮸ',
+ 'á©' => 'ꮹ',
+ 'áª' => 'ꮺ',
+ 'á«' => 'ê®»',
+ 'á¬' => 'ꮼ',
+ 'á' => 'ꮽ',
+ 'á®' => 'ꮾ',
+ 'á¯' => 'ꮿ',
+ 'á°' => 'á¸',
+ 'á±' => 'á¹',
+ 'á²' => 'áº',
+ 'á³' => 'á»',
+ 'á´' => 'á¼',
+ 'áµ' => 'á½',
+ 'á²' => 'áƒ',
+ 'Ბ' => 'ბ',
+ 'Გ' => 'გ',
+ 'Დ' => 'დ',
+ 'Ე' => 'ე',
+ 'Ვ' => 'ვ',
+ 'Ზ' => 'ზ',
+ 'Თ' => 'თ',
+ 'Ი' => 'ი',
+ 'Კ' => 'კ',
+ 'Ლ' => 'ლ',
+ 'Მ' => 'მ',
+ 'Ნ' => 'ნ',
+ 'á²' => 'áƒ',
+ 'Პ' => 'პ',
+ 'Ჟ' => 'ჟ',
+ 'Რ' => 'რ',
+ 'Ს' => 'ს',
+ 'Ტ' => 'ტ',
+ 'Უ' => 'უ',
+ 'Ფ' => 'ფ',
+ 'Ქ' => 'ქ',
+ 'Ღ' => 'ღ',
+ 'Ყ' => 'ყ',
+ 'Შ' => 'შ',
+ 'Ჩ' => 'ჩ',
+ 'Ც' => 'ც',
+ 'Ძ' => 'ძ',
+ 'Წ' => 'წ',
+ 'á²' => 'áƒ',
+ 'Ხ' => 'ხ',
+ 'Ჯ' => 'ჯ',
+ 'Ჰ' => 'ჰ',
+ 'Ჱ' => 'ჱ',
+ 'Ჲ' => 'ჲ',
+ 'Ჳ' => 'ჳ',
+ 'Ჴ' => 'ჴ',
+ 'Ჵ' => 'ჵ',
+ 'Ჶ' => 'ჶ',
+ 'Ჷ' => 'ჷ',
+ 'Ჸ' => 'ჸ',
+ 'Ჹ' => 'ჹ',
+ 'Ჺ' => 'ჺ',
+ 'Ჽ' => 'ჽ',
+ 'Ჾ' => 'ჾ',
+ 'Ჿ' => 'ჿ',
+ 'Ḁ' => 'á¸',
+ 'Ḃ' => 'ḃ',
+ 'Ḅ' => 'ḅ',
+ 'Ḇ' => 'ḇ',
+ 'Ḉ' => 'ḉ',
+ 'Ḋ' => 'ḋ',
+ 'Ḍ' => 'á¸',
+ 'Ḏ' => 'á¸',
+ 'á¸' => 'ḑ',
+ 'Ḓ' => 'ḓ',
+ 'Ḕ' => 'ḕ',
+ 'Ḗ' => 'ḗ',
+ 'Ḙ' => 'ḙ',
+ 'Ḛ' => 'ḛ',
+ 'Ḝ' => 'á¸',
+ 'Ḟ' => 'ḟ',
+ 'Ḡ' => 'ḡ',
+ 'Ḣ' => 'ḣ',
+ 'Ḥ' => 'ḥ',
+ 'Ḧ' => 'ḧ',
+ 'Ḩ' => 'ḩ',
+ 'Ḫ' => 'ḫ',
+ 'Ḭ' => 'á¸',
+ 'Ḯ' => 'ḯ',
+ 'Ḱ' => 'ḱ',
+ 'Ḳ' => 'ḳ',
+ 'Ḵ' => 'ḵ',
+ 'Ḷ' => 'ḷ',
+ 'Ḹ' => 'ḹ',
+ 'Ḻ' => 'ḻ',
+ 'Ḽ' => 'ḽ',
+ 'Ḿ' => 'ḿ',
+ 'á¹€' => 'á¹',
+ 'Ṃ' => 'ṃ',
+ 'Ṅ' => 'ṅ',
+ 'Ṇ' => 'ṇ',
+ 'Ṉ' => 'ṉ',
+ 'Ṋ' => 'ṋ',
+ 'Ṍ' => 'á¹',
+ 'Ṏ' => 'á¹',
+ 'á¹' => 'ṑ',
+ 'Ṓ' => 'ṓ',
+ 'Ṕ' => 'ṕ',
+ 'á¹–' => 'á¹—',
+ 'Ṙ' => 'ṙ',
+ 'Ṛ' => 'ṛ',
+ 'Ṝ' => 'á¹',
+ 'Ṟ' => 'ṟ',
+ 'Ṡ' => 'ṡ',
+ 'á¹¢' => 'á¹£',
+ 'Ṥ' => 'ṥ',
+ 'Ṧ' => 'ṧ',
+ 'Ṩ' => 'ṩ',
+ 'Ṫ' => 'ṫ',
+ 'Ṭ' => 'á¹',
+ 'Ṯ' => 'ṯ',
+ 'á¹°' => 'á¹±',
+ 'á¹²' => 'á¹³',
+ 'á¹´' => 'á¹µ',
+ 'Ṷ' => 'ṷ',
+ 'Ṹ' => 'ṹ',
+ 'Ṻ' => 'ṻ',
+ 'á¹¼' => 'á¹½',
+ 'Ṿ' => 'ṿ',
+ 'Ẁ' => 'áº',
+ 'Ẃ' => 'ẃ',
+ 'Ẅ' => 'ẅ',
+ 'Ẇ' => 'ẇ',
+ 'Ẉ' => 'ẉ',
+ 'Ẋ' => 'ẋ',
+ 'Ẍ' => 'áº',
+ 'Ẏ' => 'áº',
+ 'áº' => 'ẑ',
+ 'Ẓ' => 'ẓ',
+ 'Ẕ' => 'ẕ',
+ 'ẞ' => 'ß',
+ 'Ạ' => 'ạ',
+ 'Ả' => 'ả',
+ 'Ấ' => 'ấ',
+ 'Ầ' => 'ầ',
+ 'Ẩ' => 'ẩ',
+ 'Ẫ' => 'ẫ',
+ 'Ậ' => 'áº',
+ 'Ắ' => 'ắ',
+ 'Ằ' => 'ằ',
+ 'Ẳ' => 'ẳ',
+ 'Ẵ' => 'ẵ',
+ 'Ặ' => 'ặ',
+ 'Ẹ' => 'ẹ',
+ 'Ẻ' => 'ẻ',
+ 'Ẽ' => 'ẽ',
+ 'Ế' => 'ế',
+ 'Ề' => 'á»',
+ 'Ể' => 'ể',
+ 'Ễ' => 'ễ',
+ 'Ệ' => 'ệ',
+ 'Ỉ' => 'ỉ',
+ 'Ị' => 'ị',
+ 'Ọ' => 'á»',
+ 'Ỏ' => 'á»',
+ 'á»' => 'ố',
+ 'Ồ' => 'ồ',
+ 'Ổ' => 'ổ',
+ 'á»–' => 'á»—',
+ 'Ộ' => 'ộ',
+ 'Ớ' => 'ớ',
+ 'Ờ' => 'á»',
+ 'Ở' => 'ở',
+ 'Ỡ' => 'ỡ',
+ 'Ợ' => 'ợ',
+ 'Ụ' => 'ụ',
+ 'Ủ' => 'ủ',
+ 'Ứ' => 'ứ',
+ 'Ừ' => 'ừ',
+ 'Ử' => 'á»',
+ 'Ữ' => 'ữ',
+ 'á»°' => 'á»±',
+ 'Ỳ' => 'ỳ',
+ 'Ỵ' => 'ỵ',
+ 'Ỷ' => 'ỷ',
+ 'Ỹ' => 'ỹ',
+ 'Ỻ' => 'ỻ',
+ 'Ỽ' => 'ỽ',
+ 'Ỿ' => 'ỿ',
+ 'Ἀ' => 'ἀ',
+ 'Ἁ' => 'á¼',
+ 'Ἂ' => 'ἂ',
+ 'Ἃ' => 'ἃ',
+ 'Ἄ' => 'ἄ',
+ 'á¼' => 'á¼…',
+ 'Ἆ' => 'ἆ',
+ 'á¼' => 'ἇ',
+ 'Ἐ' => 'á¼',
+ 'Ἑ' => 'ἑ',
+ 'Ἒ' => 'ἒ',
+ 'Ἓ' => 'ἓ',
+ 'Ἔ' => 'ἔ',
+ 'á¼' => 'ἕ',
+ 'Ἠ' => 'ἠ',
+ 'Ἡ' => 'ἡ',
+ 'Ἢ' => 'ἢ',
+ 'Ἣ' => 'ἣ',
+ 'Ἤ' => 'ἤ',
+ 'á¼' => 'á¼¥',
+ 'Ἦ' => 'ἦ',
+ 'Ἧ' => 'ἧ',
+ 'Ἰ' => 'ἰ',
+ 'á¼¹' => 'á¼±',
+ 'Ἲ' => 'ἲ',
+ 'á¼»' => 'á¼³',
+ 'á¼¼' => 'á¼´',
+ 'á¼½' => 'á¼µ',
+ 'Ἶ' => 'ἶ',
+ 'Ἷ' => 'ἷ',
+ 'Ὀ' => 'ὀ',
+ 'Ὁ' => 'á½',
+ 'Ὂ' => 'ὂ',
+ 'Ὃ' => 'ὃ',
+ 'Ὄ' => 'ὄ',
+ 'á½' => 'á½…',
+ 'Ὑ' => 'ὑ',
+ 'Ὓ' => 'ὓ',
+ 'á½' => 'ὕ',
+ 'Ὗ' => 'ὗ',
+ 'Ὠ' => 'ὠ',
+ 'Ὡ' => 'ὡ',
+ 'Ὢ' => 'ὢ',
+ 'Ὣ' => 'ὣ',
+ 'Ὤ' => 'ὤ',
+ 'á½' => 'á½¥',
+ 'Ὦ' => 'ὦ',
+ 'Ὧ' => 'ὧ',
+ 'ᾈ' => 'ᾀ',
+ 'ᾉ' => 'á¾',
+ 'ᾊ' => 'ᾂ',
+ 'ᾋ' => 'ᾃ',
+ 'ᾌ' => 'ᾄ',
+ 'á¾' => 'á¾…',
+ 'ᾎ' => 'ᾆ',
+ 'á¾' => 'ᾇ',
+ 'ᾘ' => 'á¾',
+ 'ᾙ' => 'ᾑ',
+ 'ᾚ' => 'ᾒ',
+ 'ᾛ' => 'ᾓ',
+ 'ᾜ' => 'ᾔ',
+ 'á¾' => 'ᾕ',
+ 'ᾞ' => 'ᾖ',
+ 'ᾟ' => 'ᾗ',
+ 'ᾨ' => 'ᾠ',
+ 'ᾩ' => 'ᾡ',
+ 'ᾪ' => 'ᾢ',
+ 'ᾫ' => 'ᾣ',
+ 'ᾬ' => 'ᾤ',
+ 'á¾' => 'á¾¥',
+ 'ᾮ' => 'ᾦ',
+ 'ᾯ' => 'ᾧ',
+ 'Ᾰ' => 'ᾰ',
+ 'á¾¹' => 'á¾±',
+ 'Ὰ' => 'ὰ',
+ 'á¾»' => 'á½±',
+ 'á¾¼' => 'á¾³',
+ 'Ὲ' => 'ὲ',
+ 'Έ' => 'έ',
+ 'á¿Š' => 'á½´',
+ 'á¿‹' => 'á½µ',
+ 'ῌ' => 'ῃ',
+ 'Ῐ' => 'á¿',
+ 'á¿™' => 'á¿‘',
+ 'Ὶ' => 'ὶ',
+ 'á¿›' => 'á½·',
+ 'Ῠ' => 'ῠ',
+ 'á¿©' => 'á¿¡',
+ 'Ὺ' => 'ὺ',
+ 'á¿«' => 'á½»',
+ 'Ῥ' => 'ῥ',
+ 'Ὸ' => 'ὸ',
+ 'Ό' => 'ό',
+ 'Ὼ' => 'ὼ',
+ 'á¿»' => 'á½½',
+ 'ῼ' => 'ῳ',
+ 'Ω' => 'ω',
+ 'K' => 'k',
+ 'â„«' => 'Ã¥',
+ 'Ⅎ' => 'ⅎ',
+ 'â… ' => 'â…°',
+ 'â…¡' => 'â…±',
+ 'â…¢' => 'â…²',
+ 'â…£' => 'â…³',
+ 'â…¤' => 'â…´',
+ 'â…¥' => 'â…µ',
+ 'â…¦' => 'â…¶',
+ 'â…§' => 'â…·',
+ 'â…¨' => 'â…¸',
+ 'â…©' => 'â…¹',
+ 'â…ª' => 'â…º',
+ 'â…«' => 'â…»',
+ 'â…¬' => 'â…¼',
+ 'â…' => 'â…½',
+ 'â…®' => 'â…¾',
+ 'â…¯' => 'â…¿',
+ 'Ↄ' => 'ↄ',
+ 'â’¶' => 'â“',
+ 'â’·' => 'â“‘',
+ 'â’¸' => 'â“’',
+ 'â’¹' => 'â““',
+ 'â’º' => 'â“”',
+ 'â’»' => 'â“•',
+ 'â’¼' => 'â“–',
+ 'â’½' => 'â“—',
+ 'Ⓘ' => 'ⓘ',
+ 'â’¿' => 'â“™',
+ 'â“€' => 'â“š',
+ 'â“' => 'â“›',
+ 'Ⓜ' => 'ⓜ',
+ 'Ⓝ' => 'â“',
+ 'â“„' => 'â“ž',
+ 'â“…' => 'â“Ÿ',
+ 'Ⓠ' => 'ⓠ',
+ 'Ⓡ' => 'ⓡ',
+ 'Ⓢ' => 'ⓢ',
+ 'Ⓣ' => 'ⓣ',
+ 'Ⓤ' => 'ⓤ',
+ 'â“‹' => 'â“¥',
+ 'Ⓦ' => 'ⓦ',
+ 'â“' => 'ⓧ',
+ 'Ⓨ' => 'ⓨ',
+ 'â“' => 'â“©',
+ 'â°€' => 'â°°',
+ 'â°' => 'â°±',
+ 'â°‚' => 'â°²',
+ 'â°ƒ' => 'â°³',
+ 'â°„' => 'â°´',
+ 'â°…' => 'â°µ',
+ 'â°†' => 'â°¶',
+ 'â°‡' => 'â°·',
+ 'â°ˆ' => 'â°¸',
+ 'â°‰' => 'â°¹',
+ 'â°Š' => 'â°º',
+ 'â°‹' => 'â°»',
+ 'Ⰼ' => 'ⰼ',
+ 'â°' => 'â°½',
+ 'â°Ž' => 'â°¾',
+ 'â°' => 'â°¿',
+ 'â°' => 'â±€',
+ 'â°‘' => 'â±',
+ 'Ⱂ' => 'ⱂ',
+ 'Ⱃ' => 'ⱃ',
+ 'Ⱄ' => 'ⱄ',
+ 'â°•' => 'â±…',
+ 'Ⱆ' => 'ⱆ',
+ 'Ⱇ' => 'ⱇ',
+ 'Ⱈ' => 'ⱈ',
+ 'Ⱉ' => 'ⱉ',
+ 'Ⱊ' => 'ⱊ',
+ 'Ⱋ' => 'ⱋ',
+ 'Ⱌ' => 'ⱌ',
+ 'â°' => 'â±',
+ 'Ⱎ' => 'ⱎ',
+ 'â°Ÿ' => 'â±',
+ 'â° ' => 'â±',
+ 'Ⱑ' => 'ⱑ',
+ 'â°¢' => 'â±’',
+ 'Ⱓ' => 'ⱓ',
+ 'â°¤' => 'â±”',
+ 'Ⱕ' => 'ⱕ',
+ 'â°¦' => 'â±–',
+ 'â°§' => 'â±—',
+ 'Ⱘ' => 'ⱘ',
+ 'â°©' => 'â±™',
+ 'Ⱚ' => 'ⱚ',
+ 'â°«' => 'â±›',
+ 'Ⱜ' => 'ⱜ',
+ 'â°' => 'â±',
+ 'Ⱞ' => 'ⱞ',
+ 'Ⱡ' => 'ⱡ',
+ 'â±¢' => 'É«',
+ 'â±£' => 'áµ½',
+ 'Ɽ' => 'ɽ',
+ 'Ⱨ' => 'ⱨ',
+ 'Ⱪ' => 'ⱪ',
+ 'Ⱬ' => 'ⱬ',
+ 'â±' => 'É‘',
+ 'Ɱ' => 'ɱ',
+ 'Ɐ' => 'É',
+ 'â±°' => 'É’',
+ 'â±²' => 'â±³',
+ 'Ⱶ' => 'ⱶ',
+ 'â±¾' => 'È¿',
+ 'Ɀ' => 'ɀ',
+ 'â²€' => 'â²',
+ 'Ⲃ' => 'ⲃ',
+ 'Ⲅ' => 'ⲅ',
+ 'Ⲇ' => 'ⲇ',
+ 'Ⲉ' => 'ⲉ',
+ 'Ⲋ' => 'ⲋ',
+ 'Ⲍ' => 'â²',
+ 'Ⲏ' => 'â²',
+ 'â²' => 'ⲑ',
+ 'Ⲓ' => 'ⲓ',
+ 'Ⲕ' => 'ⲕ',
+ 'â²–' => 'â²—',
+ 'Ⲙ' => 'ⲙ',
+ 'Ⲛ' => 'ⲛ',
+ 'Ⲝ' => 'â²',
+ 'Ⲟ' => 'ⲟ',
+ 'Ⲡ' => 'ⲡ',
+ 'â²¢' => 'â²£',
+ 'Ⲥ' => 'ⲥ',
+ 'Ⲧ' => 'ⲧ',
+ 'Ⲩ' => 'ⲩ',
+ 'Ⲫ' => 'ⲫ',
+ 'Ⲭ' => 'â²',
+ 'Ⲯ' => 'ⲯ',
+ 'â²°' => 'â²±',
+ 'â²²' => 'â²³',
+ 'â²´' => 'â²µ',
+ 'Ⲷ' => 'ⲷ',
+ 'Ⲹ' => 'ⲹ',
+ 'Ⲻ' => 'ⲻ',
+ 'â²¼' => 'â²½',
+ 'Ⲿ' => 'ⲿ',
+ 'â³€' => 'â³',
+ 'Ⳃ' => 'ⳃ',
+ 'Ⳅ' => 'ⳅ',
+ 'Ⳇ' => 'ⳇ',
+ 'Ⳉ' => 'ⳉ',
+ 'Ⳋ' => 'ⳋ',
+ 'Ⳍ' => 'â³',
+ 'Ⳏ' => 'â³',
+ 'â³' => 'ⳑ',
+ 'Ⳓ' => 'ⳓ',
+ 'Ⳕ' => 'ⳕ',
+ 'â³–' => 'â³—',
+ 'Ⳙ' => 'ⳙ',
+ 'Ⳛ' => 'ⳛ',
+ 'Ⳝ' => 'â³',
+ 'Ⳟ' => 'ⳟ',
+ 'Ⳡ' => 'ⳡ',
+ 'â³¢' => 'â³£',
+ 'Ⳬ' => 'ⳬ',
+ 'â³' => 'â³®',
+ 'â³²' => 'â³³',
+ 'Ꙁ' => 'ê™',
+ 'Ꙃ' => 'ꙃ',
+ 'Ꙅ' => 'ꙅ',
+ 'Ꙇ' => 'ꙇ',
+ 'Ꙉ' => 'ꙉ',
+ 'Ꙋ' => 'ꙋ',
+ 'Ꙍ' => 'ê™',
+ 'Ꙏ' => 'ê™',
+ 'ê™' => 'ꙑ',
+ 'Ꙓ' => 'ꙓ',
+ 'Ꙕ' => 'ꙕ',
+ 'ê™–' => 'ê™—',
+ 'Ꙙ' => 'ꙙ',
+ 'Ꙛ' => 'ꙛ',
+ 'Ꙝ' => 'ê™',
+ 'Ꙟ' => 'ꙟ',
+ 'ê™ ' => 'ꙡ',
+ 'Ꙣ' => 'ꙣ',
+ 'Ꙥ' => 'ꙥ',
+ 'Ꙧ' => 'ꙧ',
+ 'Ꙩ' => 'ꙩ',
+ 'Ꙫ' => 'ꙫ',
+ 'Ꙭ' => 'ê™',
+ 'Ꚁ' => 'êš',
+ 'Ꚃ' => 'ꚃ',
+ 'êš„' => 'êš…',
+ 'Ꚇ' => 'ꚇ',
+ 'Ꚉ' => 'ꚉ',
+ 'Ꚋ' => 'ꚋ',
+ 'Ꚍ' => 'êš',
+ 'Ꚏ' => 'êš',
+ 'êš' => 'êš‘',
+ 'êš’' => 'êš“',
+ 'êš”' => 'êš•',
+ 'êš–' => 'êš—',
+ 'Ꚙ' => 'ꚙ',
+ 'êšš' => 'êš›',
+ 'Ꜣ' => 'ꜣ',
+ 'Ꜥ' => 'ꜥ',
+ 'Ꜧ' => 'ꜧ',
+ 'Ꜩ' => 'ꜩ',
+ 'Ꜫ' => 'ꜫ',
+ 'Ꜭ' => 'êœ',
+ 'Ꜯ' => 'ꜯ',
+ 'Ꜳ' => 'ꜳ',
+ 'Ꜵ' => 'ꜵ',
+ 'Ꜷ' => 'ꜷ',
+ 'Ꜹ' => 'ꜹ',
+ 'Ꜻ' => 'ꜻ',
+ 'Ꜽ' => 'ꜽ',
+ 'Ꜿ' => 'ꜿ',
+ 'ê€' => 'ê',
+ 'ê‚' => 'êƒ',
+ 'ê„' => 'ê…',
+ 'ê†' => 'ê‡',
+ 'êˆ' => 'ê‰',
+ 'êŠ' => 'ê‹',
+ 'êŒ' => 'ê',
+ 'êŽ' => 'ê',
+ 'ê' => 'ê‘',
+ 'ê’' => 'ê“',
+ 'ê”' => 'ê•',
+ 'ê–' => 'ê—',
+ 'ê˜' => 'ê™',
+ 'êš' => 'ê›',
+ 'êœ' => 'ê',
+ 'êž' => 'êŸ',
+ 'ê ' => 'ê¡',
+ 'ê¢' => 'ê£',
+ 'ê¤' => 'ê¥',
+ 'ê¦' => 'ê§',
+ 'ê¨' => 'ê©',
+ 'êª' => 'ê«',
+ 'ê¬' => 'ê',
+ 'ê®' => 'ê¯',
+ 'ê¹' => 'êº',
+ 'ê»' => 'ê¼',
+ 'ê½' => 'áµ¹',
+ 'ê¾' => 'ê¿',
+ 'Ꞁ' => 'êž',
+ 'Ꞃ' => 'ꞃ',
+ 'êž„' => 'êž…',
+ 'Ꞇ' => 'ꞇ',
+ 'Ꞌ' => 'ꞌ',
+ 'êž' => 'É¥',
+ 'êž' => 'êž‘',
+ 'êž’' => 'êž“',
+ 'êž–' => 'êž—',
+ 'Ꞙ' => 'ꞙ',
+ 'êžš' => 'êž›',
+ 'êžœ' => 'êž',
+ 'Ꞟ' => 'ꞟ',
+ 'êž ' => 'êž¡',
+ 'Ꞣ' => 'ꞣ',
+ 'Ꞥ' => 'ꞥ',
+ 'Ꞧ' => 'ꞧ',
+ 'Ꞩ' => 'ꞩ',
+ 'Ɦ' => 'ɦ',
+ 'Ɜ' => 'ɜ',
+ 'Ɡ' => 'ɡ',
+ 'êž' => 'ɬ',
+ 'Ɪ' => 'ɪ',
+ 'êž°' => 'Êž',
+ 'Ʇ' => 'ʇ',
+ 'êž²' => 'Ê',
+ 'êž³' => 'ê“',
+ 'êž´' => 'êžµ',
+ 'Ꞷ' => 'ꞷ',
+ 'Ꞹ' => 'ꞹ',
+ 'Ꞻ' => 'ꞻ',
+ 'êž¼' => 'êž½',
+ 'êž¾' => 'êž¿',
+ 'Ꟃ' => 'ꟃ',
+ 'Ꞔ' => 'ꞔ',
+ 'Ʂ' => 'ʂ',
+ 'Ᶎ' => 'ᶎ',
+ 'Ꟈ' => 'ꟈ',
+ 'Ꟊ' => 'ꟊ',
+ 'Ꟶ' => 'ꟶ',
+ 'A' => 'ï½',
+ 'B' => 'b',
+ 'C' => 'c',
+ 'D' => 'd',
+ 'ï¼¥' => 'ï½…',
+ 'F' => 'f',
+ 'G' => 'g',
+ 'H' => 'h',
+ 'I' => 'i',
+ 'J' => 'j',
+ 'K' => 'k',
+ 'L' => 'l',
+ 'ï¼' => 'ï½',
+ 'N' => 'n',
+ 'O' => 'ï½',
+ 'ï¼°' => 'ï½',
+ 'Q' => 'q',
+ 'ï¼²' => 'ï½’',
+ 'S' => 's',
+ 'ï¼´' => 'ï½”',
+ 'U' => 'u',
+ 'V' => 'v',
+ 'ï¼·' => 'ï½—',
+ 'X' => 'x',
+ 'ï¼¹' => 'ï½™',
+ 'Z' => 'z',
+ 'ð€' => 'ð¨',
+ 'ð' => 'ð©',
+ 'ð‚' => 'ðª',
+ 'ðƒ' => 'ð«',
+ 'ð„' => 'ð¬',
+ 'ð…' => 'ð',
+ 'ð†' => 'ð®',
+ 'ð‡' => 'ð¯',
+ 'ðˆ' => 'ð°',
+ 'ð‰' => 'ð±',
+ 'ðŠ' => 'ð²',
+ 'ð‹' => 'ð³',
+ 'ðŒ' => 'ð´',
+ 'ð' => 'ðµ',
+ 'ðŽ' => 'ð¶',
+ 'ð' => 'ð·',
+ 'ð' => 'ð¸',
+ 'ð‘' => 'ð¹',
+ 'ð’' => 'ðº',
+ 'ð“' => 'ð»',
+ 'ð”' => 'ð¼',
+ 'ð•' => 'ð½',
+ 'ð–' => 'ð¾',
+ 'ð—' => 'ð¿',
+ 'ð˜' => 'ð‘€',
+ 'ð™' => 'ð‘',
+ 'ðš' => 'ð‘‚',
+ 'ð›' => 'ð‘ƒ',
+ 'ðœ' => 'ð‘„',
+ 'ð' => 'ð‘…',
+ 'ðž' => 'ð‘†',
+ 'ðŸ' => 'ð‘‡',
+ 'ð ' => 'ð‘ˆ',
+ 'ð¡' => 'ð‘‰',
+ 'ð¢' => 'ð‘Š',
+ 'ð£' => 'ð‘‹',
+ 'ð¤' => 'ð‘Œ',
+ 'ð¥' => 'ð‘',
+ 'ð¦' => 'ð‘Ž',
+ 'ð§' => 'ð‘',
+ 'ð’°' => 'ð“˜',
+ 'ð’±' => 'ð“™',
+ 'ð’²' => 'ð“š',
+ 'ð’³' => 'ð“›',
+ 'ð’´' => 'ð“œ',
+ 'ð’µ' => 'ð“',
+ 'ð’¶' => 'ð“ž',
+ 'ð’·' => 'ð“Ÿ',
+ 'ð’¸' => 'ð“ ',
+ 'ð’¹' => 'ð“¡',
+ 'ð’º' => 'ð“¢',
+ 'ð’»' => 'ð“£',
+ 'ð’¼' => 'ð“¤',
+ 'ð’½' => 'ð“¥',
+ 'ð’¾' => 'ð“¦',
+ 'ð’¿' => 'ð“§',
+ 'ð“€' => 'ð“¨',
+ 'ð“' => 'ð“©',
+ 'ð“‚' => 'ð“ª',
+ 'ð“ƒ' => 'ð“«',
+ 'ð“„' => 'ð“¬',
+ 'ð“…' => 'ð“',
+ 'ð“†' => 'ð“®',
+ 'ð“‡' => 'ð“¯',
+ 'ð“ˆ' => 'ð“°',
+ 'ð“‰' => 'ð“±',
+ 'ð“Š' => 'ð“²',
+ 'ð“‹' => 'ð“³',
+ 'ð“Œ' => 'ð“´',
+ 'ð“' => 'ð“µ',
+ 'ð“Ž' => 'ð“¶',
+ 'ð“' => 'ð“·',
+ 'ð“' => 'ð“¸',
+ 'ð“‘' => 'ð“¹',
+ 'ð“’' => 'ð“º',
+ 'ð““' => 'ð“»',
+ 'ð²€' => 'ð³€',
+ 'ð²' => 'ð³',
+ 'ð²‚' => 'ð³‚',
+ 'ð²ƒ' => 'ð³ƒ',
+ 'ð²„' => 'ð³„',
+ 'ð²…' => 'ð³…',
+ 'ð²†' => 'ð³†',
+ 'ð²‡' => 'ð³‡',
+ 'ð²ˆ' => 'ð³ˆ',
+ 'ð²‰' => 'ð³‰',
+ 'ð²Š' => 'ð³Š',
+ 'ð²‹' => 'ð³‹',
+ 'ð²Œ' => 'ð³Œ',
+ 'ð²' => 'ð³',
+ 'ð²Ž' => 'ð³Ž',
+ 'ð²' => 'ð³',
+ 'ð²' => 'ð³',
+ 'ð²‘' => 'ð³‘',
+ 'ð²’' => 'ð³’',
+ 'ð²“' => 'ð³“',
+ 'ð²”' => 'ð³”',
+ 'ð²•' => 'ð³•',
+ 'ð²–' => 'ð³–',
+ 'ð²—' => 'ð³—',
+ 'ð²˜' => 'ð³˜',
+ 'ð²™' => 'ð³™',
+ 'ð²š' => 'ð³š',
+ 'ð²›' => 'ð³›',
+ 'ð²œ' => 'ð³œ',
+ 'ð²' => 'ð³',
+ 'ð²ž' => 'ð³ž',
+ 'ð²Ÿ' => 'ð³Ÿ',
+ 'ð² ' => 'ð³ ',
+ 'ð²¡' => 'ð³¡',
+ 'ð²¢' => 'ð³¢',
+ 'ð²£' => 'ð³£',
+ 'ð²¤' => 'ð³¤',
+ 'ð²¥' => 'ð³¥',
+ 'ð²¦' => 'ð³¦',
+ 'ð²§' => 'ð³§',
+ 'ð²¨' => 'ð³¨',
+ 'ð²©' => 'ð³©',
+ 'ð²ª' => 'ð³ª',
+ 'ð²«' => 'ð³«',
+ 'ð²¬' => 'ð³¬',
+ 'ð²' => 'ð³',
+ 'ð²®' => 'ð³®',
+ 'ð²¯' => 'ð³¯',
+ 'ð²°' => 'ð³°',
+ 'ð²±' => 'ð³±',
+ 'ð²²' => 'ð³²',
+ 'ð‘¢ ' => 'ð‘£€',
+ '𑢡' => 'ð‘£',
+ '𑢢' => '𑣂',
+ '𑢣' => '𑣃',
+ '𑢤' => '𑣄',
+ 'ð‘¢¥' => 'ð‘£…',
+ '𑢦' => '𑣆',
+ '𑢧' => '𑣇',
+ '𑢨' => '𑣈',
+ '𑢩' => '𑣉',
+ '𑢪' => '𑣊',
+ '𑢫' => '𑣋',
+ '𑢬' => '𑣌',
+ 'ð‘¢' => 'ð‘£',
+ '𑢮' => '𑣎',
+ '𑢯' => 'ð‘£',
+ 'ð‘¢°' => 'ð‘£',
+ '𑢱' => '𑣑',
+ 'ð‘¢²' => 'ð‘£’',
+ '𑢳' => '𑣓',
+ 'ð‘¢´' => 'ð‘£”',
+ '𑢵' => '𑣕',
+ '𑢶' => '𑣖',
+ 'ð‘¢·' => 'ð‘£—',
+ '𑢸' => '𑣘',
+ 'ð‘¢¹' => 'ð‘£™',
+ '𑢺' => '𑣚',
+ 'ð‘¢»' => 'ð‘£›',
+ '𑢼' => '𑣜',
+ 'ð‘¢½' => 'ð‘£',
+ '𑢾' => '𑣞',
+ '𑢿' => '𑣟',
+ 'ð–¹€' => 'ð–¹ ',
+ 'ð–¹' => '𖹡',
+ '𖹂' => '𖹢',
+ '𖹃' => '𖹣',
+ '𖹄' => '𖹤',
+ 'ð–¹…' => 'ð–¹¥',
+ '𖹆' => '𖹦',
+ '𖹇' => '𖹧',
+ '𖹈' => '𖹨',
+ '𖹉' => '𖹩',
+ '𖹊' => '𖹪',
+ '𖹋' => '𖹫',
+ '𖹌' => '𖹬',
+ 'ð–¹' => 'ð–¹',
+ '𖹎' => '𖹮',
+ 'ð–¹' => '𖹯',
+ 'ð–¹' => 'ð–¹°',
+ '𖹑' => '𖹱',
+ 'ð–¹’' => 'ð–¹²',
+ '𖹓' => '𖹳',
+ 'ð–¹”' => 'ð–¹´',
+ '𖹕' => '𖹵',
+ '𖹖' => '𖹶',
+ 'ð–¹—' => 'ð–¹·',
+ '𖹘' => '𖹸',
+ 'ð–¹™' => 'ð–¹¹',
+ '𖹚' => '𖹺',
+ 'ð–¹›' => 'ð–¹»',
+ '𖹜' => '𖹼',
+ 'ð–¹' => 'ð–¹½',
+ '𖹞' => '𖹾',
+ '𖹟' => '𖹿',
+ '𞤀' => '𞤢',
+ 'ðž¤' => '𞤣',
+ '𞤂' => '𞤤',
+ '𞤃' => '𞤥',
+ '𞤄' => '𞤦',
+ '𞤅' => '𞤧',
+ '𞤆' => '𞤨',
+ '𞤇' => '𞤩',
+ '𞤈' => '𞤪',
+ '𞤉' => '𞤫',
+ '𞤊' => '𞤬',
+ '𞤋' => 'ðž¤',
+ '𞤌' => '𞤮',
+ 'ðž¤' => '𞤯',
+ '𞤎' => '𞤰',
+ 'ðž¤' => '𞤱',
+ 'ðž¤' => '𞤲',
+ '𞤑' => '𞤳',
+ '𞤒' => '𞤴',
+ '𞤓' => '𞤵',
+ '𞤔' => '𞤶',
+ '𞤕' => '𞤷',
+ '𞤖' => '𞤸',
+ '𞤗' => '𞤹',
+ '𞤘' => '𞤺',
+ '𞤙' => '𞤻',
+ '𞤚' => '𞤼',
+ '𞤛' => '𞤽',
+ '𞤜' => '𞤾',
+ 'ðž¤' => '𞤿',
+ '𞤞' => '𞥀',
+ '𞤟' => 'ðž¥',
+ '𞤠' => '𞥂',
+ '𞤡' => '𞥃',
+);
diff --git a/www/modules/civicrm/packages/smarty5/vendor/symfony/polyfill-mbstring/Resources/unidata/titleCaseRegexp.php b/www/modules/civicrm/packages/smarty5/vendor/symfony/polyfill-mbstring/Resources/unidata/titleCaseRegexp.php
new file mode 100644
index 000000000..2a8f6e73b
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/symfony/polyfill-mbstring/Resources/unidata/titleCaseRegexp.php
@@ -0,0 +1,5 @@
+ 'A',
+ 'b' => 'B',
+ 'c' => 'C',
+ 'd' => 'D',
+ 'e' => 'E',
+ 'f' => 'F',
+ 'g' => 'G',
+ 'h' => 'H',
+ 'i' => 'I',
+ 'j' => 'J',
+ 'k' => 'K',
+ 'l' => 'L',
+ 'm' => 'M',
+ 'n' => 'N',
+ 'o' => 'O',
+ 'p' => 'P',
+ 'q' => 'Q',
+ 'r' => 'R',
+ 's' => 'S',
+ 't' => 'T',
+ 'u' => 'U',
+ 'v' => 'V',
+ 'w' => 'W',
+ 'x' => 'X',
+ 'y' => 'Y',
+ 'z' => 'Z',
+ 'µ' => 'Μ',
+ 'à ' => 'À',
+ 'á' => 'Ã',
+ 'â' => 'Â',
+ 'ã' => 'Ã',
+ 'ä' => 'Ä',
+ 'Ã¥' => 'Ã…',
+ 'æ' => 'Æ',
+ 'ç' => 'Ç',
+ 'è' => 'È',
+ 'é' => 'É',
+ 'ê' => 'Ê',
+ 'ë' => 'Ë',
+ 'ì' => 'Ì',
+ 'Ã' => 'Ã',
+ 'î' => 'Î',
+ 'ï' => 'Ã',
+ 'ð' => 'Ã',
+ 'ñ' => 'Ñ',
+ 'ò' => 'Ò',
+ 'ó' => 'Ó',
+ 'ô' => 'Ô',
+ 'õ' => 'Õ',
+ 'ö' => 'Ö',
+ 'ø' => 'Ø',
+ 'ù' => 'Ù',
+ 'ú' => 'Ú',
+ 'û' => 'Û',
+ 'ü' => 'Ü',
+ 'ý' => 'Ã',
+ 'þ' => 'Þ',
+ 'ÿ' => 'Ÿ',
+ 'Ä' => 'Ä€',
+ 'ă' => 'Ă',
+ 'Ä…' => 'Ä„',
+ 'ć' => 'Ć',
+ 'ĉ' => 'Ĉ',
+ 'Ä‹' => 'ÄŠ',
+ 'Ä' => 'ÄŒ',
+ 'Ä' => 'ÄŽ',
+ 'Ä‘' => 'Ä',
+ 'Ä“' => 'Ä’',
+ 'Ä•' => 'Ä”',
+ 'Ä—' => 'Ä–',
+ 'ę' => 'Ę',
+ 'Ä›' => 'Äš',
+ 'Ä' => 'Äœ',
+ 'ÄŸ' => 'Äž',
+ 'Ä¡' => 'Ä ',
+ 'Ä£' => 'Ä¢',
+ 'ĥ' => 'Ĥ',
+ 'ħ' => 'Ħ',
+ 'ĩ' => 'Ĩ',
+ 'ī' => 'Ī',
+ 'Ä' => 'Ĭ',
+ 'į' => 'Į',
+ 'ı' => 'I',
+ 'ij' => 'IJ',
+ 'ĵ' => 'Ĵ',
+ 'ķ' => 'Ķ',
+ 'ĺ' => 'Ĺ',
+ 'ļ' => 'Ļ',
+ 'ľ' => 'Ľ',
+ 'Å€' => 'Ä¿',
+ 'Å‚' => 'Å',
+ 'ń' => 'Ń',
+ 'ņ' => 'Ņ',
+ 'ň' => 'Ň',
+ 'Å‹' => 'ÅŠ',
+ 'Å' => 'ÅŒ',
+ 'Å' => 'ÅŽ',
+ 'Å‘' => 'Å',
+ 'Å“' => 'Å’',
+ 'Å•' => 'Å”',
+ 'Å—' => 'Å–',
+ 'ř' => 'Ř',
+ 'Å›' => 'Åš',
+ 'Å' => 'Åœ',
+ 'ÅŸ' => 'Åž',
+ 'Å¡' => 'Å ',
+ 'Å£' => 'Å¢',
+ 'ť' => 'Ť',
+ 'ŧ' => 'Ŧ',
+ 'ũ' => 'Ũ',
+ 'ū' => 'Ū',
+ 'Å' => 'Ŭ',
+ 'ů' => 'Ů',
+ 'ű' => 'Ű',
+ 'ų' => 'Ų',
+ 'ŵ' => 'Ŵ',
+ 'ŷ' => 'Ŷ',
+ 'ź' => 'Ź',
+ 'ż' => 'Ż',
+ 'ž' => 'Ž',
+ 'Å¿' => 'S',
+ 'ƀ' => 'Ƀ',
+ 'ƃ' => 'Ƃ',
+ 'Æ…' => 'Æ„',
+ 'ƈ' => 'Ƈ',
+ 'ƌ' => 'Ƌ',
+ 'Æ’' => 'Æ‘',
+ 'ƕ' => 'Ƕ',
+ 'ƙ' => 'Ƙ',
+ 'ƚ' => 'Ƚ',
+ 'Æž' => 'È ',
+ 'Æ¡' => 'Æ ',
+ 'Æ£' => 'Æ¢',
+ 'ƥ' => 'Ƥ',
+ 'ƨ' => 'Ƨ',
+ 'Æ' => 'Ƭ',
+ 'ư' => 'Ư',
+ 'ƴ' => 'Ƴ',
+ 'ƶ' => 'Ƶ',
+ 'ƹ' => 'Ƹ',
+ 'ƽ' => 'Ƽ',
+ 'Æ¿' => 'Ç·',
+ 'Ç…' => 'Ç„',
+ 'dž' => 'DŽ',
+ 'Lj' => 'LJ',
+ 'lj' => 'LJ',
+ 'Ç‹' => 'ÇŠ',
+ 'nj' => 'NJ',
+ 'ÇŽ' => 'Ç',
+ 'Ç' => 'Ç',
+ 'Ç’' => 'Ç‘',
+ 'Ç”' => 'Ç“',
+ 'Ç–' => 'Ç•',
+ 'ǘ' => 'Ǘ',
+ 'Çš' => 'Ç™',
+ 'ǜ' => 'Ǜ',
+ 'Ç' => 'ÆŽ',
+ 'ÇŸ' => 'Çž',
+ 'Ç¡' => 'Ç ',
+ 'Ç£' => 'Ç¢',
+ 'ǥ' => 'Ǥ',
+ 'ǧ' => 'Ǧ',
+ 'ǩ' => 'Ǩ',
+ 'ǫ' => 'Ǫ',
+ 'Ç' => 'Ǭ',
+ 'ǯ' => 'Ǯ',
+ 'Dz' => 'DZ',
+ 'dz' => 'DZ',
+ 'ǵ' => 'Ǵ',
+ 'ǹ' => 'Ǹ',
+ 'ǻ' => 'Ǻ',
+ 'ǽ' => 'Ǽ',
+ 'ǿ' => 'Ǿ',
+ 'È' => 'È€',
+ 'ȃ' => 'Ȃ',
+ 'È…' => 'È„',
+ 'ȇ' => 'Ȇ',
+ 'ȉ' => 'Ȉ',
+ 'È‹' => 'ÈŠ',
+ 'È' => 'ÈŒ',
+ 'È' => 'ÈŽ',
+ 'È‘' => 'È',
+ 'È“' => 'È’',
+ 'È•' => 'È”',
+ 'È—' => 'È–',
+ 'ș' => 'Ș',
+ 'È›' => 'Èš',
+ 'È' => 'Èœ',
+ 'ÈŸ' => 'Èž',
+ 'È£' => 'È¢',
+ 'ȥ' => 'Ȥ',
+ 'ȧ' => 'Ȧ',
+ 'ȩ' => 'Ȩ',
+ 'ȫ' => 'Ȫ',
+ 'È' => 'Ȭ',
+ 'ȯ' => 'Ȯ',
+ 'ȱ' => 'Ȱ',
+ 'ȳ' => 'Ȳ',
+ 'ȼ' => 'Ȼ',
+ 'È¿' => 'â±¾',
+ 'ɀ' => 'Ɀ',
+ 'É‚' => 'É',
+ 'ɇ' => 'Ɇ',
+ 'ɉ' => 'Ɉ',
+ 'É‹' => 'ÉŠ',
+ 'É' => 'ÉŒ',
+ 'É' => 'ÉŽ',
+ 'É' => 'Ɐ',
+ 'É‘' => 'â±',
+ 'É’' => 'â±°',
+ 'É“' => 'Æ',
+ 'ɔ' => 'Ɔ',
+ 'ɖ' => 'Ɖ',
+ 'É—' => 'ÆŠ',
+ 'É™' => 'Æ',
+ 'É›' => 'Æ',
+ 'ɜ' => 'Ɜ',
+ 'É ' => 'Æ“',
+ 'ɡ' => 'Ɡ',
+ 'É£' => 'Æ”',
+ 'É¥' => 'êž',
+ 'ɦ' => 'Ɦ',
+ 'ɨ' => 'Ɨ',
+ 'É©' => 'Æ–',
+ 'ɪ' => 'Ɪ',
+ 'É«' => 'â±¢',
+ 'ɬ' => 'êž',
+ 'ɯ' => 'Ɯ',
+ 'ɱ' => 'Ɱ',
+ 'ɲ' => 'Æ',
+ 'ɵ' => 'Ɵ',
+ 'ɽ' => 'Ɽ',
+ 'ʀ' => 'Ʀ',
+ 'ʂ' => 'Ʂ',
+ 'ʃ' => 'Ʃ',
+ 'ʇ' => 'Ʇ',
+ 'ʈ' => 'Ʈ',
+ 'ʉ' => 'Ʉ',
+ 'ʊ' => 'Ʊ',
+ 'ʋ' => 'Ʋ',
+ 'ʌ' => 'Ʌ',
+ 'Ê’' => 'Æ·',
+ 'Ê' => 'êž²',
+ 'Êž' => 'êž°',
+ 'ͅ' => 'Ι',
+ 'ͱ' => 'Ͱ',
+ 'ͳ' => 'Ͳ',
+ 'ͷ' => 'Ͷ',
+ 'ͻ' => 'Ͻ',
+ 'ͼ' => 'Ͼ',
+ 'ͽ' => 'Ͽ',
+ 'ά' => 'Ά',
+ 'Î' => 'Έ',
+ 'ή' => 'Ή',
+ 'ί' => 'Ί',
+ 'α' => 'Α',
+ 'β' => 'Β',
+ 'γ' => 'Γ',
+ 'δ' => 'Δ',
+ 'ε' => 'Ε',
+ 'ζ' => 'Ζ',
+ 'η' => 'Η',
+ 'θ' => 'Θ',
+ 'ι' => 'Ι',
+ 'κ' => 'Κ',
+ 'λ' => 'Λ',
+ 'μ' => 'Μ',
+ 'ν' => 'Î',
+ 'ξ' => 'Ξ',
+ 'ο' => 'Ο',
+ 'Ï€' => 'Î ',
+ 'Ï' => 'Ρ',
+ 'ς' => 'Σ',
+ 'σ' => 'Σ',
+ 'τ' => 'Τ',
+ 'Ï…' => 'Î¥',
+ 'φ' => 'Φ',
+ 'χ' => 'Χ',
+ 'ψ' => 'Ψ',
+ 'ω' => 'Ω',
+ 'ϊ' => 'Ϊ',
+ 'ϋ' => 'Ϋ',
+ 'ό' => 'Ό',
+ 'Ï' => 'ÎŽ',
+ 'ÏŽ' => 'Î',
+ 'Ï' => 'Î’',
+ 'ϑ' => 'Θ',
+ 'ϕ' => 'Φ',
+ 'Ï–' => 'Î ',
+ 'Ï—' => 'Ï',
+ 'ϙ' => 'Ϙ',
+ 'Ï›' => 'Ïš',
+ 'Ï' => 'Ïœ',
+ 'ÏŸ' => 'Ïž',
+ 'Ï¡' => 'Ï ',
+ 'Ï£' => 'Ï¢',
+ 'ϥ' => 'Ϥ',
+ 'ϧ' => 'Ϧ',
+ 'ϩ' => 'Ϩ',
+ 'ϫ' => 'Ϫ',
+ 'Ï' => 'Ϭ',
+ 'ϯ' => 'Ϯ',
+ 'ϰ' => 'Κ',
+ 'ϱ' => 'Ρ',
+ 'ϲ' => 'Ϲ',
+ 'ϳ' => 'Ϳ',
+ 'ϵ' => 'Ε',
+ 'ϸ' => 'Ϸ',
+ 'ϻ' => 'Ϻ',
+ 'а' => 'Ð',
+ 'б' => 'Б',
+ 'в' => 'В',
+ 'г' => 'Г',
+ 'д' => 'Д',
+ 'е' => 'Е',
+ 'ж' => 'Ж',
+ 'з' => 'З',
+ 'и' => 'И',
+ 'й' => 'Й',
+ 'к' => 'К',
+ 'л' => 'Л',
+ 'м' => 'М',
+ 'н' => 'Ð',
+ 'о' => 'О',
+ 'п' => 'П',
+ 'Ñ€' => 'Ð ',
+ 'Ñ' => 'С',
+ 'т' => 'Т',
+ 'у' => 'У',
+ 'ф' => 'Ф',
+ 'Ñ…' => 'Ð¥',
+ 'ц' => 'Ц',
+ 'ч' => 'Ч',
+ 'ш' => 'Ш',
+ 'щ' => 'Щ',
+ 'ъ' => 'Ъ',
+ 'ы' => 'Ы',
+ 'ь' => 'Ь',
+ 'Ñ' => 'Ð',
+ 'ю' => 'Ю',
+ 'Ñ' => 'Я',
+ 'Ñ' => 'Ѐ',
+ 'Ñ‘' => 'Ð',
+ 'ђ' => 'Ђ',
+ 'ѓ' => 'Ѓ',
+ 'є' => 'Є',
+ 'Ñ•' => 'Ð…',
+ 'і' => 'І',
+ 'ї' => 'Ї',
+ 'ј' => 'Ј',
+ 'љ' => 'Љ',
+ 'њ' => 'Њ',
+ 'ћ' => 'Ћ',
+ 'ќ' => 'Ќ',
+ 'Ñ' => 'Ð',
+ 'Ñž' => 'ÐŽ',
+ 'ÑŸ' => 'Ð',
+ 'Ñ¡' => 'Ñ ',
+ 'Ñ£' => 'Ñ¢',
+ 'ѥ' => 'Ѥ',
+ 'ѧ' => 'Ѧ',
+ 'ѩ' => 'Ѩ',
+ 'ѫ' => 'Ѫ',
+ 'Ñ' => 'Ѭ',
+ 'ѯ' => 'Ѯ',
+ 'ѱ' => 'Ѱ',
+ 'ѳ' => 'Ѳ',
+ 'ѵ' => 'Ѵ',
+ 'ѷ' => 'Ѷ',
+ 'ѹ' => 'Ѹ',
+ 'ѻ' => 'Ѻ',
+ 'ѽ' => 'Ѽ',
+ 'ѿ' => 'Ѿ',
+ 'Ò' => 'Ò€',
+ 'Ò‹' => 'ÒŠ',
+ 'Ò' => 'ÒŒ',
+ 'Ò' => 'ÒŽ',
+ 'Ò‘' => 'Ò',
+ 'Ò“' => 'Ò’',
+ 'Ò•' => 'Ò”',
+ 'Ò—' => 'Ò–',
+ 'Ò™' => 'Ò˜',
+ 'Ò›' => 'Òš',
+ 'Ò' => 'Òœ',
+ 'ÒŸ' => 'Òž',
+ 'Ò¡' => 'Ò ',
+ 'Ò£' => 'Ò¢',
+ 'Ò¥' => 'Ò¤',
+ 'Ò§' => 'Ò¦',
+ 'Ò©' => 'Ò¨',
+ 'Ò«' => 'Òª',
+ 'Ò' => 'Ò¬',
+ 'Ò¯' => 'Ò®',
+ 'Ò±' => 'Ò°',
+ 'Ò³' => 'Ò²',
+ 'Òµ' => 'Ò´',
+ 'Ò·' => 'Ò¶',
+ 'Ò¹' => 'Ò¸',
+ 'Ò»' => 'Òº',
+ 'Ò½' => 'Ò¼',
+ 'Ò¿' => 'Ò¾',
+ 'Ó‚' => 'Ó',
+ 'Ó„' => 'Óƒ',
+ 'Ó†' => 'Ó…',
+ 'Óˆ' => 'Ó‡',
+ 'ÓŠ' => 'Ó‰',
+ 'ӌ' => 'Ӌ',
+ 'ÓŽ' => 'Ó',
+ 'Ó' => 'Ó€',
+ 'Ó‘' => 'Ó',
+ 'Ó“' => 'Ó’',
+ 'Ó•' => 'Ó”',
+ 'Ó—' => 'Ó–',
+ 'Ó™' => 'Ó˜',
+ 'Ó›' => 'Óš',
+ 'Ó' => 'Óœ',
+ 'ÓŸ' => 'Óž',
+ 'Ó¡' => 'Ó ',
+ 'Ó£' => 'Ó¢',
+ 'Ó¥' => 'Ó¤',
+ 'Ó§' => 'Ó¦',
+ 'Ó©' => 'Ó¨',
+ 'Ó«' => 'Óª',
+ 'Ó' => 'Ó¬',
+ 'Ó¯' => 'Ó®',
+ 'Ó±' => 'Ó°',
+ 'Ó³' => 'Ó²',
+ 'Óµ' => 'Ó´',
+ 'Ó·' => 'Ó¶',
+ 'Ó¹' => 'Ó¸',
+ 'Ó»' => 'Óº',
+ 'Ó½' => 'Ó¼',
+ 'Ó¿' => 'Ó¾',
+ 'Ô' => 'Ô€',
+ 'Ôƒ' => 'Ô‚',
+ 'Ô…' => 'Ô„',
+ 'Ô‡' => 'Ô†',
+ 'Ô‰' => 'Ôˆ',
+ 'Ô‹' => 'ÔŠ',
+ 'Ô' => 'ÔŒ',
+ 'Ô' => 'ÔŽ',
+ 'Ô‘' => 'Ô',
+ 'Ô“' => 'Ô’',
+ 'Ô•' => 'Ô”',
+ 'Ô—' => 'Ô–',
+ 'Ô™' => 'Ô˜',
+ 'Ô›' => 'Ôš',
+ 'Ô' => 'Ôœ',
+ 'ÔŸ' => 'Ôž',
+ 'Ô¡' => 'Ô ',
+ 'Ô£' => 'Ô¢',
+ 'Ô¥' => 'Ô¤',
+ 'Ô§' => 'Ô¦',
+ 'Ô©' => 'Ô¨',
+ 'Ô«' => 'Ôª',
+ 'Ô' => 'Ô¬',
+ 'Ô¯' => 'Ô®',
+ 'Õ¡' => 'Ô±',
+ 'Õ¢' => 'Ô²',
+ 'Õ£' => 'Ô³',
+ 'Õ¤' => 'Ô´',
+ 'Õ¥' => 'Ôµ',
+ 'Õ¦' => 'Ô¶',
+ 'Õ§' => 'Ô·',
+ 'Õ¨' => 'Ô¸',
+ 'Õ©' => 'Ô¹',
+ 'Õª' => 'Ôº',
+ 'Õ«' => 'Ô»',
+ 'Õ¬' => 'Ô¼',
+ 'Õ' => 'Ô½',
+ 'Õ®' => 'Ô¾',
+ 'Õ¯' => 'Ô¿',
+ 'Õ°' => 'Õ€',
+ 'Õ±' => 'Õ',
+ 'Õ²' => 'Õ‚',
+ 'Õ³' => 'Õƒ',
+ 'Õ´' => 'Õ„',
+ 'Õµ' => 'Õ…',
+ 'Õ¶' => 'Õ†',
+ 'Õ·' => 'Õ‡',
+ 'Õ¸' => 'Õˆ',
+ 'Õ¹' => 'Õ‰',
+ 'Õº' => 'ÕŠ',
+ 'Õ»' => 'Õ‹',
+ 'ռ' => 'Ռ',
+ 'Õ½' => 'Õ',
+ 'Õ¾' => 'ÕŽ',
+ 'Õ¿' => 'Õ',
+ 'Ö€' => 'Õ',
+ 'Ö' => 'Õ‘',
+ 'Ö‚' => 'Õ’',
+ 'Öƒ' => 'Õ“',
+ 'Ö„' => 'Õ”',
+ 'Ö…' => 'Õ•',
+ 'Ö†' => 'Õ–',
+ 'áƒ' => 'á²',
+ 'ბ' => 'Ბ',
+ 'გ' => 'Გ',
+ 'დ' => 'Დ',
+ 'ე' => 'Ე',
+ 'ვ' => 'Ვ',
+ 'ზ' => 'Ზ',
+ 'თ' => 'Თ',
+ 'ი' => 'Ი',
+ 'კ' => 'Კ',
+ 'ლ' => 'Ლ',
+ 'მ' => 'Მ',
+ 'ნ' => 'Ნ',
+ 'áƒ' => 'á²',
+ 'პ' => 'Პ',
+ 'ჟ' => 'Ჟ',
+ 'რ' => 'Რ',
+ 'ს' => 'Ს',
+ 'ტ' => 'Ტ',
+ 'უ' => 'Უ',
+ 'ფ' => 'Ფ',
+ 'ქ' => 'Ქ',
+ 'ღ' => 'Ღ',
+ 'ყ' => 'Ყ',
+ 'შ' => 'Შ',
+ 'ჩ' => 'Ჩ',
+ 'ც' => 'Ც',
+ 'ძ' => 'Ძ',
+ 'წ' => 'Წ',
+ 'áƒ' => 'á²',
+ 'ხ' => 'Ხ',
+ 'ჯ' => 'Ჯ',
+ 'ჰ' => 'Ჰ',
+ 'ჱ' => 'Ჱ',
+ 'ჲ' => 'Ჲ',
+ 'ჳ' => 'Ჳ',
+ 'ჴ' => 'Ჴ',
+ 'ჵ' => 'Ჵ',
+ 'ჶ' => 'Ჶ',
+ 'ჷ' => 'Ჷ',
+ 'ჸ' => 'Ჸ',
+ 'ჹ' => 'Ჹ',
+ 'ჺ' => 'Ჺ',
+ 'ჽ' => 'Ჽ',
+ 'ჾ' => 'Ჾ',
+ 'ჿ' => 'Ჿ',
+ 'á¸' => 'á°',
+ 'á¹' => 'á±',
+ 'áº' => 'á²',
+ 'á»' => 'á³',
+ 'á¼' => 'á´',
+ 'á½' => 'áµ',
+ 'á²€' => 'Ð’',
+ 'á²' => 'Д',
+ 'ᲂ' => 'О',
+ 'ᲃ' => 'С',
+ 'ᲄ' => 'Т',
+ 'ᲅ' => 'Т',
+ 'ᲆ' => 'Ъ',
+ 'ᲇ' => 'Ѣ',
+ 'ᲈ' => 'Ꙋ',
+ 'áµ¹' => 'ê½',
+ 'áµ½' => 'â±£',
+ 'ᶎ' => 'Ᶎ',
+ 'á¸' => 'Ḁ',
+ 'ḃ' => 'Ḃ',
+ 'ḅ' => 'Ḅ',
+ 'ḇ' => 'Ḇ',
+ 'ḉ' => 'Ḉ',
+ 'ḋ' => 'Ḋ',
+ 'á¸' => 'Ḍ',
+ 'á¸' => 'Ḏ',
+ 'ḑ' => 'á¸',
+ 'ḓ' => 'Ḓ',
+ 'ḕ' => 'Ḕ',
+ 'ḗ' => 'Ḗ',
+ 'ḙ' => 'Ḙ',
+ 'ḛ' => 'Ḛ',
+ 'á¸' => 'Ḝ',
+ 'ḟ' => 'Ḟ',
+ 'ḡ' => 'Ḡ',
+ 'ḣ' => 'Ḣ',
+ 'ḥ' => 'Ḥ',
+ 'ḧ' => 'Ḧ',
+ 'ḩ' => 'Ḩ',
+ 'ḫ' => 'Ḫ',
+ 'á¸' => 'Ḭ',
+ 'ḯ' => 'Ḯ',
+ 'ḱ' => 'Ḱ',
+ 'ḳ' => 'Ḳ',
+ 'ḵ' => 'Ḵ',
+ 'ḷ' => 'Ḷ',
+ 'ḹ' => 'Ḹ',
+ 'ḻ' => 'Ḻ',
+ 'ḽ' => 'Ḽ',
+ 'ḿ' => 'Ḿ',
+ 'á¹' => 'á¹€',
+ 'ṃ' => 'Ṃ',
+ 'ṅ' => 'Ṅ',
+ 'ṇ' => 'Ṇ',
+ 'ṉ' => 'Ṉ',
+ 'ṋ' => 'Ṋ',
+ 'á¹' => 'Ṍ',
+ 'á¹' => 'Ṏ',
+ 'ṑ' => 'á¹',
+ 'ṓ' => 'Ṓ',
+ 'ṕ' => 'Ṕ',
+ 'á¹—' => 'á¹–',
+ 'ṙ' => 'Ṙ',
+ 'ṛ' => 'Ṛ',
+ 'á¹' => 'Ṝ',
+ 'ṟ' => 'Ṟ',
+ 'ṡ' => 'Ṡ',
+ 'á¹£' => 'á¹¢',
+ 'ṥ' => 'Ṥ',
+ 'ṧ' => 'Ṧ',
+ 'ṩ' => 'Ṩ',
+ 'ṫ' => 'Ṫ',
+ 'á¹' => 'Ṭ',
+ 'ṯ' => 'Ṯ',
+ 'á¹±' => 'á¹°',
+ 'á¹³' => 'á¹²',
+ 'á¹µ' => 'á¹´',
+ 'ṷ' => 'Ṷ',
+ 'ṹ' => 'Ṹ',
+ 'ṻ' => 'Ṻ',
+ 'á¹½' => 'á¹¼',
+ 'ṿ' => 'Ṿ',
+ 'áº' => 'Ẁ',
+ 'ẃ' => 'Ẃ',
+ 'ẅ' => 'Ẅ',
+ 'ẇ' => 'Ẇ',
+ 'ẉ' => 'Ẉ',
+ 'ẋ' => 'Ẋ',
+ 'áº' => 'Ẍ',
+ 'áº' => 'Ẏ',
+ 'ẑ' => 'áº',
+ 'ẓ' => 'Ẓ',
+ 'ẕ' => 'Ẕ',
+ 'ẛ' => 'Ṡ',
+ 'ạ' => 'Ạ',
+ 'ả' => 'Ả',
+ 'ấ' => 'Ấ',
+ 'ầ' => 'Ầ',
+ 'ẩ' => 'Ẩ',
+ 'ẫ' => 'Ẫ',
+ 'áº' => 'Ậ',
+ 'ắ' => 'Ắ',
+ 'ằ' => 'Ằ',
+ 'ẳ' => 'Ẳ',
+ 'ẵ' => 'Ẵ',
+ 'ặ' => 'Ặ',
+ 'ẹ' => 'Ẹ',
+ 'ẻ' => 'Ẻ',
+ 'ẽ' => 'Ẽ',
+ 'ế' => 'Ế',
+ 'á»' => 'Ề',
+ 'ể' => 'Ể',
+ 'ễ' => 'Ễ',
+ 'ệ' => 'Ệ',
+ 'ỉ' => 'Ỉ',
+ 'ị' => 'Ị',
+ 'á»' => 'Ọ',
+ 'á»' => 'Ỏ',
+ 'ố' => 'á»',
+ 'ồ' => 'Ồ',
+ 'ổ' => 'Ổ',
+ 'á»—' => 'á»–',
+ 'ộ' => 'Ộ',
+ 'ớ' => 'Ớ',
+ 'á»' => 'Ờ',
+ 'ở' => 'Ở',
+ 'ỡ' => 'Ỡ',
+ 'ợ' => 'Ợ',
+ 'ụ' => 'Ụ',
+ 'ủ' => 'Ủ',
+ 'ứ' => 'Ứ',
+ 'ừ' => 'Ừ',
+ 'á»' => 'Ử',
+ 'ữ' => 'Ữ',
+ 'á»±' => 'á»°',
+ 'ỳ' => 'Ỳ',
+ 'ỵ' => 'Ỵ',
+ 'ỷ' => 'Ỷ',
+ 'ỹ' => 'Ỹ',
+ 'ỻ' => 'Ỻ',
+ 'ỽ' => 'Ỽ',
+ 'ỿ' => 'Ỿ',
+ 'ἀ' => 'Ἀ',
+ 'á¼' => 'Ἁ',
+ 'ἂ' => 'Ἂ',
+ 'ἃ' => 'Ἃ',
+ 'ἄ' => 'Ἄ',
+ 'á¼…' => 'á¼',
+ 'ἆ' => 'Ἆ',
+ 'ἇ' => 'á¼',
+ 'á¼' => 'Ἐ',
+ 'ἑ' => 'Ἑ',
+ 'ἒ' => 'Ἒ',
+ 'ἓ' => 'Ἓ',
+ 'ἔ' => 'Ἔ',
+ 'ἕ' => 'á¼',
+ 'ἠ' => 'Ἠ',
+ 'ἡ' => 'Ἡ',
+ 'ἢ' => 'Ἢ',
+ 'ἣ' => 'Ἣ',
+ 'ἤ' => 'Ἤ',
+ 'á¼¥' => 'á¼',
+ 'ἦ' => 'Ἦ',
+ 'ἧ' => 'Ἧ',
+ 'ἰ' => 'Ἰ',
+ 'á¼±' => 'á¼¹',
+ 'ἲ' => 'Ἲ',
+ 'á¼³' => 'á¼»',
+ 'á¼´' => 'á¼¼',
+ 'á¼µ' => 'á¼½',
+ 'ἶ' => 'Ἶ',
+ 'ἷ' => 'Ἷ',
+ 'ὀ' => 'Ὀ',
+ 'á½' => 'Ὁ',
+ 'ὂ' => 'Ὂ',
+ 'ὃ' => 'Ὃ',
+ 'ὄ' => 'Ὄ',
+ 'á½…' => 'á½',
+ 'ὑ' => 'Ὑ',
+ 'ὓ' => 'Ὓ',
+ 'ὕ' => 'á½',
+ 'ὗ' => 'Ὗ',
+ 'ὠ' => 'Ὠ',
+ 'ὡ' => 'Ὡ',
+ 'ὢ' => 'Ὢ',
+ 'ὣ' => 'Ὣ',
+ 'ὤ' => 'Ὤ',
+ 'á½¥' => 'á½',
+ 'ὦ' => 'Ὦ',
+ 'ὧ' => 'Ὧ',
+ 'ὰ' => 'Ὰ',
+ 'á½±' => 'á¾»',
+ 'ὲ' => 'Ὲ',
+ 'έ' => 'Έ',
+ 'á½´' => 'á¿Š',
+ 'á½µ' => 'á¿‹',
+ 'ὶ' => 'Ὶ',
+ 'á½·' => 'á¿›',
+ 'ὸ' => 'Ὸ',
+ 'ό' => 'Ό',
+ 'ὺ' => 'Ὺ',
+ 'á½»' => 'á¿«',
+ 'ὼ' => 'Ὼ',
+ 'á½½' => 'á¿»',
+ 'ᾀ' => 'ἈΙ',
+ 'á¾' => 'ἉΙ',
+ 'ᾂ' => 'ἊΙ',
+ 'ᾃ' => 'ἋΙ',
+ 'ᾄ' => 'ἌΙ',
+ 'á¾…' => 'á¼Î™',
+ 'ᾆ' => 'ἎΙ',
+ 'ᾇ' => 'á¼Î™',
+ 'á¾' => 'ἨΙ',
+ 'ᾑ' => 'ἩΙ',
+ 'ᾒ' => 'ἪΙ',
+ 'ᾓ' => 'ἫΙ',
+ 'ᾔ' => 'ἬΙ',
+ 'ᾕ' => 'á¼Î™',
+ 'ᾖ' => 'ἮΙ',
+ 'ᾗ' => 'ἯΙ',
+ 'ᾠ' => 'ὨΙ',
+ 'ᾡ' => 'ὩΙ',
+ 'ᾢ' => 'ὪΙ',
+ 'ᾣ' => 'ὫΙ',
+ 'ᾤ' => 'ὬΙ',
+ 'á¾¥' => 'á½Î™',
+ 'ᾦ' => 'ὮΙ',
+ 'ᾧ' => 'ὯΙ',
+ 'ᾰ' => 'Ᾰ',
+ 'á¾±' => 'á¾¹',
+ 'ᾳ' => 'ΑΙ',
+ 'ι' => 'Ι',
+ 'ῃ' => 'ΗΙ',
+ 'á¿' => 'Ῐ',
+ 'á¿‘' => 'á¿™',
+ 'ῠ' => 'Ῠ',
+ 'á¿¡' => 'á¿©',
+ 'ῥ' => 'Ῥ',
+ 'ῳ' => 'ΩΙ',
+ 'ⅎ' => 'Ⅎ',
+ 'â…°' => 'â… ',
+ 'â…±' => 'â…¡',
+ 'â…²' => 'â…¢',
+ 'â…³' => 'â…£',
+ 'â…´' => 'â…¤',
+ 'â…µ' => 'â…¥',
+ 'â…¶' => 'â…¦',
+ 'â…·' => 'â…§',
+ 'â…¸' => 'â…¨',
+ 'â…¹' => 'â…©',
+ 'â…º' => 'â…ª',
+ 'â…»' => 'â…«',
+ 'â…¼' => 'â…¬',
+ 'â…½' => 'â…',
+ 'â…¾' => 'â…®',
+ 'â…¿' => 'â…¯',
+ 'ↄ' => 'Ↄ',
+ 'â“' => 'â’¶',
+ 'â“‘' => 'â’·',
+ 'â“’' => 'â’¸',
+ 'â““' => 'â’¹',
+ 'â“”' => 'â’º',
+ 'â“•' => 'â’»',
+ 'â“–' => 'â’¼',
+ 'â“—' => 'â’½',
+ 'ⓘ' => 'Ⓘ',
+ 'â“™' => 'â’¿',
+ 'â“š' => 'â“€',
+ 'â“›' => 'â“',
+ 'ⓜ' => 'Ⓜ',
+ 'â“' => 'Ⓝ',
+ 'â“ž' => 'â“„',
+ 'â“Ÿ' => 'â“…',
+ 'ⓠ' => 'Ⓠ',
+ 'ⓡ' => 'Ⓡ',
+ 'ⓢ' => 'Ⓢ',
+ 'ⓣ' => 'Ⓣ',
+ 'ⓤ' => 'Ⓤ',
+ 'â“¥' => 'â“‹',
+ 'ⓦ' => 'Ⓦ',
+ 'ⓧ' => 'â“',
+ 'ⓨ' => 'Ⓨ',
+ 'â“©' => 'â“',
+ 'â°°' => 'â°€',
+ 'â°±' => 'â°',
+ 'â°²' => 'â°‚',
+ 'â°³' => 'â°ƒ',
+ 'â°´' => 'â°„',
+ 'â°µ' => 'â°…',
+ 'â°¶' => 'â°†',
+ 'â°·' => 'â°‡',
+ 'â°¸' => 'â°ˆ',
+ 'â°¹' => 'â°‰',
+ 'â°º' => 'â°Š',
+ 'â°»' => 'â°‹',
+ 'ⰼ' => 'Ⰼ',
+ 'â°½' => 'â°',
+ 'â°¾' => 'â°Ž',
+ 'â°¿' => 'â°',
+ 'â±€' => 'â°',
+ 'â±' => 'â°‘',
+ 'ⱂ' => 'Ⱂ',
+ 'ⱃ' => 'Ⱃ',
+ 'ⱄ' => 'Ⱄ',
+ 'â±…' => 'â°•',
+ 'ⱆ' => 'Ⱆ',
+ 'ⱇ' => 'Ⱇ',
+ 'ⱈ' => 'Ⱈ',
+ 'ⱉ' => 'Ⱉ',
+ 'ⱊ' => 'Ⱊ',
+ 'ⱋ' => 'Ⱋ',
+ 'ⱌ' => 'Ⱌ',
+ 'â±' => 'â°',
+ 'ⱎ' => 'Ⱎ',
+ 'â±' => 'â°Ÿ',
+ 'â±' => 'â° ',
+ 'ⱑ' => 'Ⱑ',
+ 'â±’' => 'â°¢',
+ 'ⱓ' => 'Ⱓ',
+ 'â±”' => 'â°¤',
+ 'ⱕ' => 'Ⱕ',
+ 'â±–' => 'â°¦',
+ 'â±—' => 'â°§',
+ 'ⱘ' => 'Ⱘ',
+ 'â±™' => 'â°©',
+ 'ⱚ' => 'Ⱚ',
+ 'â±›' => 'â°«',
+ 'ⱜ' => 'Ⱜ',
+ 'â±' => 'â°',
+ 'ⱞ' => 'Ⱞ',
+ 'ⱡ' => 'Ⱡ',
+ 'ⱥ' => 'Ⱥ',
+ 'ⱦ' => 'Ⱦ',
+ 'ⱨ' => 'Ⱨ',
+ 'ⱪ' => 'Ⱪ',
+ 'ⱬ' => 'Ⱬ',
+ 'â±³' => 'â±²',
+ 'ⱶ' => 'Ⱶ',
+ 'â²' => 'â²€',
+ 'ⲃ' => 'Ⲃ',
+ 'ⲅ' => 'Ⲅ',
+ 'ⲇ' => 'Ⲇ',
+ 'ⲉ' => 'Ⲉ',
+ 'ⲋ' => 'Ⲋ',
+ 'â²' => 'Ⲍ',
+ 'â²' => 'Ⲏ',
+ 'ⲑ' => 'â²',
+ 'ⲓ' => 'Ⲓ',
+ 'ⲕ' => 'Ⲕ',
+ 'â²—' => 'â²–',
+ 'ⲙ' => 'Ⲙ',
+ 'ⲛ' => 'Ⲛ',
+ 'â²' => 'Ⲝ',
+ 'ⲟ' => 'Ⲟ',
+ 'ⲡ' => 'Ⲡ',
+ 'â²£' => 'â²¢',
+ 'ⲥ' => 'Ⲥ',
+ 'ⲧ' => 'Ⲧ',
+ 'ⲩ' => 'Ⲩ',
+ 'ⲫ' => 'Ⲫ',
+ 'â²' => 'Ⲭ',
+ 'ⲯ' => 'Ⲯ',
+ 'â²±' => 'â²°',
+ 'â²³' => 'â²²',
+ 'â²µ' => 'â²´',
+ 'ⲷ' => 'Ⲷ',
+ 'ⲹ' => 'Ⲹ',
+ 'ⲻ' => 'Ⲻ',
+ 'â²½' => 'â²¼',
+ 'ⲿ' => 'Ⲿ',
+ 'â³' => 'â³€',
+ 'ⳃ' => 'Ⳃ',
+ 'ⳅ' => 'Ⳅ',
+ 'ⳇ' => 'Ⳇ',
+ 'ⳉ' => 'Ⳉ',
+ 'ⳋ' => 'Ⳋ',
+ 'â³' => 'Ⳍ',
+ 'â³' => 'Ⳏ',
+ 'ⳑ' => 'â³',
+ 'ⳓ' => 'Ⳓ',
+ 'ⳕ' => 'Ⳕ',
+ 'â³—' => 'â³–',
+ 'ⳙ' => 'Ⳙ',
+ 'ⳛ' => 'Ⳛ',
+ 'â³' => 'Ⳝ',
+ 'ⳟ' => 'Ⳟ',
+ 'ⳡ' => 'Ⳡ',
+ 'â³£' => 'â³¢',
+ 'ⳬ' => 'Ⳬ',
+ 'â³®' => 'â³',
+ 'â³³' => 'â³²',
+ 'â´€' => 'á‚ ',
+ 'â´' => 'á‚¡',
+ 'â´‚' => 'á‚¢',
+ 'â´ƒ' => 'á‚£',
+ 'ⴄ' => 'Ⴄ',
+ 'â´…' => 'á‚¥',
+ 'ⴆ' => 'Ⴆ',
+ 'ⴇ' => 'Ⴇ',
+ 'ⴈ' => 'Ⴈ',
+ 'â´‰' => 'á‚©',
+ 'ⴊ' => 'Ⴊ',
+ 'â´‹' => 'á‚«',
+ 'ⴌ' => 'Ⴌ',
+ 'â´' => 'á‚',
+ 'â´Ž' => 'á‚®',
+ 'â´' => 'Ⴏ',
+ 'â´' => 'á‚°',
+ 'ⴑ' => 'Ⴑ',
+ 'ⴒ' => 'Ⴒ',
+ 'ⴓ' => 'Ⴓ',
+ 'â´”' => 'á‚´',
+ 'ⴕ' => 'Ⴕ',
+ 'ⴖ' => 'Ⴖ',
+ 'â´—' => 'á‚·',
+ 'ⴘ' => 'Ⴘ',
+ 'ⴙ' => 'Ⴙ',
+ 'ⴚ' => 'Ⴚ',
+ 'â´›' => 'á‚»',
+ 'ⴜ' => 'Ⴜ',
+ 'â´' => 'Ⴝ',
+ 'ⴞ' => 'Ⴞ',
+ 'â´Ÿ' => 'á‚¿',
+ 'ⴠ' => 'Ⴠ',
+ 'â´¡' => 'áƒ',
+ 'ⴢ' => 'Ⴢ',
+ 'ⴣ' => 'Ⴣ',
+ 'ⴤ' => 'Ⴤ',
+ 'ⴥ' => 'Ⴥ',
+ 'ⴧ' => 'Ⴧ',
+ 'â´' => 'áƒ',
+ 'ê™' => 'Ꙁ',
+ 'ꙃ' => 'Ꙃ',
+ 'ꙅ' => 'Ꙅ',
+ 'ꙇ' => 'Ꙇ',
+ 'ꙉ' => 'Ꙉ',
+ 'ꙋ' => 'Ꙋ',
+ 'ê™' => 'Ꙍ',
+ 'ê™' => 'Ꙏ',
+ 'ꙑ' => 'ê™',
+ 'ꙓ' => 'Ꙓ',
+ 'ꙕ' => 'Ꙕ',
+ 'ê™—' => 'ê™–',
+ 'ꙙ' => 'Ꙙ',
+ 'ꙛ' => 'Ꙛ',
+ 'ê™' => 'Ꙝ',
+ 'ꙟ' => 'Ꙟ',
+ 'ꙡ' => 'ê™ ',
+ 'ꙣ' => 'Ꙣ',
+ 'ꙥ' => 'Ꙥ',
+ 'ꙧ' => 'Ꙧ',
+ 'ꙩ' => 'Ꙩ',
+ 'ꙫ' => 'Ꙫ',
+ 'ê™' => 'Ꙭ',
+ 'êš' => 'Ꚁ',
+ 'ꚃ' => 'Ꚃ',
+ 'êš…' => 'êš„',
+ 'ꚇ' => 'Ꚇ',
+ 'ꚉ' => 'Ꚉ',
+ 'ꚋ' => 'Ꚋ',
+ 'êš' => 'Ꚍ',
+ 'êš' => 'Ꚏ',
+ 'êš‘' => 'êš',
+ 'êš“' => 'êš’',
+ 'êš•' => 'êš”',
+ 'êš—' => 'êš–',
+ 'ꚙ' => 'Ꚙ',
+ 'êš›' => 'êšš',
+ 'ꜣ' => 'Ꜣ',
+ 'ꜥ' => 'Ꜥ',
+ 'ꜧ' => 'Ꜧ',
+ 'ꜩ' => 'Ꜩ',
+ 'ꜫ' => 'Ꜫ',
+ 'êœ' => 'Ꜭ',
+ 'ꜯ' => 'Ꜯ',
+ 'ꜳ' => 'Ꜳ',
+ 'ꜵ' => 'Ꜵ',
+ 'ꜷ' => 'Ꜷ',
+ 'ꜹ' => 'Ꜹ',
+ 'ꜻ' => 'Ꜻ',
+ 'ꜽ' => 'Ꜽ',
+ 'ꜿ' => 'Ꜿ',
+ 'ê' => 'ê€',
+ 'êƒ' => 'ê‚',
+ 'ê…' => 'ê„',
+ 'ê‡' => 'ê†',
+ 'ê‰' => 'êˆ',
+ 'ê‹' => 'êŠ',
+ 'ê' => 'êŒ',
+ 'ê' => 'êŽ',
+ 'ê‘' => 'ê',
+ 'ê“' => 'ê’',
+ 'ê•' => 'ê”',
+ 'ê—' => 'ê–',
+ 'ê™' => 'ê˜',
+ 'ê›' => 'êš',
+ 'ê' => 'êœ',
+ 'êŸ' => 'êž',
+ 'ê¡' => 'ê ',
+ 'ê£' => 'ê¢',
+ 'ê¥' => 'ê¤',
+ 'ê§' => 'ê¦',
+ 'ê©' => 'ê¨',
+ 'ê«' => 'êª',
+ 'ê' => 'ê¬',
+ 'ê¯' => 'ê®',
+ 'êº' => 'ê¹',
+ 'ê¼' => 'ê»',
+ 'ê¿' => 'ê¾',
+ 'êž' => 'Ꞁ',
+ 'ꞃ' => 'Ꞃ',
+ 'êž…' => 'êž„',
+ 'ꞇ' => 'Ꞇ',
+ 'ꞌ' => 'Ꞌ',
+ 'êž‘' => 'êž',
+ 'êž“' => 'êž’',
+ 'ꞔ' => 'Ꞔ',
+ 'êž—' => 'êž–',
+ 'ꞙ' => 'Ꞙ',
+ 'êž›' => 'êžš',
+ 'êž' => 'êžœ',
+ 'ꞟ' => 'Ꞟ',
+ 'êž¡' => 'êž ',
+ 'ꞣ' => 'Ꞣ',
+ 'ꞥ' => 'Ꞥ',
+ 'ꞧ' => 'Ꞧ',
+ 'ꞩ' => 'Ꞩ',
+ 'êžµ' => 'êž´',
+ 'ꞷ' => 'Ꞷ',
+ 'ꞹ' => 'Ꞹ',
+ 'ꞻ' => 'Ꞻ',
+ 'êž½' => 'êž¼',
+ 'êž¿' => 'êž¾',
+ 'ꟃ' => 'Ꟃ',
+ 'ꟈ' => 'Ꟈ',
+ 'ꟊ' => 'Ꟊ',
+ 'ꟶ' => 'Ꟶ',
+ 'ê“' => 'êž³',
+ 'ê°' => 'Ꭰ',
+ 'ê±' => 'Ꭱ',
+ 'ê²' => 'Ꭲ',
+ 'ê³' => 'Ꭳ',
+ 'ê´' => 'Ꭴ',
+ 'êµ' => 'Ꭵ',
+ 'ê¶' => 'Ꭶ',
+ 'ê·' => 'Ꭷ',
+ 'ê¸' => 'Ꭸ',
+ 'ê¹' => 'Ꭹ',
+ 'êº' => 'Ꭺ',
+ 'ê»' => 'Ꭻ',
+ 'ê¼' => 'Ꭼ',
+ 'ê½' => 'áŽ',
+ 'ê¾' => 'Ꭾ',
+ 'ê¿' => 'Ꭿ',
+ 'ꮀ' => 'Ꮀ',
+ 'ê®' => 'Ꮁ',
+ 'ꮂ' => 'Ꮂ',
+ 'ꮃ' => 'Ꮃ',
+ 'ꮄ' => 'Ꮄ',
+ 'ꮅ' => 'Ꮅ',
+ 'ꮆ' => 'Ꮆ',
+ 'ꮇ' => 'Ꮇ',
+ 'ꮈ' => 'Ꮈ',
+ 'ꮉ' => 'Ꮉ',
+ 'ꮊ' => 'Ꮊ',
+ 'ꮋ' => 'Ꮋ',
+ 'ꮌ' => 'Ꮌ',
+ 'ê®' => 'Ꮍ',
+ 'ꮎ' => 'Ꮎ',
+ 'ê®' => 'Ꮏ',
+ 'ê®' => 'á€',
+ 'ꮑ' => 'á',
+ 'ê®’' => 'á‚',
+ 'ꮓ' => 'áƒ',
+ 'ê®”' => 'á„',
+ 'ꮕ' => 'á…',
+ 'ê®–' => 'á†',
+ 'ê®—' => 'á‡',
+ 'ꮘ' => 'áˆ',
+ 'ê®™' => 'á‰',
+ 'ꮚ' => 'áŠ',
+ 'ê®›' => 'á‹',
+ 'ꮜ' => 'áŒ',
+ 'ê®' => 'á',
+ 'ꮞ' => 'áŽ',
+ 'ꮟ' => 'á',
+ 'ê® ' => 'á',
+ 'ꮡ' => 'á‘',
+ 'ꮢ' => 'á’',
+ 'ꮣ' => 'á“',
+ 'ꮤ' => 'á”',
+ 'ꮥ' => 'á•',
+ 'ꮦ' => 'á–',
+ 'ꮧ' => 'á—',
+ 'ꮨ' => 'á˜',
+ 'ꮩ' => 'á™',
+ 'ꮪ' => 'áš',
+ 'ꮫ' => 'á›',
+ 'ꮬ' => 'áœ',
+ 'ê®' => 'á',
+ 'ê®®' => 'áž',
+ 'ꮯ' => 'áŸ',
+ 'ê®°' => 'á ',
+ 'ê®±' => 'á¡',
+ 'ꮲ' => 'á¢',
+ 'ꮳ' => 'á£',
+ 'ê®´' => 'á¤',
+ 'ꮵ' => 'á¥',
+ 'ꮶ' => 'á¦',
+ 'ê®·' => 'á§',
+ 'ꮸ' => 'á¨',
+ 'ꮹ' => 'á©',
+ 'ꮺ' => 'áª',
+ 'ê®»' => 'á«',
+ 'ꮼ' => 'á¬',
+ 'ꮽ' => 'á',
+ 'ꮾ' => 'á®',
+ 'ꮿ' => 'á¯',
+ 'ï½' => 'A',
+ 'b' => 'B',
+ 'c' => 'C',
+ 'd' => 'D',
+ 'ï½…' => 'ï¼¥',
+ 'f' => 'F',
+ 'g' => 'G',
+ 'h' => 'H',
+ 'i' => 'I',
+ 'j' => 'J',
+ 'k' => 'K',
+ 'l' => 'L',
+ 'ï½' => 'ï¼',
+ 'n' => 'N',
+ 'ï½' => 'O',
+ 'ï½' => 'ï¼°',
+ 'q' => 'Q',
+ 'ï½’' => 'ï¼²',
+ 's' => 'S',
+ 'ï½”' => 'ï¼´',
+ 'u' => 'U',
+ 'v' => 'V',
+ 'ï½—' => 'ï¼·',
+ 'x' => 'X',
+ 'ï½™' => 'ï¼¹',
+ 'z' => 'Z',
+ 'ð¨' => 'ð€',
+ 'ð©' => 'ð',
+ 'ðª' => 'ð‚',
+ 'ð«' => 'ðƒ',
+ 'ð¬' => 'ð„',
+ 'ð' => 'ð…',
+ 'ð®' => 'ð†',
+ 'ð¯' => 'ð‡',
+ 'ð°' => 'ðˆ',
+ 'ð±' => 'ð‰',
+ 'ð²' => 'ðŠ',
+ 'ð³' => 'ð‹',
+ 'ð´' => 'ðŒ',
+ 'ðµ' => 'ð',
+ 'ð¶' => 'ðŽ',
+ 'ð·' => 'ð',
+ 'ð¸' => 'ð',
+ 'ð¹' => 'ð‘',
+ 'ðº' => 'ð’',
+ 'ð»' => 'ð“',
+ 'ð¼' => 'ð”',
+ 'ð½' => 'ð•',
+ 'ð¾' => 'ð–',
+ 'ð¿' => 'ð—',
+ 'ð‘€' => 'ð˜',
+ 'ð‘' => 'ð™',
+ 'ð‘‚' => 'ðš',
+ 'ð‘ƒ' => 'ð›',
+ 'ð‘„' => 'ðœ',
+ 'ð‘…' => 'ð',
+ 'ð‘†' => 'ðž',
+ 'ð‘‡' => 'ðŸ',
+ 'ð‘ˆ' => 'ð ',
+ 'ð‘‰' => 'ð¡',
+ 'ð‘Š' => 'ð¢',
+ 'ð‘‹' => 'ð£',
+ 'ð‘Œ' => 'ð¤',
+ 'ð‘' => 'ð¥',
+ 'ð‘Ž' => 'ð¦',
+ 'ð‘' => 'ð§',
+ 'ð“˜' => 'ð’°',
+ 'ð“™' => 'ð’±',
+ 'ð“š' => 'ð’²',
+ 'ð“›' => 'ð’³',
+ 'ð“œ' => 'ð’´',
+ 'ð“' => 'ð’µ',
+ 'ð“ž' => 'ð’¶',
+ 'ð“Ÿ' => 'ð’·',
+ 'ð“ ' => 'ð’¸',
+ 'ð“¡' => 'ð’¹',
+ 'ð“¢' => 'ð’º',
+ 'ð“£' => 'ð’»',
+ 'ð“¤' => 'ð’¼',
+ 'ð“¥' => 'ð’½',
+ 'ð“¦' => 'ð’¾',
+ 'ð“§' => 'ð’¿',
+ 'ð“¨' => 'ð“€',
+ 'ð“©' => 'ð“',
+ 'ð“ª' => 'ð“‚',
+ 'ð“«' => 'ð“ƒ',
+ 'ð“¬' => 'ð“„',
+ 'ð“' => 'ð“…',
+ 'ð“®' => 'ð“†',
+ 'ð“¯' => 'ð“‡',
+ 'ð“°' => 'ð“ˆ',
+ 'ð“±' => 'ð“‰',
+ 'ð“²' => 'ð“Š',
+ 'ð“³' => 'ð“‹',
+ 'ð“´' => 'ð“Œ',
+ 'ð“µ' => 'ð“',
+ 'ð“¶' => 'ð“Ž',
+ 'ð“·' => 'ð“',
+ 'ð“¸' => 'ð“',
+ 'ð“¹' => 'ð“‘',
+ 'ð“º' => 'ð“’',
+ 'ð“»' => 'ð““',
+ 'ð³€' => 'ð²€',
+ 'ð³' => 'ð²',
+ 'ð³‚' => 'ð²‚',
+ 'ð³ƒ' => 'ð²ƒ',
+ 'ð³„' => 'ð²„',
+ 'ð³…' => 'ð²…',
+ 'ð³†' => 'ð²†',
+ 'ð³‡' => 'ð²‡',
+ 'ð³ˆ' => 'ð²ˆ',
+ 'ð³‰' => 'ð²‰',
+ 'ð³Š' => 'ð²Š',
+ 'ð³‹' => 'ð²‹',
+ 'ð³Œ' => 'ð²Œ',
+ 'ð³' => 'ð²',
+ 'ð³Ž' => 'ð²Ž',
+ 'ð³' => 'ð²',
+ 'ð³' => 'ð²',
+ 'ð³‘' => 'ð²‘',
+ 'ð³’' => 'ð²’',
+ 'ð³“' => 'ð²“',
+ 'ð³”' => 'ð²”',
+ 'ð³•' => 'ð²•',
+ 'ð³–' => 'ð²–',
+ 'ð³—' => 'ð²—',
+ 'ð³˜' => 'ð²˜',
+ 'ð³™' => 'ð²™',
+ 'ð³š' => 'ð²š',
+ 'ð³›' => 'ð²›',
+ 'ð³œ' => 'ð²œ',
+ 'ð³' => 'ð²',
+ 'ð³ž' => 'ð²ž',
+ 'ð³Ÿ' => 'ð²Ÿ',
+ 'ð³ ' => 'ð² ',
+ 'ð³¡' => 'ð²¡',
+ 'ð³¢' => 'ð²¢',
+ 'ð³£' => 'ð²£',
+ 'ð³¤' => 'ð²¤',
+ 'ð³¥' => 'ð²¥',
+ 'ð³¦' => 'ð²¦',
+ 'ð³§' => 'ð²§',
+ 'ð³¨' => 'ð²¨',
+ 'ð³©' => 'ð²©',
+ 'ð³ª' => 'ð²ª',
+ 'ð³«' => 'ð²«',
+ 'ð³¬' => 'ð²¬',
+ 'ð³' => 'ð²',
+ 'ð³®' => 'ð²®',
+ 'ð³¯' => 'ð²¯',
+ 'ð³°' => 'ð²°',
+ 'ð³±' => 'ð²±',
+ 'ð³²' => 'ð²²',
+ 'ð‘£€' => 'ð‘¢ ',
+ 'ð‘£' => '𑢡',
+ '𑣂' => '𑢢',
+ '𑣃' => '𑢣',
+ '𑣄' => '𑢤',
+ 'ð‘£…' => 'ð‘¢¥',
+ '𑣆' => '𑢦',
+ '𑣇' => '𑢧',
+ '𑣈' => '𑢨',
+ '𑣉' => '𑢩',
+ '𑣊' => '𑢪',
+ '𑣋' => '𑢫',
+ '𑣌' => '𑢬',
+ 'ð‘£' => 'ð‘¢',
+ '𑣎' => '𑢮',
+ 'ð‘£' => '𑢯',
+ 'ð‘£' => 'ð‘¢°',
+ '𑣑' => '𑢱',
+ 'ð‘£’' => 'ð‘¢²',
+ '𑣓' => '𑢳',
+ 'ð‘£”' => 'ð‘¢´',
+ '𑣕' => '𑢵',
+ '𑣖' => '𑢶',
+ 'ð‘£—' => 'ð‘¢·',
+ '𑣘' => '𑢸',
+ 'ð‘£™' => 'ð‘¢¹',
+ '𑣚' => '𑢺',
+ 'ð‘£›' => 'ð‘¢»',
+ '𑣜' => '𑢼',
+ 'ð‘£' => 'ð‘¢½',
+ '𑣞' => '𑢾',
+ '𑣟' => '𑢿',
+ 'ð–¹ ' => 'ð–¹€',
+ '𖹡' => 'ð–¹',
+ '𖹢' => '𖹂',
+ '𖹣' => '𖹃',
+ '𖹤' => '𖹄',
+ 'ð–¹¥' => 'ð–¹…',
+ '𖹦' => '𖹆',
+ '𖹧' => '𖹇',
+ '𖹨' => '𖹈',
+ '𖹩' => '𖹉',
+ '𖹪' => '𖹊',
+ '𖹫' => '𖹋',
+ '𖹬' => '𖹌',
+ 'ð–¹' => 'ð–¹',
+ '𖹮' => '𖹎',
+ '𖹯' => 'ð–¹',
+ 'ð–¹°' => 'ð–¹',
+ '𖹱' => '𖹑',
+ 'ð–¹²' => 'ð–¹’',
+ '𖹳' => '𖹓',
+ 'ð–¹´' => 'ð–¹”',
+ '𖹵' => '𖹕',
+ '𖹶' => '𖹖',
+ 'ð–¹·' => 'ð–¹—',
+ '𖹸' => '𖹘',
+ 'ð–¹¹' => 'ð–¹™',
+ '𖹺' => '𖹚',
+ 'ð–¹»' => 'ð–¹›',
+ '𖹼' => '𖹜',
+ 'ð–¹½' => 'ð–¹',
+ '𖹾' => '𖹞',
+ '𖹿' => '𖹟',
+ '𞤢' => '𞤀',
+ '𞤣' => 'ðž¤',
+ '𞤤' => '𞤂',
+ '𞤥' => '𞤃',
+ '𞤦' => '𞤄',
+ '𞤧' => '𞤅',
+ '𞤨' => '𞤆',
+ '𞤩' => '𞤇',
+ '𞤪' => '𞤈',
+ '𞤫' => '𞤉',
+ '𞤬' => '𞤊',
+ 'ðž¤' => '𞤋',
+ '𞤮' => '𞤌',
+ '𞤯' => 'ðž¤',
+ '𞤰' => '𞤎',
+ '𞤱' => 'ðž¤',
+ '𞤲' => 'ðž¤',
+ '𞤳' => '𞤑',
+ '𞤴' => '𞤒',
+ '𞤵' => '𞤓',
+ '𞤶' => '𞤔',
+ '𞤷' => '𞤕',
+ '𞤸' => '𞤖',
+ '𞤹' => '𞤗',
+ '𞤺' => '𞤘',
+ '𞤻' => '𞤙',
+ '𞤼' => '𞤚',
+ '𞤽' => '𞤛',
+ '𞤾' => '𞤜',
+ '𞤿' => 'ðž¤',
+ '𞥀' => '𞤞',
+ 'ðž¥' => '𞤟',
+ '𞥂' => '𞤠',
+ '𞥃' => '𞤡',
+ 'ß' => 'SS',
+ 'ff' => 'FF',
+ 'ï¬' => 'FI',
+ 'fl' => 'FL',
+ 'ffi' => 'FFI',
+ 'ffl' => 'FFL',
+ 'ſt' => 'ST',
+ 'st' => 'ST',
+ 'Ö‡' => 'ÔµÕ’',
+ 'ﬓ' => 'ՄՆ',
+ 'ﬔ' => 'ՄԵ',
+ 'ﬕ' => 'ՄԻ',
+ 'ﬖ' => 'ՎՆ',
+ 'ﬗ' => 'ՄԽ',
+ 'ʼn' => 'ʼN',
+ 'Î' => 'ΪÌ',
+ 'ΰ' => 'ΫÌ',
+ 'ǰ' => 'J̌',
+ 'ẖ' => 'H̱',
+ 'ẗ' => 'T̈',
+ 'ẘ' => 'W̊',
+ 'ẙ' => 'Y̊',
+ 'ẚ' => 'Aʾ',
+ 'á½' => 'Υ̓',
+ 'ὒ' => 'Υ̓̀',
+ 'á½”' => 'Υ̓Ì',
+ 'ὖ' => 'Υ̓͂',
+ 'ᾶ' => 'Α͂',
+ 'ῆ' => 'Η͂',
+ 'ῒ' => 'Ϊ̀',
+ 'á¿“' => 'ΪÌ',
+ 'ῖ' => 'Ι͂',
+ 'ῗ' => 'Ϊ͂',
+ 'ῢ' => 'Ϋ̀',
+ 'á¿£' => 'ΫÌ',
+ 'ῤ' => 'Ρ̓',
+ 'ῦ' => 'Υ͂',
+ 'ῧ' => 'Ϋ͂',
+ 'ῶ' => 'Ω͂',
+ 'ᾈ' => 'ἈΙ',
+ 'ᾉ' => 'ἉΙ',
+ 'ᾊ' => 'ἊΙ',
+ 'ᾋ' => 'ἋΙ',
+ 'ᾌ' => 'ἌΙ',
+ 'á¾' => 'á¼Î™',
+ 'ᾎ' => 'ἎΙ',
+ 'á¾' => 'á¼Î™',
+ 'ᾘ' => 'ἨΙ',
+ 'ᾙ' => 'ἩΙ',
+ 'ᾚ' => 'ἪΙ',
+ 'ᾛ' => 'ἫΙ',
+ 'ᾜ' => 'ἬΙ',
+ 'á¾' => 'á¼Î™',
+ 'ᾞ' => 'ἮΙ',
+ 'ᾟ' => 'ἯΙ',
+ 'ᾨ' => 'ὨΙ',
+ 'ᾩ' => 'ὩΙ',
+ 'ᾪ' => 'ὪΙ',
+ 'ᾫ' => 'ὫΙ',
+ 'ᾬ' => 'ὬΙ',
+ 'á¾' => 'á½Î™',
+ 'ᾮ' => 'ὮΙ',
+ 'ᾯ' => 'ὯΙ',
+ 'ᾼ' => 'ΑΙ',
+ 'ῌ' => 'ΗΙ',
+ 'ῼ' => 'ΩΙ',
+ 'ᾲ' => 'ᾺΙ',
+ 'ᾴ' => 'ΆΙ',
+ 'ῂ' => 'ῊΙ',
+ 'ῄ' => 'ΉΙ',
+ 'ῲ' => 'ῺΙ',
+ 'á¿´' => 'ÎΙ',
+ 'ᾷ' => 'Α͂Ι',
+ 'ῇ' => 'Η͂Ι',
+ 'ῷ' => 'Ω͂Ι',
+);
diff --git a/www/modules/civicrm/packages/smarty5/vendor/symfony/polyfill-mbstring/bootstrap.php b/www/modules/civicrm/packages/smarty5/vendor/symfony/polyfill-mbstring/bootstrap.php
new file mode 100644
index 000000000..ecf1a0352
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/symfony/polyfill-mbstring/bootstrap.php
@@ -0,0 +1,151 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+use Symfony\Polyfill\Mbstring as p;
+
+if (\PHP_VERSION_ID >= 80000) {
+ return require __DIR__.'/bootstrap80.php';
+}
+
+if (!function_exists('mb_convert_encoding')) {
+ function mb_convert_encoding($string, $to_encoding, $from_encoding = null) { return p\Mbstring::mb_convert_encoding($string, $to_encoding, $from_encoding); }
+}
+if (!function_exists('mb_decode_mimeheader')) {
+ function mb_decode_mimeheader($string) { return p\Mbstring::mb_decode_mimeheader($string); }
+}
+if (!function_exists('mb_encode_mimeheader')) {
+ function mb_encode_mimeheader($string, $charset = null, $transfer_encoding = null, $newline = "\r\n", $indent = 0) { return p\Mbstring::mb_encode_mimeheader($string, $charset, $transfer_encoding, $newline, $indent); }
+}
+if (!function_exists('mb_decode_numericentity')) {
+ function mb_decode_numericentity($string, $map, $encoding = null) { return p\Mbstring::mb_decode_numericentity($string, $map, $encoding); }
+}
+if (!function_exists('mb_encode_numericentity')) {
+ function mb_encode_numericentity($string, $map, $encoding = null, $hex = false) { return p\Mbstring::mb_encode_numericentity($string, $map, $encoding, $hex); }
+}
+if (!function_exists('mb_convert_case')) {
+ function mb_convert_case($string, $mode, $encoding = null) { return p\Mbstring::mb_convert_case($string, $mode, $encoding); }
+}
+if (!function_exists('mb_internal_encoding')) {
+ function mb_internal_encoding($encoding = null) { return p\Mbstring::mb_internal_encoding($encoding); }
+}
+if (!function_exists('mb_language')) {
+ function mb_language($language = null) { return p\Mbstring::mb_language($language); }
+}
+if (!function_exists('mb_list_encodings')) {
+ function mb_list_encodings() { return p\Mbstring::mb_list_encodings(); }
+}
+if (!function_exists('mb_encoding_aliases')) {
+ function mb_encoding_aliases($encoding) { return p\Mbstring::mb_encoding_aliases($encoding); }
+}
+if (!function_exists('mb_check_encoding')) {
+ function mb_check_encoding($value = null, $encoding = null) { return p\Mbstring::mb_check_encoding($value, $encoding); }
+}
+if (!function_exists('mb_detect_encoding')) {
+ function mb_detect_encoding($string, $encodings = null, $strict = false) { return p\Mbstring::mb_detect_encoding($string, $encodings, $strict); }
+}
+if (!function_exists('mb_detect_order')) {
+ function mb_detect_order($encoding = null) { return p\Mbstring::mb_detect_order($encoding); }
+}
+if (!function_exists('mb_parse_str')) {
+ function mb_parse_str($string, &$result = []) { parse_str($string, $result); return (bool) $result; }
+}
+if (!function_exists('mb_strlen')) {
+ function mb_strlen($string, $encoding = null) { return p\Mbstring::mb_strlen($string, $encoding); }
+}
+if (!function_exists('mb_strpos')) {
+ function mb_strpos($haystack, $needle, $offset = 0, $encoding = null) { return p\Mbstring::mb_strpos($haystack, $needle, $offset, $encoding); }
+}
+if (!function_exists('mb_strtolower')) {
+ function mb_strtolower($string, $encoding = null) { return p\Mbstring::mb_strtolower($string, $encoding); }
+}
+if (!function_exists('mb_strtoupper')) {
+ function mb_strtoupper($string, $encoding = null) { return p\Mbstring::mb_strtoupper($string, $encoding); }
+}
+if (!function_exists('mb_substitute_character')) {
+ function mb_substitute_character($substitute_character = null) { return p\Mbstring::mb_substitute_character($substitute_character); }
+}
+if (!function_exists('mb_substr')) {
+ function mb_substr($string, $start, $length = 2147483647, $encoding = null) { return p\Mbstring::mb_substr($string, $start, $length, $encoding); }
+}
+if (!function_exists('mb_stripos')) {
+ function mb_stripos($haystack, $needle, $offset = 0, $encoding = null) { return p\Mbstring::mb_stripos($haystack, $needle, $offset, $encoding); }
+}
+if (!function_exists('mb_stristr')) {
+ function mb_stristr($haystack, $needle, $before_needle = false, $encoding = null) { return p\Mbstring::mb_stristr($haystack, $needle, $before_needle, $encoding); }
+}
+if (!function_exists('mb_strrchr')) {
+ function mb_strrchr($haystack, $needle, $before_needle = false, $encoding = null) { return p\Mbstring::mb_strrchr($haystack, $needle, $before_needle, $encoding); }
+}
+if (!function_exists('mb_strrichr')) {
+ function mb_strrichr($haystack, $needle, $before_needle = false, $encoding = null) { return p\Mbstring::mb_strrichr($haystack, $needle, $before_needle, $encoding); }
+}
+if (!function_exists('mb_strripos')) {
+ function mb_strripos($haystack, $needle, $offset = 0, $encoding = null) { return p\Mbstring::mb_strripos($haystack, $needle, $offset, $encoding); }
+}
+if (!function_exists('mb_strrpos')) {
+ function mb_strrpos($haystack, $needle, $offset = 0, $encoding = null) { return p\Mbstring::mb_strrpos($haystack, $needle, $offset, $encoding); }
+}
+if (!function_exists('mb_strstr')) {
+ function mb_strstr($haystack, $needle, $before_needle = false, $encoding = null) { return p\Mbstring::mb_strstr($haystack, $needle, $before_needle, $encoding); }
+}
+if (!function_exists('mb_get_info')) {
+ function mb_get_info($type = 'all') { return p\Mbstring::mb_get_info($type); }
+}
+if (!function_exists('mb_http_output')) {
+ function mb_http_output($encoding = null) { return p\Mbstring::mb_http_output($encoding); }
+}
+if (!function_exists('mb_strwidth')) {
+ function mb_strwidth($string, $encoding = null) { return p\Mbstring::mb_strwidth($string, $encoding); }
+}
+if (!function_exists('mb_substr_count')) {
+ function mb_substr_count($haystack, $needle, $encoding = null) { return p\Mbstring::mb_substr_count($haystack, $needle, $encoding); }
+}
+if (!function_exists('mb_output_handler')) {
+ function mb_output_handler($string, $status) { return p\Mbstring::mb_output_handler($string, $status); }
+}
+if (!function_exists('mb_http_input')) {
+ function mb_http_input($type = null) { return p\Mbstring::mb_http_input($type); }
+}
+
+if (!function_exists('mb_convert_variables')) {
+ function mb_convert_variables($to_encoding, $from_encoding, &...$vars) { return p\Mbstring::mb_convert_variables($to_encoding, $from_encoding, ...$vars); }
+}
+
+if (!function_exists('mb_ord')) {
+ function mb_ord($string, $encoding = null) { return p\Mbstring::mb_ord($string, $encoding); }
+}
+if (!function_exists('mb_chr')) {
+ function mb_chr($codepoint, $encoding = null) { return p\Mbstring::mb_chr($codepoint, $encoding); }
+}
+if (!function_exists('mb_scrub')) {
+ function mb_scrub($string, $encoding = null) { $encoding = null === $encoding ? mb_internal_encoding() : $encoding; return mb_convert_encoding($string, $encoding, $encoding); }
+}
+if (!function_exists('mb_str_split')) {
+ function mb_str_split($string, $length = 1, $encoding = null) { return p\Mbstring::mb_str_split($string, $length, $encoding); }
+}
+
+if (!function_exists('mb_str_pad')) {
+ function mb_str_pad(string $string, int $length, string $pad_string = ' ', int $pad_type = STR_PAD_RIGHT, ?string $encoding = null): string { return p\Mbstring::mb_str_pad($string, $length, $pad_string, $pad_type, $encoding); }
+}
+
+if (extension_loaded('mbstring')) {
+ return;
+}
+
+if (!defined('MB_CASE_UPPER')) {
+ define('MB_CASE_UPPER', 0);
+}
+if (!defined('MB_CASE_LOWER')) {
+ define('MB_CASE_LOWER', 1);
+}
+if (!defined('MB_CASE_TITLE')) {
+ define('MB_CASE_TITLE', 2);
+}
diff --git a/www/modules/civicrm/packages/smarty5/vendor/symfony/polyfill-mbstring/bootstrap80.php b/www/modules/civicrm/packages/smarty5/vendor/symfony/polyfill-mbstring/bootstrap80.php
new file mode 100644
index 000000000..2f9fb5b42
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/symfony/polyfill-mbstring/bootstrap80.php
@@ -0,0 +1,147 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+use Symfony\Polyfill\Mbstring as p;
+
+if (!function_exists('mb_convert_encoding')) {
+ function mb_convert_encoding(array|string|null $string, ?string $to_encoding, array|string|null $from_encoding = null): array|string|false { return p\Mbstring::mb_convert_encoding($string ?? '', (string) $to_encoding, $from_encoding); }
+}
+if (!function_exists('mb_decode_mimeheader')) {
+ function mb_decode_mimeheader(?string $string): string { return p\Mbstring::mb_decode_mimeheader((string) $string); }
+}
+if (!function_exists('mb_encode_mimeheader')) {
+ function mb_encode_mimeheader(?string $string, ?string $charset = null, ?string $transfer_encoding = null, ?string $newline = "\r\n", ?int $indent = 0): string { return p\Mbstring::mb_encode_mimeheader((string) $string, $charset, $transfer_encoding, (string) $newline, (int) $indent); }
+}
+if (!function_exists('mb_decode_numericentity')) {
+ function mb_decode_numericentity(?string $string, array $map, ?string $encoding = null): string { return p\Mbstring::mb_decode_numericentity((string) $string, $map, $encoding); }
+}
+if (!function_exists('mb_encode_numericentity')) {
+ function mb_encode_numericentity(?string $string, array $map, ?string $encoding = null, ?bool $hex = false): string { return p\Mbstring::mb_encode_numericentity((string) $string, $map, $encoding, (bool) $hex); }
+}
+if (!function_exists('mb_convert_case')) {
+ function mb_convert_case(?string $string, ?int $mode, ?string $encoding = null): string { return p\Mbstring::mb_convert_case((string) $string, (int) $mode, $encoding); }
+}
+if (!function_exists('mb_internal_encoding')) {
+ function mb_internal_encoding(?string $encoding = null): string|bool { return p\Mbstring::mb_internal_encoding($encoding); }
+}
+if (!function_exists('mb_language')) {
+ function mb_language(?string $language = null): string|bool { return p\Mbstring::mb_language($language); }
+}
+if (!function_exists('mb_list_encodings')) {
+ function mb_list_encodings(): array { return p\Mbstring::mb_list_encodings(); }
+}
+if (!function_exists('mb_encoding_aliases')) {
+ function mb_encoding_aliases(?string $encoding): array { return p\Mbstring::mb_encoding_aliases((string) $encoding); }
+}
+if (!function_exists('mb_check_encoding')) {
+ function mb_check_encoding(array|string|null $value = null, ?string $encoding = null): bool { return p\Mbstring::mb_check_encoding($value, $encoding); }
+}
+if (!function_exists('mb_detect_encoding')) {
+ function mb_detect_encoding(?string $string, array|string|null $encodings = null, ?bool $strict = false): string|false { return p\Mbstring::mb_detect_encoding((string) $string, $encodings, (bool) $strict); }
+}
+if (!function_exists('mb_detect_order')) {
+ function mb_detect_order(array|string|null $encoding = null): array|bool { return p\Mbstring::mb_detect_order($encoding); }
+}
+if (!function_exists('mb_parse_str')) {
+ function mb_parse_str(?string $string, &$result = []): bool { parse_str((string) $string, $result); return (bool) $result; }
+}
+if (!function_exists('mb_strlen')) {
+ function mb_strlen(?string $string, ?string $encoding = null): int { return p\Mbstring::mb_strlen((string) $string, $encoding); }
+}
+if (!function_exists('mb_strpos')) {
+ function mb_strpos(?string $haystack, ?string $needle, ?int $offset = 0, ?string $encoding = null): int|false { return p\Mbstring::mb_strpos((string) $haystack, (string) $needle, (int) $offset, $encoding); }
+}
+if (!function_exists('mb_strtolower')) {
+ function mb_strtolower(?string $string, ?string $encoding = null): string { return p\Mbstring::mb_strtolower((string) $string, $encoding); }
+}
+if (!function_exists('mb_strtoupper')) {
+ function mb_strtoupper(?string $string, ?string $encoding = null): string { return p\Mbstring::mb_strtoupper((string) $string, $encoding); }
+}
+if (!function_exists('mb_substitute_character')) {
+ function mb_substitute_character(string|int|null $substitute_character = null): string|int|bool { return p\Mbstring::mb_substitute_character($substitute_character); }
+}
+if (!function_exists('mb_substr')) {
+ function mb_substr(?string $string, ?int $start, ?int $length = null, ?string $encoding = null): string { return p\Mbstring::mb_substr((string) $string, (int) $start, $length, $encoding); }
+}
+if (!function_exists('mb_stripos')) {
+ function mb_stripos(?string $haystack, ?string $needle, ?int $offset = 0, ?string $encoding = null): int|false { return p\Mbstring::mb_stripos((string) $haystack, (string) $needle, (int) $offset, $encoding); }
+}
+if (!function_exists('mb_stristr')) {
+ function mb_stristr(?string $haystack, ?string $needle, ?bool $before_needle = false, ?string $encoding = null): string|false { return p\Mbstring::mb_stristr((string) $haystack, (string) $needle, (bool) $before_needle, $encoding); }
+}
+if (!function_exists('mb_strrchr')) {
+ function mb_strrchr(?string $haystack, ?string $needle, ?bool $before_needle = false, ?string $encoding = null): string|false { return p\Mbstring::mb_strrchr((string) $haystack, (string) $needle, (bool) $before_needle, $encoding); }
+}
+if (!function_exists('mb_strrichr')) {
+ function mb_strrichr(?string $haystack, ?string $needle, ?bool $before_needle = false, ?string $encoding = null): string|false { return p\Mbstring::mb_strrichr((string) $haystack, (string) $needle, (bool) $before_needle, $encoding); }
+}
+if (!function_exists('mb_strripos')) {
+ function mb_strripos(?string $haystack, ?string $needle, ?int $offset = 0, ?string $encoding = null): int|false { return p\Mbstring::mb_strripos((string) $haystack, (string) $needle, (int) $offset, $encoding); }
+}
+if (!function_exists('mb_strrpos')) {
+ function mb_strrpos(?string $haystack, ?string $needle, ?int $offset = 0, ?string $encoding = null): int|false { return p\Mbstring::mb_strrpos((string) $haystack, (string) $needle, (int) $offset, $encoding); }
+}
+if (!function_exists('mb_strstr')) {
+ function mb_strstr(?string $haystack, ?string $needle, ?bool $before_needle = false, ?string $encoding = null): string|false { return p\Mbstring::mb_strstr((string) $haystack, (string) $needle, (bool) $before_needle, $encoding); }
+}
+if (!function_exists('mb_get_info')) {
+ function mb_get_info(?string $type = 'all'): array|string|int|false { return p\Mbstring::mb_get_info((string) $type); }
+}
+if (!function_exists('mb_http_output')) {
+ function mb_http_output(?string $encoding = null): string|bool { return p\Mbstring::mb_http_output($encoding); }
+}
+if (!function_exists('mb_strwidth')) {
+ function mb_strwidth(?string $string, ?string $encoding = null): int { return p\Mbstring::mb_strwidth((string) $string, $encoding); }
+}
+if (!function_exists('mb_substr_count')) {
+ function mb_substr_count(?string $haystack, ?string $needle, ?string $encoding = null): int { return p\Mbstring::mb_substr_count((string) $haystack, (string) $needle, $encoding); }
+}
+if (!function_exists('mb_output_handler')) {
+ function mb_output_handler(?string $string, ?int $status): string { return p\Mbstring::mb_output_handler((string) $string, (int) $status); }
+}
+if (!function_exists('mb_http_input')) {
+ function mb_http_input(?string $type = null): array|string|false { return p\Mbstring::mb_http_input($type); }
+}
+
+if (!function_exists('mb_convert_variables')) {
+ function mb_convert_variables(?string $to_encoding, array|string|null $from_encoding, mixed &$var, mixed &...$vars): string|false { return p\Mbstring::mb_convert_variables((string) $to_encoding, $from_encoding ?? '', $var, ...$vars); }
+}
+
+if (!function_exists('mb_ord')) {
+ function mb_ord(?string $string, ?string $encoding = null): int|false { return p\Mbstring::mb_ord((string) $string, $encoding); }
+}
+if (!function_exists('mb_chr')) {
+ function mb_chr(?int $codepoint, ?string $encoding = null): string|false { return p\Mbstring::mb_chr((int) $codepoint, $encoding); }
+}
+if (!function_exists('mb_scrub')) {
+ function mb_scrub(?string $string, ?string $encoding = null): string { $encoding ??= mb_internal_encoding(); return mb_convert_encoding((string) $string, $encoding, $encoding); }
+}
+if (!function_exists('mb_str_split')) {
+ function mb_str_split(?string $string, ?int $length = 1, ?string $encoding = null): array { return p\Mbstring::mb_str_split((string) $string, (int) $length, $encoding); }
+}
+
+if (!function_exists('mb_str_pad')) {
+ function mb_str_pad(string $string, int $length, string $pad_string = ' ', int $pad_type = STR_PAD_RIGHT, ?string $encoding = null): string { return p\Mbstring::mb_str_pad($string, $length, $pad_string, $pad_type, $encoding); }
+}
+
+if (extension_loaded('mbstring')) {
+ return;
+}
+
+if (!defined('MB_CASE_UPPER')) {
+ define('MB_CASE_UPPER', 0);
+}
+if (!defined('MB_CASE_LOWER')) {
+ define('MB_CASE_LOWER', 1);
+}
+if (!defined('MB_CASE_TITLE')) {
+ define('MB_CASE_TITLE', 2);
+}
diff --git a/www/modules/civicrm/packages/smarty5/vendor/symfony/polyfill-mbstring/composer.json b/www/modules/civicrm/packages/smarty5/vendor/symfony/polyfill-mbstring/composer.json
new file mode 100644
index 000000000..bd99d4b9d
--- /dev/null
+++ b/www/modules/civicrm/packages/smarty5/vendor/symfony/polyfill-mbstring/composer.json
@@ -0,0 +1,38 @@
+{
+ "name": "symfony/polyfill-mbstring",
+ "type": "library",
+ "description": "Symfony polyfill for the Mbstring extension",
+ "keywords": ["polyfill", "shim", "compatibility", "portable", "mbstring"],
+ "homepage": "https://symfony.com",
+ "license": "MIT",
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "require": {
+ "php": ">=7.1"
+ },
+ "provide": {
+ "ext-mbstring": "*"
+ },
+ "autoload": {
+ "psr-4": { "Symfony\\Polyfill\\Mbstring\\": "" },
+ "files": [ "bootstrap.php" ]
+ },
+ "suggest": {
+ "ext-mbstring": "For best performance"
+ },
+ "minimum-stability": "dev",
+ "extra": {
+ "thanks": {
+ "name": "symfony/polyfill",
+ "url": "https://github.com/symfony/polyfill"
+ }
+ }
+}
diff --git a/www/modules/civicrm/release-notes.md b/www/modules/civicrm/release-notes.md
index 3a9a8833f..d41dc9fef 100644
--- a/www/modules/civicrm/release-notes.md
+++ b/www/modules/civicrm/release-notes.md
@@ -15,27 +15,171 @@ Other resources for identifying changes are:
* https://github.com/civicrm/civicrm-joomla
* https://github.com/civicrm/civicrm-wordpress
-## CiviCRM 5.70.2
+## CiviCRM 5.74.4
-Released March 2, 2024
+Released June 19, 2024
-- **[Synopsis](release-notes/5.70.2.md#synopsis)**
-- **[Bugs resolved](release-notes/5.70.2.md#bugs)**
-- **[Credits](release-notes/5.70.2.md#credits)**
-- **[Feedback](release-notes/5.70.2.md#feedback)**
+- **[Synopsis](release-notes/5.74.4.md#synopsis)**
+- **[Security advisories](release-notes/5.74.4.md#security)**
+- **[Bugs resolved](release-notes/5.74.4.md#bugs)**
+- **[Credits](release-notes/5.74.4.md#credits)**
+- **[Feedback](release-notes/5.74.4.md#feedback)**
-## CiviCRM 5.70.1
+## CiviCRM 5.74.3
-Released February 22, 2024
+Released June 15, 2024
-- **[Synopsis](release-notes/5.70.1.md#synopsis)**
-- **[Bugs resolved](release-notes/5.70.1.md#bugs)**
-- **[Credits](release-notes/5.70.1.md#credits)**
-- **[Feedback](release-notes/5.70.1.md#feedback)**
+- **[Synopsis](release-notes/5.74.3.md#synopsis)**
+- **[Bugs resolved](release-notes/5.74.3.md#bugs)**
+- **[Credits](release-notes/5.74.3.md#credits)**
+- **[Feedback](release-notes/5.74.3.md#feedback)**
+
+## CiviCRM 5.74.2
+
+Released June 13, 2024
+
+- **[Synopsis](release-notes/5.74.2.md#synopsis)**
+- **[Bugs resolved](release-notes/5.74.2.md#bugs)**
+- **[Credits](release-notes/5.74.2.md#credits)**
+- **[Feedback](release-notes/5.74.2.md#feedback)**
+
+## CiviCRM 5.74.1
+
+Released June 11, 2024
+
+- **[Synopsis](release-notes/5.74.1.md#synopsis)**
+- **[Bugs resolved](release-notes/5.74.1.md#bugs)**
+- **[Credits](release-notes/5.74.1.md#credits)**
+- **[Feedback](release-notes/5.74.1.md#feedback)**
+
+## CiviCRM 5.74.0
+
+Released June 6, 2024
+
+- **[Synopsis](release-notes/5.74.0.md#synopsis)**
+- **[Features](release-notes/5.74.0.md#features)**
+- **[Bugs resolved](release-notes/5.74.0.md#bugs)**
+- **[Miscellany](release-notes/5.74.0.md#misc)**
+- **[Credits](release-notes/5.74.0.md#credits)**
+- **[Feedback](release-notes/5.74.0.md#feedback)**
+
+## CiviCRM 5.73.4
+
+Released May 30, 2024
+
+- **[Synopsis](release-notes/5.73.4.md#synopsis)**
+- **[Bugs resolved](release-notes/5.73.4.md#bugs)**
+- **[Credits](release-notes/5.73.4.md#credits)**
+- **[Feedback](release-notes/5.73.4.md#feedback)**
+
+## CiviCRM 5.73.3
+
+Released May 23, 2024
+
+- **[Synopsis](release-notes/5.73.3.md#synopsis)**
+- **[Bugs resolved](release-notes/5.73.3.md#bugs)**
+- **[Credits](release-notes/5.73.3.md#credits)**
+- **[Feedback](release-notes/5.73.3.md#feedback)**
+
+## CiviCRM 5.73.2
+
+Released May 17, 2024
+
+- **[Synopsis](release-notes/5.73.2.md#synopsis)**
+- **[Bugs resolved](release-notes/5.73.2.md#bugs)**
+- **[Credits](release-notes/5.73.2.md#credits)**
+- **[Feedback](release-notes/5.73.2.md#feedback)**
+
+## CiviCRM 5.73.1
+
+Released May 6, 2024
+
+- **[Synopsis](release-notes/5.73.1.md#synopsis)**
+- **[Bugs resolved](release-notes/5.73.1.md#bugs)**
+- **[Credits](release-notes/5.73.1.md#credits)**
+- **[Feedback](release-notes/5.73.1.md#feedback)**
+
+## CiviCRM 5.73.0
+
+Released May 2, 2024
+
+- **[Synopsis](release-notes/5.73.0.md#synopsis)**
+- **[Features](release-notes/5.73.0.md#features)**
+- **[Bugs resolved](release-notes/5.73.0.md#bugs)**
+- **[Miscellany](release-notes/5.73.0.md#misc)**
+- **[Credits](release-notes/5.73.0.md#credits)**
+- **[Feedback](release-notes/5.73.0.md#feedback)**
+
+## CiviCRM 5.72.3
+
+Released May 1, 2024
+
+- **[Synopsis](release-notes/5.72.3.md#synopsis)**
+- **[Bugs resolved](release-notes/5.72.3.md#bugs)**
+- **[Credits](release-notes/5.72.3.md#credits)**
+- **[Feedback](release-notes/5.72.3.md#feedback)**
+
+## CiviCRM 5.72.2
+
+Released April 23, 2024
+
+- **[Synopsis](release-notes/5.72.2.md#synopsis)**
+- **[Bugs resolved](release-notes/5.72.2.md#bugs)**
+- **[Credits](release-notes/5.72.2.md#credits)**
+- **[Feedback](release-notes/5.72.2.md#feedback)**
+
+## CiviCRM 5.72.1
+
+Released April 8, 2024
+
+- **[Synopsis](release-notes/5.72.1.md#synopsis)**
+- **[Bugs resolved](release-notes/5.72.1.md#bugs)**
+- **[Credits](release-notes/5.72.1.md#credits)**
+- **[Feedback](release-notes/5.72.1.md#feedback)**
+
+## CiviCRM 5.72.0
+
+Released April 3, 2024
+
+- **[Synopsis](release-notes/5.72.0.md#synopsis)**
+- **[Features](release-notes/5.72.0.md#features)**
+- **[Bugs resolved](release-notes/5.72.0.md#bugs)**
+- **[Miscellany](release-notes/5.72.0.md#misc)**
+- **[Credits](release-notes/5.72.0.md#credits)**
+- **[Feedback](release-notes/5.72.0.md#feedback)**
+
+## CiviCRM 5.71.2
+
+Released March 28, 2024
+
+- **[Synopsis](release-notes/5.71.2.md#synopsis)**
+- **[Bugs resolved](release-notes/5.71.2.md#bugs)**
+- **[Credits](release-notes/5.71.2.md#credits)**
+- **[Feedback](release-notes/5.71.2.md#feedback)**
+
+## CiviCRM 5.71.1
+
+Released March 8, 2024
+
+- **[Synopsis](release-notes/5.71.1.md#synopsis)**
+- **[Bugs resolved](release-notes/5.71.1.md#bugs)**
+- **[Credits](release-notes/5.71.1.md#credits)**
+- **[Feedback](release-notes/5.71.1.md#feedback)**
+
+## CiviCRM 5.71.0
+
+Released March 6, 2024
+
+- **[Synopsis](release-notes/5.71.0.md#synopsis)**
+- **[Features](release-notes/5.71.0.md#features)**
+- **[Bugs resolved](release-notes/5.71.0.md#bugs)**
+- **[Miscellany](release-notes/5.71.0.md#misc)**
+- **[Credits](release-notes/5.71.0.md#credits)**
+- **[Feedback](release-notes/5.71.0.md#feedback)**
## CiviCRM 5.70.0
-Released February 8, 2024
+Released February 7, 2024
- **[Synopsis](release-notes/5.70.0.md#synopsis)**
- **[Features](release-notes/5.70.0.md#features)**
diff --git a/www/modules/civicrm/release-notes/5.70.1.md b/www/modules/civicrm/release-notes/5.70.1.md
deleted file mode 100644
index bcba22a21..000000000
--- a/www/modules/civicrm/release-notes/5.70.1.md
+++ /dev/null
@@ -1,48 +0,0 @@
-# CiviCRM 5.70.1
-
-Released February 22, 2024
-
-- **[Synopsis](#synopsis)**
-- **[Bugs resolved](#bugs)**
-- **[Credits](#credits)**
-- **[Feedback](#feedback)**
-
-## Synopsis
-
-| *Does this version...?* | |
-| --------------------------------------------------------------- | -------- |
-| Change the database schema? | no |
-| Alter the API? | no |
-| Require attention to configuration options? | no |
-| Fix problems installing or upgrading to a previous version? | no |
-| Introduce features? | no |
-| **Fix bugs?** | **yes** |
-| Fix security vulnerabilities? | no |
-
-## Bugs resolved
-
-* **_CiviContribute_: Don't show inactive "Premiums" ([dev/core#5014](https://lab.civicrm.org/dev/core/-/issues/5014): [#29427](https://github.com/civicrm/civicrm-core/pull/29427))**
-* **_CiviContribute_: "Contribution Page" incorrectly displays alternative currency ([dev/core#4989](https://lab.civicrm.org/dev/core/-/issues/4989): [#29373](https://github.com/civicrm/civicrm-core/pull/29373))**
-* **_CiviContribute_: Access to "Contribution Page" blocked if financial data has ACLs ([dev/core#4997](https://lab.civicrm.org/dev/core/-/issues/4997): [#29369](https://github.com/civicrm/civicrm-core/pull/29369))**
-* **_CiviEvent_: Error rendering receipt ([dev/core#5006](https://lab.civicrm.org/dev/core/-/issues/5006): [#29408](https://github.com/civicrm/civicrm-core/pull/29408))**
-* **_CiviMember_: Current membership level should be pre-selected (for "Quick Config" pages) ([dev/core#5007](https://lab.civicrm.org/dev/core/-/issues/5007): [#29406](https://github.com/civicrm/civicrm-core/pull/29406))**
-* **_Custom Data_: Error saving changes that affect an inactive "Event" ([dev/core#5005](https://lab.civicrm.org/dev/core/-/issues/5005): [#29444](https://github.com/civicrm/civicrm-core/pull/29444))**
-* **_Form Builder_: Incorrectly saves forms with "Relationships" and "Custom Fields" ([dev/core#4977](https://lab.civicrm.org/dev/core/-/issues/4977): [#29400](https://github.com/civicrm/civicrm-core/pull/29400))**
-* **_News Dashlet_: Fix styling of unread items ([#29452](https://github.com/civicrm/civicrm-core/pull/29452))**
-* **_Smarty v3_: Deprecation message appears in email ([dev/core#5012](https://lab.civicrm.org/dev/core/-/issues/5012): [#29410](https://github.com/civicrm/civicrm-core/pull/29410))**
-
-## Credits
-
-This release was developed by the following authors and reviewers:
-
-Wikimedia Foundation - Eileen McNaughton; Savion Lee; Nicol Wistreich; Megaphone
-Technology Consulting - Jon Goldberg; John Kingsnorth; JMA Consulting - Seamus Lee;
-Gokhalemethod - Sadashiv; Francesc Bassas i Bullich; Dave D; Coop SymbioTIC - Samuel
-Vanhove, Mathieu Lutfy; CiviCRM - Tim Otten, Coleman Watts; ASMAC (American Society of
-Music Arrangers and Composers) - Jeff Kellem Andy Burns; AGH Strategies - Chris Garaffa
-
-## Feedback
-
-These release notes are edited by Tim Otten and Andie Hunt. If you'd like to
-provide feedback on them, please login to https://chat.civicrm.org/civicrm and
-contact `@agh1`.
diff --git a/www/modules/civicrm/release-notes/5.71.0.md b/www/modules/civicrm/release-notes/5.71.0.md
new file mode 100644
index 000000000..bc187c7d8
--- /dev/null
+++ b/www/modules/civicrm/release-notes/5.71.0.md
@@ -0,0 +1,760 @@
+# CiviCRM 5.71.0
+
+Released March 6, 2024
+
+- **[Synopsis](#synopsis)**
+- **[Features](#features)**
+- **[Bugs resolved](#bugs)**
+- **[Miscellany](#misc)**
+- **[Credits](#credits)**
+- **[Feedback](#feedback)**
+
+## Synopsis
+
+| *Does this version...?* | |
+|:--------------------------------------------------------------- |:-------:|
+| Fix security vulnerabilities? | no |
+| Change the database schema? | |
+| **Alter the API?** | **yes** |
+| **Require attention to configuration options?** | **yes** |
+| Fix problems installing or upgrading to a previous version? | |
+| **Introduce features?** | **yes** |
+| **Fix bugs?** | **yes** |
+
+## Features
+
+### Core CiviCRM
+
+- **Make name, title, frontend_title fields on UFGroup consistent with
+ ContributionPage, Group
+ ([28492](https://github.com/civicrm/civicrm-core/pull/28492))**
+
+ This makes profile names operate in the same way as group and contribution
+ page names
+
+### CiviEvent
+
+- **Consolidate handling of line items in back office participant form
+ ([28735](https://github.com/civicrm/civicrm-core/pull/28735))**
+
+- **Clean up code to add custom data to forms, implement on back office
+ participant form
+ ([28733](https://github.com/civicrm/civicrm-core/pull/28733))**
+
+- **Add html types to Participant schema
+ ([28900](https://github.com/civicrm/civicrm-core/pull/28900))**
+
+### CiviMember
+
+- **SearchUI - Add Find Membership using searchkit
+ ([29064](https://github.com/civicrm/civicrm-core/pull/29064))**
+
+- **ContactSummary - Replace Membership tab with Searchkit display
+ ([28810](https://github.com/civicrm/civicrm-core/pull/28810))**
+
+## Bugs resolved
+
+### Core CiviCRM
+
+- **Regression - Fix missing getLinks action in SKEntity
+ ([29589](https://github.com/civicrm/civicrm-core/pull/29589))**
+
+- **SearchKit - Fix enable/disable links in displays ([29547](https://github.com/civicrm/civicrm-core/pull/29547))**
+
+- **Rename 'Provider' entity to 'SmsProvider' ([29555](https://github.com/civicrm/civicrm-core/pull/29555))**
+
+- **Make integer field selfcancelxfer_time required ([29525](https://github.com/civicrm/civicrm-core/pull/29525))**
+
+- **Fix regression from #27902 disabled options showing ([29504](https://github.com/civicrm/civicrm-core/pull/29504))**
+
+- **dev/core#5018 Fix UFGroup.xml ([29461](https://github.com/civicrm/civicrm-core/pull/29461))**
+
+- **dev/core#4889 - Don't delete my files (alternate) ([29421](https://github.com/civicrm/civicrm-core/pull/29421))**
+
+- **News Dashlet - Fix styling of unread items ([29452](https://github.com/civicrm/civicrm-core/pull/29452))**
+
+- **dev/core#5005 Fix validating to allow for saving with entity sub filt… ([29444](https://github.com/civicrm/civicrm-core/pull/29444))**
+
+- **Afform - Fix incorrect html encoding when saving ([29400](https://github.com/civicrm/civicrm-core/pull/29400))**
+
+- **AngularJS - Fix log warning on upgrade UI ([29403](https://github.com/civicrm/civicrm-core/pull/29403))**
+
+- **5.71 upgrade is not safe to re-run ([29398](https://github.com/civicrm/civicrm-core/pull/29398))**
+
+- **CryptoJwt - Fix detection of firebase/php-jwt APIs ([29376](https://github.com/civicrm/civicrm-core/pull/29376))**
+
+- **APIv4 - Fetch all options when matching pseudoconstants. ([29369](https://github.com/civicrm/civicrm-core/pull/29369))**
+
+- **CryptoJwt - Fix detection of firebase/php-jwt APIs ([29345](https://github.com/civicrm/civicrm-core/pull/29345))**
+
+- **Unshare the SMSCommon::preProcess function between the ([29339](https://github.com/civicrm/civicrm-core/pull/29339))**
+
+- **dev/core#4821 - APIv4: Allow custom field to reference value in bridge joins ([29325](https://github.com/civicrm/civicrm-core/pull/29325))**
+
+- **dev/core#3381 Fix currency display on total fees ([29299](https://github.com/civicrm/civicrm-core/pull/29299))**
+
+- **Fix php8.x issues in payment form ([29245](https://github.com/civicrm/civicrm-core/pull/29245))**
+
+- **SMS tasks, use shared trait, move some functions to it ([29285](https://github.com/civicrm/civicrm-core/pull/29285))**
+
+- **Remove incorrectly placed ChangeCaseStatus class properties and convert one of them to a local var ([29284](https://github.com/civicrm/civicrm-core/pull/29284))**
+
+- **Fix misunderstanding about return value of getKeyId ([29141](https://github.com/civicrm/civicrm-core/pull/29141))**
+
+- **Stop burying the lead ([29306](https://github.com/civicrm/civicrm-core/pull/29306))**
+
+- **dev/core#4974 Fix total fees over-sharing ([29309](https://github.com/civicrm/civicrm-core/pull/29309))**
+
+- **Afform - Reduce noise in mgd.php file ([29316](https://github.com/civicrm/civicrm-core/pull/29316))**
+
+- **Drupal.civi-setup: setAuthorized if running via drush ([29303](https://github.com/civicrm/civicrm-core/pull/29303))**
+
+- **APIv4 - Add type hints to Result object ([29258](https://github.com/civicrm/civicrm-core/pull/29258))**
+
+- **WP - Handle updated permissions format ([29297](https://github.com/civicrm/civicrm-core/pull/29297))**
+
+- **Clean up on clear_assign ([29287](https://github.com/civicrm/civicrm-core/pull/29287))**
+
+- **API - More helpful authorization failed error message ([29179](https://github.com/civicrm/civicrm-core/pull/29179))**
+
+- **(REF) Cleanup - Replace more nested CRM_Utils_Array::value with ?? ([29283](https://github.com/civicrm/civicrm-core/pull/29283))**
+
+- **composer.json: Use current SPDX license identifier ([29078](https://github.com/civicrm/civicrm-core/pull/29078))**
+
+- **[php8.x] Clean up max value functionality ([29254](https://github.com/civicrm/civicrm-core/pull/29254))**
+
+- **(REF) Cleanup - Replace illegible nested CRM_Utils_Array::value with ?? ([29268](https://github.com/civicrm/civicrm-core/pull/29268))**
+
+- **[php8.x] Minor cleanup in priceSetOptionsCount ([29255](https://github.com/civicrm/civicrm-core/pull/29255))**
+
+- **[php8.x] Clarify what `optionsMaxValueTotal` means ([29252](https://github.com/civicrm/civicrm-core/pull/29252))**
+
+- **Allow cascade delete for custom entity reference fields ([28225](https://github.com/civicrm/civicrm-core/pull/28225))**
+
+- **Do not permit a contact to be deleted if it is linked to a CMS user issue1290 ([29026](https://github.com/civicrm/civicrm-core/pull/29026))**
+
+- **Update template deprecation text, add one more string ([29250](https://github.com/civicrm/civicrm-core/pull/29250))**
+
+- **Unshare another function to permit code cleanup ([29248](https://github.com/civicrm/civicrm-core/pull/29248))**
+
+- **Fold functions that only support one form back into that form (survey) ([29232](https://github.com/civicrm/civicrm-core/pull/29232))**
+
+- **Make form-specific funciont protected, non-static ([29247](https://github.com/civicrm/civicrm-core/pull/29247))**
+
+- **Afform - Remove guesswork from fk lookups ([29236](https://github.com/civicrm/civicrm-core/pull/29236))**
+
+- **Remove call to silly non-php8.2 compliant function ([29230](https://github.com/civicrm/civicrm-core/pull/29230))**
+
+- **APIv4 - Add type hints to FieldSpec functions ([29223](https://github.com/civicrm/civicrm-core/pull/29223))**
+
+- **Declare some public variables on ChangeCaseStatus ([29227](https://github.com/civicrm/civicrm-core/pull/29227))**
+
+- **DAO - Remove buggy caching from import/export ([29182](https://github.com/civicrm/civicrm-core/pull/29182))**
+
+- **CorePermission - Declare more implied permissions explicitly ([29218](https://github.com/civicrm/civicrm-core/pull/29218))**
+
+- **Use standardised function to get PriceFieldMetadata ([29219](https://github.com/civicrm/civicrm-core/pull/29219))**
+
+- **Unshare another function with over-sharing ([29217](https://github.com/civicrm/civicrm-core/pull/29217))**
+
+- **Make previously shared function non-static ([29216](https://github.com/civicrm/civicrm-core/pull/29216))**
+
+- **Permissions - Make implied permissions declarative ([29174](https://github.com/civicrm/civicrm-core/pull/29174))**
+
+- **Pass fee block into validatePriceset rather than looking up property ([29215](https://github.com/civicrm/civicrm-core/pull/29215))**
+
+- **Unshare initFee function ([29211](https://github.com/civicrm/civicrm-core/pull/29211))**
+
+- **Pass variables into validatePriceSet rather than getting from the form ([29210](https://github.com/civicrm/civicrm-core/pull/29210))**
+
+- **Move static function to parent, make non-static ([29207](https://github.com/civicrm/civicrm-core/pull/29207))**
+
+- **SearchKit - Hide invalid links and prevent error ([29201](https://github.com/civicrm/civicrm-core/pull/29201))**
+
+- **Move function to shared parent & make non-static ([29198](https://github.com/civicrm/civicrm-core/pull/29198))**
+
+- **Remove unused properties, make internal function private ([29161](https://github.com/civicrm/civicrm-core/pull/29161))**
+
+- **Core/DAO - Add boilerplate import/export functions to base class ([29181](https://github.com/civicrm/civicrm-core/pull/29181))**
+
+- **Fix notices on Additional Payment Form ([29110](https://github.com/civicrm/civicrm-core/pull/29110))**
+
+- **Return determination of title to the only user ([29103](https://github.com/civicrm/civicrm-core/pull/29103))**
+
+- **Remove function noisily deprecated in 2020 ([29177](https://github.com/civicrm/civicrm-core/pull/29177))**
+
+- **Add some deprecation warnings, annotations ([29176](https://github.com/civicrm/civicrm-core/pull/29176))**
+
+- **(REF) Normalize internal format of permissions ([29173](https://github.com/civicrm/civicrm-core/pull/29173))**
+
+- **Remove some unused function variables ([29167](https://github.com/civicrm/civicrm-core/pull/29167))**
+
+- **corePermissions - Add label and description keys to arrays ([29170](https://github.com/civicrm/civicrm-core/pull/29170))**
+
+- **Remove unused extra param in getAllModulePermissions ([29165](https://github.com/civicrm/civicrm-core/pull/29165))**
+
+- **Remove unused implied_permissions declaration ([29164](https://github.com/civicrm/civicrm-core/pull/29164))**
+
+- **Remove non-sms parts from SMS class ([29153](https://github.com/civicrm/civicrm-core/pull/29153))**
+
+- **Remove instances of bltID ([29160](https://github.com/civicrm/civicrm-core/pull/29160))**
+
+- **Stop passing billingLocationID to functions that ignore the incoming parameter ([28762](https://github.com/civicrm/civicrm-core/pull/28762))**
+
+- **Use names rather than variables for table names in findPendingTasks ([29150](https://github.com/civicrm/civicrm-core/pull/29150))**
+
+- **Use table names directly in query ([29144](https://github.com/civicrm/civicrm-core/pull/29144))**
+
+- **Contact tokens - Implement fall back from billing address to primary address ([29121](https://github.com/civicrm/civicrm-core/pull/29121))**
+
+- **Remove un-passed parameter ([29146](https://github.com/civicrm/civicrm-core/pull/29146))**
+
+- **SearchKit - Assign raw values to Smarty in field rewrite ([26742](https://github.com/civicrm/civicrm-core/pull/26742))**
+
+- **(REF) ContactType - Fix 2 functions to be more reliable and efficient ([29052](https://github.com/civicrm/civicrm-core/pull/29052))**
+
+- **Do not use a variable for table names ([29134](https://github.com/civicrm/civicrm-core/pull/29134))**
+
+- **Do not return params from doSubmitActions, it is unchanged ([29131](https://github.com/civicrm/civicrm-core/pull/29131))**
+
+- **Remove unused properties, variables ([29129](https://github.com/civicrm/civicrm-core/pull/29129))**
+
+- **Remove unused variables, object fetch ([29130](https://github.com/civicrm/civicrm-core/pull/29130))**
+
+- **Notice fix on qfKey ([29128](https://github.com/civicrm/civicrm-core/pull/29128))**
+
+- **dev/core#4836 Fix mishandling of multiple fields with serialize ([29116](https://github.com/civicrm/civicrm-core/pull/29116))**
+
+- **Fix php warnings on contact edit ([29111](https://github.com/civicrm/civicrm-core/pull/29111))**
+
+- **Use cached array field for custom field validation ([29108](https://github.com/civicrm/civicrm-core/pull/29108))**
+
+- **Degrade consistently when civi_report not enabled but logging is ([28864](https://github.com/civicrm/civicrm-core/pull/28864))**
+
+- **Contact Changelog: use h3 for page title ([29067](https://github.com/civicrm/civicrm-core/pull/29067))**
+
+- **SearchKit - Run filterTasksForDisplay after all other hooks ([29088](https://github.com/civicrm/civicrm-core/pull/29088))**
+
+- **(REF) CRM_Core_Session - Streamline lookup of current user id & display name ([29048](https://github.com/civicrm/civicrm-core/pull/29048))**
+
+- **APIv4 - RequestSpec caching ([29066](https://github.com/civicrm/civicrm-core/pull/29066))**
+
+- **(REF) APIv4 - Remove unnecessary class namespace prefixes ([29068](https://github.com/civicrm/civicrm-core/pull/29068))**
+
+- **Fix internal links in AdminUI templates ([29065](https://github.com/civicrm/civicrm-core/pull/29065))**
+
+- **Move import export to UserJob ([29062](https://github.com/civicrm/civicrm-core/pull/29062))**
+
+- **Deprecate unused function getSurveyCustomGroups ([29053](https://github.com/civicrm/civicrm-core/pull/29053))**
+
+- **(REF) APIv4 - Use caching to speed up invoke function ([29061](https://github.com/civicrm/civicrm-core/pull/29061))**
+
+- **Import minor adjustments - add getters, setters, flush, ability to export ([29057](https://github.com/civicrm/civicrm-core/pull/29057))**
+
+- **Use static caching to reduce lookups in import display ([29059](https://github.com/civicrm/civicrm-core/pull/29059))**
+
+- **jsortable.tpl: make order direction configurable ([28672](https://github.com/civicrm/civicrm-core/pull/28672))**
+
+- **(REF) - Cleanup ajax on profile field admin form ([29042](https://github.com/civicrm/civicrm-core/pull/29042))**
+
+- **Add missing aliases for billingCountry fields ([28926](https://github.com/civicrm/civicrm-core/pull/28926))**
+
+- **(REF) Profile - simplify loop to check for multi-record custom group ([29037](https://github.com/civicrm/civicrm-core/pull/29037))**
+
+- **Fix isMultiRecordField function to return group id ([29036](https://github.com/civicrm/civicrm-core/pull/29036))**
+
+- **PHP8 - Remove unnecessary pass-by-reference ([29030](https://github.com/civicrm/civicrm-core/pull/29030))**
+
+- **APIv4 - Deprecae unused function ([29031](https://github.com/civicrm/civicrm-core/pull/29031))**
+
+- **SearchKit - Allow rewrite with only whitespace ([29024](https://github.com/civicrm/civicrm-core/pull/29024))**
+
+- **Correct message template warning in MessageTemplates.php ([29015](https://github.com/civicrm/civicrm-core/pull/29015))**
+
+- **UFGroup - Cleanup getCustomFields and standardize checkPermission param ([29004](https://github.com/civicrm/civicrm-core/pull/29004))**
+
+- **Dedupe - Include EntityReference custom fields ([28991](https://github.com/civicrm/civicrm-core/pull/28991))**
+
+- **Remove check for core-error, never thrown ([28980](https://github.com/civicrm/civicrm-core/pull/28980))**
+
+- **Add params to actions when creating a WordPress User ([28992](https://github.com/civicrm/civicrm-core/pull/28992))**
+
+- **Take a copy of importable fields back to the upgrade class ([28982](https://github.com/civicrm/civicrm-core/pull/28982))**
+
+- **Superficial clean up Use strict type checks ([28961](https://github.com/civicrm/civicrm-core/pull/28961))**
+
+- **Remove duplicate financial acl check ([28963](https://github.com/civicrm/civicrm-core/pull/28963))**
+
+- **Add comments to settings definition to clarify that this is not the preferred method ([28969](https://github.com/civicrm/civicrm-core/pull/28969))**
+
+- **CiviCRM APIv4, Extension::get - expose more Extension properties ([28986](https://github.com/civicrm/civicrm-core/pull/28986))**
+
+- **Remove arguable statement about refunds ([28979](https://github.com/civicrm/civicrm-core/pull/28979))**
+
+- **Make error message more traceable ([28972](https://github.com/civicrm/civicrm-core/pull/28972))**
+
+- **(REF) Convert _checkAccess to event listener ([28890](https://github.com/civicrm/civicrm-core/pull/28890))**
+
+- **PCP - Add metadata for SearchKit dynamic joins ([28549](https://github.com/civicrm/civicrm-core/pull/28549))**
+
+- **Followup to 28936 ([28956](https://github.com/civicrm/civicrm-core/pull/28956))**
+
+- **(REF) SearchKit - minor code cleanup/clarification ([28958](https://github.com/civicrm/civicrm-core/pull/28958))**
+
+- **dev/core#4888 - Location field on case activity is misaligned ([28955](https://github.com/civicrm/civicrm-core/pull/28955))**
+
+- **Copy formatFieldsForOptionFull to not share backoffice & front end ([28938](https://github.com/civicrm/civicrm-core/pull/28938))**
+
+- **hook_links - Identify more quirks ([28950](https://github.com/civicrm/civicrm-core/pull/28950))**
+
+- **Add system checks for civicrm.settings performance options ([28936](https://github.com/civicrm/civicrm-core/pull/28936))**
+
+- **APIv4 - Improve getFields internal value lookups ([28940](https://github.com/civicrm/civicrm-core/pull/28940))**
+
+- **Remove un-used noticey function ([28885](https://github.com/civicrm/civicrm-core/pull/28885))**
+
+- **Stop setting unused key ([28923](https://github.com/civicrm/civicrm-core/pull/28923))**
+
+- **Remove unused variable ([28939](https://github.com/civicrm/civicrm-core/pull/28939))**
+
+- **DeletedFilesCheck - Include renamed as well as deleted files ([28930](https://github.com/civicrm/civicrm-core/pull/28930))**
+
+- **Make function non-static, protected ([28924](https://github.com/civicrm/civicrm-core/pull/28924))**
+
+- **Add preliminary previewability and token support to case-activity ([28800](https://github.com/civicrm/civicrm-core/pull/28800))**
+
+- **Handle updated permissions format ([678](https://github.com/civicrm/civicrm-drupal/pull/678))**
+
+- **Use unaliased Exception ([315](https://github.com/civicrm/civicrm-wordpress/pull/315))**
+
+- **Handle updated permissions format ([172](https://github.com/civicrm/civicrm-backdrop/pull/172))**
+
+- **Add clearAssign transitional shim ([384](https://github.com/civicrm/civicrm-packages/pull/384))**
+
+- **Contemplate nothingness ([29269](https://github.com/civicrm/civicrm-core/pull/29269))**
+
+### CiviContribute
+
+- **Warn when undefined php properties in mail text
+ ([28399](https://github.com/civicrm/civicrm-core/pull/28399))**
+
+- **fix bug saving a new recurring contribution to the database
+ ([29005](https://github.com/civicrm/civicrm-core/pull/29005))**
+
+### CiviEvent
+
+- **[php8.x] [online-event] [test] Use Order object rather than passed
+ parameter to figure out if price field values use participant count
+ ([29249](https://github.com/civicrm/civicrm-core/pull/29249))**
+
+- **Multiple Participant Event Registration Issue
+ ([dev/core#4390](https://lab.civicrm.org/dev/core/-/issues/4390):
+ [29358](https://github.com/civicrm/civicrm-core/pull/29358))**
+
+ This removes unused code that results in errors for multiple participant registration.
+
+- **BackOffice participant form - Fix failure to reload correct default when
+ custom data subtype changes
+ ([29356](https://github.com/civicrm/civicrm-core/pull/29356))**
+
+- **Event full inconsistencies
+ ([dev/core#4907](https://lab.civicrm.org/dev/core/-/issues/4907),
+ [dev/core#4918](https://lab.civicrm.org/dev/core/-/issues/4918), and
+ [dev/core#4942](https://lab.civicrm.org/dev/core/-/issues/4942):
+ [28983](https://github.com/civicrm/civicrm-core/pull/28983)
+ [28984](https://github.com/civicrm/civicrm-core/pull/28984),
+ [29105](https://github.com/civicrm/civicrm-core/pull/29105),
+ [29106](https://github.com/civicrm/civicrm-core/pull/29106),
+ [29127](https://github.com/civicrm/civicrm-core/pull/29127), and
+ [29197](https://github.com/civicrm/civicrm-core/pull/29197))**
+
+- **event title is blank in transfer participant email
+ ([28993](https://github.com/civicrm/civicrm-core/pull/28993))**
+
+- **Regression - Events - Registration Confirmation and Receipt (on-line)
+ ([dev/core#5006](https://lab.civicrm.org/dev/core/-/issues/5006):
+ [29408](https://github.com/civicrm/civicrm-core/pull/29408))**
+
+- **Extra squiggly bracket appearing on event thankyou page
+ ([29464](https://github.com/civicrm/civicrm-core/pull/29464))**
+
+- **Notice fixes on AdditionalParticipant page
+ ([29234](https://github.com/civicrm/civicrm-core/pull/29234))**
+
+- **Stop calculating optionsCountDetails in non-unshared function on
+ participantFeeSelection
+ ([29221](https://github.com/civicrm/civicrm-core/pull/29221))**
+
+- **Fix Participant fee selection to use standardised getPriceFieldMetadata
+ ([29220](https://github.com/civicrm/civicrm-core/pull/29220))**
+
+- **Event cart - stop using undeclared property cid
+ ([29237](https://github.com/civicrm/civicrm-core/pull/29237))**
+
+- **Fix a couple of notices on event dashboard
+ ([29222](https://github.com/civicrm/civicrm-core/pull/29222))**
+
+- **Fix Smarty Notices on Event confirm & thank you pages
+ ([29310](https://github.com/civicrm/civicrm-core/pull/29310))**
+
+- **[online-event] Fix typing on fee level
+ ([29239](https://github.com/civicrm/civicrm-core/pull/29239))**
+
+- **Fix notices on event info page
+ ([29304](https://github.com/civicrm/civicrm-core/pull/29304))**
+
+- **Copy buildAmount back to form to avoid unhelpful sharing
+ ([28916](https://github.com/civicrm/civicrm-core/pull/28916))**
+
+- **[online-event] PHP8.2 stop unnecessarily setting undefined Properties in
+ event thankyou ([29244](https://github.com/civicrm/civicrm-core/pull/29244))**
+
+- **Fix master-only regression on saving event info when no custom data applies
+ ([29301](https://github.com/civicrm/civicrm-core/pull/29301))**
+
+- **Event Registration Confirm/Thank You pages show incorrect currency
+ ([dev/core#3381](https://lab.civicrm.org/dev/core/-/issues/3381):
+ [29251](https://github.com/civicrm/civicrm-core/pull/29251))**
+
+- **organizer field should ONLY be included if ics is used for group scheduling
+ ([28954](https://github.com/civicrm/civicrm-core/pull/28954))**
+
+- **Fix notices & php8.2 compatibility on Manage Event Info page
+ ([29240](https://github.com/civicrm/civicrm-core/pull/29240))**
+
+- **FIx show-hide notices on event confirm
+ ([29224](https://github.com/civicrm/civicrm-core/pull/29224))**
+
+- **Remove a chunk of legacy code from (probably unused) EventForward code)
+ ([29145](https://github.com/civicrm/civicrm-core/pull/29145))**
+
+- **Number field input validation does not respect decimal separator setting
+ (event custom field)
+ ([dev/core#4941](https://lab.civicrm.org/dev/core/-/issues/4941):
+ [29125](https://github.com/civicrm/civicrm-core/pull/29125))**
+
+- **Notice fix on event thank you page
+ ([29126](https://github.com/civicrm/civicrm-core/pull/29126))**
+
+- **VTIMEZONE block in ICS file publishes DSTART in wrong timezone
+ ([dev/core#4860](https://lab.civicrm.org/dev/core/-/issues/4860):
+ [28853](https://github.com/civicrm/civicrm-core/pull/28853))**
+
+- **Fix handling for available registrations in event Register::formRule
+ ([28987](https://github.com/civicrm/civicrm-core/pull/28987))**
+
+- **Remove bltID from eventFees class
+ ([28772](https://github.com/civicrm/civicrm-core/pull/28772))**
+
+- **E-notice fix, online event, currency
+ ([28883](https://github.com/civicrm/civicrm-core/pull/28883))**
+
+- **Unconditionally assign priceSet on event forms to avoid notices
+ ([28949](https://github.com/civicrm/civicrm-core/pull/28949))**
+
+### CiviMail
+
+- **[PHP 8.2] mail wrongly formatted
+ ([dev/core#4913](https://lab.civicrm.org/dev/core/-/issues/4913):
+ [29035](https://github.com/civicrm/civicrm-core/pull/29035))**
+
+ This is resolved by updating the pear/mail and pear/db libraries.
+
+- **don't create duplicate contacts when sending test emails
+ ([29212](https://github.com/civicrm/civicrm-core/pull/29212))**
+
+- **Add test & clean up deprecated apiv3 Forward action
+ ([29166](https://github.com/civicrm/civicrm-core/pull/29166))**
+
+- **Remove unused paramter (was to support email forward deprecated function -
+ but that no longer calls this)
+ ([29147](https://github.com/civicrm/civicrm-core/pull/29147))**
+
+- **Fix apiv4 Mailing Api to not do scheduling
+ ([29138](https://github.com/civicrm/civicrm-core/pull/29138))**
+
+- **(REF) Flexmailer - Simplify service definitions
+ ([29163](https://github.com/civicrm/civicrm-core/pull/29163))**
+
+- **Remove guts of civicrm Mailing.preview
+ ([29171](https://github.com/civicrm/civicrm-core/pull/29171))**
+
+- **Stop over-sharing - MailingJob::findPendingTasks
+ ([29162](https://github.com/civicrm/civicrm-core/pull/29162))**
+
+- **Noisily deprecate & stop using BAO_MailingJob::create
+ ([29137](https://github.com/civicrm/civicrm-core/pull/29137))**
+
+- **Use writeRecord from mailing job DAO
+ ([29135](https://github.com/civicrm/civicrm-core/pull/29135))**
+
+- **Rationalise MailingJob::queue
+ ([29148](https://github.com/civicrm/civicrm-core/pull/29148))**
+
+- **Fix confusion over what function is called when delivering mailing
+ ([29149](https://github.com/civicrm/civicrm-core/pull/29149))**
+
+- **Extract refreshMailingGroupCache
+ ([29133](https://github.com/civicrm/civicrm-core/pull/29133))**
+
+- **(REF) CiviMail - Remove old/unused page controller
+ ([28998](https://github.com/civicrm/civicrm-core/pull/28998))**
+
+### CiviMember
+
+- **Editing an unpaid event registration to add a partial payment crashes
+ ([dev/core#5035](https://lab.civicrm.org/dev/core/-/issues/5035):
+ [29507](https://github.com/civicrm/civicrm-core/pull/29507))**
+
+- **Setting a default membership type in a contribution page has no effect
+ ([dev/core#5051](https://lab.civicrm.org/dev/core/-/issues/5051):
+ [29623](https://github.com/civicrm/civicrm-core/pull/29623))**
+
+- **Align membership online receipt with contribution online receipt
+ ([29498](https://github.com/civicrm/civicrm-core/pull/29498))**
+
+- **AdminUI: Fix auto renew display on new SK membership tab
+ ([29012](https://github.com/civicrm/civicrm-core/pull/29012))**
+
+## Standalone
+
+- **standalone: apply user's timezone during boot ([29282](https://github.com/civicrm/civicrm-core/pull/29282))**
+
+- **standalone: fix ACLs on Roles re core #4862 ([29256](https://github.com/civicrm/civicrm-core/pull/29256))**
+
+- **Standaloneusers API permission lockdown ([28877](https://github.com/civicrm/civicrm-core/pull/28877))**
+
+### Special Topic: Custom Field Caches
+
+- **dev/core#4905 - More efficient loading and caching of custom field metadata ([28975](https://github.com/civicrm/civicrm-core/pull/28975))**
+
+- **dev/core#4905 - Deprecate redundant functions that fetch custom groups ([28990](https://github.com/civicrm/civicrm-core/pull/28990))**
+
+- **dev/core#4905 - Add CRM_Core_BAO_CustomGroup::getAll() with optional filters ([28995](https://github.com/civicrm/civicrm-core/pull/28995))**
+
+- **dev/core#4905 - Deprecate CustomGroup::getAllCustomGroupsByBaseEntity ([28999](https://github.com/civicrm/civicrm-core/pull/28999))**
+
+- **dev/core#4905 - Refactor CustomField::getFields() to use more efficient getter ([29002](https://github.com/civicrm/civicrm-core/pull/29002))**
+
+- **dev/core#4905 - DedupeMerger - Delete detangled function, use api instead ([29006](https://github.com/civicrm/civicrm-core/pull/29006))**
+
+- **dev/core#4905 - Refactor out duplicate CustomField getter functions ([29011](https://github.com/civicrm/civicrm-core/pull/29011))**
+
+- **dev/core#4905 - Refactor SelectValues::getQuicksearchOptions to use caching ([29020](https://github.com/civicrm/civicrm-core/pull/29020))**
+
+- **dev/core#4905 - Refactor legacy CustomGroup getters to use cached data provider ([29027](https://github.com/civicrm/civicrm-core/pull/29027))**
+
+- **dev/core#4905 - Refactor CustomField getters to use cached provider ([29032](https://github.com/civicrm/civicrm-core/pull/29032))**
+
+- **dev/core#4905 - Add CustomGroup::getGroup() function ([29034](https://github.com/civicrm/civicrm-core/pull/29034))**
+
+- **(REF) dev/core#4905 - Cleanup CustomGroup functions to use more efficient getter ([29044](https://github.com/civicrm/civicrm-core/pull/29044))**
+
+- **dev/core#4905 - Improve Afform.get to use cached custom group getter ([29045](https://github.com/civicrm/civicrm-core/pull/29045))**
+
+- **dev/core#4905 - DedupeMerger - Use cached function to get custom groups ([29046](https://github.com/civicrm/civicrm-core/pull/29046))**
+
+- **dev/core#4905 - ImportParser - Use cached function to get custom groups ([29047](https://github.com/civicrm/civicrm-core/pull/29047))**
+
+- **dev/core#4905 - Cleanup customField lookup code in CiviCase ([29050](https://github.com/civicrm/civicrm-core/pull/29050))**
+
+- **(REF) dev/core#4905 - Cleanup customField lookup code in DedupeRule ([29051](https://github.com/civicrm/civicrm-core/pull/29051))**
+
+- **dev/core#4905 - CiviReport - Use cached function to get custom groups & fields ([29054](https://github.com/civicrm/civicrm-core/pull/29054))**
+
+- **(REF) dev/core#4905 - Simplify custom field lookup code in ImportParser ([29089](https://github.com/civicrm/civicrm-core/pull/29089))**
+
+- **(REF) dev/core#4905 ContactType - Use cache to get custom fields ([29094](https://github.com/civicrm/civicrm-core/pull/29094))**
+
+- **dev/core#4905 - Use cached getFieldObject instead of new customField ([29098](https://github.com/civicrm/civicrm-core/pull/29098))**
+
+- **dev/core#4905 - Delete unused buildGroupTree function ([29099](https://github.com/civicrm/civicrm-core/pull/29099))**
+
+- **dev/core#4905 - Use cache to fetch custom groups by contact type ([29100](https://github.com/civicrm/civicrm-core/pull/29100))**
+
+- **dev/core#4905 - Make internal function private again ([29101](https://github.com/civicrm/civicrm-core/pull/29101))**
+
+- **dev/core#4905 - Relocate survey-specific function to CiviCampaign class ([29102](https://github.com/civicrm/civicrm-core/pull/29102))**
+
+- **dev/core#4905 - Simplify CustomValueTable::setValues to use new getter ([29124](https://github.com/civicrm/civicrm-core/pull/29124))**
+
+- **dev/core#4905 - Use new customField getter in a few more places ([29259](https://github.com/civicrm/civicrm-core/pull/29259))**
+
+### Special Topic: Smarty Compatibility
+
+- **Add Smarty4 folder ([380](https://github.com/civicrm/civicrm-packages/pull/380))**
+
+- **Add Smarty5 to packages ([382](https://github.com/civicrm/civicrm-packages/pull/382))**
+
+- **Hack more forward compatibility into Smarty2 ([383](https://github.com/civicrm/civicrm-packages/pull/383))**
+
+- **Bump smarty/smarty from 4.0.0 to 4.3.1 in /smarty4 ([385](https://github.com/civicrm/civicrm-packages/pull/385))**
+
+- **Update to latest Smarty4 ([386](https://github.com/civicrm/civicrm-packages/pull/386))**
+
+- **Run tests on Smarty4 instead of 3
+ ([29288](https://github.com/civicrm/civicrm-core/pull/29288))**
+
+- **[Smarty Gencode] Load Smarty3 in Gencode too ([28774](https://github.com/civicrm/civicrm-core/pull/28774))**
+
+- **[Smarty Gencode] Fixes on clearAllAssign ([29265](https://github.com/civicrm/civicrm-core/pull/29265))**
+
+- **[Smarty Gencode] Switch createSmarty to use functions that work on v2,v3,v4 ([29279](https://github.com/civicrm/civicrm-core/pull/29279))**
+
+- **[Smarty Gencode] Clean up resourcesTest for Smarty3
+ ([29266](https://github.com/civicrm/civicrm-core/pull/29266))**
+
+- **[Smarty Gencode] Remove clearAllVars from SessionTest
+ ([29263](https://github.com/civicrm/civicrm-core/pull/29263))**
+
+- **[Smarty Gencode] Try removing clearTemplateVars hack from test
+ ([29262](https://github.com/civicrm/civicrm-core/pull/29262))**
+
+- **Update Smarty function in snapshop template ([28832](https://github.com/civicrm/civicrm-core/pull/28832))**
+
+- **Register native php functions that we use as Smarty plugins ([29289](https://github.com/civicrm/civicrm-core/pull/29289))**
+
+- **Deprecate a couple of backward compatibility Smarty functions ([29302](https://github.com/civicrm/civicrm-core/pull/29302))**
+
+- **Do not attempt to register string resources for Smarty3+ ([29104](https://github.com/civicrm/civicrm-core/pull/29104))**
+
+- **dev/core#4928 - Smarty3 filenames generated by singleUseString are invalid on windows ([29056](https://github.com/civicrm/civicrm-core/pull/29056))**
+
+- **dev/core#4951 Add support for Smarty debugging ([29183](https://github.com/civicrm/civicrm-core/pull/29183))**
+
+- **Use upper not strtoupper in Smarty as that is supported going forwards ([29321](https://github.com/civicrm/civicrm-core/pull/29321))**
+
+- **Remove calls to get_template_vars, template_exists ([29411](https://github.com/civicrm/civicrm-core/pull/29411))**
+
+- **Add str_starts_with modifier to Smarty ([29337](https://github.com/civicrm/civicrm-core/pull/29337))**
+
+- **Stop using intval in Smarty ([29323](https://github.com/civicrm/civicrm-core/pull/29323))**
+
+- **Add smarty mixin (replaces smartyv2 for clarify only) ([29187](https://github.com/civicrm/civicrm-core/pull/29187))**
+
+- **Stop calling assign_by_ref on Smarty ([29414](https://github.com/civicrm/civicrm-core/pull/29414))**
+
+- **Fix SmartyCompatibility to use php8.3 friendly function ([29415](https://github.com/civicrm/civicrm-core/pull/29415))**
+
+- **Update Smarty autoload constant to be version agnostic ([29185](https://github.com/civicrm/civicrm-core/pull/29185))**
+
+- **Remove getTemplateVars() override now that it happens in Smarty2 ([29184](https://github.com/civicrm/civicrm-core/pull/29184))**
+
+- **Move messageTemplate call out of create Smarty ([29261](https://github.com/civicrm/civicrm-core/pull/29261))**
+
+- **dev/core#4955 Hack Smarty3+ getTemplateVars into Smarty2 ([381](https://github.com/civicrm/civicrm-packages/pull/381))**
+
+- **(REF) Fix Smarty Notice on missing hideRelativeLabel ([29087](https://github.com/civicrm/civicrm-core/pull/29087))**
+
+- **Fix Smarty notice when a single contact is deleted (not from search) ([29238](https://github.com/civicrm/civicrm-core/pull/29238))**
+
+- **Smarty notice fix ([29151](https://github.com/civicrm/civicrm-core/pull/29151))**
+
+- **Smarty notice fix ([29231](https://github.com/civicrm/civicrm-core/pull/29231))**
+
+- **Fix a few tests to be Smarty3 friendly
+ ([29257](https://github.com/civicrm/civicrm-core/pull/29257))**
+
+## Miscellany
+
+- **Bump phpseclib/phpseclib from 2.0.31 to 2.0.47
+ ([29620](https://github.com/civicrm/civicrm-core/pull/29620))**
+
+- **Bump phenx/php-svg-lib from 0.5.1 to 0.5.2
+ ([29469](https://github.com/civicrm/civicrm-core/pull/29469))**
+
+- **(NFC) test fix for leap year
+ ([29515](https://github.com/civicrm/civicrm-core/pull/29515))**
+
+- **dev/core#5006 Add test for self_cancel
+ ([29509](https://github.com/civicrm/civicrm-core/pull/29509))**
+
+- **(NFC) Remove redundant deprecated checks for assertObjectHasAttribute
+ ([29336](https://github.com/civicrm/civicrm-core/pull/29336))**
+
+- **Disable failing test in PR runs for now
+ ([29242](https://github.com/civicrm/civicrm-core/pull/29242))**
+
+- **APIv4 - Remove unused PerformanceTest
+ ([29077](https://github.com/civicrm/civicrm-core/pull/29077))**
+
+- **dev/core#4847 - Add test to verify APIv4 Activity ACL works properly
+ ([29055](https://github.com/civicrm/civicrm-core/pull/29055))**
+
+- **Update Event RegisterTest form to use the FormTrait
+ ([28988](https://github.com/civicrm/civicrm-core/pull/28988))**
+
+- **Test helper fix, link price set ID if passed in
+ ([28989](https://github.com/civicrm/civicrm-core/pull/28989))**
+
+- **Minor clean up in test class
+ ([28951](https://github.com/civicrm/civicrm-core/pull/28951))**
+
+- **Remove now-unused test-template
+ ([28968](https://github.com/civicrm/civicrm-core/pull/28968))**
+
+- **Minor clean up in test class
+ ([28981](https://github.com/civicrm/civicrm-core/pull/28981))**
+
+- **Switch confirmTest to use the form wrapper
+ ([28937](https://github.com/civicrm/civicrm-core/pull/28937))**
+
+- **Add test cover for event additional profiles
+ ([28891](https://github.com/civicrm/civicrm-core/pull/28891))**
+
+- **(REF) Move paymentProcessorAuthorizeNetCreate test function to authorizenet
+ test trait ([28925](https://github.com/civicrm/civicrm-core/pull/28925))**
+
+- **(REF) Minor cleanup in handling of additional participants when sending
+ mail + improve test
+ ([28889](https://github.com/civicrm/civicrm-core/pull/28889))**
+
+- **Fix Profile set up in test configuration
+ ([28899](https://github.com/civicrm/civicrm-core/pull/28899))**
+
+- **(NFC) CoreExt - Cleanup boilerplate from extension readmes
+ ([29340](https://github.com/civicrm/civicrm-core/pull/29340))**
+
+- **(NFC) Deprecated class name for abstract classes in phpunit
+ ([29335](https://github.com/civicrm/civicrm-core/pull/29335))**
+
+- **(NFC) CustomField - Add @deprecated notice to old function
+ ([29009](https://github.com/civicrm/civicrm-core/pull/29009))**
+
+- **(NFC) composer.json - Add comments block for the `patches` section
+ ([29028](https://github.com/civicrm/civicrm-core/pull/29028))**
+
+- **(NFC) ContactType - Cleanup function docs & type hints
+ ([28996](https://github.com/civicrm/civicrm-core/pull/28996))**
+
+- **(NFC) Simplify translatePermission() switch statement
+ ([28835](https://github.com/civicrm/civicrm-core/pull/28835))**
+
+- **setting-admin@1 - Bump version
+ ([29322](https://github.com/civicrm/civicrm-core/pull/29322))**
+
+- **Restore membership types in tearDown
+ ([28680](https://github.com/civicrm/civicrm-core/pull/28680))**
+
+- **EventCart - Update readme to reflect current state
+ ([29341](https://github.com/civicrm/civicrm-core/pull/29341))**
+
+- **ContributionBase - Remove unused code
+ ([29281](https://github.com/civicrm/civicrm-core/pull/29281))**
+
+## Credits
+
+This release was developed by the following code authors:
+
+AGH Strategies - Andie Hunt; Agileware - Justin Freeman; Artful Robot - Rich Lott; Christian Wach; Circle Interactive - Pradeep Nayak; CiviCRM - Coleman Watts, Tim Otten; CiviDesk - Yashodha Chaku; Coop SymbioTIC - Mathieu Lutfy; Dave D; Fuzion - Jitendra Purohit; Humanists UK - Andrew West;; JMA Consulting - Seamus Lee; John Kingsnorth; Megaphone Technology Consulting - Jon Goldberg; MJW Consulting - Matthew Wire; Progressive Technology Project - Jamie McClelland; Reflexive Communications - Sandor Semsey; Stephen Palmstrom; Third Sector Design - Kurund Jalmi, William Mortada; University of Waterloo - Patrick Lam; Wikimedia Foundation - Eileen McNaughton
+
+Most authors also reviewed code for this release; in addition, the following
+reviewers contributed their comments:
+
+AGH Strategies - Chris Garaffa; Andy Burns; ASMAC (American Society of Music Arrangers and Composers) - Jeff Kellem; BrightMinded Ltd - Bradley Taylor; civiservice.de - Detlev Sieber; Coop SymbioTIC - Samuel Vanhove; Francesc Bassas i Bullich; Greenleaf Advancement - Guy Iaccarino; JMA Consulting - Joe Murray; Nicol Wistreich; Squiffle Consulting - Aidan Saunders; Systopia - Dominic Tubach; Tadpole Collective - Kevin Cristiano
+
+## Feedback
+
+These release notes are edited by Alice Frumin and Andie Hunt. If you'd like
+to provide feedback on them, please log in to https://chat.civicrm.org/civicrm
+and contact `@agh1`.
diff --git a/www/modules/civicrm/release-notes/5.71.1.md b/www/modules/civicrm/release-notes/5.71.1.md
new file mode 100644
index 000000000..06102bf8c
--- /dev/null
+++ b/www/modules/civicrm/release-notes/5.71.1.md
@@ -0,0 +1,39 @@
+# CiviCRM 5.71.1
+
+Released March 8, 2024
+
+- **[Synopsis](#synopsis)**
+- **[Bugs resolved](#bugs)**
+- **[Credits](#credits)**
+- **[Feedback](#feedback)**
+
+## Synopsis
+
+| *Does this version...?* | |
+| --------------------------------------------------------------- | -------- |
+| Change the database schema? | no |
+| Alter the API? | no |
+| Require attention to configuration options? | no |
+| Fix problems installing or upgrading to a previous version? | no |
+| Introduce features? | no |
+| **Fix bugs?** | **yes** |
+| Fix security vulnerabilities? | no |
+
+## Bugs resolved
+
+* **_CiviContribute_: Emails with monetary tokens sometimes fail to render ([#29654](https://github.com/civicrm/civicrm-core/pull/29654))**
+* **_CiviMember_: Some "Price Set" configurations involving checkboxes lead to PHP error ([dev/core#5071](https://lab.civicrm.org/dev/core/-/issues/5071): [#29653](https://github.com/civicrm/civicrm-core/pull/29653))**
+* **_CiviSurvey_: Error displaying results ("Return type declaration") ([#29658](https://github.com/civicrm/civicrm-core/pull/29658))**
+
+## Credits
+
+This release was developed by the following authors and reviewers:
+
+Wikimedia Foundation - Eileen McNaughton; CiviCRM - Coleman Watts; Agileware - Francis
+Whittle, Agileware Team
+
+## Feedback
+
+These release notes are edited by Tim Otten and Andie Hunt. If you'd like to
+provide feedback on them, please login to https://chat.civicrm.org/civicrm and
+contact `@agh1`.
diff --git a/www/modules/civicrm/release-notes/5.71.2.md b/www/modules/civicrm/release-notes/5.71.2.md
new file mode 100644
index 000000000..dbb6dbff5
--- /dev/null
+++ b/www/modules/civicrm/release-notes/5.71.2.md
@@ -0,0 +1,41 @@
+# CiviCRM 5.71.2
+
+Released March 28, 2024
+
+- **[Synopsis](#synopsis)**
+- **[Bugs resolved](#bugs)**
+- **[Credits](#credits)**
+- **[Feedback](#feedback)**
+
+## Synopsis
+
+| *Does this version...?* | |
+| --------------------------------------------------------------- | -------- |
+| Change the database schema? | no |
+| Alter the API? | no |
+| Require attention to configuration options? | no |
+| Fix problems installing or upgrading to a previous version? | no |
+| Introduce features? | no |
+| **Fix bugs?** | **yes** |
+| Fix security vulnerabilities? | no |
+
+## Bugs resolved
+
+* **_CiviContribute_: When submitting an "Other Amount", the amount is split into units of $1 ([dev/core#5079](https://lab.civicrm.org/dev/core/-/issues/5079), [dev/core#5100](https://lab.civicrm.org/dev/core/-/issues/5100): [#29717](https://github.com/civicrm/civicrm-core/pull/29717))**
+* **_CiviEvent_: Email receipt does not show transaction number ([dev/core#5088](https://lab.civicrm.org/dev/core/-/issues/5088): [#29715](https://github.com/civicrm/civicrm-core/pull/29715))**
+* **_Custom Data_: Multi-select field does not show current values ([dev/core#5090](https://lab.civicrm.org/dev/core/-/issues/5090): [#29721](https://github.com/civicrm/civicrm-core/pull/29721))**
+* **_Form Builder_: Page title doesn't display ([#29694](https://github.com/civicrm/civicrm-core/pull/29694))**
+
+## Credits
+
+This release was developed by the following authors and reviewers:
+
+Wikimedia Foundation - Eileen McNaughton; Third Sector Design - William Mortada, Kurund
+Jalmi; Megaphone Technology Consulting - Jon Goldberg; JMA Consulting - Seamus Lee;
+civiservice.de - Detlev Sieber; CiviCRM - Coleman Watts
+
+## Feedback
+
+These release notes are edited by Tim Otten and Andie Hunt. If you'd like to
+provide feedback on them, please login to https://chat.civicrm.org/civicrm and
+contact `@agh1`.
diff --git a/www/modules/civicrm/release-notes/5.72.0.md b/www/modules/civicrm/release-notes/5.72.0.md
new file mode 100644
index 000000000..15d7beedb
--- /dev/null
+++ b/www/modules/civicrm/release-notes/5.72.0.md
@@ -0,0 +1,618 @@
+# CiviCRM 5.72.0
+
+Released April 3, 2024
+
+- **[Synopsis](#synopsis)**
+- **[Features](#features)**
+- **[Bugs resolved](#bugs)**
+- **[Miscellany](#misc)**
+- **[Credits](#credits)**
+- **[Feedback](#feedback)**
+
+## Synopsis
+
+| *Does this version...?* | |
+|:--------------------------------------------------------------- |:-------:|
+| Fix security vulnerabilities? | no |
+| **Change the database schema?** | **yes** |
+| **Alter the API?** | **yes** |
+| **Require attention to configuration options?** | **yes** |
+| **Fix problems installing or upgrading to a previous version?** | **yes** |
+| **Introduce features?** | **yes** |
+| **Fix bugs?** | **yes** |
+
+## Features
+
+### Core CiviCRM
+
+- **Scheduled Jobs - Define and track "last_run_end"
+ ([29587](https://github.com/civicrm/civicrm-core/pull/29587))**
+
+ If a job completes (whether successful or by exception) it will record a
+ `last_run_end` date in the job table.
+
+- **Support oEmbed for external facing pages
+ ([dev/core#2994](https://lab.civicrm.org/dev/core/-/issues/2994):
+ [29496](https://github.com/civicrm/civicrm-core/pull/29496) and
+ [29536](https://github.com/civicrm/civicrm-core/pull/29536))**
+
+ This adds initial support for CiviCRM to provide embeddable content on
+ external websites. However, the mechanism is somewhat experimental.
+ Consequently, it is implemented as a hidden extension (`oembed`).
+
+- **Updating php-weasyprint to latest version
+ ([29806](https://github.com/civicrm/civicrm-core/pull/29806) and
+ [29844](https://github.com/civicrm/civicrm-core/pull/29844))**
+
+### CiviContribute
+
+- **Convert confirm email text to html
+ ([29532](https://github.com/civicrm/civicrm-core/pull/29532))**
+
+ The field for custom text in a contribution or event confirmation email is
+ now rich text stored as HTML.
+
+- **Switch variables for tokens in contribution invoice template
+ (Preparing for [dev/core#4940](https://lab.civicrm.org/dev/core/-/issues/4940):
+ [29119](https://github.com/civicrm/civicrm-core/pull/29119))**
+
+ Most variables are no longer tied to the form layer.
+
+### CiviEvent
+
+- **Replace Contact Summary Events tab with Admin UI Search Display and Form
+ ([29570](https://github.com/civicrm/civicrm-core/pull/29570))**
+
+ This continues work to replace admin screens with displays built on
+ SearchKit. Note: customizations using `hook_civicrm_links()` on the replaced
+ tab will no longer work. They can be reimplemented by customizing the
+ display.
+
+- **add class for fee level column
+ ([29123](https://github.com/civicrm/civicrm-core/pull/29123))**
+
+ The results in Find Participants had classes for all the columns besides the
+ Fee Level column. This adds a class to the column so that it can used as reference if needed to alter the column via JS or CSS.
+
+### CiviMail
+
+- **Add fields to mailing details report
+ ([dev/core#5010](https://lab.civicrm.org/dev/core/-/issues/5010):
+ [29387](https://github.com/civicrm/civicrm-core/pull/29387))**
+
+ Time stamp fields are now available in the mailing details report to show when the mailing was delivered.
+
+- **Updates SMS form to use api based widget to select phones rather than the
+ hacky one-off ajax
+ ([29647](https://github.com/civicrm/civicrm-core/pull/29647))**
+
+## Bugs resolved
+
+### Core CiviCRM
+
+- **Accordions: Eight patterns in Civi markup – reduce & make more accessible?
+ ([dev/user-interface#60](https://lab.civicrm.org/dev/user-interface/-/issues/60):
+ [29446](https://github.com/civicrm/civicrm-core/pull/29446),
+ [29448](https://github.com/civicrm/civicrm-core/pull/29448),
+ [29449](https://github.com/civicrm/civicrm-core/pull/29449),
+ [29533](https://github.com/civicrm/civicrm-core/pull/29533),
+ [29543](https://github.com/civicrm/civicrm-core/pull/29543),
+ [29551](https://github.com/civicrm/civicrm-core/pull/29551),
+ [29563](https://github.com/civicrm/civicrm-core/pull/29563),
+ [29594](https://github.com/civicrm/civicrm-core/pull/29594),
+ [29600](https://github.com/civicrm/civicrm-core/pull/29600),
+ [29602](https://github.com/civicrm/civicrm-core/pull/29602),
+ [29633](https://github.com/civicrm/civicrm-core/pull/29633),
+ [29704](https://github.com/civicrm/civicrm-core/pull/29704),
+ [29713](https://github.com/civicrm/civicrm-core/pull/29713), and
+ [680](https://github.com/civicrm/civicrm-drupal/pull/680))**
+
+ This removes a `crm-collapsible` class which is deprecated, replacing it with
+ `` and `` elements.
+
+- **Fix bug where fields is not present ([29870](https://github.com/civicrm/civicrm-core/pull/29870))**
+
+- **Blank custom fields accordion appears on Find XXX search forms
+ ([dev/core#5112](https://lab.civicrm.org/dev/core/-/issues/5112):
+ [29840](https://github.com/civicrm/civicrm-core/pull/29840))**
+
+- **[REF] Do not add arrays consisting of just the auto renew as options … ([29770](https://github.com/civicrm/civicrm-core/pull/29770))**
+
+- **[REF] Fix showing Main Email field only when email doesn't exist in a
+ profile ([29749](https://github.com/civicrm/civicrm-core/pull/29749))**
+
+- **Update follow redirects to 1.15.6 ([29748](https://github.com/civicrm/civicrm-core/pull/29748))**
+
+- **Afform - fix missing page title ([29694](https://github.com/civicrm/civicrm-core/pull/29694))**
+
+- **Specify rounding mode when rendering Monetary entity tokens
+ ([29654](https://github.com/civicrm/civicrm-core/pull/29654))**
+
+- **missing literal ([29668](https://github.com/civicrm/civicrm-core/pull/29668))**
+
+- **Afform - typo when getting options from SavedSearch entity ([29662](https://github.com/civicrm/civicrm-core/pull/29662))**
+
+- **Remove unnecessary pass-by-ref ([29650](https://github.com/civicrm/civicrm-core/pull/29650))**
+
+- **SearchKit - Update crmSearchAdminFields.html to use X icon instead of ban icon for removing fields ([29549](https://github.com/civicrm/civicrm-core/pull/29549))**
+
+- **Pass all available relevant fields to Contact.getduplicates on checkMatchingContact ([29554](https://github.com/civicrm/civicrm-core/pull/29554))**
+
+- **Finish decommissioning use of legacy `getTree()` function ([29643](https://github.com/civicrm/civicrm-core/pull/29643))**
+
+- **Dedupe finder field wrangler - de-nest groupTree results ([29640](https://github.com/civicrm/civicrm-core/pull/29640))**
+
+- **Remove unset variables from previously shared function ([29636](https://github.com/civicrm/civicrm-core/pull/29636))**
+
+- **Remove some legacy code that is not relevant in this previously shared function ([29639](https://github.com/civicrm/civicrm-core/pull/29639))**
+
+- **Dont crash if we can't start a session when a file path doesnt exist ([29363](https://github.com/civicrm/civicrm-core/pull/29363))**
+
+- **Don't clear sessions when clearing cache ([29610](https://github.com/civicrm/civicrm-core/pull/29610))**
+
+- **Remove always NULL variable from previously shared function ([29635](https://github.com/civicrm/civicrm-core/pull/29635))**
+
+- **Dedupe selected fields, simplify, removed greeting id fields ([29632](https://github.com/civicrm/civicrm-core/pull/29632))**
+
+- **[Ref] Duplicate deprecated getTree function to another place in dedupe code ([29631](https://github.com/civicrm/civicrm-core/pull/29631))**
+
+- **[custom data code cleanup, Finder] Fold another previously shared function into only caller ([29628](https://github.com/civicrm/civicrm-core/pull/29628))**
+
+- **Check workflow not deprecated workflow_id on showing message templates ([29526](https://github.com/civicrm/civicrm-core/pull/29526))**
+
+- **Fold another function back into caller ([29626](https://github.com/civicrm/civicrm-core/pull/29626))**
+
+- **Access submitted value directly rather than passing around ([29627](https://github.com/civicrm/civicrm-core/pull/29627))**
+
+- **Fold the 2 groupTree wrangling functions into 1 ([29622](https://github.com/civicrm/civicrm-core/pull/29622))**
+
+- **Return function to only calling class ([29517](https://github.com/civicrm/civicrm-core/pull/29517))**
+
+- **Import - Use localized alternative to English-only headerPattern from field metadata ([29612](https://github.com/civicrm/civicrm-core/pull/29612))**
+
+- **Remove always true parameter & associated IF from previously shared function ([29531](https://github.com/civicrm/civicrm-core/pull/29531))**
+
+- **avoid passing null to strnatcmp deprecation notice ([29615](https://github.com/civicrm/civicrm-core/pull/29615))**
+
+- **OpenID - Set field widget to match field rule ([29611](https://github.com/civicrm/civicrm-core/pull/29611))**
+
+- **Use name instead of label in conditionals ([29608](https://github.com/civicrm/civicrm-core/pull/29608))**
+
+- **Replace assign_by_ref with assign
+ ([29433](https://github.com/civicrm/civicrm-core/pull/29433),
+ [29442](https://github.com/civicrm/civicrm-core/pull/29442),
+ [29443](https://github.com/civicrm/civicrm-core/pull/29443),
+ [29576](https://github.com/civicrm/civicrm-core/pull/29576),
+ [29601](https://github.com/civicrm/civicrm-core/pull/29601),
+ [29603](https://github.com/civicrm/civicrm-core/pull/29603),
+ [29606](https://github.com/civicrm/civicrm-core/pull/29606), and
+ [29609](https://github.com/civicrm/civicrm-core/pull/29609))**
+
+- **Extract isInvalidRecipient ([29565](https://github.com/civicrm/civicrm-core/pull/29565))**
+
+- **Remove unused inputs & outputs from buildLegacyGroupTree ([29557](https://github.com/civicrm/civicrm-core/pull/29557))**
+
+- **Update 'Administer Custom Groups' to show subtypes ([29584](https://github.com/civicrm/civicrm-core/pull/29584))**
+
+- **(REF) Crypto - Cleanup service declarations ([29571](https://github.com/civicrm/civicrm-core/pull/29571))**
+
+- **APIv4 Explorer - Accept action-parameters of type "float" ([29586](https://github.com/civicrm/civicrm-core/pull/29586))**
+
+- **entity id in rows ([29582](https://github.com/civicrm/civicrm-core/pull/29582))**
+
+- **if no clicks, display 0 rather than empty string ([29568](https://github.com/civicrm/civicrm-core/pull/29568))**
+
+- **AdminUI - Edit title, description, comment to clarify what it's for ([29581](https://github.com/civicrm/civicrm-core/pull/29581))**
+
+- **Conditionally show updateTemplate fields ([29577](https://github.com/civicrm/civicrm-core/pull/29577))**
+
+- **More briefName fixes ([29579](https://github.com/civicrm/civicrm-core/pull/29579))**
+
+- **Finish making DedupeRule sql() static ([29540](https://github.com/civicrm/civicrm-core/pull/29540))**
+
+- **Call browse directly rather than forcing through run ([29481](https://github.com/civicrm/civicrm-core/pull/29481))**
+
+- **Deprecate dupeQuery hook ([29544](https://github.com/civicrm/civicrm-core/pull/29544))**
+
+- **Remove non-variable variables from recently unshared function ([29556](https://github.com/civicrm/civicrm-core/pull/29556))**
+
+- **Add some noise to legacy code that I believe to be no longer reachable ([29535](https://github.com/civicrm/civicrm-core/pull/29535))**
+
+- **Copy getTree function back to finder class ([29546](https://github.com/civicrm/civicrm-core/pull/29546))**
+
+- **Admin UI page pdf formats ([29545](https://github.com/civicrm/civicrm-core/pull/29545))**
+
+- **Assign profileID to template in UFNotify, add example ([29441](https://github.com/civicrm/civicrm-core/pull/29441))**
+
+- **SearchKit - Support field comparisons in HAVING clause ([29542](https://github.com/civicrm/civicrm-core/pull/29542))**
+
+- **A11y: Fix info button contrast ratio ([29529](https://github.com/civicrm/civicrm-core/pull/29529))**
+
+- **Pass values into DedupeRule->sql() rather than hybrid object ([29520](https://github.com/civicrm/civicrm-core/pull/29520))**
+
+- **Remove code slated for removal ([29534](https://github.com/civicrm/civicrm-core/pull/29534))**
+
+- **UI: Swaps icon image sprite with FA icon ([29530](https://github.com/civicrm/civicrm-core/pull/29530))**
+
+- **Deprecate function back to only caller ([29524](https://github.com/civicrm/civicrm-core/pull/29524))**
+
+- **Remove unreachable broken rollback ([29511](https://github.com/civicrm/civicrm-core/pull/29511))**
+
+- **[REF} extract code for formatting custom fields ([29518](https://github.com/civicrm/civicrm-core/pull/29518))**
+
+- **Add some noise if people use getVar to access internal properties ([29492](https://github.com/civicrm/civicrm-core/pull/29492))**
+
+- **Copy functions from TabHeader back to the only caller ([29490](https://github.com/civicrm/civicrm-core/pull/29490))**
+
+- **Stop passing parameters to previously shared now-private function ([29491](https://github.com/civicrm/civicrm-core/pull/29491))**
+
+- **Allow json parameter definition for scheduled jobs ([29486](https://github.com/civicrm/civicrm-core/pull/29486))**
+
+- **Do not use getVar to access property on same form ([29493](https://github.com/civicrm/civicrm-core/pull/29493))**
+
+- **Stop passing some-weird-but-always-the-same params to getPositions ([29395](https://github.com/civicrm/civicrm-core/pull/29395))**
+
+- **[REF] Ensure that gName is always asigned to page template ([29480](https://github.com/civicrm/civicrm-core/pull/29480))**
+
+- **Sub str_starts_with instead of substring ([29478](https://github.com/civicrm/civicrm-core/pull/29478))**
+
+- **AllCoreTables - Reduce reliance on class index. ([29471](https://github.com/civicrm/civicrm-core/pull/29471))**
+
+- **Add deprecation tag & pointers ([29467](https://github.com/civicrm/civicrm-core/pull/29467))**
+
+- **Remove pass-by-ref ([29468](https://github.com/civicrm/civicrm-core/pull/29468))**
+
+- **Copy last remaining usage of getComponentDetails() to relevant subsystem ([29459](https://github.com/civicrm/civicrm-core/pull/29459))**
+
+- **[REF] Fully deprecated getSubType function ([29462](https://github.com/civicrm/civicrm-core/pull/29462))**
+
+- **Display labels for numeric custom field key values in Log Detail Report ([29029](https://github.com/civicrm/civicrm-core/pull/29029))**
+
+- **Split code from quasi-shared code in order to be able to clean it up ([29435](https://github.com/civicrm/civicrm-core/pull/29435))**
+
+- **Remove unused function, noisily deprecated a year ago ([29434](https://github.com/civicrm/civicrm-core/pull/29434))**
+
+- **SchemaHandler - Get table names from canonical sources instead of string-fu guesswork ([29389](https://github.com/civicrm/civicrm-core/pull/29389))**
+
+- **[REF] AllCoreTables - Cleanup comments, rename functions for consistency ([29390](https://github.com/civicrm/civicrm-core/pull/29390))**
+
+- **APIv4: Automatically add 'OR IS NULL' to 'NOT CONTAINS' ([29402](https://github.com/civicrm/civicrm-core/pull/29402))**
+
+- **[REF] AllCoreTables - Make internal function private ([29418](https://github.com/civicrm/civicrm-core/pull/29418))**
+
+- **[REF] DAO - Make `getEntityIcon()` function more useful ([29423](https://github.com/civicrm/civicrm-core/pull/29423))**
+
+- **MultiLingual - Fix inconsistent handling of table names ([29366](https://github.com/civicrm/civicrm-core/pull/29366))**
+
+- **Comment functions with deprecation/ preferred method notices ([29417](https://github.com/civicrm/civicrm-core/pull/29417))**
+
+- **Remove (unreachable) call to clearAssign ([29412](https://github.com/civicrm/civicrm-core/pull/29412))**
+
+- **Fix PHP Notice in Contact Import Parser
+ ([29396](https://github.com/civicrm/civicrm-core/pull/29396))**
+
+- **CRM_Utils_JS - Improve encoding of object keys ([29392](https://github.com/civicrm/civicrm-core/pull/29392))**
+
+- **AdminUI - Add link to create new field directly from custom group listing ([29397](https://github.com/civicrm/civicrm-core/pull/29397))**
+
+- **[php8.2] Clean up the 2 forms that support Group-extending custom data for
+ notices, php8.2 compliance
+ ([29229](https://github.com/civicrm/civicrm-core/pull/29229))**
+
+- **CRM_Core_DAO - Deprecate unused functions ([29391](https://github.com/civicrm/civicrm-core/pull/29391))**
+
+- **(REF) Drop unused SQL file (civicrm_arms_sample_data.sql) ([29386](https://github.com/civicrm/civicrm-core/pull/29386))**
+
+- **Switch Smartyv2 mixin to Smarty mixin ([29382](https://github.com/civicrm/civicrm-core/pull/29382))**
+
+- **Fix references to old location for HookInterface ([29385](https://github.com/civicrm/civicrm-core/pull/29385))**
+
+- **Switch our default dev & demo smarty version from 3 to 4 ([29370](https://github.com/civicrm/civicrm-core/pull/29370))**
+
+- **Ext - Specify COLLATE when creating tables ([29384](https://github.com/civicrm/civicrm-core/pull/29384))**
+
+- **avoid deprecation errors ([29383](https://github.com/civicrm/civicrm-core/pull/29383))**
+
+- **Update file ID in entity field on file upload in Afform ([29199](https://github.com/civicrm/civicrm-core/pull/29199))**
+
+- **[REF] AllCoreTables - More efficient array lookups ([29377](https://github.com/civicrm/civicrm-core/pull/29377))**
+
+- **Remove financial acls properties in core that are set but not accessed ([28960](https://github.com/civicrm/civicrm-core/pull/28960))**
+
+- **Replace 'Expose Publicly' phrasing with 'Public Pages'
+ ([dev/core#2915](https://lab.civicrm.org/dev/core/-/issues/2915):
+ [29347](https://github.com/civicrm/civicrm-core/pull/29347))**
+
+- **[REF] DAO - Consolidate redundant functions keys() and getPrimaryKey() ([29367](https://github.com/civicrm/civicrm-core/pull/29367))**
+
+- **Add load filter compatibility function to Smarty2 ([388](https://github.com/civicrm/civicrm-packages/pull/388))**
+
+### CiviCampaign
+
+- **[Survey] 5.71 regression - survey forms missing type hints
+ ([29658](https://github.com/civicrm/civicrm-core/pull/29658))**
+
+- **CiviCampaign - Ensure dashboard fields are translated
+ ([29723](https://github.com/civicrm/civicrm-core/pull/29723))**
+
+### CiviCase
+
+- **php 8.2 fix ChangeCaseStartDate
+ ([29666](https://github.com/civicrm/civicrm-core/pull/29666))**
+
+### CiviContribute
+
+- **Premiums configuration gives a 500 error
+ ([dev/core#5107](https://lab.civicrm.org/dev/core/-/issues/5107):
+ [29843](https://github.com/civicrm/civicrm-core/pull/29843))**
+
+- **(regression) Submission of non-numeric value on contribution form causes
+ crash ([dev/core#5079](https://lab.civicrm.org/dev/core/-/issues/5079):
+ [29717](https://github.com/civicrm/civicrm-core/pull/29717))**
+
+- **Price Sets: total calculation wrong if decimal separator is different than
+ "." ([dev/core#5026](https://lab.civicrm.org/dev/core/-/issues/5026):
+ [29499](https://github.com/civicrm/civicrm-core/pull/29499))**
+
+- **Fix Payment Processor form to use the right way to get the
+ `paymentProcessorID`
+ ([29477](https://github.com/civicrm/civicrm-core/pull/29477))**
+
+- **Fix Smarty notice on add payment
+ ([29502](https://github.com/civicrm/civicrm-core/pull/29502))**
+
+- **[Update Subscription Form] Align UpdateSubscription to more recent
+ practices ([29538](https://github.com/civicrm/civicrm-core/pull/29538),
+ [29539](https://github.com/civicrm/civicrm-core/pull/29539),
+ [29564](https://github.com/civicrm/civicrm-core/pull/29564),
+ [29572](https://github.com/civicrm/civicrm-core/pull/29572),
+ [29573](https://github.com/civicrm/civicrm-core/pull/29573),
+ [29574](https://github.com/civicrm/civicrm-core/pull/29574), and
+ [29580](https://github.com/civicrm/civicrm-core/pull/29580))**
+
+- **Use getPaymentProcessorObject() in updateBilling
+ ([29605](https://github.com/civicrm/civicrm-core/pull/29605))**
+
+- **Make getContributionID public on AbstractEditPayment
+ ([29483](https://github.com/civicrm/civicrm-core/pull/29483))**
+
+ We have the same function many places & have been making it public & api
+ supported but this one is protected
+
+- **[REF] Ensure that CMS is booted prior to processing legacy PayPal IPN
+ ([29521](https://github.com/civicrm/civicrm-core/pull/29521))**
+
+### CiviEvent
+
+- **Incorrect fee level saved when editing event participant
+ ([dev/core#5085](https://lab.civicrm.org/dev/core/-/issues/5085):
+ [29726](https://github.com/civicrm/civicrm-core/pull/29726))**
+
+- **Intro text on event confirm is actually html
+ ([29841](https://github.com/civicrm/civicrm-core/pull/29841))**
+
+- **Display of autocomplete multi-select custom fields for events is broken
+ ([dev/core#5090](https://lab.civicrm.org/dev/core/-/issues/5090):
+ [29721](https://github.com/civicrm/civicrm-core/pull/29721))**
+
+- **message template "Events - Registration Confirmation and Receipt (on-line)"
+ transaction no. not displayed
+ ([dev/core#5088](https://lab.civicrm.org/dev/core/-/issues/5088):
+ [29715](https://github.com/civicrm/civicrm-core/pull/29715))**
+
+- **Afform - Add Participant Note block
+ ([29575](https://github.com/civicrm/civicrm-core/pull/29575))**
+
+ This adds a missing Note field for editing participants in Form Builder.
+
+- **Disabled Event Name Badge Layouts Are Not Disabled
+ ([dev/core#5032](https://lab.civicrm.org/dev/core/-/issues/5032):
+ [29494](https://github.com/civicrm/civicrm-core/pull/29494))**
+
+- **Columns are misaligned on find participants results
+ ([dev/core#5030](https://lab.civicrm.org/dev/core/-/issues/5030):
+ [29489](https://github.com/civicrm/civicrm-core/pull/29489) and
+ [29500](https://github.com/civicrm/civicrm-core/pull/29500))**
+
+- **Fix manage event pages to clear caches on save
+ ([29510](https://github.com/civicrm/civicrm-core/pull/29510))**
+
+- **Match event breadcrumb label to context
+ ([29537](https://github.com/civicrm/civicrm-core/pull/29537))**
+
+- **Fix notices on participantView
+ ([29473](https://github.com/civicrm/civicrm-core/pull/29473) and
+ [29476](https://github.com/civicrm/civicrm-core/pull/29476))**
+
+### CiviMail
+
+- **With URL tracking enabled, a personalised "View in your browser" link
+ incorrectly replaces ? with & which causes CiviCRM to respond with error:
+ "You do not have permission to access this page"
+ ([dev/core#5082](https://lab.civicrm.org/dev/core/-/issues/5082):
+ [29850](https://github.com/civicrm/civicrm-core/pull/29850))**
+
+- **sms form missing tokens dropdown and save template section at bottom not
+ hidden properly
+ ([dev/core#5029](https://lab.civicrm.org/dev/core/-/issues/5029):
+ [29667](https://github.com/civicrm/civicrm-core/pull/29667))**
+
+- **[SMS Trait] Consolidate 2 foreach loops into 1 in sms trait
+ ([29629](https://github.com/civicrm/civicrm-core/pull/29629))**
+
+- **SMSTrait - extract getSMSProviderParams
+ ([29607](https://github.com/civicrm/civicrm-core/pull/29607))**
+
+- **Clean up phone filtering in sms activity trait
+ ([29604](https://github.com/civicrm/civicrm-core/pull/29604))**
+
+- **SMS form cleanup Stop passing contactIds into previously shared function
+ ([29614](https://github.com/civicrm/civicrm-core/pull/29614))**
+
+- **Use Api rather than BAO::create to create activity in SMS Trait
+ ([29475](https://github.com/civicrm/civicrm-core/pull/29475))**
+
+- **[SMS Trait] Remove unvariable variables from previously shared code
+ ([29474](https://github.com/civicrm/civicrm-core/pull/29474))**
+
+- **SMS Trait - add support for Autocomplete subscriber, notice fix
+ ([29429](https://github.com/civicrm/civicrm-core/pull/29429))**
+
+### CiviMember
+
+- **Scheduled Reminder listing will not load at all if any Scheduled Reminder
+ exists which refers to a deleted Membership Type
+ ([29460](https://github.com/civicrm/civicrm-core/pull/29460))**
+
+- **TypeError when trying to use checkboxes with default non-membership
+ options in the Membership section of Contribution Pages
+ ([dev/core#5071](https://lab.civicrm.org/dev/core/-/issues/5071):
+ [29653](https://github.com/civicrm/civicrm-core/pull/29653))**
+
+- **Custom field value not saved first time after membership type changed
+ ([dev/core#4026](https://lab.civicrm.org/dev/core/-/issues/4026):
+ [29355](https://github.com/civicrm/civicrm-core/pull/29355))**
+
+- **Fix failure to handle localised money, notice on batch membership form
+ ([29349](https://github.com/civicrm/civicrm-core/pull/29349))**
+
+- **Ensure price from url is set as default
+ ([29822](https://github.com/civicrm/civicrm-core/pull/29822))**
+
+ Specifying price field ID in URL was overriden by current membership type.
+
+- **Fix New Member receipt setting for non-English
+ ([29451](https://github.com/civicrm/civicrm-core/pull/29451))**
+
+- **Fix BackOffice Membership forms getPriceSetID() to be standard
+ ([29348](https://github.com/civicrm/civicrm-core/pull/29348))**
+
+- **Add filters to membership type sk on contact membership tab
+ ([29775](https://github.com/civicrm/civicrm-core/pull/29775))**
+
+### Drupal Integration
+
+- **drupal 8 - php warnings on every page: html_entity_decode(): Passing null
+ to parameter #1 ($string) of type string is deprecated
+ ([dev/core#5052](https://github.com/civicrm/civicrm-core/pull/29560):
+ [29560](https://github.com/civicrm/civicrm-core/pull/29560))**
+
+- **Issue #194: add core resources to blocks
+ ([89](https://github.com/civicrm/civicrm-drupal-8/pull/89))**
+
+### Joomla! Integration
+
+- **Respect CIVICRM_DSN and CIVICRM_UF_DSN being different on upgrade
+ ([69](https://github.com/civicrm/civicrm-joomla/pull/69))**
+
+- **Check if valid UF Match exists in user plugin
+ ([55](https://github.com/civicrm/civicrm-joomla/pull/55))**
+
+- **Fixes broken links on post-upgrade/install page
+ ([66](https://github.com/civicrm/civicrm-joomla/pull/66))**
+
+- **Fix event listing as front page for Joomla 4
+ ([73](https://github.com/civicrm/civicrm-joomla/pull/73))**
+
+### Standalone Implementation
+
+- **Standalone: doesn't install because of missing session class
+ ([dev/core#4988](https://lab.civicrm.org/dev/core/-/issues/4988):
+ [29352](https://github.com/civicrm/civicrm-core/pull/29352))**
+
+- **Standalone install in another language
+ ([dev/core#5037](https://lab.civicrm.org/dev/core/-/issues/5037):
+ [29522](https://github.com/civicrm/civicrm-core/pull/29522))**
+
+- **Disable Sync CMS Users form and functionality on Standalone
+ ([dev/core#4993](https://lab.civicrm.org/dev/core/-/issues/4993):
+ [29351](https://github.com/civicrm/civicrm-core/pull/29351))**
+
+- **Standalone install - check upload directory is writable
+ ([29354](https://github.com/civicrm/civicrm-core/pull/29354))**
+
+## Miscellany
+
+- **Imagine a world without CodeGen
+ (Toward [dev/core#4999](https://lab.civicrm.org/dev/core/-/issues/4999):
+ [29365](https://github.com/civicrm/civicrm-core/pull/29365) and
+ [29364](https://github.com/civicrm/civicrm-core/pull/29364))**
+
+- **ReferenceDynamic - Save lots of irrelevant queries when finding
+ backreferences ([29381](https://github.com/civicrm/civicrm-core/pull/29381)
+ and [29569](https://github.com/civicrm/civicrm-core/pull/29569))**
+
+- **Regen DAOs ([29372](https://github.com/civicrm/civicrm-core/pull/29372))**
+
+- **Make mailingJob::queue static
+ ([29175](https://github.com/civicrm/civicrm-core/pull/29175))**
+
+- **Suppress last php8.2 test fail for PR tests
+ ([29724](https://github.com/civicrm/civicrm-core/pull/29724))**
+
+- **[REF] Clarify type of group_id & rule_group_id is int or null
+ ([29394](https://github.com/civicrm/civicrm-core/pull/29394))**
+
+- **Ornery++ ([29550](https://github.com/civicrm/civicrm-core/pull/29550))**
+
+- **Fix test to call actual function
+ ([29630](https://github.com/civicrm/civicrm-core/pull/29630))**
+
+- **add field name to SearchKit cells, primarily for testing
+ ([29595](https://github.com/civicrm/civicrm-core/pull/29595))**
+
+- **fix 'Authorization Failed' on API4TestTrait
+ ([29590](https://github.com/civicrm/civicrm-core/pull/29590))**
+
+- **[NFC] Fix tests for leap year
+ ([29562](https://github.com/civicrm/civicrm-core/pull/29562))**
+
+- **LocalizedDataTest - Simplify test protocol. Only care about live SQL.
+ ([29311](https://github.com/civicrm/civicrm-core/pull/29311))**
+
+- **SMS form test - fix to test the function actually being used
+ ([29432](https://github.com/civicrm/civicrm-core/pull/29432))**
+
+- **Add test on merge code
+ ([29405](https://github.com/civicrm/civicrm-core/pull/29405))**
+
+- **NFC: fix incorrect comment
+ ([29596](https://github.com/civicrm/civicrm-core/pull/29596))**
+
+- **[NFC] Don't flush someone else's ob
+ ([29426](https://github.com/civicrm/civicrm-core/pull/29426))**
+
+## Credits
+
+This release was developed by the following code authors:
+
+AGH Strategies - Andie Hunt; Agileware - Agileware Team, Francis Whittle,
+Justin Freeman; Benjamin W; Christian Wach; Circle Interactive - Pradeep
+Nayak; CiviCoop - Jaap Jansma; CiviCRM - Coleman Watts, Tim Otten; CiviDesk -
+Yashodha Chaku; civiservice.de - Detlev Sieber; Coop SymbioTIC - Mathieu
+Lutfy, Samuel Vanhove, Shane Bill; Dave D; dependabot[bot]; Freeform Solutions
+- Herb van den Dool; Fuzion - Jitendra Purohit; Gokhalemethod - Sadashiv;
+Greenleaf Advancement - Guy Iaccarino; JMA Consulting - Seamus Lee; John
+Kingsnorth; kapn*net Technology Services - Keith Nunn; Lemniscus - Noah
+Miller; Makoa - Usha F. Matisson; Megaphone Technology Consulting - Jon
+Goldberg; MJW Consulting - Matthew Wire; Mosier Consulting - Justin Mosier;
+Nicol Wistreich; Progressive Technology Project - Jamie McClelland; Responsive
+Development Technologies - Thomas Nilefalk; Squiffle Consulting - Aidan
+Saunders; Third Sector Design - Kurund Jalmi; Wikimedia Foundation - Eileen
+McNaughton, Elliott Eggleston
+
+Most authors also reviewed code for this release; in addition, the following
+reviewers contributed their comments:
+
+AGH Strategies - Chris Garaffa; Artful Robot - Rich Lott; ASMAC (American
+Society of Music Arrangers and Composers) - Jeff Kellem; Australian Greens -
+Andrew Cormick-Dockery; Francesc Bassas i Bullich; Fuzion - Luke Stewart;
+James Bugden; JMA Consulting - Joe Murray; mmyriam; Systopia - Dominic Tubach,
+Johannes Franz; Tadpole Collective - Kevin Cristiano; Third Sector Design -
+William Mortada
+
+## Feedback
+
+These release notes are edited by Alice Frumin and Andie Hunt. If you'd like
+to provide feedback on them, please log in to https://chat.civicrm.org/civicrm
+and contact `@agh1`.
diff --git a/www/modules/civicrm/release-notes/5.72.1.md b/www/modules/civicrm/release-notes/5.72.1.md
new file mode 100644
index 000000000..8c676de97
--- /dev/null
+++ b/www/modules/civicrm/release-notes/5.72.1.md
@@ -0,0 +1,42 @@
+# CiviCRM 5.72.1
+
+Released April 8, 2024
+
+- **[Synopsis](#synopsis)**
+- **[Bugs resolved](#bugs)**
+- **[Credits](#credits)**
+- **[Feedback](#feedback)**
+
+## Synopsis
+
+| *Does this version...?* | |
+| --------------------------------------------------------------- | -------- |
+| Change the database schema? | no |
+| Alter the API? | no |
+| Require attention to configuration options? | no |
+| Fix problems installing or upgrading to a previous version? | no |
+| Introduce features? | no |
+| **Fix bugs?** | **yes** |
+| Fix security vulnerabilities? | no |
+
+## Bugs resolved
+
+* **_CiviCase_: "New Case Type" UI doesn't show translated strings ([dev/translation#85](https://lab.civicrm.org/dev/translation/-/issues/85): [#29891](https://github.com/civicrm/civicrm-core/pull/29891))**
+* **_CiviMail_: "New Mailing" UI doesn't show translated strings ([dev/translation#85](https://lab.civicrm.org/dev/translation/-/issues/85): [#29891](https://github.com/civicrm/civicrm-core/pull/29891))**
+* **_Distmaker_: `iframe` extension missing from tar/zip builds ([#29917](https://github.com/civicrm/civicrm-core/pull/29917))**
+* **_Form Builder_: When custom-field of type "File" is present, updates aren't saved ([dev/core#5078](https://lab.civicrm.org/dev/core/-/issues/5078): [#29833](https://github.com/civicrm/civicrm-core/pull/29833))**
+* **_WordPress_: Frontend forms may incorrectly submit results to backend handlers ([dev/core#5127](https://lab.civicrm.org/dev/core/-/issues/5127): [wordpress#318](https://github.com/civicrm/civicrm-wordpress/pull/318/), [wordpress#320](https://github.com/civicrm/civicrm-wordpress/pull/320))**
+* **_WordPress_: Update README ([wordpress#319](https://github.com/civicrm/civicrm-wordpress/pull/319))**
+
+## Credits
+
+This release was developed by the following authors and reviewers:
+
+Wikimedia Foundation - Eileen McNaughton; Tadpole Collective - Kevin Cristiano; Nadaillac; JMA Consulting - Seamus Lee;
+Coop SymbioTIC - Mathieu Lutfy; CiviCRM - Tim Otten, Coleman Watts; Christian Wach; All In Appli.com - Guillaume Sorel
+
+## Feedback
+
+These release notes are edited by Tim Otten and Andie Hunt. If you'd like to
+provide feedback on them, please login to https://chat.civicrm.org/civicrm and
+contact `@agh1`.
diff --git a/www/modules/civicrm/release-notes/5.72.2.md b/www/modules/civicrm/release-notes/5.72.2.md
new file mode 100644
index 000000000..2f649ee55
--- /dev/null
+++ b/www/modules/civicrm/release-notes/5.72.2.md
@@ -0,0 +1,45 @@
+# CiviCRM 5.72.2
+
+Released April 23, 2024
+
+- **[Synopsis](#synopsis)**
+- **[Bugs resolved](#bugs)**
+- **[Credits](#credits)**
+- **[Feedback](#feedback)**
+
+## Synopsis
+
+| *Does this version...?* | |
+| --------------------------------------------------------------- | -------- |
+| Change the database schema? | no |
+| Alter the API? | no |
+| Require attention to configuration options? | no |
+| Fix problems installing or upgrading to a previous version? | no |
+| Introduce features? | no |
+| **Fix bugs?** | **yes** |
+| Fix security vulnerabilities? | no |
+
+## Bugs resolved
+
+* **_Admin UI_: When viewing a "Contact", the "Memberships" tab omits some memberships ([dev/core#5137](https://lab.civicrm.org/dev/core/-/issues/5137): [#29994](https://github.com/civicrm/civicrm-core/pull/29994))**
+* **_Joomla_: Permissions are presented without labels ([dev/joomla#56](https://lab.civicrm.org/dev/joomla/-/issues/56): [joomla#75](https://github.com/civicrm/civicrm-joomla/pull/75))**
+* **_Regen_: The "regen.sh" script crashes when flushing ([#29997](https://github.com/civicrm/civicrm-core/pull/29997))**
+* **_Search Kit_: Admins incorrectly denied permission to edit ([dev/core#5166](https://lab.civicrm.org/dev/core/-/issues/5166): [#30054](https://github.com/civicrm/civicrm-core/pull/30054))**
+* **_Search Kit_: The "NOT CONTAINS" operator generates invalid SQL ([dev/core#5159](https://lab.civicrm.org/dev/core/-/issues/5159): [#30018](https://github.com/civicrm/civicrm-core/pull/30018))**
+* **_Smarty v3/v4_: Misapplication of Smarty v2 plugins may lead to crashes ([dev/core#5130](https://lab.civicrm.org/dev/core/-/issues/5130): [#29911](https://github.com/civicrm/civicrm-core/pull/29911))**
+* **_Tcpdf_: Update to v6.7.5 ([#30027](https://github.com/civicrm/civicrm-core/pull/30027), [#29969](https://github.com/civicrm/civicrm-core/pull/29969))**
+
+## Credits
+
+This release was developed by the following authors and reviewers:
+
+Wikimedia Foundation - Eileen McNaughton; Tadpole Collective - Kevin Cristiano;
+rebeccatregenna; Nicol Wistreich; JMA Consulting - Seamus Lee; Dave D; CSES (Chelmsford
+Science and Engineering Society) - Adam Wood; Coop SymbioTIC - mmyriam; CiviCRM - Tim
+Otten, Coleman Watts
+
+## Feedback
+
+These release notes are edited by Tim Otten and Andie Hunt. If you'd like to
+provide feedback on them, please login to https://chat.civicrm.org/civicrm and
+contact `@agh1`.
diff --git a/www/modules/civicrm/release-notes/5.70.2.md b/www/modules/civicrm/release-notes/5.72.3.md
similarity index 72%
rename from www/modules/civicrm/release-notes/5.70.2.md
rename to www/modules/civicrm/release-notes/5.72.3.md
index 50e34f2eb..142a765d6 100644
--- a/www/modules/civicrm/release-notes/5.70.2.md
+++ b/www/modules/civicrm/release-notes/5.72.3.md
@@ -1,6 +1,6 @@
-# CiviCRM 5.70.2
+# CiviCRM 5.72.3
-Released March 2, 2024
+Released May 1, 2024
- **[Synopsis](#synopsis)**
- **[Bugs resolved](#bugs)**
@@ -21,15 +21,13 @@ Released March 2, 2024
## Bugs resolved
-* **_Search Kit_: Displays of type "DB Entity" may lead to errors about "getLinks" ([#29589](https://github.com/civicrm/civicrm-core/pull/29589))**
-* **_Search Kit_: Some tasks ("Enable", "Disable") display an inappropriate pop-up ([#29547](https://github.com/civicrm/civicrm-core/pull/29547))**
+* **_Message Templates_: Editing message-template may lead to mangled markup ([dev/core#5176](https://lab.civicrm.org/dev/core/-/issues/5176), [dev/core#5180](https://lab.civicrm.org/dev/core/-/issues/5180): [#30081](https://github.com/civicrm/civicrm-core/pull/30081))**
## Credits
This release was developed by the following authors and reviewers:
-MJW Consulting - Matthew Wire; Greenleaf Advancement - Guy Iaccarino; Coop SymbioTIC -
-Samuel Vanhove; CiviCRM - Coleman Watts,
+Wikimedia Foundation - Eileen McNaughton; PERORA SRL - Samuele Masetto; Dave D; Agileware - Justin Freeman
## Feedback
diff --git a/www/modules/civicrm/release-notes/5.73.0.md b/www/modules/civicrm/release-notes/5.73.0.md
new file mode 100644
index 000000000..119eebb32
--- /dev/null
+++ b/www/modules/civicrm/release-notes/5.73.0.md
@@ -0,0 +1,600 @@
+# CiviCRM 5.73.0
+
+Released May 2, 2024
+
+- **[Synopsis](#synopsis)**
+- **[Features](#features)**
+- **[Bugs resolved](#bugs)**
+- **[Miscellany](#misc)**
+- **[Credits](#credits)**
+- **[Feedback](#feedback)**
+
+## Synopsis
+
+| *Does this version...?* | |
+|:--------------------------------------------------------------- |:-------:|
+| Fix security vulnerabilities? | no |
+| **Change the database schema?** | **yes** |
+| **Alter the API?** | **yes** |
+| Require attention to configuration options? | no |
+| **Fix problems installing or upgrading to a previous version?** | **yes** |
+| **Introduce features?** | **yes** |
+| **Fix bugs?** | **yes** |
+
+## Features
+
+### Core CiviCRM
+
+- **Afform - Enable updating relationship by id
+ ([29693](https://github.com/civicrm/civicrm-core/pull/29693))**
+
+ Previously relationships could only be updated if required fields were
+ present. Now if there is an id it can be updated without any other fields on
+ the form.
+
+- **Warn when disabling/deleting groups which feature in smart group criteria
+ ([29732](https://github.com/civicrm/civicrm-core/pull/29732))**
+
+ Adds a warning when disabling/deleting a group will have repercussions
+ for other groups.
+
+- **SearchKit - Enable predefined link conditionals
+ ([29735](https://github.com/civicrm/civicrm-core/pull/29735))**
+
+ Improves links in SearchKit by pre-defining conditional rules.
+
+- **Imagine a world without CodeGen (Work Towards
+ [dev/core#4999](https://lab.civicrm.org/dev/core/-/issues/4999):
+ [29771](https://github.com/civicrm/civicrm-core/pull/29771))**
+
+ Adds a new mixin for use by non-xml-based entities.
+
+- **Api4 - Add 'usage' to getFields output
+ ([29634](https://github.com/civicrm/civicrm-core/pull/29634))**
+
+ Adds metadata to APIv4 getFields.
+
+- **Allow access to API params from Api4Query
+ (Work Towards [dev/core#5102](https://lab.civicrm.org/dev/core/-/issues/5102):
+ [29774](https://github.com/civicrm/civicrm-core/pull/29774))**
+
+ Get any API param from the Api4Query class.
+
+### CiviMail
+
+- **(dev/core#5118) Tokens - Expand support for symbol-tokens ([30100](https://github.com/civicrm/civicrm-core/pull/30100), [30102](https://github.com/civicrm/civicrm-core/pull/30102), [30101](https://github.com/civicrm/civicrm-core/pull/30101))**
+
+## Bugs resolved
+
+### Core CiviCRM
+
+- **(dev/core#5183) Search Tasks - Actions incorrectly apply to all records in database ([30111](https://github.com/civicrm/civicrm-core/pull/30111))**
+
+- **Cannot create proper `Group`s on multilingual with MySQL 5.6 and Civi
+ 5.31-rc
+ ([dev/translation#85](https://lab.civicrm.org/dev/translation/-/issues/58):
+ [29891](https://github.com/civicrm/civicrm-core/pull/29891))**
+
+- **Searching by phone in Advanced Search with a non-default Search Profile
+ returns DB Error: no such field
+ ([dev/core#3836](https://lab.civicrm.org/dev/core/-/issues/3836):
+ [24450](https://github.com/civicrm/civicrm-core/pull/24450))**
+
+- **Formbuilder: updates not saved when a populated field of type "file" is
+ present in the form
+ ([dev/core#5078](https://lab.civicrm.org/dev/core/-/issues/5078):
+ [29884](https://github.com/civicrm/civicrm-core/pull/29884))**
+
+- **Saving checkbox custom fields via APIv4 fails for custom/dynamic entities
+ ([dev/core#5103](https://lab.civicrm.org/dev/core/-/issues/5103):
+ [29786](https://github.com/civicrm/civicrm-core/pull/29786))**
+
+- **Inconsistent handling of tag name and tag label
+ ([dev/core#5108](https://lab.civicrm.org/dev/core/-/issues/5108):
+ [29875](https://github.com/civicrm/civicrm-core/pull/29875))**
+
+- **smarty 3/4 still calling smarty2 plugins, which errors for e.g. date_format
+ ([dev/core#5130](https://lab.civicrm.org/dev/core/-/issues/5130):
+ [29911](https://github.com/civicrm/civicrm-core/pull/29911))**
+
+- **Failure when .hlp files contain php functions like array_key_exists
+ ([dev/core#5136](https://lab.civicrm.org/dev/core/-/issues/5136):
+ [29923](https://github.com/civicrm/civicrm-core/pull/29923))**
+
+- **Register some more functions for Smarty
+ ([29856](https://github.com/civicrm/civicrm-core/pull/29856))**
+
+- **Add check for whether SMARTY_DIR is defined
+ ([29853](https://github.com/civicrm/civicrm-core/pull/29853))**
+
+- **asofDate gets used as constructor to DateTime which wants a string
+ ([29858](https://github.com/civicrm/civicrm-core/pull/29858))**
+
+- **`hook_civicrm_links` - don't pass `objectId` by-reference
+ ([29764](https://github.com/civicrm/civicrm-core/pull/29764))**
+
+- **Set error response code before starting error response
+ ([29809](https://github.com/civicrm/civicrm-core/pull/29809))**
+
+- **Don't clear the smarty debugging var
+ ([29754](https://github.com/civicrm/civicrm-core/pull/29754))**
+
+- **Allow `0.0` as value for a required float APIv4 action parameter
+ ([29766](https://github.com/civicrm/civicrm-core/pull/29766))**
+
+- **Add deprecation notice to hook_civicrm_links used by search forms
+ ([29765](https://github.com/civicrm/civicrm-core/pull/29765))**
+
+- **AngularJS - Fix multi-select fields when value contains a comma
+ ([29645](https://github.com/civicrm/civicrm-core/pull/29645))**
+
+- **php8.2 Update Case form to handle both Activity & Case custom data with
+ standard ajax methods
+ ([29799](https://github.com/civicrm/civicrm-core/pull/29799))**
+
+- **call buildamount hook
+ ([29829](https://github.com/civicrm/civicrm-core/pull/29829))**
+
+ Fixes CiviDiscount.
+
+- **Look up using phone_numeric
+ ([29740](https://github.com/civicrm/civicrm-core/pull/29740))**
+
+- **Ensure confirm hooks are called if confirmation page is disabled
+ ([29710](https://github.com/civicrm/civicrm-core/pull/29710))**
+
+- **Smarty4 - updates to latest versions Smarty 4.51
+ ([393](https://github.com/civicrm/civicrm-packages/pull/393))**
+
+- **Update Smarty5 from rc to 5.0.1 & add loading helper class
+ ([394](https://github.com/civicrm/civicrm-packages/pull/394))**
+
+- **Smarty4 & Smarty 5 - update to latest
+ ([392](https://github.com/civicrm/civicrm-packages/pull/392))**
+
+- **xml/schema - Fix erroneous description tag
+ ([29711](https://github.com/civicrm/civicrm-core/pull/29711))**
+
+- **Move logic from tpl to php layer (extension page)
+ ([29898](https://github.com/civicrm/civicrm-core/pull/29898))**
+
+- **Exclude Cancelled & Failed recurring from Autorenew membership reminders
+ ([26563](https://github.com/civicrm/civicrm-core/pull/26563))**
+
+- **Fix bug where fields is not present
+ ([29681](https://github.com/civicrm/civicrm-core/pull/29681))**
+
+- **Follow up fix on setDefaultValues fix
+ ([29685](https://github.com/civicrm/civicrm-core/pull/29685))**
+
+- **Add missing alias trxn_id to transactionID
+ ([29683](https://github.com/civicrm/civicrm-core/pull/29683))**
+
+- **Use getters & setters to interact with Smarty properties, where possible
+ ([29852](https://github.com/civicrm/civicrm-core/pull/29852))**
+
+- **Update Smarty3 check to refer to Smarty4
+ ([29874](https://github.com/civicrm/civicrm-core/pull/29874))**
+
+- **Fix Smarty help function to not call fetchWith
+ ([29851](https://github.com/civicrm/civicrm-core/pull/29851))**
+
+- **Extract code to determine rule filter
+ ([29877](https://github.com/civicrm/civicrm-core/pull/29877))**
+
+- **Extract code to build table-level filter
+ ([29876](https://github.com/civicrm/civicrm-core/pull/29876))**
+
+- **Notice fixes on Contact Edit screen (with multiple contact fields & address
+ fields - ie testData extension installed)
+ ([29706](https://github.com/civicrm/civicrm-core/pull/29706))**
+
+- **Pass contact Type into sql lookup
+ ([29866](https://github.com/civicrm/civicrm-core/pull/29866))**
+
+- **Clarify join type
+ ([29865](https://github.com/civicrm/civicrm-core/pull/29865))**
+
+- **Make function private on only caller
+ ([29867](https://github.com/civicrm/civicrm-core/pull/29867))**
+
+- **Remove a handling for CRM_Core_Error returned
+ ([29797](https://github.com/civicrm/civicrm-core/pull/29797))**
+
+- **Fix deprecation notice
+ ([29827](https://github.com/civicrm/civicrm-core/pull/29827))**
+
+- **Fix for `TypeError: array_key_exists(): Argument #2 ($array) must be of type
+ array, null given a CRM_Core_DAO->copyValues()
+ ([29868](https://github.com/civicrm/civicrm-core/pull/29868))**
+
+- **Stop calling complex function to just add a field
+ ([29795](https://github.com/civicrm/civicrm-core/pull/29795))**
+
+- **Simplify a ts
+ ([29861](https://github.com/civicrm/civicrm-core/pull/29861))**
+
+- **Deleting profile photo produces error ([dev/core#5145](https://lab.civicrm.org/dev/core/-/issues/5145): [30119](https://github.com/civicrm/civicrm-core/pull/30119))**
+
+- **Deleting an individual contact gives confusing message ([dev/core#5165](https://lab.civicrm.org/dev/core/-/issues/5165), [dev/core#5181](https://lab.civicrm.org/dev/core/-/issues/5181): [30107](https://github.com/civicrm/civicrm-core/pull/30107))**
+
+- **Fix customDataBlock to convert false to 'false' ([dev/core#5152](https://lab.civicrm.org/dev/core/-/issues/5152)): ([30103](https://github.com/civicrm/civicrm-core/pull/30103))**
+
+- **Fix customGroup function overwriting extends data ([dev/core#5149](https://lab.civicrm.org/dev/core/-/issues/5149)): ([29983](https://github.com/civicrm/civicrm-core/pull/29983))**
+
+### CiviCampaign
+
+- **Custom Fields on Campaign are hidden on validation
+ ([dev/core#4803](https://lab.civicrm.org/dev/core/-/issues/4803):
+ [29751](https://github.com/civicrm/civicrm-core/pull/29751))**
+
+- **show distinct contacts when reserving for a survey
+ ([29617](https://github.com/civicrm/civicrm-core/pull/29617))**
+
+### CiviCase
+
+- **accept array of case_type_ids when finding available case statuses
+ ([29663](https://github.com/civicrm/civicrm-core/pull/29663))**
+
+### CiviContribute
+
+- **Fix Smarty noticed when contribution tab opened outside of ajax
+ ([29672](https://github.com/civicrm/civicrm-core/pull/29672))**
+
+- **Additional Payments form: Use submitted trxn_id if payment result doesn't
+ exist ([29869](https://github.com/civicrm/civicrm-core/pull/29869))**
+
+- **Premium Products: allow key=val format for product options
+ ([29691](https://github.com/civicrm/civicrm-core/pull/29691))**
+
+- **ContributionProduct - Add serialize metadata
+ ([29767](https://github.com/civicrm/civicrm-core/pull/29767))**
+
+### CiviEvent
+
+- **Fix Event register form to call buildAmount exactly once
+ ([29900](https://github.com/civicrm/civicrm-core/pull/29900))**
+
+### CiviMail
+
+- **(dev/core#5176) Message Templates - Prevent malformed content, loss of customizations ([30081](https://github.com/civicrm/civicrm-core/pull/30081))**
+
+- **MailSettings - Fix typo in metadata
+ ([29769](https://github.com/civicrm/civicrm-core/pull/29769))**
+
+### CiviMember
+
+- **Membership dashboard is not shown
+ ([dev/core#5123](https://lab.civicrm.org/dev/core/-/issues/5123):
+ [29882](https://github.com/civicrm/civicrm-core/pull/29882) and
+ [29883](https://github.com/civicrm/civicrm-core/pull/29883))**
+
+- **Membership terms present in price set not get used in the offline form
+ signup. ([dev/core#3752 ](https://lab.civicrm.org/dev/core/-/issues/3752):
+ [29730](https://github.com/civicrm/civicrm-core/pull/29730))**
+
+- **Fix override on pending memberships
+ ([29661](https://github.com/civicrm/civicrm-core/pull/29661))**
+
+- **E-notice fix on Membership from in edit mode
+ ([29744](https://github.com/civicrm/civicrm-core/pull/29744))**
+
+### CiviSMS
+
+- **CiviSMS - Ensure activities are attached to correct contact ([30096](https://github.com/civicrm/civicrm-core/pull/30096))**
+
+### CiviCRM Admin UI
+
+- **Admin UI - Sort by `register_date` Contact Summary Events tab ([30097](https://github.com/civicrm/civicrm-core/pull/30097))**
+
+- **Admin UI - Fix missing translation ([30012](https://github.com/civicrm/civicrm-core/pull/30012))**
+
+- **Admin UI - Fix display of related memberships ([29994](https://github.com/civicrm/civicrm-core/pull/29994))**
+
+### Drupal Integration
+
+- **Check route object exists in processes that do not have routes
+ ([90](https://github.com/civicrm/civicrm-drupal-8/pull/90))**
+
+- **Update CiviCRM on Drupal 10: Deprecation Notices regarding TOGoS
+ ([dev/core#4919](https://lab.civicrm.org/dev/core/-/issues/4919):
+ [29926](https://github.com/civicrm/civicrm-core/pull/29926))**
+
+### Joomla Integration
+
+- **Joomla: fixes broken mobile menu and a small regression.
+ ([29939](https://github.com/civicrm/civicrm-core/pull/29939))**
+
+- **CSS: Adds styling resets to Joomla4 for new accordions
+ ([29712](https://github.com/civicrm/civicrm-core/pull/29712))**
+
+- **Removes ~90% of joomla.css - much pre-dates Civi 2.x
+ ([27834](https://github.com/civicrm/civicrm-core/pull/27834))**
+
+- **Fixes Joomla regression in #27834 that hides select2 dropdown options when
+ used in modal ([29821](https://github.com/civicrm/civicrm-core/pull/29821))**
+
+### Search Kit
+
+- **(dev/core#5126) Fix crash involving Smarty rewrite ([30004](https://github.com/civicrm/civicrm-core/pull/30004))**
+
+- **Fix display of email bounces ([30043](https://github.com/civicrm/civicrm-core/pull/30043))**
+
+- **Fix saving search displays with 'Bypass Permissions' ([30054](https://github.com/civicrm/civicrm-core/pull/30054))**
+
+- **(dev/core#5159) Fix broken NOT CONTAINS operator ([30018](https://github.com/civicrm/civicrm-core/pull/30018))**
+
+### Standalone Integration
+
+- **reenable status messages in standalone page template
+ ([29699](https://github.com/civicrm/civicrm-core/pull/29699))**
+
+- **standalone: permanent "session already active" errors
+ ([dev/core#5069](https://lab.civicrm.org/dev/core/-/issues/5069):
+ [29808](https://github.com/civicrm/civicrm-core/pull/29808))**
+
+- **standalone: rebase @pfigel's JWT password reset PR 28505
+ ([29642](https://github.com/civicrm/civicrm-core/pull/29642))**
+
+- **standalone: prevent installer using secret admin pass. Fixes 5038
+ ([29641](https://github.com/civicrm/civicrm-core/pull/29641))**
+
+### WordPress Integration
+
+- **Possible WordPress regression - event that fails validation or has code
+ submitted redirects to back office page
+ ([dev/core#5127](https://lab.civicrm.org/dev/core/-/issues/5127):
+ [321](https://github.com/civicrm/civicrm-wordpress/pull/321))**
+
+## Miscellany
+
+- **Switch getPreviousFinancialItem() to use API4 internally
+ ([29761](https://github.com/civicrm/civicrm-core/pull/29761))**
+
+- **Deprecate formatPhone, use new cut down private function
+ ([29742](https://github.com/civicrm/civicrm-core/pull/29742))**
+
+- **APIv4 - Move MembershipLinksProvider to correct directory
+ ([29746](https://github.com/civicrm/civicrm-core/pull/29746))**
+
+- **Add validate.tpl to customDataBlock, minor cleanup
+ ([29812](https://github.com/civicrm/civicrm-core/pull/29812))**
+
+- **Register trim as a smarty plugin
+ ([29759](https://github.com/civicrm/civicrm-core/pull/29759))**
+
+- **Updating php-weasyprint to latest version
+ ([29697](https://github.com/civicrm/civicrm-core/pull/29697))**
+
+- **Add deprecation tag at class level
+ ([29696](https://github.com/civicrm/civicrm-core/pull/29696))**
+
+- **Improve visibility of what functions are called on backoffice Contact form
+ ([29674](https://github.com/civicrm/civicrm-core/pull/29674))**
+
+- **Deprecated smarty modifier
+ ([29755](https://github.com/civicrm/civicrm-core/pull/29755))**
+
+- **Make everyone share my pain
+ ([29479](https://github.com/civicrm/civicrm-core/pull/29479))**
+
+- **Add deprecation to class comment
+ ([29839](https://github.com/civicrm/civicrm-core/pull/29839))**
+
+- **Panacea for brain pain
+ ([29838](https://github.com/civicrm/civicrm-core/pull/29838))**
+
+- **Port one more function to Smarty2
+ ([395](https://github.com/civicrm/civicrm-packages/pull/395))**
+
+- **distmaker - Add `iframe` and `oembed` (5.73-rc)
+ ([29917](https://github.com/civicrm/civicrm-core/pull/29917))**
+
+- **Remove smarty function ported (hacked) to Smarty2
+ ([29846](https://github.com/civicrm/civicrm-core/pull/29846))**
+
+- **Remove ornery from now-compliant tests
+ ([29816](https://github.com/civicrm/civicrm-core/pull/29816))**
+
+- **Fold private function back into only caller
+ ([29762](https://github.com/civicrm/civicrm-core/pull/29762))**
+
+- **Use smarty capitalize instead of ucfirst
+ ([29815](https://github.com/civicrm/civicrm-core/pull/29815))**
+
+- **Remove deprecated misspelled event
+ ([29757](https://github.com/civicrm/civicrm-core/pull/29757))**
+
+- **Remove unused variable
+ ([29727](https://github.com/civicrm/civicrm-core/pull/29727))**
+
+- **Remove a couple on handlings for no-longer returned CRM_Core_Error
+ ([29136](https://github.com/civicrm/civicrm-core/pull/29136))**
+
+- **Copy small functions back to callers
+ ([29758](https://github.com/civicrm/civicrm-core/pull/29758))**
+
+- **Make code clearer
+ ([29836](https://github.com/civicrm/civicrm-core/pull/29836))**
+
+- **Replace CRM_Utils_Array::value
+ ([29684](https://github.com/civicrm/civicrm-core/pull/29684))**
+
+- **Post split clean up - stop calling this form
+ ([29811](https://github.com/civicrm/civicrm-core/pull/29811))**
+
+- **Post split code cleanup
+ ([29810](https://github.com/civicrm/civicrm-core/pull/29810))**
+
+- **Copy function back to one of the few remaining callers
+ ([29802](https://github.com/civicrm/civicrm-core/pull/29802))**
+
+- **Post split tidy up - remove extraneous subType handling
+ ([29819](https://github.com/civicrm/civicrm-core/pull/29819))**
+
+- **Post split tidy up - remove multiple setting of Group Count
+ ([29818](https://github.com/civicrm/civicrm-core/pull/29818))**
+
+- **Post split tidy up - consistent treatment of contactID
+ ([29814](https://github.com/civicrm/civicrm-core/pull/29814))**
+
+- **Post split cleanup - fold private function back into caller
+ ([29820](https://github.com/civicrm/civicrm-core/pull/29820))**
+
+- **Some post split cleanup
+ ([29804](https://github.com/civicrm/civicrm-core/pull/29804))**
+
+- **Remove unreachable code
+ ([29794](https://github.com/civicrm/civicrm-core/pull/29794))**
+
+- **Fold preProcess function from Custom data form back to only caller
+ ([29687](https://github.com/civicrm/civicrm-core/pull/29687))**
+
+- **Copy complex function back to calling class for simplifying
+ ([29689](https://github.com/civicrm/civicrm-core/pull/29689))**
+
+- **Minor cleanup
+ ([29678](https://github.com/civicrm/civicrm-core/pull/29678))**
+
+- **Copy function back to only calling class
+ ([29686](https://github.com/civicrm/civicrm-core/pull/29686))**
+
+- **Post copy back clean up
+ ([29690](https://github.com/civicrm/civicrm-core/pull/29690))**
+
+- **standaloneusers tests - error message assertions are too strict
+ ([29824](https://github.com/civicrm/civicrm-core/pull/29824))**
+
+- **allow standalone's alternative access denied wording in afform test
+ ([29849](https://github.com/civicrm/civicrm-core/pull/29849))**
+
+- **Minor test clean up
+ ([29801](https://github.com/civicrm/civicrm-core/pull/29801))**
+
+- **Add test check on imported multple fields
+ ([29737](https://github.com/civicrm/civicrm-core/pull/29737))**
+
+- **Schema - Update autoincrement to reflect what it actually is
+ ([29709](https://github.com/civicrm/civicrm-core/pull/29709))**
+
+- **Update contributor-key.yml
+ ([29731](https://github.com/civicrm/civicrm-core/pull/29731))**
+
+- **Copy shared function back to form as private function
+ ([29803](https://github.com/civicrm/civicrm-core/pull/29803))**
+
+- **Add tests for unsubscribing from mail groups
+ ([29790](https://github.com/civicrm/civicrm-core/pull/29790))**
+
+- **Reworking of unsubscribe tests in #29790, add grandparent and smart groups
+ ([29830](https://github.com/civicrm/civicrm-core/pull/29830))**
+
+- **Minor clean up in test class
+ ([29729](https://github.com/civicrm/civicrm-core/pull/29729))**
+
+- **Make private function non static
+ ([29728](https://github.com/civicrm/civicrm-core/pull/29728))**
+
+- **Suppress last php8.2 test fail for PR tests
+ ([29680](https://github.com/civicrm/civicrm-core/pull/29680))**
+
+- **PHP8.2 Fix Financial Account form to load custom data via ajax
+ ([29241](https://github.com/civicrm/civicrm-core/pull/29241))**
+
+- **[php8.2] Fix MembershipType + other entityFormTrait uses for php8.2
+ ([29671](https://github.com/civicrm/civicrm-core/pull/29671))**
+
+- **[php8.2], [bug-fix] Fix default value loading for multiple custom fields
+ ([29708](https://github.com/civicrm/civicrm-core/pull/29708))**
+
+- **[php8.2] Finish consolidating customData code on the Contact form
+ ([29792](https://github.com/civicrm/civicrm-core/pull/29792))**
+
+- **php8.2 Remove non-compliant code replaced by jquery validation
+ ([29793](https://github.com/civicrm/civicrm-core/pull/29793))**
+
+- **[php8.2] Fix Campaign form custom data for php8,2
+ ([29657](https://github.com/civicrm/civicrm-core/pull/29657))**
+
+- **[Php8.2] Fix relationship form to use preferred php8.2 compliant methods
+ ([29652](https://github.com/civicrm/civicrm-core/pull/29652))**
+
+- **[php8.2] Share Custom data fixes from Membership form to renewal
+ ([29592](https://github.com/civicrm/civicrm-core/pull/29592))**
+
+- **[php8.2] Apply custom data handling improvements to grant form
+ ([29651](https://github.com/civicrm/civicrm-core/pull/29651))**
+
+- **[php8.2] compliant ajax method for custom data on pledge form
+ ([29228](https://github.com/civicrm/civicrm-core/pull/29228))**
+
+- **[php8.2] apply php8.2 clean up to contribution form custom data
+ ([29655](https://github.com/civicrm/civicrm-core/pull/29655))**
+
+- **[php8.2] apply php8.2 clean up to activity form custom data
+ ([29656](https://github.com/civicrm/civicrm-core/pull/29656))**
+
+- **[php8.2] Fix Survey configuration forms for custom data for php8.2
+ ([29660](https://github.com/civicrm/civicrm-core/pull/29660))**
+
+- **(php83) UnitTests - Fix warning
+ ([29785](https://github.com/civicrm/civicrm-core/pull/29785))**
+
+- **Possible fix for export test on php8.3
+ ([29688](https://github.com/civicrm/civicrm-core/pull/29688))**
+
+- **Extract isUseReservedQuery
+ ([29864](https://github.com/civicrm/civicrm-core/pull/29864))**
+
+- **[REF] Extract function to get the ContactIDFieldName
+ ([29873](https://github.com/civicrm/civicrm-core/pull/29873))**
+
+- **[REF] Pass IP address to Elavon when submitting credit card payment
+ ([29791](https://github.com/civicrm/civicrm-core/pull/29791))**
+
+- **Refactor template assignments off deprecated CRM_Utils_Array::value
+ ([29780](https://github.com/civicrm/civicrm-core/pull/29780))**
+
+- **Refactor out calls to deprecated CRM_Utils_Array::value()
+ ([29779](https://github.com/civicrm/civicrm-core/pull/29779))**
+
+- **(NFC) gitignore - Don't care about .composer-downloads
+ ([29826](https://github.com/civicrm/civicrm-core/pull/29826))**
+
+- **(NFC) Contribute/Product.xml - No newline in comment
+ ([29825](https://github.com/civicrm/civicrm-core/pull/29825))**
+
+- **Update TCPDF ([29969](https://github.com/civicrm/civicrm-core/pull/29969), [30027](https://github.com/civicrm/civicrm-core/pull/30027))**
+
+- **Fix regen.sh ([29997](https://github.com/civicrm/civicrm-core/pull/29997), [29998](https://github.com/civicrm/civicrm-core/pull/29998))**
+
+- **[php8] Update compile-plugin to v0.20 ([29972](https://github.com/civicrm/civicrm-core/pull/29972))**
+
+## Credits
+
+This release was developed by the following code authors:
+
+AGH Strategies - Andie Hunt; Agileware - Agileware Team, Francis Whittle; Artful
+Robot - Rich Lott; Benjamin W; Christian Wach; Circle Interactive - Pradeep
+Nayak; CiviCoop - Jaap Jansma; CiviCRM - Coleman Watts, Tim Otten; CiviDesk -
+Yashodha Chaku; civiservice.de - Detlev Sieber; Coop SymbioTIC - Mathieu Lutfy;
+Dave D; Francesc Bassas i Bullich; Fuzion - Jitendra Purohit, Luke Stewart;
+Gokhalemethod - Sadashiv; Greenpeace Central and Eastern Europe - Patrick Figel;
+iXiam - Albert Vall-Llovera; JMA Consulting - Seamus Lee; MJW Consulting -
+Matthew Wire; Nicol Wistreich; MetaDrop - Omar Mohamad; Progressive Technology
+Project - Jamie McClelland; Squiffle Consulting - Aidan Saunders; Tadpole
+Collective - Kevin Cristiano; Third Sector Design - Michael McAndrew; Wikimedia
+Foundation - Eileen McNaughton
+
+Most authors also reviewed code for this release; in addition, the following
+reviewers contributed their comments:
+
+CiviCoop - Erik Hommel; devappsoftware; gibsonoliver; MC3 - Graham Mitchell;
+Megaphone Technology Consulting - Brienne Kordis, Jon Goldberg; Systopia -
+Johannes Franz; Wildsight - Lars Sander-Green
+
+## Feedback
+
+These release notes are edited by Alice Frumin and Andie Hunt. If you'd like
+to provide feedback on them, please log in to https://chat.civicrm.org/civicrm
+and contact `@agh1`.
diff --git a/www/modules/civicrm/release-notes/5.73.1.md b/www/modules/civicrm/release-notes/5.73.1.md
new file mode 100644
index 000000000..c58079514
--- /dev/null
+++ b/www/modules/civicrm/release-notes/5.73.1.md
@@ -0,0 +1,40 @@
+# CiviCRM 5.73.1
+
+Released May 6, 2024
+
+- **[Synopsis](#synopsis)**
+- **[Bugs resolved](#bugs)**
+- **[Credits](#credits)**
+- **[Feedback](#feedback)**
+
+## Synopsis
+
+| *Does this version...?* | |
+| --------------------------------------------------------------- | -------- |
+| Change the database schema? | no |
+| Alter the API? | no |
+| Require attention to configuration options? | no |
+| Fix problems installing or upgrading to a previous version? | no |
+| Introduce features? | no |
+| **Fix bugs?** | **yes** |
+| Fix security vulnerabilities? | no |
+
+## Bugs resolved
+
+* **_CiviEvent_: On free events which require approval for each participant, the final registration step is blocked incorrectly. ([#30124](https://github.com/civicrm/civicrm-core/pull/30124))**
+* **_Scheduled Reminders_: On multi-lingual systems, language filter is missing ([dev/core#5116](https://lab.civicrm.org/dev/core/-/issues/5116): [#30131](https://github.com/civicrm/civicrm-core/pull/30131))**
+* **_Smart Groups_: Error computing group memberships if an unrelated custom-field was previously deleted ([#30104](https://github.com/civicrm/civicrm-core/pull/30104))**
+
+## Credits
+
+This release was developed by the following authors and reviewers:
+
+Wikimedia Foundation - Eileen McNaughton; Fuzion - Jitendra Purohit, Luke Stewart; Dave D;
+Coop SymbioTIC - Mathieu Lutfy; CiviCRM - Tim Otten, Coleman Watts; Agileware - Justin
+Freeman
+
+## Feedback
+
+These release notes are edited by Tim Otten and Andie Hunt. If you'd like to
+provide feedback on them, please login to https://chat.civicrm.org/civicrm and
+contact `@agh1`.
diff --git a/www/modules/civicrm/release-notes/5.73.2.md b/www/modules/civicrm/release-notes/5.73.2.md
new file mode 100644
index 000000000..d60616bf1
--- /dev/null
+++ b/www/modules/civicrm/release-notes/5.73.2.md
@@ -0,0 +1,42 @@
+# CiviCRM 5.73.2
+
+Released May 17, 2024
+
+- **[Synopsis](#synopsis)**
+- **[Bugs resolved](#bugs)**
+- **[Credits](#credits)**
+- **[Feedback](#feedback)**
+
+## Synopsis
+
+| *Does this version...?* | |
+| --------------------------------------------------------------- | -------- |
+| Change the database schema? | no |
+| Alter the API? | no |
+| Require attention to configuration options? | no |
+| Fix problems installing or upgrading to a previous version? | no |
+| Introduce features? | no |
+| **Fix bugs?** | **yes** |
+| Fix security vulnerabilities? | no |
+
+## Bugs resolved
+
+* **_Contacts_: The "Edit Contact" screen drops additional email addresses ([dev/core#5208](https://lab.civicrm.org/dev/core/-/issues/5208): [#30196](https://github.com/civicrm/civicrm-core/pull/30196))**
+* **_Custom Data_: "File" fields on "Contributions" don't save correctly ([#30191](https://github.com/civicrm/civicrm-core/pull/30191))**
+* **_Administration_: When reconfiguring "From Email Address", the new value saves incorrectly ([#30204](https://github.com/civicrm/civicrm-core/pull/30204))**
+* **_Smarty 3/4_: Fix compatibility with "Administer: Address Settings" ([#29968](https://github.com/civicrm/civicrm-core/pull/29968))**
+* **_Smarty 3/4_: Fix compatibility with "Contact Layout Editor" ([#30148](https://github.com/civicrm/civicrm-core/pull/30148))**
+
+## Credits
+
+This release was developed by the following authors and reviewers:
+
+Wikimedia Foundation - Eileen McNaughton; MJW Consulting - Matthew Wire; Megaphone
+Technology Consulting - Jon Goldberg; JMA Consulting - Seamus Lee; Dave D; CiviCRM - Tim
+Otten, Coleman Watts; Circle Interactive - Pradeep Nayak
+
+## Feedback
+
+These release notes are edited by Tim Otten and Andie Hunt. If you'd like to
+provide feedback on them, please login to https://chat.civicrm.org/civicrm and
+contact `@agh1`.
diff --git a/www/modules/civicrm/release-notes/5.73.3.md b/www/modules/civicrm/release-notes/5.73.3.md
new file mode 100644
index 000000000..17e4b7277
--- /dev/null
+++ b/www/modules/civicrm/release-notes/5.73.3.md
@@ -0,0 +1,44 @@
+# CiviCRM 5.73.3
+
+Released May 23, 2024
+
+- **[Synopsis](#synopsis)**
+- **[Bugs resolved](#bugs)**
+- **[Credits](#credits)**
+- **[Feedback](#feedback)**
+
+## Synopsis
+
+| *Does this version...?* | |
+| --------------------------------------------------------------- | -------- |
+| Change the database schema? | no |
+| Alter the API? | no |
+| Require attention to configuration options? | no |
+| **Fix problems installing or upgrading to a previous version?** | **yes** |
+| Introduce features? | no |
+| **Fix bugs?** | **yes** |
+| Fix security vulnerabilities? | no |
+
+## Bugs resolved
+
+* **_CiviContribute_: Cannot cancel a recurring contribution if CiviMember is inactive ([dev/core#5226](https://lab.civicrm.org/dev/core/-/issues/5226): [#30226](https://github.com/civicrm/civicrm-core/pull/30226))**
+* **_CiviMember_: When using additional "Price Fields", some fields (checkboxes) do not save ([dev/core#5212](https://lab.civicrm.org/dev/core/-/issues/5212): [#30233](https://github.com/civicrm/civicrm-core/pull/30233))**
+* **_Quick Forms_: Forms do not correctly show preexisting field-values involving auto-complete/multi-select ([dev/core#5216](https://lab.civicrm.org/dev/core/-/issues/5216): [#30199](https://github.com/civicrm/civicrm-core/pull/30199))**
+
+ This may affect some "Scheduled Reminders" ("Manual Recipients"), some "Custom Fields" ("Entity Reference"), and outbound "SMS" ("To").
+
+* **_Joomla_: Upgrade fails if database password has unusual characters ([dev/core#5128](https://lab.civicrm.org/dev/core/-/issues/5128): [joomla#78](https://github.com/civicrm/civicrm-joomla/pull/78))**
+
+## Credits
+
+This release was developed by the following authors and reviewers:
+
+Wikimedia Foundation - Eileen McNaughton; Megaphone Technology Consulting - Jon Goldberg;
+John Kingsnorth; jmbegley; JMA Consulting - Seamus Lee; Dave D; CiviCRM - Coleman Watts,
+Tim Otten; CiviCoop - Jaap Jansma; Botanical Society of America - Rob Brandt
+
+## Feedback
+
+These release notes are edited by Tim Otten and Andie Hunt. If you'd like to
+provide feedback on them, please login to https://chat.civicrm.org/civicrm and
+contact `@agh1`.
diff --git a/www/modules/civicrm/release-notes/5.73.4.md b/www/modules/civicrm/release-notes/5.73.4.md
new file mode 100644
index 000000000..0cedae347
--- /dev/null
+++ b/www/modules/civicrm/release-notes/5.73.4.md
@@ -0,0 +1,43 @@
+# CiviCRM 5.73.4
+
+Released May 30, 2024
+
+- **[Synopsis](#synopsis)**
+- **[Bugs resolved](#bugs)**
+- **[Credits](#credits)**
+- **[Feedback](#feedback)**
+
+## Synopsis
+
+| *Does this version...?* | |
+| --------------------------------------------------------------- | -------- |
+| Change the database schema? | no |
+| Alter the API? | no |
+| Require attention to configuration options? | no |
+| **Fix problems installing or upgrading to a previous version?** | **yes** |
+| Introduce features? | no |
+| **Fix bugs?** | **yes** |
+| Fix security vulnerabilities? | no |
+
+## Bugs resolved
+
+* **_CiviContribute_: "Send Letter" fails with error about "call_user_func" ([dev/core#5250](https://lab.civicrm.org/dev/core/-/issues/5250): [#30298](https://github.com/civicrm/civicrm-core/pull/30298))**
+* **_CiviContribute_: When recording a manual payment with truncated PAN, the value does not initially save ([#30223](https://github.com/civicrm/civicrm-core/pull/30223))**
+* **_CiviEvent_: Error when cancelling a registration which involves Paypal Standard ([dev/core#5207](https://lab.civicrm.org/dev/core/-/issues/5207): [#30260](https://github.com/civicrm/civicrm-core/pull/30260))**
+* **_CiviEvent_: Some event confirmation emails display extra formatting tags ([dev/core#5230](https://lab.civicrm.org/dev/core/-/issues/5230): [#30259](https://github.com/civicrm/civicrm-core/pull/30259))**
+* **_Joomla_: Upgrade from CiviCRM v5.66 (or earlier) mangles data if database password has certain URL characters ([dev/core#5128](https://lab.civicrm.org/dev/core/-/issues/5128): [joomla#81](https://github.com/civicrm/civicrm-joomla/pull/81))**
+
+## Credits
+
+This release was developed by the following authors and reviewers:
+
+Wikimedia Foundation - Eileen McNaughton; Tadpole Collective - Kevin Cristiano; Squiffle
+Consulting - Aidan Saunders; rebeccatregenna; Levi.k; JMA Consulting - Seamus Lee, Monish
+Deb; Dave D; CiviCRM - Tim Otten, Coleman Watts; CiviCoop - Jaap Jansma; Circle
+Interactive - Pradeep Nayak; AGH Strategies - Chris Garaffa
+
+## Feedback
+
+These release notes are edited by Tim Otten and Andie Hunt. If you'd like to
+provide feedback on them, please login to https://chat.civicrm.org/civicrm and
+contact `@agh1`.
diff --git a/www/modules/civicrm/release-notes/5.74.0.md b/www/modules/civicrm/release-notes/5.74.0.md
new file mode 100644
index 000000000..6b2c7f48f
--- /dev/null
+++ b/www/modules/civicrm/release-notes/5.74.0.md
@@ -0,0 +1,684 @@
+# CiviCRM 5.74.0
+
+Released June 6, 2024
+
+- **[Synopsis](#synopsis)**
+- **[Features](#features)**
+- **[Bugs resolved](#bugs)**
+- **[Miscellany](#misc)**
+- **[Credits](#credits)**
+- **[Feedback](#feedback)**
+
+## Synopsis
+
+| *Does this version...?* | |
+|:--------------------------------------------------------------- |:-------:|
+| Fix security vulnerabilities? | no |
+| **Change the database schema?** | **yes** |
+| **Alter the API?** | **yes** |
+| Require attention to configuration options? | no |
+| Fix problems installing or upgrading to a previous version? | no |
+| **Introduce features?** | **yes** |
+| **Fix bugs?** | **yes** |
+
+## Features
+
+### CiviCRM Core
+
+- **Imagine a world without CodeGen (Work Towards
+ [dev/core#4999](https://lab.civicrm.org/dev/core/-/issues/4999):
+ [29472](https://github.com/civicrm/civicrm-core/pull/29472),
+ [29988](https://github.com/civicrm/civicrm-core/pull/29988),
+ [30016](https://github.com/civicrm/civicrm-core/pull/30016) and
+ [30021](https://github.com/civicrm/civicrm-core/pull/30021))**
+
+ Works towards a world without code gen by fixing delegation for queued upgrade
+ tasks and converting xml schema to new entityType.php format.
+
+- **Upgrade Smarty to 5.1.0.0
+ ([396](https://github.com/civicrm/civicrm-packages/pull/396))**
+
+ Upgrades Smarty to 5.1.0.0.
+
+- **Switch default smarty for localhost, demo to Smarty5
+ ([29909](https://github.com/civicrm/civicrm-core/pull/29909))**
+
+ Defaults demo to Smarty5.
+
+- **Remove text version of some more message templates
+ ([30041](https://github.com/civicrm/civicrm-core/pull/30041),
+ [30040](https://github.com/civicrm/civicrm-core/pull/30040),
+ [30038](https://github.com/civicrm/civicrm-core/pull/30038) and
+ [30039](https://github.com/civicrm/civicrm-core/pull/30039))**
+
+ Removes text versions of some more message templates. If no text version is
+ entered, text is generated based on the html version.
+
+- **Add support for saving custom data on option values
+ ([29929](https://github.com/civicrm/civicrm-core/pull/29929))**
+
+ Adds support for custom data on option values.
+
+- **Afform - Allow 'Current Date' as a value option for date fields
+ ([29986](https://github.com/civicrm/civicrm-core/pull/29986))**
+
+ Makes it so one can set "Current Date" as a value option for date fields in
+ Afform.
+
+- **Afform - enable autocomplete id filter on search forms
+ ([29919](https://github.com/civicrm/civicrm-core/pull/29919))**
+
+ Permits the ID field to be used as an autocomplete on search forms.
+
+- **Angular Datepicker - Default to +-100 year range
+ ([29885](https://github.com/civicrm/civicrm-core/pull/29885))**
+
+ Makes Angular Datepickers default to +-100 year range.
+
+- **OAuth - Add permission implications
+ ([29950](https://github.com/civicrm/civicrm-core/pull/29950))**
+
+ Adds a logical relationship between the 2 permissions declared by OAuth.
+
+- **Update UserJob status & date fields as it progresses
+ ([29981](https://github.com/civicrm/civicrm-core/pull/29981))**
+
+ Ensures UserJob start & end date are updated appropriately, and the job
+ progresses through draft->scheduled->in progress->completed.
+
+- **Add expires_date as an editable field to "my imports" and "all imports" SK
+ ([29977](https://github.com/civicrm/civicrm-core/pull/29977))**
+
+ Makes the expiration date an editable field on SearchKit import screens.
+
+- **Feature request - APIv4 Get action, provide ability to define aliases for
+ the select fields so that external integrations with CiviCRM do not break
+ when the field name changes OR a different field is selected (Work Towards
+ [dev/core#3738](https://lab.civicrm.org/dev/core/-/issues/3738):
+ [29714](https://github.com/civicrm/civicrm-core/pull/29714))**
+
+ Adds APIv4 rekey function.
+
+- **Improve support for German dates on import
+ ([30067](https://github.com/civicrm/civicrm-core/pull/30067))**
+
+ Improves supports for German dates when importing.
+
+- **SMS Provider searchkit admin ui
+ ([29567](https://github.com/civicrm/civicrm-core/pull/29567))**
+
+ Converts the SMS Provider page to searchkit.
+
+- **Permissions - Allow hooks/extensions to declare implied permissions
+ ([29940](https://github.com/civicrm/civicrm-core/pull/29940))**
+
+ Enables extensions to take advantage of implied permissions.
+
+- **CRM_Admin_Form_Setting_Url: use metadata for enableSSL, verifySSL fields
+ ([30075](https://github.com/civicrm/civicrm-core/pull/30075))**
+
+ Improves user experience when editing SSL settings.
+
+### CiviEvent
+
+- **Update participant import to work on updates (with participant ID)
+ ([30052](https://github.com/civicrm/civicrm-core/pull/30052))**
+
+ Makes it so one can update participant records by import using a participant
+ ID.
+
+### CiviMail
+
+- **Call hooks when recording mailing open
+ ([29887](https://github.com/civicrm/civicrm-core/pull/29887))**
+
+ Ensures hooks are called when a mailing open event is recorded.
+
+### Backdrop Integration
+
+- **Support oEmbed for external facing pages
+ (Work Towards [dev/core#2994](https://lab.civicrm.org/dev/core/-/issues/2994):
+ [29928](https://github.com/civicrm/civicrm-core/pull/29928))**
+
+ Adds support for IFrame Connector extension (to allow remote iframes) for
+ backdrop.
+
+### Standalone Integration
+
+- **Standalone - Add permission implications
+ ([29945](https://github.com/civicrm/civicrm-core/pull/29945))**
+
+ Adds a logical relationship between the 2 permissions declared by standalone.
+
+- **standalone: password change screen
+ ([29788](https://github.com/civicrm/civicrm-core/pull/29788))**
+
+ Sets up a password change screen for standalone integrations.
+
+## Bugs resolved
+
+### Core CiviCRM
+
+- **`testLocalizedData()` failing after recent strings update
+ ([dev/translation#84](https://lab.civicrm.org/dev/translation/-/issues/84):
+ [30141](https://github.com/civicrm/civicrm-core/pull/30141))**
+
+- **API Deprecation (Work Towards
+ [dev/core#4846](https://lab.civicrm.org/dev/core/-/issues/4846):
+ [30026](https://github.com/civicrm/civicrm-core/pull/30026))**
+
+ Fixes call to deprecated function.
+
+- **Formbuilder: Individual 1 fields are refreshed to their initial values
+ (updates are lost) as soon as a Individual 2 contact is chosen in an existing
+ contact field
+ ([dev/core#5094](https://lab.civicrm.org/dev/core/-/issues/5094):
+ [29832](https://github.com/civicrm/civicrm-core/pull/29832))**
+
+ Afform fix prefill of one entity overwriting 'current user'.
+
+- **Scheduled Reminders: with multi-lingual, the language filters are empty
+ ([dev/core#5116](https://lab.civicrm.org/dev/core/-/issues/5116):
+ [30131](https://github.com/civicrm/civicrm-core/pull/30131))**
+
+ Fixes missing language selector for scheduled reminders.
+
+- **Wrong Link from Administer page to Date Preferences page
+ ([dev/core#5139](https://lab.civicrm.org/dev/core/-/issues/5139):
+ [30147](https://github.com/civicrm/civicrm-core/pull/30147))**
+
+- **Can't select parent menu when cloning report
+ ([dev/core#5141](https://lab.civicrm.org/dev/core/-/issues/5141):
+ [30143](https://github.com/civicrm/civicrm-core/pull/30143))**
+
+- **Non-admin users unable to view Contact Reports menu item
+ ([dev/core#5148](https://lab.civicrm.org/dev/core/-/issues/5148):
+ [30064](https://github.com/civicrm/civicrm-core/pull/30064))**
+
+- **Do not use wysiwyg editor for system workflow message when workflow_name is
+ set ([dev/core#5154](https://lab.civicrm.org/dev/core/-/issues/5154):
+ [29999](https://github.com/civicrm/civicrm-core/pull/29999))**
+
+- **Deleting a individual contact gives: The contact might be the Membership
+ Organization of a Membership Type when the contact is not an organisation
+ ([dev/core#5165](https://lab.civicrm.org/dev/core/-/issues/5165):
+ [30053](https://github.com/civicrm/civicrm-core/pull/30053))**
+
+- **Required radio buttons don't display "This field is required."
+ ([dev/core#5167](https://lab.civicrm.org/dev/core/-/issues/5167):
+ [30060](https://github.com/civicrm/civicrm-core/pull/30060))**
+
+- **System Workflow Message regression: html, head, body tags disappear
+ ([dev/core#5176](https://lab.civicrm.org/dev/core/-/issues/5176):
+ [30204](https://github.com/civicrm/civicrm-core/pull/30204))**
+
+- **CiviCRM 5.72.1 and newer, PHP 8.x - Smart groups trigger a PHP Fatal error
+ and no longer load if the saved search criteria refers to any custom fields
+ which have been deleted
+ ([dev/core#5185](https://lab.civicrm.org/dev/core/-/issues/5185):
+ [30104](https://github.com/civicrm/civicrm-core/pull/30104))**
+
+- **Some emails not shown when editing a contact in non-inline mode
+ ([dev/core#5208](https://lab.civicrm.org/dev/core/-/issues/5208):
+ [30196](https://github.com/civicrm/civicrm-core/pull/30196))**
+
+- **Can't cancel recurring contributions if CiviMember is not enabled
+ (regression) ([dev/core#5226](https://lab.civicrm.org/dev/core/-/issues/5226):
+ [30226](https://github.com/civicrm/civicrm-core/pull/30226))**
+
+- **Api4 - Set 'usage' property for custom fields
+ ([30058](https://github.com/civicrm/civicrm-core/pull/30058))**
+
+ Sets property for custom fields in APIv4 to be equivalent to core fields.
+
+- **Reduce import controller boiler plate
+ ([29978](https://github.com/civicrm/civicrm-core/pull/29978))**
+
+- **Assign highlighted fields as json
+ ([29976](https://github.com/civicrm/civicrm-core/pull/29976))**
+
+- **SearchKit - Move search tasks to their respective component-extensions
+ ([29747](https://github.com/civicrm/civicrm-core/pull/29747))**
+
+- **SearchKit - Add conditional rule for membershipStatus links
+ ([29745](https://github.com/civicrm/civicrm-core/pull/29745))**
+
+ Adds conditional rules to enforce the status-quo in Admin UI.
+
+- **add missing cms: prefix to permission check
+ ([29946](https://github.com/civicrm/civicrm-core/pull/29946))**
+
+- **Smarty 3/4 - Fix prepending extension template directories
+ ([30148](https://github.com/civicrm/civicrm-core/pull/30148))**
+
+- **Smarty3/4 compatibility for Address.tpl
+ ([29968](https://github.com/civicrm/civicrm-core/pull/29968))**
+
+- **Message templates admin page crashes with smarty 5
+ ([30070](https://github.com/civicrm/civicrm-core/pull/30070))**
+
+- **support 'current user' as value in Afform
+ ([30089](https://github.com/civicrm/civicrm-core/pull/30089))**
+
+- **Partially convert recur updateOnNewPayment to API4
+ ([30062](https://github.com/civicrm/civicrm-core/pull/30062))**
+
+- **Afform - Fix 'Edit' links to always go to backend
+ ([29922](https://github.com/civicrm/civicrm-core/pull/29922))**
+
+- **Regression: Custom field file type not saved on entity
+ ([30191](https://github.com/civicrm/civicrm-core/pull/30191))**
+
+- **SampleData - Add missing customGroup weights
+ ([29984](https://github.com/civicrm/civicrm-core/pull/29984))**
+
+- **SearchKit - Fix SearchSegment state/province
+ ([29927](https://github.com/civicrm/civicrm-core/pull/29927))**
+
+- **Guard against missing saved search class during smart group cache rebuild
+ ([29956](https://github.com/civicrm/civicrm-core/pull/29956))**
+
+- **Afform - Fix edit links permission for multiple users
+ ([30205](https://github.com/civicrm/civicrm-core/pull/30205))**
+
+- **Fix setTemplateDir to actually work
+ ([397](https://github.com/civicrm/civicrm-packages/pull/397))**
+
+- **Stop passing ids to function that does not use them
+ ([30049](https://github.com/civicrm/civicrm-core/pull/30049))**
+
+- **Fix rendering default value of autocomplete fields
+ ([30199](https://github.com/civicrm/civicrm-core/pull/30199))**
+
+- **Fix invalid date with STRICT SQL mode
+ ([29916](https://github.com/civicrm/civicrm-core/pull/29916) and
+ [29921](https://github.com/civicrm/civicrm-core/pull/29921))**
+
+- **avoid deprecation notice if header is null
+ ([29901](https://github.com/civicrm/civicrm-core/pull/29901))**
+
+- **Fix wrong function in error message
+ ([29894](https://github.com/civicrm/civicrm-core/pull/29894))**
+
+- **Fix function to use apiv4
+ ([30006](https://github.com/civicrm/civicrm-core/pull/30006))**
+
+- **Fix double passing of same params to private function
+ ([30009](https://github.com/civicrm/civicrm-core/pull/30009))**
+
+- **Stop setting now-already-set id
+ ([30003](https://github.com/civicrm/civicrm-core/pull/30003))**
+
+- **PHP8 - Fix wordReplacement function to always return an array
+ ([29934](https://github.com/civicrm/civicrm-core/pull/29934))**
+
+- **Include schema in tarball - so that civicrm can be installed
+ ([30150](https://github.com/civicrm/civicrm-core/pull/30150))**
+
+- **Default values having ampersand (`&`) displayed as `&` ([dev/core#5252](https://lab.civicrm.org/dev/core/-/issues/5252): [#30331](https://github.com/civicrm/civicrm-core/pull/30331))**
+- **ContactSummary - Ensure tabs are refreshed with admin_ui enabled ([dev/core#5171](https://lab.civicrm.org/dev/core/-/issues/5171): [#30344](https://github.com/civicrm/civicrm-core/pull/30344))**
+- **Tokens - Newer style tokesn (with quotes) should work with HTML encoding ([dev/core#5199](https://lab.civicrm.org/dev/core/-/issues/5199): [#30330](https://github.com/civicrm/civicrm-core/pull/30330))**
+
+### CiviCase
+
+- **Similar to 30189 - customgroup::getGroupDetail is case-sensitive now
+ ([30190](https://github.com/civicrm/civicrm-core/pull/30190))**
+
+- **Case custom fields no longer appearing on print report
+ ([30189](https://github.com/civicrm/civicrm-core/pull/30189))**
+
+- **Crash in Smarty 5 on Manage Case ([#30325](https://github.com/civicrm/civicrm-core/pull/30325))**
+
+### CiviContribute
+
+- **Contribution pending status wrong
+ ([dev/core#5070](https://lab.civicrm.org/dev/core/-/issues/5070):
+ [30165](https://github.com/civicrm/civicrm-core/pull/30165))**
+
+ Fix failure to set is_pay_later on back office.
+
+- **Improve loading of PriceField metadata on Contribution Form to avoid notice
+ ([29936](https://github.com/civicrm/civicrm-core/pull/29936))**
+
+- **Align price field loading with other forms to address notice
+ ([30078](https://github.com/civicrm/civicrm-core/pull/30078))**
+
+- **On contribution forms, checkbox fields don't save all options selected
+ ([dev/core#5212](https://lab.civicrm.org/dev/core/-/issues/5212):
+ [30233](https://github.com/civicrm/civicrm-core/pull/30233))**
+
+- **Move BAO/Contribute to api4 not api3, replacing getvalue/getsingle
+ ([29992](https://github.com/civicrm/civicrm-core/pull/29992))**
+
+- **Use pan_truncation where present on form
+ ([30223](https://github.com/civicrm/civicrm-core/pull/30223))**
+
+- **Fix calculation on amount allocation for tax line to happen in main loop
+ ([29947](https://github.com/civicrm/civicrm-core/pull/29947))**
+
+- **Resolve issue with Payment allocation for Sales Item
+ ([30017](https://github.com/civicrm/civicrm-core/pull/30017))**
+
+- **Alternate fix to remove extraneous tax display
+ ([29889](https://github.com/civicrm/civicrm-core/pull/29889))**
+
+- **Contribution page confirmation page help text says click continue but the
+ button actually says "Make Contribution"
+ ([dev/core#5155](https://lab.civicrm.org/dev/core/-/issues/5155):
+ [30000](https://github.com/civicrm/civicrm-core/pull/30000))**
+
+- **""Send Letter"" - Crashes while rendering help widget ([dev/core#5250](https://lab.civicrm.org/dev/core/-/issues/5250): [#30298](https://github.com/civicrm/civicrm-core/pull/30298))**
+
+### CiviEvent
+
+- **Update import/participant url to match new standardised name
+ ([30056](https://github.com/civicrm/civicrm-core/pull/30056))**
+
+- **CiviEvent: Online registration of multiple participants is broken (if no
+ waitlist activated)
+ ([dev/core#5168](https://lab.civicrm.org/dev/core/-/issues/5168):
+ [30124](https://github.com/civicrm/civicrm-core/pull/30124))**
+
+- **Custom data displayed twice ([#30341](https://github.com/civicrm/civicrm-core/pull/30341))**
+- **"Total amount" on some event registrations is showing wrong amounts ([#30335](https://github.com/civicrm/civicrm-core/pull/30335))**
+- **Some custom event fields don't display on "Event Info" form ([#30336](https://github.com/civicrm/civicrm-core/pull/30336))**
+
+### CiviMail
+
+- **“Save & Send Test Email†should call the alterMailParams hook to replicate
+ live conditions
+ ([dev/core#5151](https://lab.civicrm.org/dev/core/-/issues/5151):
+ [29995](https://github.com/civicrm/civicrm-core/pull/29995))**
+
+### CiviMember
+
+- **Assign weights on membership tab
+ ([30108](https://github.com/civicrm/civicrm-core/pull/30108))**
+
+- **Fix notice on membership form by loading price field information in
+ standardised way
+ ([30079](https://github.com/civicrm/civicrm-core/pull/30079))**
+
+- **Membership price fields ignored in backend
+ ([dev/core#5147](https://lab.civicrm.org/dev/core/-/issues/5147):
+ [29982](https://github.com/civicrm/civicrm-core/pull/29982))**
+
+### CiviPledge
+
+- **Clean up smarty notices on pledge view
+ ([29705](https://github.com/civicrm/civicrm-core/pull/29705))**
+
+### Backdrop Integration
+
+- **Correct CRMDatabasePrefix() for Backdrop
+ ([dev/core#5158](https://lab.civicrm.org/dev/core/-/issues/5158):
+ [30015](https://github.com/civicrm/civicrm-core/pull/30015))**
+
+### Drupal Integration
+
+- **Fix broken user account profile tab in drupal 10
+ ([29965](https://github.com/civicrm/civicrm-core/pull/29965))**
+
+- **Drupal 10 - Fix breadcrumbs with id tokens
+ ([29958](https://github.com/civicrm/civicrm-core/pull/29958))**
+
+- **composer.json - Explicitly allow dev-master
+ ([91](https://github.com/civicrm/civicrm-drupal-8/pull/91))**
+
+### Joomla Integration
+
+- **KC Finder Not Working Under Joomla 4
+ ([dev/joomla#46](https://lab.civicrm.org/dev/joomla/-/issues/46):
+ [374](https://github.com/civicrm/civicrm-packages/pull/374))**
+
+### Standalone Integration
+
+- **Standalone - ensure id value is an int for comparison check when changing
+ password ([29895](https://github.com/civicrm/civicrm-core/pull/29895))**
+
+- **Standalone installer - fix admin not getting admin role
+ ([30136](https://github.com/civicrm/civicrm-core/pull/30136))**
+
+- **Standalone cms permissions are civi permissions
+ ([dev/core#5125](https://lab.civicrm.org/dev/core/-/issue/5125):
+ [29896](https://github.com/civicrm/civicrm-core/pull/29896))**
+
+### WordPress Integration
+
+- **Fix Asset Builder links in Afform Shortcodes
+ ([324](https://github.com/civicrm/civicrm-wordpress/pull/324))**
+
+- **Skip Base Page test when there is no Post object
+ ([317](https://github.com/civicrm/civicrm-wordpress/pull/317))**
+
+- **Declare class property to avoid PHP warning
+ ([323](https://github.com/civicrm/civicrm-wordpress/pull/323))**
+
+- **Use base page URL function to build links in multiple Shortcodes
+ ([313](https://github.com/civicrm/civicrm-wordpress/pull/313))**
+
+## Miscellany
+
+- **Update AuthSasl Net_SMTP and Net_Socket packages
+ ([30066](https://github.com/civicrm/civicrm-core/pull/30066))**
+
+- **Use addPluginsDir rather than non-public property
+ ([30158](https://github.com/civicrm/civicrm-core/pull/30158))**
+
+- **Extract our code to override addPluginsDir
+ ([401](https://github.com/civicrm/civicrm-packages/pull/401))**
+
+- **Backport addPluginsDir to Smarty2
+ ([398](https://github.com/civicrm/civicrm-packages/pull/398))**
+
+- **Upgrader - Delete old schemaStructure files
+ ([30045](https://github.com/civicrm/civicrm-core/pull/30045))**
+
+- **Use loaded balance_amount
+ ([29990](https://github.com/civicrm/civicrm-core/pull/29990))**
+
+- **Use apiv4 to getFields for participant import
+ ([30048](https://github.com/civicrm/civicrm-core/pull/30048))**
+
+- **Tidy up Import StateMachine & Controller
+ ([30044](https://github.com/civicrm/civicrm-core/pull/30044))**
+
+- **DAO - Add getter function for labelField
+ ([30013](https://github.com/civicrm/civicrm-core/pull/30013))**
+
+- **Use Apiv4 rather than funky function to get line items
+ ([29964](https://github.com/civicrm/civicrm-core/pull/29964))**
+
+- **Switch from apv3 to apiv4 within Payment.create
+ ([29966](https://github.com/civicrm/civicrm-core/pull/29966))**
+
+- **Regen - message templates out of date
+ ([30069](https://github.com/civicrm/civicrm-core/pull/30069))**
+
+- **Regenerate schema files with core-style fixes
+ ([30014](https://github.com/civicrm/civicrm-core/pull/30014))**
+
+- **regen - node 16 deprecated in github actions
+ ([30011](https://github.com/civicrm/civicrm-core/pull/30011))**
+
+- **Switch to already loaded paid_amount
+ ([30005](https://github.com/civicrm/civicrm-core/pull/30005))**
+
+- **Clean up some no-longer-used properties
+ ([30008](https://github.com/civicrm/civicrm-core/pull/30008))**
+
+- **Fold function back into the main scope, simplify, use apiv4
+ ([29944](https://github.com/civicrm/civicrm-core/pull/29944))**
+
+- **Switch function to apiv4, minor cleanup
+ ([29943](https://github.com/civicrm/civicrm-core/pull/29943))**
+
+- **AdminUI - Remove redundant conditionals
+ ([29942](https://github.com/civicrm/civicrm-core/pull/29942))**
+
+- **Further cleanup on arrays in payment create.
+ ([29913](https://github.com/civicrm/civicrm-core/pull/29913))**
+
+- **Consolidate some of the subtype wrangling code in dedupe finder
+ ([29862](https://github.com/civicrm/civicrm-core/pull/29862))**
+
+- **Fold function back into only caller
+ ([29937](https://github.com/civicrm/civicrm-core/pull/29937))**
+
+- **Fix comments ([29974](https://github.com/civicrm/civicrm-core/pull/29974))**
+
+- **Fix some CRM_Utils_array to ... not be
+ ([29952](https://github.com/civicrm/civicrm-core/pull/29952))**
+
+- **Move the code to generate payableItems back into getPayableItems
+ ([29989](https://github.com/civicrm/civicrm-core/pull/29989))**
+
+- **Unravel variable variables
+ ([29951](https://github.com/civicrm/civicrm-core/pull/29951))**
+
+- **Fix old merge conflict mis-resolution, superficial tidy up
+ ([30082](https://github.com/civicrm/civicrm-core/pull/30082))**
+
+- **UtilsArray - Refactor out deprecated value() in array assignments
+ ([29925](https://github.com/civicrm/civicrm-core/pull/29925))**
+
+- **Remove a few more variable variables
+ ([29953](https://github.com/civicrm/civicrm-core/pull/29953))**
+
+- **Remove deprecated function
+ ([29796](https://github.com/civicrm/civicrm-core/pull/29796))**
+
+- **Remove function that no longer does much of anything
+ ([30036](https://github.com/civicrm/civicrm-core/pull/30036))**
+
+- **Remove function deprecated in 2022, after universe search
+ ([30033](https://github.com/civicrm/civicrm-core/pull/30033))**
+
+- **Remove some unreachable legacy code
+ ([30032](https://github.com/civicrm/civicrm-core/pull/30032))**
+
+- **Remove cancerous unreachable code
+ ([30050](https://github.com/civicrm/civicrm-core/pull/30050))**
+
+- **Remove a couple of utils_array::value
+ ([30042](https://github.com/civicrm/civicrm-core/pull/30042))**
+
+- **Remove unused properties
+ ([29980](https://github.com/civicrm/civicrm-core/pull/29980))**
+
+- **Remove always true if from previously shared code
+ ([29941](https://github.com/civicrm/civicrm-core/pull/29941))**
+
+- **Remove unused variable + some test tidy up
+ ([29904](https://github.com/civicrm/civicrm-core/pull/29904))**
+
+- **Remove deprecated functions that were on their final notice
+ ([29905](https://github.com/civicrm/civicrm-core/pull/29905))**
+
+- **Remove deprecated function
+ ([30090](https://github.com/civicrm/civicrm-core/pull/30090))**
+
+- **[REF] Start to use sane arrays in Payment create
+ ([29893](https://github.com/civicrm/civicrm-core/pull/29893))**
+
+- **[REF] Use standard DeleteMessage functionality from EntityFormTrait for
+ OptionValues ([29930](https://github.com/civicrm/civicrm-core/pull/29930))**
+
+- **[REF] Autocleanup - Remove redundant conditions
+ ([29935](https://github.com/civicrm/civicrm-core/pull/29935))**
+
+- **[REF] Refactor out deprecated CRM_Utils_Array from UFGroup class
+ ([29932](https://github.com/civicrm/civicrm-core/pull/29932))**
+
+- **[REF] Refactor out deprecated CRM_Utils_Array from some BAO classes
+ ([29933](https://github.com/civicrm/civicrm-core/pull/29933))**
+
+- **[REF] CustomGroup BAO function cleanup
+ ([29985](https://github.com/civicrm/civicrm-core/pull/29985))**
+
+- **[REF] Payment.create - Combine the 2 calls to LineItem.get
+ ([30010](https://github.com/civicrm/civicrm-core/pull/30010))**
+
+- **(REF) `ts()` - Move from class-file to `functions.php`
+ ([30071](https://github.com/civicrm/civicrm-core/pull/30071))**
+
+- **(REF) Drop references to `require_once "CRM/Core/I18n.php"`
+ ([30072](https://github.com/civicrm/civicrm-core/pull/30072))**
+
+- **[NFC] APIv4 - Add documentation comments to addJoin() function
+ ([29899](https://github.com/civicrm/civicrm-core/pull/29899))**
+
+- **[NFC] UtilsCheck - Improve docblock comments
+ ([29959](https://github.com/civicrm/civicrm-core/pull/29959))**
+
+- **[NFC] space error in a ts in the event receipt template
+ ([29970](https://github.com/civicrm/civicrm-core/pull/29970))**
+
+- **[NFC] Fix registration confirmtest
+ ([30073](https://github.com/civicrm/civicrm-core/pull/30073))**
+
+- **NFC: Rewrite "is_page_request" method for comment
+ ([325](https://github.com/civicrm/civicrm-wordpress/pull/325))**
+
+- **Notice fixes in test, use preferred helper
+ ([30080](https://github.com/civicrm/civicrm-core/pull/30080))**
+
+- **Test handling for path argument
+ ([30076](https://github.com/civicrm/civicrm-core/pull/30076))**
+
+- **Fix some tests to not rely on natural sort (implicit id)
+ ([29915](https://github.com/civicrm/civicrm-core/pull/29915))**
+
+- **Fix test to use full form flow
+ ([29906](https://github.com/civicrm/civicrm-core/pull/29906))**
+
+- **CRM_Utils_Cache_Tiered - Fix test failure on Standalone
+ ([30095](https://github.com/civicrm/civicrm-core/pull/30095))**
+
+- **Fix test to test form, not a deprecated function
+ ([29907](https://github.com/civicrm/civicrm-core/pull/29907))**
+
+- **Fix test to use full form flow
+ ([29903](https://github.com/civicrm/civicrm-core/pull/29903))**
+
+- **Update tests to orderBy amount rather than rely on id order
+ ([29897](https://github.com/civicrm/civicrm-core/pull/29897))**
+
+- **Crash in Smarty 5 if you have the fulltext block enabled ([#30326](https://github.com/civicrm/civicrm-core/pull/30326), [#30296](https://github.com/civicrm/civicrm-core/pull/30296))**
+- **5.74 release notes first pass ([#30305](https://github.com/civicrm/civicrm-core/pull/30305))**
+- **Port Point Release Notes to RC branch ([#30304](https://github.com/civicrm/civicrm-core/pull/30304))**
+- **DaoBase - Move class to correct directory ([#30306](https://github.com/civicrm/civicrm-core/pull/30306))**
+- **Hold back recent deprecation ([#30332](https://github.com/civicrm/civicrm-core/pull/30332))**
+- **Smarty - Remove duplicate template dirs ([#30290](https://github.com/civicrm/civicrm-core/pull/30290))**
+- **Smarty - Allow setting version via environment variable ([#30272](https://github.com/civicrm/civicrm-core/pull/30272))**
+
+## Credits
+
+This release was developed by the following code authors:
+
+AGH Strategies - Andie Hunt; Agileware - Agileware Team, Francis Whittle; angelajackson07; Artful
+Robot - Rich Lott; Benjamin W; Christian Wach; Circle Interactive - Pradeep
+Nayak; CiviCRM - Coleman Watts, Tim Otten; Compuco - Olayiwola Odunsi; Coop
+SymbioTIC - Samuel Vanhove; CrusonWeb - Dan Cruson; CSES (Chelmsford Science and
+Engineering Society) - Adam Wood; Dave D; Francesc Bassas i Bullich; Freeform
+Solutions - Herb van den Dool; Fuzion - Jitendra Purohit; Jens Schuppe; JMA
+Consulting - Seamus Lee; John Kingsnorth; Megaphone Technology Consulting - Jon
+Goldberg; MJW Consulting - Matthew Wire; Nicol Wistreich; Progressive Technology
+Project - Jamie McClelland; Reflexive Communications - Sandor Semsey; Squiffle
+Consulting - Aidan Saunders; Stephen Palmstrom; Tadpole Collective - Kevin
+Cristiano; Third Sector Design - Michael McAndrew, William Mortada; Wikimedia
+Foundation - Eileen McNaughton
+
+Most authors also reviewed code for this release; in addition, the following
+reviewers contributed their comments:
+
+AGH Strategies - Alice Frumin; Agileware - Justin Freeman; ALL IN APPLI admin;
+Australian Greens - John Twyman; CiviDesk - Yashodha Chaku; civiservice.de -
+Detlev Sieber; CompuCorp - Omar Abu Hussein; Coop SymbioTIC - Mathieu Lutfy,
+mmyriam; Fransly; Fuzion - Luke Stewart; Guydn; Levi.k;
+
+## Feedback
+
+These release notes are edited by Alice Frumin and Andie Hunt. If you'd like
+to provide feedback on them, please log in to https://chat.civicrm.org/civicrm
+and contact `@agh1`.
diff --git a/www/modules/civicrm/release-notes/5.74.1.md b/www/modules/civicrm/release-notes/5.74.1.md
new file mode 100644
index 000000000..8535ad62e
--- /dev/null
+++ b/www/modules/civicrm/release-notes/5.74.1.md
@@ -0,0 +1,41 @@
+# CiviCRM 5.74.1
+
+Released June 11, 2024
+
+- **[Synopsis](#synopsis)**
+- **[Bugs resolved](#bugs)**
+- **[Credits](#credits)**
+- **[Feedback](#feedback)**
+
+## Synopsis
+
+| *Does this version...?* | |
+| --------------------------------------------------------------- | -------- |
+| Change the database schema? | no |
+| Alter the API? | no |
+| Require attention to configuration options? | no |
+| Fix problems installing or upgrading to a previous version? | no |
+| Introduce features? | no |
+| **Fix bugs?** | **yes** |
+| Fix security vulnerabilities? | no |
+
+## Bugs resolved
+
+* **_Backdrop_: Navigation icon renders incorrectly on Backdrop (before v1.28) ([dev/backdrop#85#note_165525](https://lab.civicrm.org/dev/backdrop/-/issues/85#note_165525): [backdrop#179](https://github.com/civicrm/civicrm-backdrop/pull/179))**
+* **_CiviEvent_: Event registration fails on certain payment processors ([dev/core#5207#note_165605](https://lab.civicrm.org/dev/core/-/issues/5207#note_165605): [#30392](https://github.com/civicrm/civicrm-core/pull/30392))**
+
+ Displays error "Expected to find one Participant record, but there were zero."
+
+## Credits
+
+This release was developed by the following authors and reviewers:
+
+Wikimedia Foundation - Eileen McNaughton; Megaphone Technology Consulting - Jon Goldberg;
+JMA Consulting - Monish Deb; Freeform Solutions - Herb van den Dool; Dave D; CiviCRM - Tim
+Otten; Circle Interactive - Pradeep Nayak
+
+## Feedback
+
+These release notes are edited by Tim Otten and Andie Hunt. If you'd like to
+provide feedback on them, please login to https://chat.civicrm.org/civicrm and
+contact `@agh1`.
diff --git a/www/modules/civicrm/release-notes/5.74.2.md b/www/modules/civicrm/release-notes/5.74.2.md
new file mode 100644
index 000000000..ef8a2f691
--- /dev/null
+++ b/www/modules/civicrm/release-notes/5.74.2.md
@@ -0,0 +1,43 @@
+# CiviCRM 5.74.2
+
+Released June 13, 2024
+
+- **[Synopsis](#synopsis)**
+- **[Bugs resolved](#bugs)**
+- **[Credits](#credits)**
+- **[Feedback](#feedback)**
+
+## Synopsis
+
+| *Does this version...?* | |
+| --------------------------------------------------------------- | -------- |
+| Change the database schema? | no |
+| Alter the API? | no |
+| Require attention to configuration options? | no |
+| Fix problems installing or upgrading to a previous version? | no |
+| Introduce features? | no |
+| **Fix bugs?** | **yes** |
+| Fix security vulnerabilities? | no |
+
+## Bugs resolved
+
+* **_CiviContribute_: "Update Recurring Contribution" fails to open ([dev/core#5282](https://lab.civicrm.org/dev/core/-/issues/5282): [#30410](https://github.com/civicrm/civicrm-core/pull/30410))**
+* **_CiviGrant_: Disabling CiviGrant leads to errors about "CRM_Utils_SQL::mergeSubquery" ([dev/core#5284](https://lab.civicrm.org/dev/core/-/issues/5284): [#30404](https://github.com/civicrm/civicrm-core/pull/30404))**
+
+ Other disabled extensions might provoke similar errors, but this has not been specifically tested.
+
+* **_Form Builder_: Forms with certain navigation options fail to render ([dev/core#5286](https://lab.civicrm.org/dev/core/-/issues/5286): [#30063](https://github.com/civicrm/civicrm-core/pull/30063))**
+
+## Credits
+
+This release was developed by the following authors and reviewers:
+
+Wikimedia Foundation - Eileen McNaughton; Michael Labriola; Megaphone Technology
+Consulting - Jon Goldberg; JMA Consulting - Monish Deb; CiviCRM - Coleman Watts, Tim
+Otten; CiviCoop - Jaap Jansma; Circle Interactive - Pradeep Nayak; callan; Benjamin W
+
+## Feedback
+
+These release notes are edited by Tim Otten and Andie Hunt. If you'd like to
+provide feedback on them, please login to https://chat.civicrm.org/civicrm and
+contact `@agh1`.
diff --git a/www/modules/civicrm/release-notes/5.74.3.md b/www/modules/civicrm/release-notes/5.74.3.md
new file mode 100644
index 000000000..ad42c30ca
--- /dev/null
+++ b/www/modules/civicrm/release-notes/5.74.3.md
@@ -0,0 +1,41 @@
+# CiviCRM 5.74.3
+
+Released June 15, 2024
+
+- **[Synopsis](#synopsis)**
+- **[Bugs resolved](#bugs)**
+- **[Credits](#credits)**
+- **[Feedback](#feedback)**
+
+## Synopsis
+
+| *Does this version...?* | |
+| --------------------------------------------------------------- | -------- |
+| Change the database schema? | no |
+| Alter the API? | no |
+| Require attention to configuration options? | no |
+| Fix problems installing or upgrading to a previous version? | no |
+| Introduce features? | no |
+| **Fix bugs?** | **yes** |
+| Fix security vulnerabilities? | no |
+
+## Bugs resolved
+
+* **_CiviEvent_: In "View Participant", the deletion link may be malformed ([#30433](https://github.com/civicrm/civicrm-core/pull/30433))**
+* **_CiviEvent_: When editing certain participant records, changes to the "Fee Amount" may not save ([dev/core#5289](https://lab.civicrm.org/dev/core/-/issues/5289): [#30439](https://github.com/civicrm/civicrm-core/pull/30439))**
+* **_Custom Data_: Custom fields for "Relationship Type" records are not displayed ([#30417](https://github.com/civicrm/civicrm-core/pull/30417))**
+* **_Email Composition_: When editing a scheduled-reminder or message-component, tokens are encoded incorrectly ([dev/core#5288](https://lab.civicrm.org/dev/core/-/issues/5288): [#30428](https://github.com/civicrm/civicrm-core/pull/30428), [#30444](https://github.com/civicrm/civicrm-core/pull/30444))**
+* **_Search Kit_: Data-segmentation involving certain fields does not work ([#30435](https://github.com/civicrm/civicrm-core/pull/30435))**
+
+## Credits
+
+This release was developed by the following authors and reviewers:
+
+Wikimedia Foundation - Eileen McNaughton; timtomch; pbarmak; Fuzion - Jitendra Purohit;
+Dave D; CiviCRM - Coleman Watts, Tim Otten
+
+## Feedback
+
+These release notes are edited by Tim Otten and Andie Hunt. If you'd like to
+provide feedback on them, please login to https://chat.civicrm.org/civicrm and
+contact `@agh1`.
diff --git a/www/modules/civicrm/release-notes/5.74.4.md b/www/modules/civicrm/release-notes/5.74.4.md
new file mode 100644
index 000000000..547d9684d
--- /dev/null
+++ b/www/modules/civicrm/release-notes/5.74.4.md
@@ -0,0 +1,47 @@
+# CiviCRM 5.74.4
+
+Released June 19, 2024
+
+- **[Synopsis](#synopsis)**
+- **[Security advisories](#security)**
+- **[Bugs resolved](#bugs)**
+- **[Credits](#credits)**
+- **[Feedback](#feedback)**
+
+## Synopsis
+
+| *Does this version...?* | |
+| --------------------------------------------------------------- | -------- |
+| Change the database schema? | no |
+| Alter the API? | no |
+| Require attention to configuration options? | no |
+| Fix problems installing or upgrading to a previous version? | no |
+| Introduce features? | no |
+| **Fix bugs?** | **yes** |
+| **Fix security vulnerabilities?** | **yes** |
+
+## Security advisories
+
+* **[CIVI-SA-2024-01](https://civicrm.org/advisory/civi-sa-2024-01-view-contact-xss): View Contact XSS (Multiple)**
+* **[CIVI-SA-2024-02](https://civicrm.org/advisory/civi-sa-2024-02-json-settings-xss): JSON Settings (XSS)**
+* **[CIVI-SA-2024-03](https://civicrm.org/advisory/civi-sa-2024-03-smarty-security-policy): Smary Security Policy**
+
+## Bugs resolved
+
+* **_CiviCase_: Case Roles Section is squished ([dev/user-interface#73](https://lab.civicrm.org/dev/user-interface/-/issues/73): [#30465](https://github.com/civicrm/civicrm-core/pull/30465))**
+* **_CiviCase_: Case Roles Section does not remain open ([dev/core#5296](https://lab.civicrm.org/dev/core/-/issues/5296): [#30502](https://github.com/civicrm/civicrm-core/pull/30502))**
+* **_FormBuilder_: Fix console error with multi-select fields ([#30477](https://github.com/civicrm/civicrm-core/pull/30477))**
+
+## Credits
+
+This release was developed by the following authors and reviewers:
+
+Wikimedia Foundation - Eileen McNaughton; Nicol Wistreich; Québec Ministère de la Cybersécurité et du Numérique; JMA
+Consulting - Seamus Lee; Greenpeace Central and Eastern Europe - Patrick Figel; Dave D; Coop SymbioTIC - Mathieu Lutfy;
+Claude Bernard Lyon 1 University - Security Team; CiviCRM - Coleman Watts, Tim Otten
+
+## Feedback
+
+These release notes are edited by Tim Otten and Andie Hunt. If you'd like to
+provide feedback on them, please login to https://chat.civicrm.org/civicrm and
+contact `@agh1`.
diff --git a/www/modules/civicrm/schema/ACL/ACL.entityType.php b/www/modules/civicrm/schema/ACL/ACL.entityType.php
new file mode 100644
index 000000000..78f5965bf
--- /dev/null
+++ b/www/modules/civicrm/schema/ACL/ACL.entityType.php
@@ -0,0 +1,163 @@
+ 'ACL',
+ 'table' => 'civicrm_acl',
+ 'class' => 'CRM_ACL_DAO_ACL',
+ 'getInfo' => fn() => [
+ 'title' => ts('ACL'),
+ 'title_plural' => ts('ACLs'),
+ 'description' => ts('Access Control List'),
+ 'add' => '1.6',
+ ],
+ 'getPaths' => fn() => [
+ 'add' => 'civicrm/acl/edit?reset=1&action=add',
+ 'delete' => 'civicrm/acl/delete?reset=1&action=delete&id=[id]',
+ 'update' => 'civicrm/acl/edit?reset=1&action=edit&id=[id]',
+ 'browse' => 'civicrm/acl',
+ ],
+ 'getIndices' => fn() => [
+ 'index_acl_id' => [
+ 'fields' => [
+ 'acl_id' => TRUE,
+ ],
+ 'add' => '1.6',
+ ],
+ ],
+ 'getFields' => fn() => [
+ 'id' => [
+ 'title' => ts('ACL ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'required' => TRUE,
+ 'description' => ts('Unique table ID'),
+ 'add' => '1.6',
+ 'primary_key' => TRUE,
+ 'auto_increment' => TRUE,
+ ],
+ 'name' => [
+ 'title' => ts('ACL Name'),
+ 'sql_type' => 'varchar(64)',
+ 'input_type' => 'Text',
+ 'description' => ts('ACL Name.'),
+ 'add' => '1.6',
+ 'input_attrs' => [
+ 'maxlength' => 64,
+ ],
+ ],
+ 'deny' => [
+ 'title' => ts('Deny ACL?'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'Radio',
+ 'required' => TRUE,
+ 'description' => ts('Is this ACL entry Allow (0) or Deny (1) ?'),
+ 'add' => '1.6',
+ 'default' => FALSE,
+ ],
+ 'entity_table' => [
+ 'title' => ts('ACL Entity'),
+ 'sql_type' => 'varchar(64)',
+ 'input_type' => 'Text',
+ 'required' => TRUE,
+ 'description' => ts('Table of the object possessing this ACL entry (Contact, Group, or ACL Group)'),
+ 'add' => '1.6',
+ 'input_attrs' => [
+ 'maxlength' => 64,
+ ],
+ ],
+ 'entity_id' => [
+ 'title' => ts('Entity ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'description' => ts('ID of the object possessing this ACL'),
+ 'add' => '1.6',
+ 'pseudoconstant' => [
+ 'option_group_name' => 'acl_role',
+ ],
+ 'entity_reference' => [
+ 'dynamic_entity' => 'entity_table',
+ 'key' => 'id',
+ ],
+ ],
+ 'operation' => [
+ 'title' => ts('ACL Operation'),
+ 'sql_type' => 'varchar(8)',
+ 'input_type' => 'Select',
+ 'required' => TRUE,
+ 'description' => ts('What operation does this ACL entry control?'),
+ 'add' => '1.6',
+ 'input_attrs' => [
+ 'maxlength' => 8,
+ ],
+ 'pseudoconstant' => [
+ 'callback' => 'CRM_ACL_BAO_ACL::operation',
+ ],
+ ],
+ 'object_table' => [
+ 'title' => ts('ACL Object'),
+ 'sql_type' => 'varchar(64)',
+ 'input_type' => 'Select',
+ 'description' => ts('The table of the object controlled by this ACL entry'),
+ 'add' => '1.6',
+ 'input_attrs' => [
+ 'label' => ts('Type of Data'),
+ 'maxlength' => 64,
+ ],
+ 'pseudoconstant' => [
+ 'callback' => 'CRM_ACL_BAO_ACL::getObjectTableOptions',
+ ],
+ ],
+ 'object_id' => [
+ 'title' => ts('ACL Object ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Select',
+ 'description' => ts('The ID of the object controlled by this ACL entry'),
+ 'add' => '1.6',
+ 'input_attrs' => [
+ 'label' => ts('Which Data'),
+ 'control_field' => 'object_table',
+ ],
+ 'pseudoconstant' => [
+ 'callback' => 'CRM_ACL_BAO_ACL::getObjectIdOptions',
+ 'prefetch' => 'disabled',
+ ],
+ ],
+ 'acl_table' => [
+ 'title' => ts('ACL Table'),
+ 'sql_type' => 'varchar(64)',
+ 'input_type' => 'Text',
+ 'description' => ts('If this is a grant/revoke entry, what table are we granting?'),
+ 'add' => '1.6',
+ 'input_attrs' => [
+ 'maxlength' => 64,
+ ],
+ ],
+ 'acl_id' => [
+ 'title' => ts('ACL Group ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'description' => ts('ID of the ACL or ACL group being granted/revoked'),
+ 'add' => '1.6',
+ ],
+ 'is_active' => [
+ 'title' => ts('ACL Is Active?'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('Is this property active?'),
+ 'add' => '1.6',
+ 'default' => TRUE,
+ 'input_attrs' => [
+ 'label' => ts('Enabled'),
+ ],
+ ],
+ 'priority' => [
+ 'title' => ts('Priority'),
+ 'sql_type' => 'int',
+ 'input_type' => 'Number',
+ 'required' => TRUE,
+ 'add' => '5.64',
+ 'default' => 0,
+ ],
+ ],
+];
diff --git a/www/modules/civicrm/schema/ACL/ACLCache.entityType.php b/www/modules/civicrm/schema/ACL/ACLCache.entityType.php
new file mode 100644
index 000000000..c9cfd7967
--- /dev/null
+++ b/www/modules/civicrm/schema/ACL/ACLCache.entityType.php
@@ -0,0 +1,83 @@
+ 'ACLCache',
+ 'table' => 'civicrm_acl_cache',
+ 'class' => 'CRM_ACL_DAO_ACLCache',
+ 'getInfo' => fn() => [
+ 'title' => ts('ACLCache'),
+ 'title_plural' => ts('ACLCaches'),
+ 'description' => ts('Cache for acls and contacts'),
+ 'add' => '1.6',
+ ],
+ 'getIndices' => fn() => [
+ 'index_contact_id' => [
+ 'fields' => [
+ 'contact_id' => TRUE,
+ ],
+ 'add' => '5.31',
+ ],
+ 'index_acl_id' => [
+ 'fields' => [
+ 'acl_id' => TRUE,
+ ],
+ 'add' => '1.6',
+ ],
+ 'index_modified_date' => [
+ 'fields' => [
+ 'modified_date' => TRUE,
+ ],
+ 'add' => '5.22',
+ ],
+ ],
+ 'getFields' => fn() => [
+ 'id' => [
+ 'title' => ts('Cache ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'required' => TRUE,
+ 'description' => ts('Unique table ID'),
+ 'add' => '1.6',
+ 'primary_key' => TRUE,
+ 'auto_increment' => TRUE,
+ ],
+ 'contact_id' => [
+ 'title' => ts('Contact ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'description' => ts('Foreign Key to Contact'),
+ 'add' => '1.6',
+ 'input_attrs' => [
+ 'label' => ts('Contact'),
+ ],
+ ],
+ 'acl_id' => [
+ 'title' => ts('ACL ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'required' => TRUE,
+ 'description' => ts('Foreign Key to ACL'),
+ 'add' => '1.6',
+ 'input_attrs' => [
+ 'label' => ts('ACL'),
+ ],
+ 'pseudoconstant' => [
+ 'table' => 'civicrm_acl',
+ 'key_column' => 'id',
+ 'label_column' => 'name',
+ ],
+ 'entity_reference' => [
+ 'entity' => 'ACL',
+ 'key' => 'id',
+ 'on_delete' => 'CASCADE',
+ ],
+ ],
+ 'modified_date' => [
+ 'title' => ts('Cache Modified Date'),
+ 'sql_type' => 'timestamp',
+ 'input_type' => NULL,
+ 'description' => ts('When was this cache entry last modified'),
+ 'add' => '1.6',
+ ],
+ ],
+];
diff --git a/www/modules/civicrm/schema/ACL/ACLEntityRole.entityType.php b/www/modules/civicrm/schema/ACL/ACLEntityRole.entityType.php
new file mode 100644
index 000000000..e6c2ae815
--- /dev/null
+++ b/www/modules/civicrm/schema/ACL/ACLEntityRole.entityType.php
@@ -0,0 +1,95 @@
+ 'ACLEntityRole',
+ 'table' => 'civicrm_acl_entity_role',
+ 'class' => 'CRM_ACL_DAO_ACLEntityRole',
+ 'getInfo' => fn() => [
+ 'title' => ts('ACL Role Assignment'),
+ 'title_plural' => ts('ACL Role Assignments'),
+ 'description' => ts('Join table for Contacts and Groups to ACL Roles'),
+ 'add' => '1.6',
+ ],
+ 'getPaths' => fn() => [
+ 'add' => 'civicrm/acl/entityrole/edit?reset=1&action=add',
+ 'delete' => 'civicrm/acl/entityrole/edit?reset=1&action=delete&id=[id]',
+ 'update' => 'civicrm/acl/entityrole/edit?reset=1&action=update&id=[id]',
+ 'browse' => 'civicrm/acl/entityrole',
+ ],
+ 'getIndices' => fn() => [
+ 'index_role' => [
+ 'fields' => [
+ 'acl_role_id' => TRUE,
+ ],
+ 'add' => '1.6',
+ ],
+ 'index_entity' => [
+ 'fields' => [
+ 'entity_table' => TRUE,
+ 'entity_id' => TRUE,
+ ],
+ 'add' => '1.6',
+ ],
+ ],
+ 'getFields' => fn() => [
+ 'id' => [
+ 'title' => ts('Entity Role'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'required' => TRUE,
+ 'description' => ts('Unique table ID'),
+ 'add' => '1.6',
+ 'primary_key' => TRUE,
+ 'auto_increment' => TRUE,
+ ],
+ 'acl_role_id' => [
+ 'title' => ts('ACL Role ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Select',
+ 'required' => TRUE,
+ 'description' => ts('Foreign Key to ACL Role (which is an option value pair and hence an implicit FK)'),
+ 'add' => '1.6',
+ 'pseudoconstant' => [
+ 'option_group_name' => 'acl_role',
+ ],
+ ],
+ 'entity_table' => [
+ 'title' => ts('Entity Table'),
+ 'sql_type' => 'varchar(64)',
+ 'input_type' => 'Select',
+ 'required' => TRUE,
+ 'description' => ts('Table of the object joined to the ACL Role (Contact or Group)'),
+ 'add' => '1.6',
+ 'input_attrs' => [
+ 'maxlength' => 64,
+ ],
+ 'pseudoconstant' => [
+ 'callback' => 'CRM_ACL_BAO_ACLEntityRole::entityTables',
+ ],
+ ],
+ 'entity_id' => [
+ 'title' => ts('ACL Entity ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'required' => TRUE,
+ 'description' => ts('ID of the group/contact object being joined'),
+ 'add' => '1.6',
+ 'entity_reference' => [
+ 'dynamic_entity' => 'entity_table',
+ 'key' => 'id',
+ ],
+ ],
+ 'is_active' => [
+ 'title' => ts('ACL Entity Role is Active'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('Is this property active?'),
+ 'add' => '1.6',
+ 'default' => TRUE,
+ 'input_attrs' => [
+ 'label' => ts('Enabled'),
+ ],
+ ],
+ ],
+];
diff --git a/www/modules/civicrm/schema/Activity/Activity.entityType.php b/www/modules/civicrm/schema/Activity/Activity.entityType.php
new file mode 100644
index 000000000..39e8c5ceb
--- /dev/null
+++ b/www/modules/civicrm/schema/Activity/Activity.entityType.php
@@ -0,0 +1,456 @@
+ 'Activity',
+ 'table' => 'civicrm_activity',
+ 'class' => 'CRM_Activity_DAO_Activity',
+ 'getInfo' => fn() => [
+ 'title' => ts('Activity'),
+ 'title_plural' => ts('Activities'),
+ 'description' => ts('Past or future actions concerning one or more contacts.'),
+ 'log' => TRUE,
+ 'add' => '1.1',
+ 'icon' => 'fa-tasks',
+ 'label_field' => 'subject',
+ ],
+ 'getPaths' => fn() => [
+ 'add' => 'civicrm/activity?reset=1&action=add&context=standalone',
+ 'view' => 'civicrm/activity?reset=1&action=view&id=[id]',
+ 'update' => 'civicrm/activity/add?reset=1&action=update&id=[id]',
+ 'delete' => 'civicrm/activity?reset=1&action=delete&id=[id]',
+ ],
+ 'getIndices' => fn() => [
+ 'UI_source_record_id' => [
+ 'fields' => [
+ 'source_record_id' => TRUE,
+ ],
+ 'add' => '3.2',
+ ],
+ 'UI_activity_type_id' => [
+ 'fields' => [
+ 'activity_type_id' => TRUE,
+ ],
+ 'add' => '1.6',
+ ],
+ 'index_activity_date_time' => [
+ 'fields' => [
+ 'activity_date_time' => TRUE,
+ ],
+ 'add' => '4.7',
+ ],
+ 'index_status_id' => [
+ 'fields' => [
+ 'status_id' => TRUE,
+ ],
+ 'add' => '4.7',
+ ],
+ 'index_is_current_revision' => [
+ 'fields' => [
+ 'is_current_revision' => TRUE,
+ ],
+ 'add' => '2.2',
+ ],
+ 'index_is_deleted' => [
+ 'fields' => [
+ 'is_deleted' => TRUE,
+ ],
+ 'add' => '2.2',
+ ],
+ ],
+ 'getFields' => fn() => [
+ 'id' => [
+ 'title' => ts('Activity ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'required' => TRUE,
+ 'description' => ts('Unique Other Activity ID'),
+ 'add' => '1.1',
+ 'unique_name' => 'activity_id',
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ 'primary_key' => TRUE,
+ 'auto_increment' => TRUE,
+ ],
+ 'source_record_id' => [
+ 'title' => ts('Source Record'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => NULL,
+ 'readonly' => TRUE,
+ 'description' => ts('Artificial FK to original transaction (e.g. contribution) IF it is not an Activity. Entity table is discovered by filtering by the appropriate activity_type_id.'),
+ 'add' => '2.0',
+ ],
+ 'activity_type_id' => [
+ 'title' => ts('Activity Type ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Select',
+ 'required' => TRUE,
+ 'description' => ts('FK to civicrm_option_value.id, that has to be valid, registered activity type.'),
+ 'add' => '1.1',
+ 'default' => 1,
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ 'input_attrs' => [
+ 'label' => ts('Activity Type'),
+ ],
+ 'pseudoconstant' => [
+ 'option_group_name' => 'activity_type',
+ ],
+ ],
+ 'subject' => [
+ 'title' => ts('Subject'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'description' => ts('The subject/purpose/short description of the activity.'),
+ 'add' => '1.1',
+ 'unique_name' => 'activity_subject',
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'activity_date_time' => [
+ 'title' => ts('Activity Date'),
+ 'sql_type' => 'datetime',
+ 'input_type' => 'Select Date',
+ 'description' => ts('Date and time this activity is scheduled to occur. Formerly named scheduled_date_time.'),
+ 'add' => '2.0',
+ 'default' => 'CURRENT_TIMESTAMP',
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ 'input_attrs' => [
+ 'format_type' => 'activityDateTime',
+ ],
+ ],
+ 'duration' => [
+ 'title' => ts('Duration'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'description' => ts('Planned or actual duration of activity expressed in minutes. Conglomerate of former duration_hours and duration_minutes.'),
+ 'add' => '2.0',
+ 'unique_name' => 'activity_duration',
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ ],
+ 'location' => [
+ 'title' => ts('Location'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'description' => ts('Location of the activity (optional, open text).'),
+ 'add' => '1.1',
+ 'unique_name' => 'activity_location',
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'phone_id' => [
+ 'title' => ts('Phone ID (called)'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'deprecated' => TRUE,
+ 'description' => ts('Phone ID of the number called (optional - used if an existing phone number is selected).'),
+ 'add' => '2.0',
+ 'input_attrs' => [
+ 'label' => ts('Phone (called)'),
+ ],
+ 'entity_reference' => [
+ 'entity' => 'Phone',
+ 'key' => 'id',
+ 'on_delete' => 'SET NULL',
+ ],
+ ],
+ 'phone_number' => [
+ 'title' => ts('Phone (called) Number'),
+ 'sql_type' => 'varchar(64)',
+ 'input_type' => 'Text',
+ 'deprecated' => TRUE,
+ 'description' => ts('Phone number in case the number does not exist in the civicrm_phone table.'),
+ 'add' => '2.0',
+ 'input_attrs' => [
+ 'maxlength' => 64,
+ ],
+ ],
+ 'details' => [
+ 'title' => ts('Details'),
+ 'sql_type' => 'longtext',
+ 'input_type' => 'RichTextEditor',
+ 'description' => ts('Details about the activity (agenda, notes, etc).'),
+ 'add' => '1.1',
+ 'unique_name' => 'activity_details',
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ 'input_attrs' => [
+ 'rows' => 8,
+ 'cols' => 60,
+ ],
+ ],
+ 'status_id' => [
+ 'title' => ts('Activity Status'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Select',
+ 'description' => ts('ID of the status this activity is currently in. Foreign key to civicrm_option_value.'),
+ 'add' => '2.0',
+ 'unique_name' => 'activity_status_id',
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ 'pseudoconstant' => [
+ 'option_group_name' => 'activity_status',
+ ],
+ ],
+ 'priority_id' => [
+ 'title' => ts('Priority'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Select',
+ 'description' => ts('ID of the priority given to this activity. Foreign key to civicrm_option_value.'),
+ 'add' => '2.0',
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ 'pseudoconstant' => [
+ 'option_group_name' => 'priority',
+ ],
+ ],
+ 'parent_id' => [
+ 'title' => ts('Parent Activity ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => NULL,
+ 'readonly' => TRUE,
+ 'description' => ts('Parent meeting ID (if this is a follow-up item).'),
+ 'add' => '1.1',
+ 'input_attrs' => [
+ 'label' => ts('Parent Activity'),
+ ],
+ 'entity_reference' => [
+ 'entity' => 'Activity',
+ 'key' => 'id',
+ 'on_delete' => 'SET NULL',
+ ],
+ ],
+ 'is_test' => [
+ 'title' => ts('Test'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'add' => '2.0',
+ 'unique_name' => 'activity_is_test',
+ 'default' => FALSE,
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ ],
+ 'medium_id' => [
+ 'title' => ts('Activity Medium'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Select',
+ 'description' => ts('Activity Medium, Implicit FK to civicrm_option_value where option_group = encounter_medium.'),
+ 'add' => '2.2',
+ 'unique_name' => 'activity_medium_id',
+ 'default' => NULL,
+ 'pseudoconstant' => [
+ 'option_group_name' => 'encounter_medium',
+ ],
+ ],
+ 'is_auto' => [
+ 'title' => ts('Auto'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'add' => '2.2',
+ 'default' => FALSE,
+ ],
+ 'relationship_id' => [
+ 'title' => ts('Relationship ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'deprecated' => TRUE,
+ 'description' => ts('FK to Relationship ID'),
+ 'add' => '2.2',
+ 'default' => NULL,
+ 'input_attrs' => [
+ 'label' => ts('Relationship'),
+ ],
+ 'entity_reference' => [
+ 'entity' => 'Relationship',
+ 'key' => 'id',
+ 'on_delete' => 'SET NULL',
+ ],
+ ],
+ 'is_current_revision' => [
+ 'title' => ts('Is current (unused)'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'deprecated' => TRUE,
+ 'description' => ts('Unused deprecated column.'),
+ 'add' => '2.2',
+ 'default' => TRUE,
+ ],
+ 'original_id' => [
+ 'title' => ts('Original ID (unused)'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => NULL,
+ 'deprecated' => TRUE,
+ 'readonly' => TRUE,
+ 'description' => ts('Unused deprecated column.'),
+ 'add' => '2.2',
+ 'input_attrs' => [
+ 'label' => ts('Original Activity'),
+ ],
+ 'entity_reference' => [
+ 'entity' => 'Activity',
+ 'key' => 'id',
+ 'on_delete' => 'SET NULL',
+ ],
+ ],
+ 'result' => [
+ 'title' => ts('Result'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'description' => ts('Currently being used to store result id for survey activity, FK to option value.'),
+ 'add' => '3.3',
+ 'unique_name' => 'activity_result',
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'is_deleted' => [
+ 'title' => ts('Activity is in the Trash'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'add' => '2.2',
+ 'unique_name' => 'activity_is_deleted',
+ 'default' => FALSE,
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ ],
+ 'campaign_id' => [
+ 'title' => ts('Campaign ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'description' => ts('The campaign for which this activity has been triggered.'),
+ 'add' => '3.4',
+ 'unique_name' => 'activity_campaign_id',
+ 'component' => 'CiviCampaign',
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ 'input_attrs' => [
+ 'label' => ts('Campaign'),
+ ],
+ 'pseudoconstant' => [
+ 'table' => 'civicrm_campaign',
+ 'key_column' => 'id',
+ 'label_column' => 'title',
+ 'prefetch' => 'disabled',
+ ],
+ 'entity_reference' => [
+ 'entity' => 'Campaign',
+ 'key' => 'id',
+ 'on_delete' => 'SET NULL',
+ ],
+ ],
+ 'engagement_level' => [
+ 'title' => ts('Engagement Index'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Select',
+ 'description' => ts('Assign a specific level of engagement to this activity. Used for tracking constituents in ladder of engagement.'),
+ 'add' => '3.4',
+ 'unique_name' => 'activity_engagement_level',
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ 'pseudoconstant' => [
+ 'option_group_name' => 'engagement_index',
+ ],
+ ],
+ 'weight' => [
+ 'title' => ts('Order'),
+ 'sql_type' => 'int',
+ 'input_type' => 'Number',
+ 'add' => '4.1',
+ ],
+ 'is_star' => [
+ 'title' => ts('Is Starred'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'Checkbox',
+ 'required' => TRUE,
+ 'description' => ts('Activity marked as favorite.'),
+ 'add' => '4.7',
+ 'default' => FALSE,
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ ],
+ 'created_date' => [
+ 'title' => ts('Created Date'),
+ 'sql_type' => 'timestamp',
+ 'input_type' => 'Select Date',
+ 'description' => ts('When was the activity was created.'),
+ 'add' => '4.7',
+ 'unique_name' => 'activity_created_date',
+ 'default' => 'CURRENT_TIMESTAMP',
+ 'usage' => [
+ 'export',
+ ],
+ 'input_attrs' => [
+ 'label' => ts('Created Date'),
+ ],
+ ],
+ 'modified_date' => [
+ 'title' => ts('Modified Date'),
+ 'sql_type' => 'timestamp',
+ 'input_type' => 'Select Date',
+ 'readonly' => TRUE,
+ 'description' => ts('When was the activity (or closely related entity) was created or modified or deleted.'),
+ 'add' => '4.7',
+ 'unique_name' => 'activity_modified_date',
+ 'default' => 'CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP',
+ 'usage' => [
+ 'export',
+ ],
+ 'input_attrs' => [
+ 'label' => ts('Modified Date'),
+ ],
+ ],
+ ],
+];
diff --git a/www/modules/civicrm/schema/Activity/ActivityContact.entityType.php b/www/modules/civicrm/schema/Activity/ActivityContact.entityType.php
new file mode 100644
index 000000000..64e920634
--- /dev/null
+++ b/www/modules/civicrm/schema/Activity/ActivityContact.entityType.php
@@ -0,0 +1,94 @@
+ 'ActivityContact',
+ 'table' => 'civicrm_activity_contact',
+ 'class' => 'CRM_Activity_DAO_ActivityContact',
+ 'getInfo' => fn() => [
+ 'title' => ts('Activity Contact'),
+ 'title_plural' => ts('Activity Contacts'),
+ 'description' => ts('Activity Contact'),
+ 'log' => TRUE,
+ 'add' => '4.4',
+ ],
+ 'getIndices' => fn() => [
+ 'UI_activity_contact' => [
+ 'fields' => [
+ 'contact_id' => TRUE,
+ 'activity_id' => TRUE,
+ 'record_type_id' => TRUE,
+ ],
+ 'unique' => TRUE,
+ 'add' => '4.4',
+ ],
+ 'index_record_type' => [
+ 'fields' => [
+ 'activity_id' => TRUE,
+ 'record_type_id' => TRUE,
+ ],
+ 'add' => '4.4',
+ ],
+ ],
+ 'getFields' => fn() => [
+ 'id' => [
+ 'title' => ts('Activity Contact ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'required' => TRUE,
+ 'description' => ts('Activity contact id'),
+ 'add' => '4.4',
+ 'primary_key' => TRUE,
+ 'auto_increment' => TRUE,
+ ],
+ 'activity_id' => [
+ 'title' => ts('Activity ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'required' => TRUE,
+ 'description' => ts('Foreign key to the activity for this record.'),
+ 'add' => '4.4',
+ 'input_attrs' => [
+ 'label' => ts('Activity'),
+ ],
+ 'entity_reference' => [
+ 'entity' => 'Activity',
+ 'key' => 'id',
+ 'on_delete' => 'CASCADE',
+ ],
+ ],
+ 'contact_id' => [
+ 'title' => ts('Contact ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'required' => TRUE,
+ 'description' => ts('Foreign key to the contact for this record.'),
+ 'add' => '4.4',
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ 'input_attrs' => [
+ 'label' => ts('Contact'),
+ ],
+ 'entity_reference' => [
+ 'entity' => 'Contact',
+ 'key' => 'id',
+ 'on_delete' => 'CASCADE',
+ ],
+ ],
+ 'record_type_id' => [
+ 'title' => ts('Activity Contact Type'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Select',
+ 'description' => ts('Determines the contact\'s role in the activity (source, target, or assignee).'),
+ 'add' => '4.4',
+ 'input_attrs' => [
+ 'label' => ts('Contact Role'),
+ ],
+ 'pseudoconstant' => [
+ 'option_group_name' => 'activity_contacts',
+ ],
+ ],
+ ],
+];
diff --git a/www/modules/civicrm/schema/Batch/Batch.entityType.php b/www/modules/civicrm/schema/Batch/Batch.entityType.php
new file mode 100644
index 000000000..489b43a32
--- /dev/null
+++ b/www/modules/civicrm/schema/Batch/Batch.entityType.php
@@ -0,0 +1,198 @@
+ 'Batch',
+ 'table' => 'civicrm_batch',
+ 'class' => 'CRM_Batch_DAO_Batch',
+ 'getInfo' => fn() => [
+ 'title' => ts('Batch'),
+ 'title_plural' => ts('Batches'),
+ 'description' => ts('Stores the details of a batch operation Used primarily when doing batch operations with an external system.'),
+ 'add' => '3.3',
+ ],
+ 'getIndices' => fn() => [
+ 'UI_name' => [
+ 'fields' => [
+ 'name' => TRUE,
+ ],
+ 'unique' => TRUE,
+ 'add' => '4.2',
+ ],
+ ],
+ 'getFields' => fn() => [
+ 'id' => [
+ 'title' => ts('Batch ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'required' => TRUE,
+ 'description' => ts('Unique Address ID'),
+ 'add' => '3.3',
+ 'primary_key' => TRUE,
+ 'auto_increment' => TRUE,
+ ],
+ 'name' => [
+ 'title' => ts('Batch Name'),
+ 'sql_type' => 'varchar(64)',
+ 'input_type' => 'Text',
+ 'description' => ts('Variable name/programmatic handle for this batch.'),
+ 'add' => '3.3',
+ 'input_attrs' => [
+ 'maxlength' => 64,
+ ],
+ ],
+ 'title' => [
+ 'title' => ts('Batch Title'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'localizable' => TRUE,
+ 'description' => ts('Friendly Name.'),
+ 'add' => '4.2',
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'description' => [
+ 'title' => ts('Batch Description'),
+ 'sql_type' => 'text',
+ 'input_type' => 'TextArea',
+ 'localizable' => TRUE,
+ 'description' => ts('Description of this batch set.'),
+ 'add' => '3.3',
+ 'input_attrs' => [
+ 'rows' => 4,
+ 'cols' => 80,
+ ],
+ ],
+ 'created_id' => [
+ 'title' => ts('Created By Contact ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'description' => ts('FK to Contact ID'),
+ 'add' => '3.3',
+ 'input_attrs' => [
+ 'label' => ts('Created By'),
+ ],
+ 'entity_reference' => [
+ 'entity' => 'Contact',
+ 'key' => 'id',
+ 'on_delete' => 'SET NULL',
+ ],
+ ],
+ 'created_date' => [
+ 'title' => ts('Batch Created Date'),
+ 'sql_type' => 'datetime',
+ 'input_type' => 'Select Date',
+ 'description' => ts('When was this item created'),
+ 'add' => '3.3',
+ 'input_attrs' => [
+ 'format_type' => 'activityDateTime',
+ ],
+ ],
+ 'modified_id' => [
+ 'title' => ts('Modified By Contact ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'description' => ts('FK to Contact ID'),
+ 'add' => '3.3',
+ 'input_attrs' => [
+ 'label' => ts('Modified By'),
+ ],
+ 'entity_reference' => [
+ 'entity' => 'Contact',
+ 'key' => 'id',
+ 'on_delete' => 'SET NULL',
+ ],
+ ],
+ 'modified_date' => [
+ 'title' => ts('Batch Modified Date'),
+ 'sql_type' => 'datetime',
+ 'input_type' => NULL,
+ 'readonly' => TRUE,
+ 'description' => ts('When was this item modified'),
+ 'add' => '3.3',
+ ],
+ 'saved_search_id' => [
+ 'title' => ts('Smart Group ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'description' => ts('FK to Saved Search ID'),
+ 'add' => '4.1',
+ 'input_attrs' => [
+ 'label' => ts('Smart Group'),
+ ],
+ 'entity_reference' => [
+ 'entity' => 'SavedSearch',
+ 'key' => 'id',
+ 'on_delete' => 'SET NULL',
+ ],
+ ],
+ 'status_id' => [
+ 'title' => ts('Batch Status'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Select',
+ 'required' => TRUE,
+ 'description' => ts('fk to Batch Status options in civicrm_option_values'),
+ 'add' => '4.2',
+ 'pseudoconstant' => [
+ 'option_group_name' => 'batch_status',
+ ],
+ ],
+ 'type_id' => [
+ 'title' => ts('Batch Type'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Select',
+ 'description' => ts('fk to Batch Type options in civicrm_option_values'),
+ 'add' => '4.2',
+ 'pseudoconstant' => [
+ 'option_group_name' => 'batch_type',
+ ],
+ ],
+ 'mode_id' => [
+ 'title' => ts('Batch Mode'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Select',
+ 'description' => ts('fk to Batch mode options in civicrm_option_values'),
+ 'add' => '4.2',
+ 'pseudoconstant' => [
+ 'option_group_name' => 'batch_mode',
+ ],
+ ],
+ 'total' => [
+ 'title' => ts('Batch Total'),
+ 'sql_type' => 'decimal(20,2)',
+ 'input_type' => 'Text',
+ 'description' => ts('Total amount for this batch.'),
+ 'add' => '4.2',
+ ],
+ 'item_count' => [
+ 'title' => ts('Batch Number of Items'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Text',
+ 'description' => ts('Number of items in a batch.'),
+ 'add' => '4.2',
+ ],
+ 'payment_instrument_id' => [
+ 'title' => ts('Batch Payment Method'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Select',
+ 'description' => ts('fk to Payment Instrument options in civicrm_option_values'),
+ 'add' => '4.3',
+ 'pseudoconstant' => [
+ 'option_group_name' => 'payment_instrument',
+ ],
+ ],
+ 'exported_date' => [
+ 'title' => ts('Batch Exported Date'),
+ 'sql_type' => 'datetime',
+ 'input_type' => 'Select Date',
+ 'add' => '4.3',
+ ],
+ 'data' => [
+ 'title' => ts('Batch Data'),
+ 'sql_type' => 'longtext',
+ 'input_type' => 'TextArea',
+ 'description' => ts('cache entered data'),
+ 'add' => '4.4',
+ ],
+ ],
+];
diff --git a/www/modules/civicrm/schema/Batch/EntityBatch.entityType.php b/www/modules/civicrm/schema/Batch/EntityBatch.entityType.php
new file mode 100644
index 000000000..0b8610c7f
--- /dev/null
+++ b/www/modules/civicrm/schema/Batch/EntityBatch.entityType.php
@@ -0,0 +1,89 @@
+ 'EntityBatch',
+ 'table' => 'civicrm_entity_batch',
+ 'class' => 'CRM_Batch_DAO_EntityBatch',
+ 'getInfo' => fn() => [
+ 'title' => ts('Entity Batch'),
+ 'title_plural' => ts('Entity Batches'),
+ 'description' => ts('Batch entities (Contributions, Participants, Contacts) to a batch.'),
+ 'add' => '3.3',
+ ],
+ 'getIndices' => fn() => [
+ 'index_entity' => [
+ 'fields' => [
+ 'entity_table' => TRUE,
+ 'entity_id' => TRUE,
+ ],
+ 'add' => '3.3',
+ ],
+ 'UI_batch_entity' => [
+ 'fields' => [
+ 'batch_id' => TRUE,
+ 'entity_id' => TRUE,
+ 'entity_table' => TRUE,
+ ],
+ 'unique' => TRUE,
+ 'add' => '3.3',
+ ],
+ ],
+ 'getFields' => fn() => [
+ 'id' => [
+ 'title' => ts('EntityBatch ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'required' => TRUE,
+ 'description' => ts('primary key'),
+ 'add' => '3.3',
+ 'primary_key' => TRUE,
+ 'auto_increment' => TRUE,
+ ],
+ 'entity_table' => [
+ 'title' => ts('EntityBatch Table'),
+ 'sql_type' => 'varchar(64)',
+ 'input_type' => 'Select',
+ 'description' => ts('physical tablename for entity being joined to file, e.g. civicrm_contact'),
+ 'add' => '3.3',
+ 'input_attrs' => [
+ 'maxlength' => 64,
+ ],
+ 'pseudoconstant' => [
+ 'option_group_name' => 'entity_batch_extends',
+ ],
+ ],
+ 'entity_id' => [
+ 'title' => ts('Entity ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'required' => TRUE,
+ 'description' => ts('FK to entity table specified in entity_table column.'),
+ 'add' => '3.3',
+ 'entity_reference' => [
+ 'dynamic_entity' => 'entity_table',
+ 'key' => 'id',
+ ],
+ ],
+ 'batch_id' => [
+ 'title' => ts('Batch ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'required' => TRUE,
+ 'description' => ts('FK to civicrm_batch'),
+ 'add' => '3.3',
+ 'input_attrs' => [
+ 'label' => ts('Batch'),
+ ],
+ 'pseudoconstant' => [
+ 'table' => 'civicrm_batch',
+ 'key_column' => 'id',
+ 'label_column' => 'title',
+ ],
+ 'entity_reference' => [
+ 'entity' => 'Batch',
+ 'key' => 'id',
+ 'on_delete' => 'CASCADE',
+ ],
+ ],
+ ],
+];
diff --git a/www/modules/civicrm/schema/Campaign/Campaign.entityType.php b/www/modules/civicrm/schema/Campaign/Campaign.entityType.php
new file mode 100644
index 000000000..7a3f82178
--- /dev/null
+++ b/www/modules/civicrm/schema/Campaign/Campaign.entityType.php
@@ -0,0 +1,302 @@
+ 'Campaign',
+ 'table' => 'civicrm_campaign',
+ 'class' => 'CRM_Campaign_DAO_Campaign',
+ 'getInfo' => fn() => [
+ 'title' => ts('Campaign'),
+ 'title_plural' => ts('Campaigns'),
+ 'description' => ts('Campaigns link activities, contributions, mailings, etc. that share a programmatic goal.'),
+ 'add' => '3.3',
+ 'icon' => 'fa-bullhorn',
+ 'label_field' => 'title',
+ ],
+ 'getPaths' => fn() => [
+ 'add' => 'civicrm/campaign/add?reset=1',
+ 'update' => 'civicrm/campaign/add?reset=1&action=update&id=[id]',
+ 'delete' => 'civicrm/campaign/add?reset=1&action=delete&id=[id]',
+ ],
+ 'getIndices' => fn() => [
+ 'UI_name' => [
+ 'fields' => [
+ 'name' => TRUE,
+ ],
+ 'unique' => TRUE,
+ 'add' => '5.63',
+ ],
+ 'index_campaign_type_id' => [
+ 'fields' => [
+ 'campaign_type_id' => TRUE,
+ ],
+ 'add' => '5.63',
+ ],
+ 'index_status_id' => [
+ 'fields' => [
+ 'status_id' => TRUE,
+ ],
+ 'add' => '5.63',
+ ],
+ 'UI_external_identifier' => [
+ 'fields' => [
+ 'external_identifier' => TRUE,
+ ],
+ 'unique' => TRUE,
+ 'add' => '3.3',
+ ],
+ ],
+ 'getFields' => fn() => [
+ 'id' => [
+ 'title' => ts('Campaign ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'required' => TRUE,
+ 'description' => ts('Unique Campaign ID.'),
+ 'add' => '3.3',
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ 'input_attrs' => [
+ 'label' => ts('ID'),
+ ],
+ 'primary_key' => TRUE,
+ 'auto_increment' => TRUE,
+ ],
+ 'name' => [
+ 'title' => ts('Campaign Name'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'required' => TRUE,
+ 'description' => ts('Name of the Campaign.'),
+ 'add' => '3.3',
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ 'input_attrs' => [
+ 'label' => ts('Name'),
+ 'maxlength' => 255,
+ ],
+ ],
+ 'title' => [
+ 'title' => ts('Campaign Title'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'description' => ts('Title of the Campaign.'),
+ 'add' => '3.3',
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ 'input_attrs' => [
+ 'label' => ts('Title'),
+ 'maxlength' => 255,
+ ],
+ ],
+ 'description' => [
+ 'title' => ts('Campaign Description'),
+ 'sql_type' => 'text',
+ 'input_type' => 'TextArea',
+ 'description' => ts('Full description of Campaign.'),
+ 'add' => '3.3',
+ 'input_attrs' => [
+ 'rows' => 8,
+ 'cols' => 60,
+ 'label' => ts('Description'),
+ ],
+ ],
+ 'start_date' => [
+ 'title' => ts('Campaign Start Date'),
+ 'sql_type' => 'datetime',
+ 'input_type' => 'Select Date',
+ 'description' => ts('Date and time that Campaign starts.'),
+ 'add' => '3.3',
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ 'input_attrs' => [
+ 'label' => ts('Start Date'),
+ 'format_type' => 'activityDateTime',
+ ],
+ ],
+ 'end_date' => [
+ 'title' => ts('Campaign End Date'),
+ 'sql_type' => 'datetime',
+ 'input_type' => 'Select Date',
+ 'description' => ts('Date and time that Campaign ends.'),
+ 'add' => '3.3',
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ 'input_attrs' => [
+ 'label' => ts('End Date'),
+ 'format_type' => 'activityDateTime',
+ ],
+ ],
+ 'campaign_type_id' => [
+ 'title' => ts('Campaign Type'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Select',
+ 'description' => ts('Campaign Type ID.Implicit FK to civicrm_option_value where option_group = campaign_type'),
+ 'add' => '3.3',
+ 'default' => NULL,
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ 'input_attrs' => [
+ 'label' => ts('Type'),
+ ],
+ 'pseudoconstant' => [
+ 'option_group_name' => 'campaign_type',
+ ],
+ ],
+ 'status_id' => [
+ 'title' => ts('Campaign Status'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Select',
+ 'description' => ts('Campaign status ID.Implicit FK to civicrm_option_value where option_group = campaign_status'),
+ 'add' => '3.3',
+ 'default' => NULL,
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ 'input_attrs' => [
+ 'label' => ts('Status'),
+ ],
+ 'pseudoconstant' => [
+ 'option_group_name' => 'campaign_status',
+ ],
+ ],
+ 'external_identifier' => [
+ 'title' => ts('Campaign External ID'),
+ 'sql_type' => 'varchar(32)',
+ 'input_type' => 'Text',
+ 'description' => ts('Unique trusted external ID (generally from a legacy app/datasource). Particularly useful for deduping operations.'),
+ 'add' => '3.3',
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ 'input_attrs' => [
+ 'label' => ts('External ID'),
+ 'maxlength' => 32,
+ ],
+ ],
+ 'parent_id' => [
+ 'title' => ts('Parent Campaign ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'description' => ts('Optional parent id for this Campaign.'),
+ 'add' => '3.3',
+ 'default' => NULL,
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ 'input_attrs' => [
+ 'label' => ts('Parent Campaign'),
+ ],
+ 'entity_reference' => [
+ 'entity' => 'Campaign',
+ 'key' => 'id',
+ 'on_delete' => 'SET NULL',
+ ],
+ ],
+ 'is_active' => [
+ 'title' => ts('Is Campaign Active?'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('Is this Campaign enabled or disabled/cancelled?'),
+ 'add' => '3.3',
+ 'default' => TRUE,
+ 'input_attrs' => [
+ 'label' => [
+ 'Enabled',
+ 'Enabled',
+ ],
+ ],
+ ],
+ 'created_id' => [
+ 'title' => ts('Created By Contact ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'description' => ts('FK to civicrm_contact, who created this Campaign.'),
+ 'add' => '3.3',
+ 'input_attrs' => [
+ 'label' => ts('Created By'),
+ ],
+ 'entity_reference' => [
+ 'entity' => 'Contact',
+ 'key' => 'id',
+ 'on_delete' => 'SET NULL',
+ ],
+ ],
+ 'created_date' => [
+ 'title' => ts('Campaign Created Date'),
+ 'sql_type' => 'datetime',
+ 'input_type' => 'Select Date',
+ 'readonly' => TRUE,
+ 'description' => ts('Date and time that Campaign was created.'),
+ 'add' => '3.3',
+ 'default' => 'CURRENT_TIMESTAMP',
+ 'input_attrs' => [
+ 'format_type' => 'activityDateTime',
+ 'label' => ts('Created Date'),
+ ],
+ ],
+ 'last_modified_id' => [
+ 'title' => ts('Modified By Contact ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'description' => ts('FK to civicrm_contact, who recently edited this Campaign.'),
+ 'add' => '3.3',
+ 'input_attrs' => [
+ 'label' => ts('Modified By'),
+ ],
+ 'entity_reference' => [
+ 'entity' => 'Contact',
+ 'key' => 'id',
+ 'on_delete' => 'SET NULL',
+ ],
+ ],
+ 'last_modified_date' => [
+ 'title' => ts('Campaign Modified Date'),
+ 'sql_type' => 'datetime',
+ 'input_type' => 'Select Date',
+ 'description' => ts('Date and time that Campaign was edited last time.'),
+ 'add' => '3.3',
+ ],
+ 'goal_general' => [
+ 'title' => ts('Campaign Goals'),
+ 'sql_type' => 'text',
+ 'input_type' => 'RichTextEditor',
+ 'description' => ts('General goals for Campaign.'),
+ 'add' => '3.4',
+ ],
+ 'goal_revenue' => [
+ 'title' => ts('Goal Revenue'),
+ 'sql_type' => 'decimal(20,2)',
+ 'input_type' => 'Text',
+ 'description' => ts('The target revenue for this campaign.'),
+ 'add' => '3.4',
+ 'input_attrs' => [
+ 'label' => ts('Goal Revenue'),
+ ],
+ ],
+ ],
+];
diff --git a/www/modules/civicrm/schema/Campaign/CampaignGroup.entityType.php b/www/modules/civicrm/schema/Campaign/CampaignGroup.entityType.php
new file mode 100644
index 000000000..f08c1c993
--- /dev/null
+++ b/www/modules/civicrm/schema/Campaign/CampaignGroup.entityType.php
@@ -0,0 +1,83 @@
+ 'CampaignGroup',
+ 'table' => 'civicrm_campaign_group',
+ 'class' => 'CRM_Campaign_DAO_CampaignGroup',
+ 'getInfo' => fn() => [
+ 'title' => ts('Campaign Group'),
+ 'title_plural' => ts('Campaign Groups'),
+ 'description' => ts('Campaign Group Details.'),
+ 'add' => '3.3',
+ ],
+ 'getFields' => fn() => [
+ 'id' => [
+ 'title' => ts('Campaign Group ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'required' => TRUE,
+ 'description' => ts('Campaign Group id.'),
+ 'add' => '3.3',
+ 'primary_key' => TRUE,
+ 'auto_increment' => TRUE,
+ ],
+ 'campaign_id' => [
+ 'title' => ts('Campaign ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'required' => TRUE,
+ 'description' => ts('Foreign key to the activity Campaign.'),
+ 'add' => '3.3',
+ 'input_attrs' => [
+ 'label' => ts('Campaign'),
+ ],
+ 'pseudoconstant' => [
+ 'table' => 'civicrm_campaign',
+ 'key_column' => 'id',
+ 'label_column' => 'title',
+ 'prefetch' => 'disabled',
+ ],
+ 'entity_reference' => [
+ 'entity' => 'Campaign',
+ 'key' => 'id',
+ 'on_delete' => 'CASCADE',
+ ],
+ ],
+ 'group_type' => [
+ 'title' => ts('Campaign Group Type'),
+ 'sql_type' => 'varchar(8)',
+ 'input_type' => 'Select',
+ 'description' => ts('Type of Group.'),
+ 'default' => NULL,
+ 'input_attrs' => [
+ 'maxlength' => 8,
+ ],
+ 'pseudoconstant' => [
+ 'callback' => 'CRM_Core_SelectValues::getCampaignGroupTypes',
+ ],
+ ],
+ 'entity_table' => [
+ 'title' => ts('Entity Table'),
+ 'sql_type' => 'varchar(64)',
+ 'input_type' => 'Text',
+ 'description' => ts('Name of table where item being referenced is stored.'),
+ 'add' => '3.3',
+ 'default' => NULL,
+ 'input_attrs' => [
+ 'maxlength' => 64,
+ ],
+ ],
+ 'entity_id' => [
+ 'title' => ts('Entity ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'description' => ts('Entity id of referenced table.'),
+ 'add' => '3.3',
+ 'default' => NULL,
+ 'entity_reference' => [
+ 'dynamic_entity' => 'entity_table',
+ 'key' => 'id',
+ ],
+ ],
+ ],
+];
diff --git a/www/modules/civicrm/schema/Campaign/Survey.entityType.php b/www/modules/civicrm/schema/Campaign/Survey.entityType.php
new file mode 100644
index 000000000..eec9d365c
--- /dev/null
+++ b/www/modules/civicrm/schema/Campaign/Survey.entityType.php
@@ -0,0 +1,255 @@
+ 'Survey',
+ 'table' => 'civicrm_survey',
+ 'class' => 'CRM_Campaign_DAO_Survey',
+ 'getInfo' => fn() => [
+ 'title' => ts('Survey'),
+ 'title_plural' => ts('Surveys'),
+ 'description' => ts('Campaign Survey Details.'),
+ 'add' => '3.2',
+ 'icon' => 'fa-clipboard',
+ 'label_field' => 'title',
+ ],
+ 'getPaths' => fn() => [
+ 'add' => 'civicrm/survey/add?reset=1',
+ 'update' => 'civicrm/survey/configure/main?reset=1&action=update&id=[id]',
+ 'delete' => 'civicrm/survey/delete?reset=1&id=[id]',
+ ],
+ 'getIndices' => fn() => [
+ 'UI_activity_type_id' => [
+ 'fields' => [
+ 'activity_type_id' => TRUE,
+ ],
+ 'add' => '3.3',
+ ],
+ ],
+ 'getFields' => fn() => [
+ 'id' => [
+ 'title' => ts('Survey ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'required' => TRUE,
+ 'description' => ts('Survey id.'),
+ 'add' => '3.3',
+ 'primary_key' => TRUE,
+ 'auto_increment' => TRUE,
+ ],
+ 'title' => [
+ 'title' => ts('Survey Title'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'required' => TRUE,
+ 'localizable' => TRUE,
+ 'description' => ts('Title of the Survey.'),
+ 'add' => '3.3',
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'campaign_id' => [
+ 'title' => ts('Campaign ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'description' => ts('Foreign key to the Campaign.'),
+ 'add' => '3.3',
+ 'default' => NULL,
+ 'input_attrs' => [
+ 'label' => ts('Campaign'),
+ ],
+ 'pseudoconstant' => [
+ 'table' => 'civicrm_campaign',
+ 'key_column' => 'id',
+ 'label_column' => 'title',
+ 'prefetch' => 'disabled',
+ ],
+ 'entity_reference' => [
+ 'entity' => 'Campaign',
+ 'key' => 'id',
+ 'on_delete' => 'SET NULL',
+ ],
+ ],
+ 'activity_type_id' => [
+ 'title' => ts('Activity Type'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Select',
+ 'description' => ts('Implicit FK to civicrm_option_value where option_group = activity_type'),
+ 'add' => '3.3',
+ 'default' => NULL,
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ 'pseudoconstant' => [
+ 'option_group_name' => 'activity_type',
+ ],
+ ],
+ 'instructions' => [
+ 'title' => ts('Instructions'),
+ 'sql_type' => 'text',
+ 'input_type' => 'RichTextEditor',
+ 'localizable' => TRUE,
+ 'description' => ts('Script instructions for volunteers to use for the survey.'),
+ 'add' => '3.3',
+ 'input_attrs' => [
+ 'rows' => 20,
+ 'cols' => 80,
+ ],
+ ],
+ 'release_frequency' => [
+ 'title' => ts('Survey Hold Duration'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'description' => ts('Number of days for recurrence of release.'),
+ 'add' => '3.3',
+ 'default' => NULL,
+ ],
+ 'max_number_of_contacts' => [
+ 'title' => ts('Maximum number of contacts'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'description' => ts('Maximum number of contacts to allow for survey.'),
+ 'add' => '3.3',
+ 'default' => NULL,
+ ],
+ 'default_number_of_contacts' => [
+ 'title' => ts('Default number of contacts'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'description' => ts('Default number of contacts to allow for survey.'),
+ 'add' => '3.3',
+ 'default' => NULL,
+ ],
+ 'is_active' => [
+ 'title' => ts('Survey Is Active'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('Is this survey enabled or disabled/cancelled?'),
+ 'add' => '3.3',
+ 'default' => TRUE,
+ 'input_attrs' => [
+ 'label' => ts('Enabled'),
+ ],
+ ],
+ 'is_default' => [
+ 'title' => ts('Is Default Survey'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('Is this default survey?'),
+ 'add' => '3.3',
+ 'default' => FALSE,
+ 'input_attrs' => [
+ 'label' => ts('Default'),
+ ],
+ ],
+ 'created_id' => [
+ 'title' => ts('Created By Contact ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'description' => ts('FK to civicrm_contact, who created this Survey.'),
+ 'add' => '3.3',
+ 'input_attrs' => [
+ 'label' => ts('Created By'),
+ ],
+ 'entity_reference' => [
+ 'entity' => 'Contact',
+ 'key' => 'id',
+ 'on_delete' => 'SET NULL',
+ ],
+ ],
+ 'created_date' => [
+ 'title' => ts('Campaign Created Date'),
+ 'sql_type' => 'datetime',
+ 'input_type' => 'Select Date',
+ 'description' => ts('Date and time that Survey was created.'),
+ 'add' => '3.3',
+ ],
+ 'last_modified_id' => [
+ 'title' => ts('Modified By Contact ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'description' => ts('FK to civicrm_contact, who recently edited this Survey.'),
+ 'add' => '3.3',
+ 'input_attrs' => [
+ 'label' => ts('Modified By'),
+ ],
+ 'entity_reference' => [
+ 'entity' => 'Contact',
+ 'key' => 'id',
+ 'on_delete' => 'SET NULL',
+ ],
+ ],
+ 'last_modified_date' => [
+ 'title' => ts('Survey Modified On'),
+ 'sql_type' => 'datetime',
+ 'input_type' => 'Select Date',
+ 'description' => ts('Date and time that Survey was edited last time.'),
+ 'add' => '3.3',
+ ],
+ 'result_id' => [
+ 'title' => ts('Survey Result'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Select',
+ 'description' => ts('Used to store option group id.'),
+ 'add' => '3.3',
+ 'default' => NULL,
+ 'pseudoconstant' => [
+ 'table' => 'civicrm_option_group',
+ 'key_column' => 'id',
+ 'label_column' => 'title',
+ 'name_column' => 'name',
+ 'condition' => 'name LIKE "civicrm_survey_%"',
+ ],
+ ],
+ 'bypass_confirm' => [
+ 'title' => ts('No Email Verification'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('Bypass the email verification.'),
+ 'add' => '4.2',
+ 'default' => FALSE,
+ ],
+ 'thankyou_title' => [
+ 'title' => ts('Thank-you Title'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'localizable' => TRUE,
+ 'description' => ts('Title for Thank-you page (header title tag, and display at the top of the page).'),
+ 'add' => '4.2',
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'thankyou_text' => [
+ 'title' => ts('Thank-you Text'),
+ 'sql_type' => 'text',
+ 'input_type' => 'TextArea',
+ 'localizable' => TRUE,
+ 'description' => ts('text and html allowed. displayed above result on success page'),
+ 'add' => '4.2',
+ 'input_attrs' => [
+ 'rows' => 8,
+ 'cols' => 60,
+ ],
+ ],
+ 'is_share' => [
+ 'title' => ts('Is shared through social media'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('Can people share the petition through social media?'),
+ 'add' => '4.4',
+ 'default' => TRUE,
+ ],
+ ],
+];
diff --git a/www/modules/civicrm/schema/Case/Case.entityType.php b/www/modules/civicrm/schema/Case/Case.entityType.php
new file mode 100644
index 000000000..c88fe8d7f
--- /dev/null
+++ b/www/modules/civicrm/schema/Case/Case.entityType.php
@@ -0,0 +1,200 @@
+ 'Case',
+ 'table' => 'civicrm_case',
+ 'class' => 'CRM_Case_DAO_Case',
+ 'getInfo' => fn() => [
+ 'title' => ts('Case'),
+ 'title_plural' => ts('Cases'),
+ 'description' => ts('Collections of activities and relationships for a given purpose.'),
+ 'log' => TRUE,
+ 'add' => '1.8',
+ 'icon' => 'fa-folder-open',
+ 'label_field' => 'subject',
+ ],
+ 'getPaths' => fn() => [
+ 'view' => 'civicrm/contact/view/case?action=view&reset=1&id=[id]',
+ ],
+ 'getIndices' => fn() => [
+ 'index_case_type_id' => [
+ 'fields' => [
+ 'case_type_id' => TRUE,
+ ],
+ 'add' => '2.0',
+ ],
+ 'index_is_deleted' => [
+ 'fields' => [
+ 'is_deleted' => TRUE,
+ ],
+ 'add' => '2.2',
+ ],
+ ],
+ 'getFields' => fn() => [
+ 'id' => [
+ 'title' => ts('Case ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'required' => TRUE,
+ 'description' => ts('Unique Case ID'),
+ 'add' => '1.8',
+ 'unique_name' => 'case_id',
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ 'primary_key' => TRUE,
+ 'auto_increment' => TRUE,
+ ],
+ 'case_type_id' => [
+ 'title' => ts('Case Type ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Select',
+ 'required' => TRUE,
+ 'description' => ts('FK to civicrm_case_type.id'),
+ 'add' => '2.0',
+ 'usage' => [
+ 'import',
+ 'duplicate_matching',
+ ],
+ 'input_attrs' => [
+ 'label' => ts('Case Type'),
+ ],
+ 'pseudoconstant' => [
+ 'table' => 'civicrm_case_type',
+ 'key_column' => 'id',
+ 'label_column' => 'title',
+ ],
+ 'entity_reference' => [
+ 'entity' => 'CaseType',
+ 'key' => 'id',
+ ],
+ ],
+ 'subject' => [
+ 'title' => ts('Case Subject'),
+ 'sql_type' => 'varchar(128)',
+ 'input_type' => 'Text',
+ 'description' => ts('Short name of the case.'),
+ 'add' => '1.8',
+ 'unique_name' => 'case_subject',
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ 'input_attrs' => [
+ 'maxlength' => 128,
+ ],
+ ],
+ 'start_date' => [
+ 'title' => ts('Case Start Date'),
+ 'sql_type' => 'date',
+ 'input_type' => 'Select Date',
+ 'description' => ts('Date on which given case starts.'),
+ 'add' => '1.8',
+ 'unique_name' => 'case_start_date',
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ 'input_attrs' => [
+ 'format_type' => 'activityDate',
+ ],
+ ],
+ 'end_date' => [
+ 'title' => ts('Case End Date'),
+ 'sql_type' => 'date',
+ 'input_type' => 'Select Date',
+ 'description' => ts('Date on which given case ends.'),
+ 'add' => '1.8',
+ 'unique_name' => 'case_end_date',
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ 'input_attrs' => [
+ 'format_type' => 'activityDate',
+ ],
+ ],
+ 'details' => [
+ 'title' => ts('Details'),
+ 'sql_type' => 'text',
+ 'input_type' => 'TextArea',
+ 'description' => ts('Details populated from Open Case. Only used in the CiviCase extension.'),
+ 'add' => '1.8',
+ 'input_attrs' => [
+ 'rows' => 8,
+ 'cols' => 60,
+ 'label' => ts('Details'),
+ ],
+ ],
+ 'status_id' => [
+ 'title' => ts('Case Status'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Select',
+ 'required' => TRUE,
+ 'description' => ts('ID of case status.'),
+ 'add' => '1.8',
+ 'unique_name' => 'case_status_id',
+ 'usage' => [
+ 'import',
+ 'duplicate_matching',
+ ],
+ 'input_attrs' => [
+ 'control_field' => 'case_type_id',
+ ],
+ 'pseudoconstant' => [
+ 'option_group_name' => 'case_status',
+ ],
+ ],
+ 'is_deleted' => [
+ 'title' => ts('Case is in the Trash'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'add' => '2.2',
+ 'unique_name' => 'case_deleted',
+ 'default' => FALSE,
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ ],
+ 'created_date' => [
+ 'title' => ts('Created Date'),
+ 'sql_type' => 'timestamp',
+ 'input_type' => NULL,
+ 'readonly' => TRUE,
+ 'description' => ts('When was the case was created.'),
+ 'add' => '4.7',
+ 'unique_name' => 'case_created_date',
+ 'default' => NULL,
+ 'usage' => [
+ 'export',
+ ],
+ 'input_attrs' => [
+ 'label' => ts('Created Date'),
+ ],
+ ],
+ 'modified_date' => [
+ 'title' => ts('Modified Date'),
+ 'sql_type' => 'timestamp',
+ 'input_type' => NULL,
+ 'readonly' => TRUE,
+ 'description' => ts('When was the case (or closely related entity) was created or modified or deleted.'),
+ 'add' => '4.7',
+ 'unique_name' => 'case_modified_date',
+ 'default' => 'CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP',
+ 'usage' => [
+ 'export',
+ ],
+ 'input_attrs' => [
+ 'label' => ts('Modified Date'),
+ ],
+ ],
+ ],
+];
diff --git a/www/modules/civicrm/schema/Case/CaseActivity.entityType.php b/www/modules/civicrm/schema/Case/CaseActivity.entityType.php
new file mode 100644
index 000000000..722ea2ea9
--- /dev/null
+++ b/www/modules/civicrm/schema/Case/CaseActivity.entityType.php
@@ -0,0 +1,67 @@
+ 'CaseActivity',
+ 'table' => 'civicrm_case_activity',
+ 'class' => 'CRM_Case_DAO_CaseActivity',
+ 'getInfo' => fn() => [
+ 'title' => ts('Case Activity'),
+ 'title_plural' => ts('Case Activities'),
+ 'description' => ts('Joining table for case-activity associations.'),
+ 'log' => TRUE,
+ 'add' => '1.8',
+ ],
+ 'getIndices' => fn() => [
+ 'UI_case_activity_id' => [
+ 'fields' => [
+ 'case_id' => TRUE,
+ 'activity_id' => TRUE,
+ ],
+ 'add' => '2.0',
+ ],
+ ],
+ 'getFields' => fn() => [
+ 'id' => [
+ 'title' => ts('Case Activity ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'required' => TRUE,
+ 'description' => ts('Unique case-activity association id'),
+ 'add' => '1.8',
+ 'primary_key' => TRUE,
+ 'auto_increment' => TRUE,
+ ],
+ 'case_id' => [
+ 'title' => ts('Case ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'required' => TRUE,
+ 'description' => ts('Case ID of case-activity association.'),
+ 'add' => '1.8',
+ 'input_attrs' => [
+ 'label' => ts('Case'),
+ ],
+ 'entity_reference' => [
+ 'entity' => 'Case',
+ 'key' => 'id',
+ 'on_delete' => 'CASCADE',
+ ],
+ ],
+ 'activity_id' => [
+ 'title' => ts('Activity ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'required' => TRUE,
+ 'description' => ts('Activity ID of case-activity association.'),
+ 'add' => '2.0',
+ 'input_attrs' => [
+ 'label' => ts('Activity'),
+ ],
+ 'entity_reference' => [
+ 'entity' => 'Activity',
+ 'key' => 'id',
+ 'on_delete' => 'CASCADE',
+ ],
+ ],
+ ],
+];
diff --git a/www/modules/civicrm/schema/Case/CaseContact.entityType.php b/www/modules/civicrm/schema/Case/CaseContact.entityType.php
new file mode 100644
index 000000000..2641fafc1
--- /dev/null
+++ b/www/modules/civicrm/schema/Case/CaseContact.entityType.php
@@ -0,0 +1,68 @@
+ 'CaseContact',
+ 'table' => 'civicrm_case_contact',
+ 'class' => 'CRM_Case_DAO_CaseContact',
+ 'getInfo' => fn() => [
+ 'title' => ts('Case Contact'),
+ 'title_plural' => ts('Case Contacts'),
+ 'description' => ts('Joining table for case-contact associations.'),
+ 'log' => TRUE,
+ 'add' => '2.1',
+ ],
+ 'getIndices' => fn() => [
+ 'UI_case_contact_id' => [
+ 'fields' => [
+ 'case_id' => TRUE,
+ 'contact_id' => TRUE,
+ ],
+ 'unique' => TRUE,
+ 'add' => '2.1',
+ ],
+ ],
+ 'getFields' => fn() => [
+ 'id' => [
+ 'title' => ts('Case Contact ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'required' => TRUE,
+ 'description' => ts('Unique case-contact association id'),
+ 'add' => '2.1',
+ 'primary_key' => TRUE,
+ 'auto_increment' => TRUE,
+ ],
+ 'case_id' => [
+ 'title' => ts('Case ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'required' => TRUE,
+ 'description' => ts('Case ID of case-contact association.'),
+ 'add' => '2.1',
+ 'input_attrs' => [
+ 'label' => ts('Case'),
+ ],
+ 'entity_reference' => [
+ 'entity' => 'Case',
+ 'key' => 'id',
+ 'on_delete' => 'CASCADE',
+ ],
+ ],
+ 'contact_id' => [
+ 'title' => ts('Contact ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'required' => TRUE,
+ 'description' => ts('Contact ID of contact record given case belongs to.'),
+ 'add' => '2.1',
+ 'input_attrs' => [
+ 'label' => ts('Contact'),
+ ],
+ 'entity_reference' => [
+ 'entity' => 'Contact',
+ 'key' => 'id',
+ 'on_delete' => 'CASCADE',
+ ],
+ ],
+ ],
+];
diff --git a/www/modules/civicrm/schema/Case/CaseType.entityType.php b/www/modules/civicrm/schema/Case/CaseType.entityType.php
new file mode 100644
index 000000000..1318d88a8
--- /dev/null
+++ b/www/modules/civicrm/schema/Case/CaseType.entityType.php
@@ -0,0 +1,106 @@
+ 'CaseType',
+ 'table' => 'civicrm_case_type',
+ 'class' => 'CRM_Case_DAO_CaseType',
+ 'getInfo' => fn() => [
+ 'title' => ts('Case Type'),
+ 'title_plural' => ts('Case Types'),
+ 'description' => ts('Case type definition'),
+ 'log' => TRUE,
+ 'add' => '4.5',
+ ],
+ 'getIndices' => fn() => [
+ 'case_type_name' => [
+ 'fields' => [
+ 'name' => TRUE,
+ ],
+ 'unique' => TRUE,
+ 'add' => '4.5',
+ ],
+ ],
+ 'getFields' => fn() => [
+ 'id' => [
+ 'title' => ts('Case Type ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'required' => TRUE,
+ 'description' => ts('Autoincremented type id'),
+ 'add' => '4.5',
+ 'primary_key' => TRUE,
+ 'auto_increment' => TRUE,
+ ],
+ 'name' => [
+ 'title' => ts('Case Type Name'),
+ 'sql_type' => 'varchar(64)',
+ 'input_type' => 'Text',
+ 'required' => TRUE,
+ 'description' => ts('Machine name for Case Type'),
+ 'add' => '4.5',
+ 'input_attrs' => [
+ 'maxlength' => 64,
+ ],
+ ],
+ 'title' => [
+ 'title' => ts('Case Type Title'),
+ 'sql_type' => 'varchar(64)',
+ 'input_type' => 'Text',
+ 'required' => TRUE,
+ 'localizable' => TRUE,
+ 'description' => ts('Natural language name for Case Type'),
+ 'add' => '4.5',
+ 'input_attrs' => [
+ 'maxlength' => 64,
+ ],
+ ],
+ 'description' => [
+ 'title' => ts('Case Type Description'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'localizable' => TRUE,
+ 'description' => ts('Description of the Case Type'),
+ 'add' => '4.5',
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'is_active' => [
+ 'title' => ts('Case Type Is Active'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('Is this case type enabled?'),
+ 'add' => '4.5',
+ 'default' => TRUE,
+ 'input_attrs' => [
+ 'label' => ts('Enabled'),
+ ],
+ ],
+ 'is_reserved' => [
+ 'title' => ts('Case Type Is Reserved'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('Is this case type a predefined system type?'),
+ 'add' => '4.5',
+ 'default' => FALSE,
+ ],
+ 'weight' => [
+ 'title' => ts('Order'),
+ 'sql_type' => 'int',
+ 'input_type' => 'Number',
+ 'required' => TRUE,
+ 'description' => ts('Ordering of the case types'),
+ 'add' => '4.5',
+ 'default' => 1,
+ ],
+ 'definition' => [
+ 'title' => ts('Case Type Definition'),
+ 'sql_type' => 'blob',
+ 'input_type' => NULL,
+ 'description' => ts('xml definition of case type'),
+ 'add' => '4.5',
+ ],
+ ],
+];
diff --git a/www/modules/civicrm/schema/Contact/ACLContactCache.entityType.php b/www/modules/civicrm/schema/Contact/ACLContactCache.entityType.php
new file mode 100644
index 000000000..b8d9571c9
--- /dev/null
+++ b/www/modules/civicrm/schema/Contact/ACLContactCache.entityType.php
@@ -0,0 +1,68 @@
+ 'ACLContactCache',
+ 'table' => 'civicrm_acl_contact_cache',
+ 'class' => 'CRM_Contact_DAO_ACLContactCache',
+ 'getInfo' => fn() => [
+ 'title' => ts('ACLContact Cache'),
+ 'title_plural' => ts('ACLContact Caches'),
+ 'description' => ts('Join table cache for contacts that a user has permission on.'),
+ 'add' => '3.1',
+ ],
+ 'getIndices' => fn() => [
+ 'UI_user_contact_operation' => [
+ 'fields' => [
+ 'user_id' => TRUE,
+ 'contact_id' => TRUE,
+ 'operation' => TRUE,
+ ],
+ 'unique' => TRUE,
+ 'add' => '3.1',
+ ],
+ ],
+ 'getFields' => fn() => [
+ 'id' => [
+ 'title' => ts('ACL Contact Cache ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'required' => TRUE,
+ 'description' => ts('primary key'),
+ 'add' => '3.1',
+ 'primary_key' => TRUE,
+ 'auto_increment' => TRUE,
+ ],
+ 'user_id' => [
+ 'title' => ts('Contact ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'description' => ts('FK to civicrm_contact (could be null for anon user)'),
+ 'add' => '3.1',
+ ],
+ 'contact_id' => [
+ 'title' => ts('Contact ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'required' => TRUE,
+ 'description' => ts('FK to civicrm_contact'),
+ 'add' => '3.1',
+ 'input_attrs' => [
+ 'label' => ts('Contact'),
+ ],
+ ],
+ 'operation' => [
+ 'title' => ts('Operation'),
+ 'sql_type' => 'varchar(8)',
+ 'input_type' => 'Select',
+ 'required' => TRUE,
+ 'description' => ts('What operation does this user have permission on?'),
+ 'add' => '1.6',
+ 'input_attrs' => [
+ 'maxlength' => 8,
+ ],
+ 'pseudoconstant' => [
+ 'callback' => 'CRM_ACL_BAO_ACL::operation',
+ ],
+ ],
+ ],
+];
diff --git a/www/modules/civicrm/schema/Contact/Contact.entityType.php b/www/modules/civicrm/schema/Contact/Contact.entityType.php
new file mode 100644
index 000000000..69f0f4eea
--- /dev/null
+++ b/www/modules/civicrm/schema/Contact/Contact.entityType.php
@@ -0,0 +1,992 @@
+ 'Contact',
+ 'table' => 'civicrm_contact',
+ 'class' => 'CRM_Contact_DAO_Contact',
+ 'getInfo' => fn() => [
+ 'title' => ts('Contact'),
+ 'title_plural' => ts('Contacts'),
+ 'description' => ts('Individuals, organizations, households, etc.'),
+ 'log' => TRUE,
+ 'add' => '1.1',
+ 'icon' => 'fa-address-book-o',
+ 'label_field' => 'display_name',
+ ],
+ 'getPaths' => fn() => [
+ 'add' => 'civicrm/contact/add?reset=1&ct=[contact_type]',
+ 'view' => 'civicrm/contact/view?reset=1&cid=[id]',
+ 'update' => 'civicrm/contact/add?reset=1&action=update&cid=[id]',
+ 'delete' => 'civicrm/contact/view/delete?reset=1&delete=1&cid=[id]',
+ ],
+ 'getIndices' => fn() => [
+ 'index_contact_type' => [
+ 'fields' => [
+ 'contact_type' => TRUE,
+ ],
+ 'add' => '2.1',
+ ],
+ 'UI_external_identifier' => [
+ 'fields' => [
+ 'external_identifier' => TRUE,
+ ],
+ 'unique' => TRUE,
+ 'add' => '1.7',
+ ],
+ 'index_organization_name' => [
+ 'fields' => [
+ 'organization_name' => TRUE,
+ ],
+ 'add' => '1.8',
+ ],
+ 'index_contact_sub_type' => [
+ 'fields' => [
+ 'contact_sub_type' => TRUE,
+ ],
+ 'add' => '2.1',
+ ],
+ 'index_first_name' => [
+ 'fields' => [
+ 'first_name' => TRUE,
+ ],
+ 'add' => '1.8',
+ ],
+ 'index_last_name' => [
+ 'fields' => [
+ 'last_name' => TRUE,
+ ],
+ 'add' => '1.8',
+ ],
+ 'index_sort_name' => [
+ 'fields' => [
+ 'sort_name' => TRUE,
+ ],
+ 'add' => '2.1',
+ ],
+ 'index_preferred_communication_method' => [
+ 'fields' => [
+ 'preferred_communication_method' => TRUE,
+ ],
+ 'add' => '1.6',
+ ],
+ 'index_hash' => [
+ 'fields' => [
+ 'hash' => TRUE,
+ ],
+ 'add' => '2.1',
+ ],
+ 'index_api_key' => [
+ 'fields' => [
+ 'api_key' => TRUE,
+ ],
+ 'add' => '2.1',
+ ],
+ 'UI_prefix' => [
+ 'fields' => [
+ 'prefix_id' => TRUE,
+ ],
+ 'add' => '1.6',
+ ],
+ 'UI_suffix' => [
+ 'fields' => [
+ 'suffix_id' => TRUE,
+ ],
+ 'add' => '1.6',
+ ],
+ 'index_communication_style_id' => [
+ 'fields' => [
+ 'communication_style_id' => TRUE,
+ ],
+ 'add' => '4.4',
+ ],
+ 'UI_gender' => [
+ 'fields' => [
+ 'gender_id' => TRUE,
+ ],
+ 'add' => '1.6',
+ ],
+ 'index_is_deceased' => [
+ 'fields' => [
+ 'is_deceased' => TRUE,
+ ],
+ 'add' => '4.7',
+ ],
+ 'index_household_name' => [
+ 'fields' => [
+ 'household_name' => TRUE,
+ ],
+ 'add' => '1.8',
+ ],
+ 'index_is_deleted_sort_name' => [
+ 'fields' => [
+ 'is_deleted' => TRUE,
+ 'sort_name' => TRUE,
+ 'id' => TRUE,
+ ],
+ 'add' => '4.4',
+ ],
+ 'index_created_date' => [
+ 'fields' => [
+ 'created_date' => TRUE,
+ ],
+ 'add' => '5.18',
+ ],
+ 'index_modified_date' => [
+ 'fields' => [
+ 'modified_date' => TRUE,
+ ],
+ 'add' => '5.18',
+ ],
+ ],
+ 'getFields' => fn() => [
+ 'id' => [
+ 'title' => ts('Contact ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'required' => TRUE,
+ 'description' => ts('Unique Contact ID'),
+ 'add' => '1.1',
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ 'primary_key' => TRUE,
+ 'auto_increment' => TRUE,
+ ],
+ 'contact_type' => [
+ 'title' => ts('Contact Type'),
+ 'sql_type' => 'varchar(64)',
+ 'input_type' => 'Select',
+ 'readonly' => TRUE,
+ 'description' => ts('Type of Contact.'),
+ 'add' => '1.1',
+ 'usage' => [
+ 'export',
+ ],
+ 'input_attrs' => [
+ 'maxlength' => 64,
+ ],
+ 'pseudoconstant' => [
+ 'table' => 'civicrm_contact_type',
+ 'key_column' => 'name',
+ 'label_column' => 'label',
+ 'icon_column' => 'icon',
+ 'condition' => 'parent_id IS NULL',
+ ],
+ ],
+ 'external_identifier' => [
+ 'title' => ts('External Identifier'),
+ 'sql_type' => 'varchar(64)',
+ 'input_type' => 'Text',
+ 'description' => ts('Unique trusted external ID (generally from a legacy app/datasource). Particularly useful for deduping operations.'),
+ 'add' => '1.1',
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ 'input_attrs' => [
+ 'size' => '8',
+ 'label' => ts('External Identifier'),
+ 'maxlength' => 64,
+ ],
+ ],
+ 'display_name' => [
+ 'title' => ts('Display Name'),
+ 'sql_type' => 'varchar(128)',
+ 'input_type' => 'Text',
+ 'readonly' => TRUE,
+ 'description' => ts('Formatted name representing preferred format for display/print/other output.'),
+ 'add' => '1.1',
+ 'usage' => [
+ 'export',
+ ],
+ 'input_attrs' => [
+ 'size' => '30',
+ 'maxlength' => 128,
+ ],
+ ],
+ 'organization_name' => [
+ 'title' => ts('Organization Name'),
+ 'sql_type' => 'varchar(128)',
+ 'input_type' => 'Text',
+ 'description' => ts('Organization Name.'),
+ 'add' => '1.1',
+ 'contact_type' => 'Organization',
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ 'input_attrs' => [
+ 'size' => '30',
+ 'label' => ts('Organization Name'),
+ 'maxlength' => 128,
+ ],
+ ],
+ 'contact_sub_type' => [
+ 'title' => ts('Contact Subtype'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Select',
+ 'description' => ts('May be used to over-ride contact view and edit templates.'),
+ 'add' => '1.5',
+ 'serialize' => CRM_Core_DAO::SERIALIZE_SEPARATOR_BOOKEND,
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ 'input_attrs' => [
+ 'multiple' => '1',
+ 'control_field' => 'contact_type',
+ 'maxlength' => 255,
+ ],
+ 'pseudoconstant' => [
+ 'table' => 'civicrm_contact_type',
+ 'key_column' => 'name',
+ 'label_column' => 'label',
+ 'icon_column' => 'icon',
+ 'condition' => 'parent_id IS NOT NULL',
+ ],
+ ],
+ 'first_name' => [
+ 'title' => ts('First Name'),
+ 'sql_type' => 'varchar(64)',
+ 'input_type' => 'Text',
+ 'description' => ts('First Name.'),
+ 'add' => '1.1',
+ 'contact_type' => 'Individual',
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ 'input_attrs' => [
+ 'size' => '30',
+ 'label' => ts('First Name'),
+ 'maxlength' => 64,
+ ],
+ ],
+ 'middle_name' => [
+ 'title' => ts('Middle Name'),
+ 'sql_type' => 'varchar(64)',
+ 'input_type' => 'Text',
+ 'description' => ts('Middle Name.'),
+ 'add' => '1.1',
+ 'contact_type' => 'Individual',
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ 'input_attrs' => [
+ 'size' => '30',
+ 'label' => ts('Middle Name'),
+ 'maxlength' => 64,
+ ],
+ ],
+ 'last_name' => [
+ 'title' => ts('Last Name'),
+ 'sql_type' => 'varchar(64)',
+ 'input_type' => 'Text',
+ 'description' => ts('Last Name.'),
+ 'add' => '1.1',
+ 'contact_type' => 'Individual',
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ 'input_attrs' => [
+ 'size' => '30',
+ 'label' => ts('Last Name'),
+ 'maxlength' => 64,
+ ],
+ ],
+ 'do_not_email' => [
+ 'title' => ts('Do Not Email'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'add' => '1.1',
+ 'default' => FALSE,
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ 'input_attrs' => [
+ 'label' => ts('Do Not Email'),
+ ],
+ ],
+ 'do_not_phone' => [
+ 'title' => ts('Do Not Phone'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'add' => '1.1',
+ 'default' => FALSE,
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ 'input_attrs' => [
+ 'label' => ts('Do Not Phone'),
+ ],
+ ],
+ 'do_not_mail' => [
+ 'title' => ts('Do Not Mail'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'add' => '1.1',
+ 'default' => FALSE,
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ 'input_attrs' => [
+ 'label' => ts('Do Not Mail'),
+ ],
+ ],
+ 'do_not_sms' => [
+ 'title' => ts('Do Not Sms'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'add' => '3.0',
+ 'default' => FALSE,
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ 'input_attrs' => [
+ 'label' => ts('Do Not Sms'),
+ ],
+ ],
+ 'do_not_trade' => [
+ 'title' => ts('Do Not Trade'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'add' => '1.1',
+ 'default' => FALSE,
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ 'input_attrs' => [
+ 'label' => ts('Do Not Trade'),
+ ],
+ ],
+ 'is_opt_out' => [
+ 'title' => ts('No Bulk Emails (User Opt Out)'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('Has the contact opted out from receiving all bulk email from the organization or site domain?'),
+ 'add' => '1.1',
+ 'default' => FALSE,
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ 'input_attrs' => [
+ 'label' => ts('Is Opt Out'),
+ ],
+ ],
+ 'legal_identifier' => [
+ 'title' => ts('Legal Identifier'),
+ 'sql_type' => 'varchar(32)',
+ 'input_type' => 'Text',
+ 'description' => ts('May be used for SSN, EIN/TIN, Household ID (census) or other applicable unique legal/government ID.'),
+ 'add' => '1.1',
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ 'input_attrs' => [
+ 'label' => ts('Legal Identifier'),
+ 'maxlength' => 32,
+ ],
+ ],
+ 'sort_name' => [
+ 'title' => ts('Sort Name'),
+ 'sql_type' => 'varchar(128)',
+ 'input_type' => 'Text',
+ 'readonly' => TRUE,
+ 'description' => ts('Name used for sorting different contact types'),
+ 'add' => '1.1',
+ 'usage' => [
+ 'export',
+ ],
+ 'input_attrs' => [
+ 'size' => '30',
+ 'maxlength' => 128,
+ ],
+ ],
+ 'nick_name' => [
+ 'title' => ts('Nickname'),
+ 'sql_type' => 'varchar(128)',
+ 'input_type' => 'Text',
+ 'description' => ts('Nickname.'),
+ 'add' => '1.1',
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ 'input_attrs' => [
+ 'size' => '30',
+ 'maxlength' => 128,
+ ],
+ ],
+ 'legal_name' => [
+ 'title' => ts('Legal Name'),
+ 'sql_type' => 'varchar(128)',
+ 'input_type' => 'Text',
+ 'description' => ts('Legal Name.'),
+ 'add' => '1.1',
+ 'contact_type' => 'Organization',
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ 'input_attrs' => [
+ 'size' => '30',
+ 'label' => ts('Legal Name'),
+ 'maxlength' => 128,
+ ],
+ ],
+ 'image_URL' => [
+ 'title' => ts('Image Url'),
+ 'sql_type' => 'text',
+ 'input_type' => 'File',
+ 'description' => ts('optional URL for preferred image (photo, logo, etc.) to display for this contact.'),
+ 'add' => '1.1',
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ 'input_attrs' => [
+ 'size' => '30',
+ 'label' => ts('Image'),
+ ],
+ ],
+ 'preferred_communication_method' => [
+ 'title' => ts('Preferred Communication Method'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Select',
+ 'description' => ts('What is the preferred mode of communication.'),
+ 'add' => '1.1',
+ 'serialize' => CRM_Core_DAO::SERIALIZE_SEPARATOR_BOOKEND,
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ 'input_attrs' => [
+ 'multiple' => '1',
+ 'maxlength' => 255,
+ ],
+ 'pseudoconstant' => [
+ 'option_group_name' => 'preferred_communication_method',
+ ],
+ ],
+ 'preferred_language' => [
+ 'title' => ts('Preferred Language'),
+ 'sql_type' => 'varchar(5)',
+ 'input_type' => 'Select',
+ 'description' => ts('Which language is preferred for communication. FK to languages in civicrm_option_value.'),
+ 'add' => '3.2',
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ 'input_attrs' => [
+ 'maxlength' => 5,
+ ],
+ 'pseudoconstant' => [
+ 'option_group_name' => 'languages',
+ 'key_column' => 'name',
+ ],
+ ],
+ 'hash' => [
+ 'title' => ts('Contact Hash'),
+ 'sql_type' => 'varchar(32)',
+ 'input_type' => NULL,
+ 'readonly' => TRUE,
+ 'description' => ts('Key for validating requests related to this contact.'),
+ 'add' => '1.1',
+ 'usage' => [
+ 'export',
+ ],
+ 'input_attrs' => [
+ 'maxlength' => 32,
+ ],
+ ],
+ 'api_key' => [
+ 'title' => ts('Api Key'),
+ 'sql_type' => 'varchar(32)',
+ 'input_type' => NULL,
+ 'readonly' => TRUE,
+ 'description' => ts('API Key for validating requests related to this contact.'),
+ 'add' => '2.2',
+ 'permission' => [
+ [
+ 'administer CiviCRM',
+ 'edit api keys',
+ ],
+ ],
+ 'input_attrs' => [
+ 'label' => ts('API KEY'),
+ 'maxlength' => 32,
+ ],
+ ],
+ 'source' => [
+ 'title' => ts('Contact Source'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'description' => ts('where contact come from, e.g. import, donate module insert...'),
+ 'add' => '1.1',
+ 'unique_name' => 'contact_source',
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ 'input_attrs' => [
+ 'size' => '30',
+ 'maxlength' => 255,
+ ],
+ ],
+ 'prefix_id' => [
+ 'title' => ts('Individual Prefix'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Select',
+ 'description' => ts('Prefix or Title for name (Ms, Mr...). FK to prefix ID'),
+ 'add' => '1.2',
+ 'contact_type' => 'Individual',
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ 'pseudoconstant' => [
+ 'option_group_name' => 'individual_prefix',
+ ],
+ ],
+ 'suffix_id' => [
+ 'title' => ts('Individual Suffix'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Select',
+ 'description' => ts('Suffix for name (Jr, Sr...). FK to suffix ID'),
+ 'add' => '1.2',
+ 'contact_type' => 'Individual',
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ 'pseudoconstant' => [
+ 'option_group_name' => 'individual_suffix',
+ ],
+ ],
+ 'formal_title' => [
+ 'title' => ts('Formal Title'),
+ 'sql_type' => 'varchar(64)',
+ 'input_type' => 'Text',
+ 'description' => ts('Formal (academic or similar) title in front of name. (Prof., Dr. etc.)'),
+ 'add' => '4.5',
+ 'contact_type' => 'Individual',
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ 'input_attrs' => [
+ 'label' => ts('Formal Title'),
+ 'maxlength' => 64,
+ ],
+ ],
+ 'communication_style_id' => [
+ 'title' => ts('Communication Style'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Select',
+ 'description' => ts('Communication style (e.g. formal vs. familiar) to use with this contact. FK to communication styles in civicrm_option_value.'),
+ 'add' => '4.4',
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ 'pseudoconstant' => [
+ 'option_group_name' => 'communication_style',
+ ],
+ ],
+ 'email_greeting_id' => [
+ 'title' => ts('Email Greeting ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Select',
+ 'description' => ts('FK to civicrm_option_value.id, that has to be valid registered Email Greeting.'),
+ 'add' => '3.0',
+ 'usage' => [
+ 'export',
+ ],
+ 'pseudoconstant' => [
+ 'option_group_name' => 'email_greeting',
+ ],
+ ],
+ 'email_greeting_custom' => [
+ 'title' => ts('Email Greeting Custom'),
+ 'sql_type' => 'varchar(128)',
+ 'input_type' => 'Text',
+ 'description' => ts('Custom Email Greeting.'),
+ 'add' => '3.0',
+ 'usage' => [
+ 'import',
+ 'duplicate_matching',
+ ],
+ 'input_attrs' => [
+ 'label' => ts('Email Greeting Custom'),
+ 'maxlength' => 128,
+ ],
+ ],
+ 'email_greeting_display' => [
+ 'title' => ts('Email Greeting'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => NULL,
+ 'readonly' => TRUE,
+ 'description' => ts('Cache Email Greeting.'),
+ 'add' => '3.0',
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'postal_greeting_id' => [
+ 'title' => ts('Postal Greeting ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Select',
+ 'description' => ts('FK to civicrm_option_value.id, that has to be valid registered Postal Greeting.'),
+ 'add' => '3.0',
+ 'usage' => [
+ 'export',
+ ],
+ 'pseudoconstant' => [
+ 'option_group_name' => 'postal_greeting',
+ ],
+ ],
+ 'postal_greeting_custom' => [
+ 'title' => ts('Postal Greeting Custom'),
+ 'sql_type' => 'varchar(128)',
+ 'input_type' => 'Text',
+ 'description' => ts('Custom Postal greeting.'),
+ 'add' => '3.0',
+ 'usage' => [
+ 'import',
+ 'duplicate_matching',
+ ],
+ 'input_attrs' => [
+ 'label' => ts('Postal Greeting Custom'),
+ 'maxlength' => 128,
+ ],
+ ],
+ 'postal_greeting_display' => [
+ 'title' => ts('Postal Greeting'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => NULL,
+ 'readonly' => TRUE,
+ 'description' => ts('Cache Postal greeting.'),
+ 'add' => '3.0',
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'addressee_id' => [
+ 'title' => ts('Addressee ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Select',
+ 'description' => ts('FK to civicrm_option_value.id, that has to be valid registered Addressee.'),
+ 'add' => '3.0',
+ 'usage' => [
+ 'export',
+ ],
+ 'pseudoconstant' => [
+ 'option_group_name' => 'addressee',
+ ],
+ ],
+ 'addressee_custom' => [
+ 'title' => ts('Addressee Custom'),
+ 'sql_type' => 'varchar(128)',
+ 'input_type' => 'Text',
+ 'description' => ts('Custom Addressee.'),
+ 'add' => '3.0',
+ 'usage' => [
+ 'import',
+ 'duplicate_matching',
+ ],
+ 'input_attrs' => [
+ 'label' => ts('Addressee Custom'),
+ 'maxlength' => 128,
+ ],
+ ],
+ 'addressee_display' => [
+ 'title' => ts('Addressee'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => NULL,
+ 'readonly' => TRUE,
+ 'description' => ts('Cache Addressee.'),
+ 'add' => '3.0',
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'job_title' => [
+ 'title' => ts('Job Title'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'description' => ts('Job Title'),
+ 'add' => '1.1',
+ 'contact_type' => 'Individual',
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ 'input_attrs' => [
+ 'size' => '30',
+ 'label' => ts('Job Title'),
+ 'maxlength' => 255,
+ ],
+ ],
+ 'gender_id' => [
+ 'title' => ts('Gender ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Select',
+ 'description' => ts('FK to gender ID'),
+ 'add' => '1.2',
+ 'contact_type' => 'Individual',
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ 'input_attrs' => [
+ 'label' => ts('Gender'),
+ ],
+ 'pseudoconstant' => [
+ 'option_group_name' => 'gender',
+ ],
+ ],
+ 'birth_date' => [
+ 'title' => ts('Birth Date'),
+ 'sql_type' => 'date',
+ 'input_type' => 'Select Date',
+ 'description' => ts('Date of birth'),
+ 'add' => '1.1',
+ 'contact_type' => 'Individual',
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ 'input_attrs' => [
+ 'format_type' => 'birth',
+ 'label' => ts('Birth Date'),
+ ],
+ ],
+ 'is_deceased' => [
+ 'title' => ts('Deceased'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'add' => '1.1',
+ 'contact_type' => 'Individual',
+ 'default' => FALSE,
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ 'input_attrs' => [
+ 'label' => ts('Is Deceased'),
+ ],
+ ],
+ 'deceased_date' => [
+ 'title' => ts('Deceased Date'),
+ 'sql_type' => 'date',
+ 'input_type' => 'Select Date',
+ 'description' => ts('Date of deceased'),
+ 'add' => '1.5',
+ 'contact_type' => 'Individual',
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ 'input_attrs' => [
+ 'format_type' => 'birth',
+ 'label' => ts('Deceased Date'),
+ ],
+ ],
+ 'household_name' => [
+ 'title' => ts('Household Name'),
+ 'sql_type' => 'varchar(128)',
+ 'input_type' => 'Text',
+ 'description' => ts('Household Name.'),
+ 'add' => '1.1',
+ 'contact_type' => 'Household',
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ 'input_attrs' => [
+ 'size' => '30',
+ 'label' => ts('Household Name'),
+ 'maxlength' => 128,
+ ],
+ ],
+ 'primary_contact_id' => [
+ 'title' => ts('Household Primary Contact ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => NULL,
+ 'readonly' => TRUE,
+ 'description' => ts('Optional FK to Primary Contact for this household.'),
+ 'add' => '1.1',
+ 'contact_type' => 'Household',
+ 'input_attrs' => [
+ 'label' => ts('Household Primary Contact'),
+ ],
+ 'entity_reference' => [
+ 'entity' => 'Contact',
+ 'key' => 'id',
+ 'on_delete' => 'SET NULL',
+ ],
+ ],
+ 'sic_code' => [
+ 'title' => ts('Sic Code'),
+ 'sql_type' => 'varchar(8)',
+ 'input_type' => 'Text',
+ 'description' => ts('Standard Industry Classification Code.'),
+ 'add' => '1.1',
+ 'contact_type' => 'Organization',
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ 'input_attrs' => [
+ 'label' => ts('SIC Code'),
+ 'maxlength' => 8,
+ ],
+ ],
+ 'user_unique_id' => [
+ 'title' => ts('Unique ID (OpenID)'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'deprecated' => TRUE,
+ 'description' => ts('the OpenID (or OpenID-style http://username.domain/) unique identifier for this contact mainly used for logging in to CiviCRM'),
+ 'add' => '2.0',
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'employer_id' => [
+ 'title' => ts('Current Employer ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'description' => ts('OPTIONAL FK to civicrm_contact record.'),
+ 'add' => '2.1',
+ 'unique_name' => 'current_employer_id',
+ 'contact_type' => 'Individual',
+ 'usage' => [
+ 'export',
+ ],
+ 'input_attrs' => [
+ 'label' => ts('Current Employer'),
+ 'filter' => 'contact_type=Organization',
+ ],
+ 'entity_reference' => [
+ 'entity' => 'Contact',
+ 'key' => 'id',
+ 'on_delete' => 'SET NULL',
+ ],
+ ],
+ 'is_deleted' => [
+ 'title' => ts('Contact is in Trash'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'add' => '3.2',
+ 'unique_name' => 'contact_is_deleted',
+ 'default' => FALSE,
+ 'usage' => [
+ 'export',
+ ],
+ ],
+ 'created_date' => [
+ 'title' => ts('Created Date'),
+ 'sql_type' => 'timestamp',
+ 'input_type' => 'Select Date',
+ 'readonly' => TRUE,
+ 'description' => ts('When was the contact was created.'),
+ 'add' => '4.3',
+ 'default' => NULL,
+ 'usage' => [
+ 'export',
+ ],
+ 'input_attrs' => [
+ 'format_type' => 'activityDateTime',
+ 'label' => ts('Created Date'),
+ ],
+ ],
+ 'modified_date' => [
+ 'title' => ts('Modified Date'),
+ 'sql_type' => 'timestamp',
+ 'input_type' => 'Select Date',
+ 'readonly' => TRUE,
+ 'description' => ts('When was the contact (or closely related entity) was created or modified or deleted.'),
+ 'add' => '4.3',
+ 'default' => 'CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP',
+ 'usage' => [
+ 'export',
+ ],
+ 'input_attrs' => [
+ 'format_type' => 'activityDateTime',
+ 'label' => ts('Modified Date'),
+ ],
+ ],
+ 'preferred_mail_format' => [
+ 'title' => ts('Preferred Mail Format'),
+ 'sql_type' => 'varchar(8)',
+ 'input_type' => 'Select',
+ 'deprecated' => TRUE,
+ 'description' => ts('Deprecated setting for text vs html mailings'),
+ 'add' => '1.1',
+ 'default' => 'Both',
+ 'input_attrs' => [
+ 'label' => ts('Preferred Mail Format'),
+ 'maxlength' => 8,
+ ],
+ 'pseudoconstant' => [
+ 'callback' => 'CRM_Core_SelectValues::pmf',
+ ],
+ ],
+ ],
+];
diff --git a/www/modules/civicrm/schema/Contact/ContactType.entityType.php b/www/modules/civicrm/schema/Contact/ContactType.entityType.php
new file mode 100644
index 000000000..1d3b93d50
--- /dev/null
+++ b/www/modules/civicrm/schema/Contact/ContactType.entityType.php
@@ -0,0 +1,139 @@
+ 'ContactType',
+ 'table' => 'civicrm_contact_type',
+ 'class' => 'CRM_Contact_DAO_ContactType',
+ 'getInfo' => fn() => [
+ 'title' => ts('Contact Type'),
+ 'title_plural' => ts('Contact Types'),
+ 'description' => ts('Provide type information for contacts'),
+ 'add' => '3.1',
+ 'label_field' => 'label',
+ ],
+ 'getPaths' => fn() => [
+ 'add' => 'civicrm/admin/options/subtype/edit?action=add&reset=1',
+ 'update' => 'civicrm/admin/options/subtype/edit?action=update&id=[id]&reset=1',
+ 'delete' => 'civicrm/admin/options/subtype/edit?action=delete&id=[id]&reset=1',
+ 'browse' => 'civicrm/admin/options/subtype',
+ ],
+ 'getIndices' => fn() => [
+ 'contact_type' => [
+ 'fields' => [
+ 'name' => TRUE,
+ ],
+ 'unique' => TRUE,
+ 'add' => '3.1',
+ ],
+ ],
+ 'getFields' => fn() => [
+ 'id' => [
+ 'title' => ts('Contact Type ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'required' => TRUE,
+ 'description' => ts('Contact Type ID'),
+ 'add' => '1.1',
+ 'primary_key' => TRUE,
+ 'auto_increment' => TRUE,
+ ],
+ 'name' => [
+ 'title' => ts('Name'),
+ 'sql_type' => 'varchar(64)',
+ 'input_type' => 'Text',
+ 'required' => TRUE,
+ 'description' => ts('Internal name of Contact Type (or Subtype).'),
+ 'add' => '3.1',
+ 'input_attrs' => [
+ 'label' => ts('Name'),
+ 'maxlength' => 64,
+ ],
+ ],
+ 'label' => [
+ 'title' => ts('Contact Type Label'),
+ 'sql_type' => 'varchar(64)',
+ 'input_type' => 'Text',
+ 'localizable' => TRUE,
+ 'description' => ts('localized Name of Contact Type.'),
+ 'add' => '3.1',
+ 'input_attrs' => [
+ 'label' => ts('Label'),
+ 'maxlength' => 64,
+ ],
+ ],
+ 'description' => [
+ 'title' => ts('Contact Type Description'),
+ 'sql_type' => 'text',
+ 'input_type' => 'TextArea',
+ 'localizable' => TRUE,
+ 'description' => ts('localized Optional verbose description of the type.'),
+ 'add' => '3.1',
+ 'input_attrs' => [
+ 'rows' => 2,
+ 'cols' => 60,
+ ],
+ ],
+ 'image_URL' => [
+ 'title' => ts('Contact Type Image URL'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'description' => ts('URL of image if any.'),
+ 'add' => '3.1',
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'icon' => [
+ 'title' => ts('Icon'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'description' => ts('crm-i icon class representing this contact type'),
+ 'add' => '5.49',
+ 'default' => NULL,
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'parent_id' => [
+ 'title' => ts('Parent ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Select',
+ 'description' => ts('Optional FK to parent contact type.'),
+ 'add' => '3.1',
+ 'input_attrs' => [
+ 'label' => ts('Parent'),
+ ],
+ 'pseudoconstant' => [
+ 'table' => 'civicrm_contact_type',
+ 'key_column' => 'id',
+ 'label_column' => 'label',
+ 'condition' => 'parent_id IS NULL',
+ ],
+ 'entity_reference' => [
+ 'entity' => 'ContactType',
+ 'key' => 'id',
+ ],
+ ],
+ 'is_active' => [
+ 'title' => ts('Contact Type Enabled'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('Is this entry active?'),
+ 'add' => '3.1',
+ 'default' => TRUE,
+ 'input_attrs' => [
+ 'label' => ts('Enabled'),
+ ],
+ ],
+ 'is_reserved' => [
+ 'title' => ts('Contact Type is Reserved'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('Is this contact type a predefined system type'),
+ 'add' => '3.1',
+ 'default' => FALSE,
+ ],
+ ],
+];
diff --git a/www/modules/civicrm/schema/Contact/DashboardContact.entityType.php b/www/modules/civicrm/schema/Contact/DashboardContact.entityType.php
new file mode 100644
index 000000000..420dde558
--- /dev/null
+++ b/www/modules/civicrm/schema/Contact/DashboardContact.entityType.php
@@ -0,0 +1,97 @@
+ 'DashboardContact',
+ 'table' => 'civicrm_dashboard_contact',
+ 'class' => 'CRM_Contact_DAO_DashboardContact',
+ 'getInfo' => fn() => [
+ 'title' => ts('Dashboard Contact'),
+ 'title_plural' => ts('Dashboard Contacts'),
+ 'description' => ts('Table to store dashboard for each contact.'),
+ 'add' => '3.1',
+ ],
+ 'getIndices' => fn() => [
+ 'index_dashboard_id_contact_id' => [
+ 'fields' => [
+ 'dashboard_id' => TRUE,
+ 'contact_id' => TRUE,
+ ],
+ 'unique' => TRUE,
+ 'add' => '4.7',
+ ],
+ ],
+ 'getFields' => fn() => [
+ 'id' => [
+ 'title' => ts('Dashboard Contact ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'required' => TRUE,
+ 'add' => '3.1',
+ 'primary_key' => TRUE,
+ 'auto_increment' => TRUE,
+ ],
+ 'dashboard_id' => [
+ 'title' => ts('Dashboard ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'required' => TRUE,
+ 'description' => ts('Dashboard ID'),
+ 'add' => '3.1',
+ 'input_attrs' => [
+ 'label' => ts('Dashboard'),
+ ],
+ 'entity_reference' => [
+ 'entity' => 'Dashboard',
+ 'key' => 'id',
+ 'on_delete' => 'CASCADE',
+ ],
+ ],
+ 'contact_id' => [
+ 'title' => ts('Contact ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'required' => TRUE,
+ 'description' => ts('Contact ID'),
+ 'add' => '3.1',
+ 'input_attrs' => [
+ 'label' => ts('Contact'),
+ ],
+ 'entity_reference' => [
+ 'entity' => 'Contact',
+ 'key' => 'id',
+ 'on_delete' => 'CASCADE',
+ ],
+ ],
+ 'column_no' => [
+ 'title' => ts('Column No'),
+ 'sql_type' => 'int',
+ 'input_type' => 'Number',
+ 'description' => ts('column no for this widget'),
+ 'add' => '3.1',
+ 'default' => 0,
+ 'input_attrs' => [
+ 'label' => ts('Column Number'),
+ ],
+ ],
+ 'is_active' => [
+ 'title' => ts('Dashlet is Active?'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('Is this widget active?'),
+ 'add' => '3.1',
+ 'default' => FALSE,
+ 'input_attrs' => [
+ 'label' => ts('Enabled'),
+ ],
+ ],
+ 'weight' => [
+ 'title' => ts('Order'),
+ 'sql_type' => 'int',
+ 'input_type' => 'Number',
+ 'description' => ts('Ordering of the widgets.'),
+ 'add' => '3.1',
+ 'default' => 0,
+ ],
+ ],
+];
diff --git a/www/modules/civicrm/schema/Contact/Group.entityType.php b/www/modules/civicrm/schema/Contact/Group.entityType.php
new file mode 100644
index 000000000..416828b34
--- /dev/null
+++ b/www/modules/civicrm/schema/Contact/Group.entityType.php
@@ -0,0 +1,326 @@
+ 'Group',
+ 'table' => 'civicrm_group',
+ 'class' => 'CRM_Contact_DAO_Group',
+ 'getInfo' => fn() => [
+ 'title' => ts('Group'),
+ 'title_plural' => ts('Groups'),
+ 'description' => ts('Provide grouping of related contacts'),
+ 'log' => TRUE,
+ 'add' => '1.1',
+ 'icon' => 'fa-users',
+ 'label_field' => 'title',
+ ],
+ 'getPaths' => fn() => [
+ 'add' => 'civicrm/group/add?reset=1',
+ 'view' => 'civicrm/group/search?force=1&context=smog&gid=[id]&component_mode=1',
+ 'update' => 'civicrm/group/edit?reset=1&action=update&id=[id]',
+ 'delete' => 'civicrm/group/edit?reset=1&action=delete&id=[id]',
+ 'browse' => 'civicrm/group',
+ ],
+ 'getIndices' => fn() => [
+ 'UI_cache_date' => [
+ 'fields' => [
+ 'cache_date' => TRUE,
+ ],
+ 'add' => '5.34',
+ ],
+ 'index_group_type' => [
+ 'fields' => [
+ 'group_type' => TRUE,
+ ],
+ 'add' => '1.9',
+ ],
+ 'UI_title' => [
+ 'fields' => [
+ 'title' => TRUE,
+ ],
+ 'unique' => TRUE,
+ 'add' => '2.1',
+ ],
+ 'UI_name' => [
+ 'fields' => [
+ 'name' => TRUE,
+ ],
+ 'unique' => TRUE,
+ 'add' => '2.1',
+ ],
+ ],
+ 'getFields' => fn() => [
+ 'id' => [
+ 'title' => ts('Group ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'required' => TRUE,
+ 'description' => ts('Group ID'),
+ 'add' => '1.1',
+ 'primary_key' => TRUE,
+ 'auto_increment' => TRUE,
+ ],
+ 'name' => [
+ 'title' => ts('Group Name'),
+ 'sql_type' => 'varchar(64)',
+ 'input_type' => 'Text',
+ 'required' => TRUE,
+ 'description' => ts('Internal name of Group.'),
+ 'add' => '1.1',
+ 'input_attrs' => [
+ 'maxlength' => 64,
+ ],
+ ],
+ 'title' => [
+ 'title' => ts('Group Title'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'required' => TRUE,
+ 'localizable' => TRUE,
+ 'description' => ts('Name of Group.'),
+ 'add' => '1.1',
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'description' => [
+ 'title' => ts('Group Description'),
+ 'sql_type' => 'text',
+ 'input_type' => 'TextArea',
+ 'description' => ts('Optional verbose description of the group.'),
+ 'add' => '1.1',
+ 'input_attrs' => [
+ 'rows' => 2,
+ 'cols' => 60,
+ ],
+ ],
+ 'source' => [
+ 'title' => ts('Group Source'),
+ 'sql_type' => 'varchar(64)',
+ 'input_type' => 'Text',
+ 'description' => ts('Module or process which created this group.'),
+ 'add' => '1.1',
+ 'input_attrs' => [
+ 'maxlength' => 64,
+ ],
+ ],
+ 'saved_search_id' => [
+ 'title' => ts('Saved Search ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'description' => ts('FK to saved search table.'),
+ 'add' => '1.1',
+ 'input_attrs' => [
+ 'label' => ts('Saved Search'),
+ ],
+ 'entity_reference' => [
+ 'entity' => 'SavedSearch',
+ 'key' => 'id',
+ 'on_delete' => 'CASCADE',
+ ],
+ ],
+ 'is_active' => [
+ 'title' => ts('Group Enabled'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('Is this group active?'),
+ 'add' => '1.1',
+ 'default' => TRUE,
+ 'input_attrs' => [
+ 'label' => ts('Enabled'),
+ ],
+ ],
+ 'visibility' => [
+ 'title' => ts('Group Visibility Setting'),
+ 'sql_type' => 'varchar(24)',
+ 'input_type' => 'Select',
+ 'description' => ts('In what context(s) is this field visible.'),
+ 'add' => '1.2',
+ 'default' => 'User and User Admin Only',
+ 'input_attrs' => [
+ 'maxlength' => 24,
+ ],
+ 'pseudoconstant' => [
+ 'callback' => 'CRM_Core_SelectValues::groupVisibility',
+ ],
+ ],
+ 'where_clause' => [
+ 'title' => ts('Group Where Clause'),
+ 'sql_type' => 'text',
+ 'input_type' => NULL,
+ 'deprecated' => TRUE,
+ 'readonly' => TRUE,
+ 'description' => ts('the sql where clause if a saved search acl'),
+ 'add' => '1.6',
+ ],
+ 'select_tables' => [
+ 'title' => ts('Tables For Select Clause'),
+ 'sql_type' => 'text',
+ 'input_type' => NULL,
+ 'deprecated' => TRUE,
+ 'readonly' => TRUE,
+ 'description' => ts('the tables to be included in a select data'),
+ 'add' => '1.6',
+ 'serialize' => CRM_Core_DAO::SERIALIZE_PHP,
+ ],
+ 'where_tables' => [
+ 'title' => ts('Tables For Where Clause'),
+ 'sql_type' => 'text',
+ 'input_type' => NULL,
+ 'deprecated' => TRUE,
+ 'readonly' => TRUE,
+ 'description' => ts('the tables to be included in the count statement'),
+ 'add' => '1.6',
+ 'serialize' => CRM_Core_DAO::SERIALIZE_PHP,
+ ],
+ 'group_type' => [
+ 'title' => ts('Group Type'),
+ 'sql_type' => 'varchar(128)',
+ 'input_type' => 'Select',
+ 'description' => ts('FK to group type'),
+ 'add' => '1.9',
+ 'serialize' => CRM_Core_DAO::SERIALIZE_SEPARATOR_BOOKEND,
+ 'input_attrs' => [
+ 'maxlength' => 128,
+ ],
+ 'pseudoconstant' => [
+ 'option_group_name' => 'group_type',
+ ],
+ ],
+ 'cache_date' => [
+ 'title' => ts('Group Cache Date'),
+ 'sql_type' => 'timestamp',
+ 'input_type' => NULL,
+ 'readonly' => TRUE,
+ 'description' => ts('Date when we created the cache for a smart group'),
+ 'add' => '2.1',
+ ],
+ 'cache_fill_took' => [
+ 'title' => ts('Seconds taken by last cache fill'),
+ 'sql_type' => 'double',
+ 'input_type' => NULL,
+ 'readonly' => TRUE,
+ 'description' => ts('Seconds taken to fill smart group cache'),
+ 'add' => '5.67',
+ ],
+ 'refresh_date' => [
+ 'title' => ts('Next Group Refresh Time'),
+ 'sql_type' => 'timestamp',
+ 'input_type' => NULL,
+ 'deprecated' => TRUE,
+ 'readonly' => TRUE,
+ 'description' => ts('Unused deprecated column.'),
+ 'add' => '4.3',
+ ],
+ 'parents' => [
+ 'title' => ts('Group Parents'),
+ 'sql_type' => 'text',
+ 'input_type' => 'EntityRef',
+ 'description' => ts('List of parent groups'),
+ 'add' => '2.1',
+ 'serialize' => CRM_Core_DAO::SERIALIZE_COMMA,
+ 'input_attrs' => [
+ 'label' => ts('Parent Groups'),
+ ],
+ 'pseudoconstant' => [
+ 'table' => 'civicrm_group',
+ 'key_column' => 'id',
+ 'name_column' => 'name',
+ 'label_column' => 'title',
+ 'prefetch' => 'disabled',
+ ],
+ ],
+ 'children' => [
+ 'title' => ts('Group Children'),
+ 'sql_type' => 'text',
+ 'input_type' => 'EntityRef',
+ 'readonly' => TRUE,
+ 'description' => ts('List of child groups (calculated)'),
+ 'add' => '2.1',
+ 'serialize' => CRM_Core_DAO::SERIALIZE_COMMA,
+ 'input_attrs' => [
+ 'label' => ts('Child Groups'),
+ ],
+ 'pseudoconstant' => [
+ 'table' => 'civicrm_group',
+ 'key_column' => 'id',
+ 'name_column' => 'name',
+ 'label_column' => 'title',
+ 'prefetch' => 'disabled',
+ ],
+ ],
+ 'is_hidden' => [
+ 'title' => ts('Group is Hidden'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('Is this group hidden?'),
+ 'add' => '2.2',
+ 'default' => FALSE,
+ ],
+ 'is_reserved' => [
+ 'title' => ts('Group is Reserved'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'add' => '4.2',
+ 'default' => FALSE,
+ ],
+ 'created_id' => [
+ 'title' => ts('Created By Contact ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'description' => ts('FK to contact table.'),
+ 'add' => '4.3',
+ 'input_attrs' => [
+ 'label' => ts('Created By'),
+ ],
+ 'entity_reference' => [
+ 'entity' => 'Contact',
+ 'key' => 'id',
+ 'on_delete' => 'SET NULL',
+ ],
+ ],
+ 'modified_id' => [
+ 'title' => ts('Modified By Contact ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => NULL,
+ 'readonly' => TRUE,
+ 'description' => ts('FK to contact table.'),
+ 'add' => '4.5',
+ 'input_attrs' => [
+ 'label' => ts('Modified By'),
+ ],
+ 'entity_reference' => [
+ 'entity' => 'Contact',
+ 'key' => 'id',
+ 'on_delete' => 'SET NULL',
+ ],
+ ],
+ 'frontend_title' => [
+ 'title' => ts('Public Group Title'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'required' => TRUE,
+ 'localizable' => TRUE,
+ 'description' => ts('Alternative public title for this Group.'),
+ 'add' => '5.31',
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'frontend_description' => [
+ 'title' => ts('Public Group Description'),
+ 'sql_type' => 'text',
+ 'input_type' => 'TextArea',
+ 'localizable' => TRUE,
+ 'description' => ts('Alternative public description of the group.'),
+ 'add' => '5.31',
+ 'default' => NULL,
+ 'input_attrs' => [
+ 'rows' => 2,
+ 'cols' => 60,
+ ],
+ ],
+ ],
+];
diff --git a/www/modules/civicrm/schema/Contact/GroupContact.entityType.php b/www/modules/civicrm/schema/Contact/GroupContact.entityType.php
new file mode 100644
index 000000000..f0341720c
--- /dev/null
+++ b/www/modules/civicrm/schema/Contact/GroupContact.entityType.php
@@ -0,0 +1,115 @@
+ 'GroupContact',
+ 'table' => 'civicrm_group_contact',
+ 'class' => 'CRM_Contact_DAO_GroupContact',
+ 'getInfo' => fn() => [
+ 'title' => ts('Group Contact'),
+ 'title_plural' => ts('Group Contacts'),
+ 'description' => ts('Join table sets membership for \'static\' groups. Also used to store \'opt-out\' entries for \'query\' type groups (status = \'OUT\')'),
+ 'log' => TRUE,
+ 'add' => '1.1',
+ ],
+ 'getIndices' => fn() => [
+ 'UI_contact_group' => [
+ 'fields' => [
+ 'contact_id' => TRUE,
+ 'group_id' => TRUE,
+ ],
+ 'unique' => TRUE,
+ 'add' => '1.6',
+ ],
+ ],
+ 'getFields' => fn() => [
+ 'id' => [
+ 'title' => ts('Group Contact ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'required' => TRUE,
+ 'description' => ts('primary key'),
+ 'add' => '1.1',
+ 'primary_key' => TRUE,
+ 'auto_increment' => TRUE,
+ ],
+ 'group_id' => [
+ 'title' => ts('Group ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Select',
+ 'required' => TRUE,
+ 'description' => ts('FK to civicrm_group'),
+ 'add' => '1.1',
+ 'input_attrs' => [
+ 'label' => ts('Group'),
+ ],
+ 'pseudoconstant' => [
+ 'table' => 'civicrm_group',
+ 'key_column' => 'id',
+ 'label_column' => 'title',
+ ],
+ 'entity_reference' => [
+ 'entity' => 'Group',
+ 'key' => 'id',
+ 'on_delete' => 'CASCADE',
+ ],
+ ],
+ 'contact_id' => [
+ 'title' => ts('Contact ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'required' => TRUE,
+ 'description' => ts('FK to civicrm_contact'),
+ 'add' => '1.1',
+ 'input_attrs' => [
+ 'label' => ts('Contact'),
+ ],
+ 'entity_reference' => [
+ 'entity' => 'Contact',
+ 'key' => 'id',
+ 'on_delete' => 'CASCADE',
+ ],
+ ],
+ 'status' => [
+ 'title' => ts('Group Contact Status'),
+ 'sql_type' => 'varchar(8)',
+ 'input_type' => 'Select',
+ 'description' => ts('status of contact relative to membership in group'),
+ 'add' => '1.1',
+ 'input_attrs' => [
+ 'maxlength' => 8,
+ ],
+ 'pseudoconstant' => [
+ 'callback' => 'CRM_Core_SelectValues::groupContactStatus',
+ ],
+ ],
+ 'location_id' => [
+ 'title' => ts('Location ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'description' => ts('Optional location to associate with this membership'),
+ 'add' => '1.1',
+ 'input_attrs' => [
+ 'label' => ts('Location'),
+ ],
+ 'entity_reference' => [
+ 'entity' => 'LocBlock',
+ 'key' => 'id',
+ 'on_delete' => 'SET NULL',
+ ],
+ ],
+ 'email_id' => [
+ 'title' => ts('Email ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'description' => ts('Optional email to associate with this membership'),
+ 'add' => '1.1',
+ 'input_attrs' => [
+ 'label' => ts('Email'),
+ ],
+ 'entity_reference' => [
+ 'entity' => 'Email',
+ 'key' => 'id',
+ ],
+ ],
+ ],
+];
diff --git a/www/modules/civicrm/schema/Contact/GroupContactCache.entityType.php b/www/modules/civicrm/schema/Contact/GroupContactCache.entityType.php
new file mode 100644
index 000000000..55cbb4cd1
--- /dev/null
+++ b/www/modules/civicrm/schema/Contact/GroupContactCache.entityType.php
@@ -0,0 +1,72 @@
+ 'GroupContactCache',
+ 'table' => 'civicrm_group_contact_cache',
+ 'class' => 'CRM_Contact_DAO_GroupContactCache',
+ 'getInfo' => fn() => [
+ 'title' => ts('Group Contact Cache'),
+ 'title_plural' => ts('Group Contact Caches'),
+ 'description' => ts('Join table cache for \'static\' groups.'),
+ 'add' => '2.1',
+ ],
+ 'getIndices' => fn() => [
+ 'UI_contact_group' => [
+ 'fields' => [
+ 'contact_id' => TRUE,
+ 'group_id' => TRUE,
+ ],
+ 'unique' => TRUE,
+ 'add' => '2.1',
+ ],
+ ],
+ 'getFields' => fn() => [
+ 'id' => [
+ 'title' => ts('Group Contact Cache ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'required' => TRUE,
+ 'description' => ts('primary key'),
+ 'add' => '2.1',
+ 'primary_key' => TRUE,
+ 'auto_increment' => TRUE,
+ ],
+ 'group_id' => [
+ 'title' => ts('Group ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Select',
+ 'required' => TRUE,
+ 'description' => ts('FK to civicrm_group'),
+ 'add' => '2.1',
+ 'input_attrs' => [
+ 'label' => ts('Group'),
+ ],
+ 'pseudoconstant' => [
+ 'table' => 'civicrm_group',
+ 'key_column' => 'id',
+ 'label_column' => 'title',
+ ],
+ 'entity_reference' => [
+ 'entity' => 'Group',
+ 'key' => 'id',
+ 'on_delete' => 'CASCADE',
+ ],
+ ],
+ 'contact_id' => [
+ 'title' => ts('Contact ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'required' => TRUE,
+ 'description' => ts('FK to civicrm_contact'),
+ 'add' => '2.1',
+ 'input_attrs' => [
+ 'label' => ts('Contact'),
+ ],
+ 'entity_reference' => [
+ 'entity' => 'Contact',
+ 'key' => 'id',
+ 'on_delete' => 'CASCADE',
+ ],
+ ],
+ ],
+];
diff --git a/www/modules/civicrm/schema/Contact/GroupNesting.entityType.php b/www/modules/civicrm/schema/Contact/GroupNesting.entityType.php
new file mode 100644
index 000000000..746f1a803
--- /dev/null
+++ b/www/modules/civicrm/schema/Contact/GroupNesting.entityType.php
@@ -0,0 +1,58 @@
+ 'GroupNesting',
+ 'table' => 'civicrm_group_nesting',
+ 'class' => 'CRM_Contact_DAO_GroupNesting',
+ 'getInfo' => fn() => [
+ 'title' => ts('Group Nesting'),
+ 'title_plural' => ts('Group Nestings'),
+ 'description' => ts('Provide parent-child relationships for groups'),
+ 'log' => TRUE,
+ 'add' => '2.0',
+ ],
+ 'getFields' => fn() => [
+ 'id' => [
+ 'title' => ts('Group Nesting ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'required' => TRUE,
+ 'description' => ts('Relationship ID'),
+ 'add' => '2.0',
+ 'primary_key' => TRUE,
+ 'auto_increment' => TRUE,
+ ],
+ 'child_group_id' => [
+ 'title' => ts('Child Group ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'required' => TRUE,
+ 'description' => ts('ID of the child group'),
+ 'add' => '2.0',
+ 'input_attrs' => [
+ 'label' => ts('Child Group'),
+ ],
+ 'entity_reference' => [
+ 'entity' => 'Group',
+ 'key' => 'id',
+ 'on_delete' => 'CASCADE',
+ ],
+ ],
+ 'parent_group_id' => [
+ 'title' => ts('Parent Group ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'required' => TRUE,
+ 'description' => ts('ID of the parent group'),
+ 'add' => '2.0',
+ 'input_attrs' => [
+ 'label' => ts('Parent Group'),
+ ],
+ 'entity_reference' => [
+ 'entity' => 'Group',
+ 'key' => 'id',
+ 'on_delete' => 'CASCADE',
+ ],
+ ],
+ ],
+];
diff --git a/www/modules/civicrm/schema/Contact/GroupOrganization.entityType.php b/www/modules/civicrm/schema/Contact/GroupOrganization.entityType.php
new file mode 100644
index 000000000..f501381a1
--- /dev/null
+++ b/www/modules/civicrm/schema/Contact/GroupOrganization.entityType.php
@@ -0,0 +1,73 @@
+ 'GroupOrganization',
+ 'table' => 'civicrm_group_organization',
+ 'class' => 'CRM_Contact_DAO_GroupOrganization',
+ 'getInfo' => fn() => [
+ 'title' => ts('Group Organization'),
+ 'title_plural' => ts('Group Organizations'),
+ 'description' => ts('Integrate Organization information into Groups'),
+ 'log' => TRUE,
+ 'add' => '2.0',
+ ],
+ 'getIndices' => fn() => [
+ 'UI_group_organization' => [
+ 'fields' => [
+ 'group_id' => TRUE,
+ 'organization_id' => TRUE,
+ ],
+ 'unique' => TRUE,
+ 'add' => '2.0',
+ ],
+ ],
+ 'getFields' => fn() => [
+ 'id' => [
+ 'title' => ts('Group Organization ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'required' => TRUE,
+ 'description' => ts('Relationship ID'),
+ 'add' => '2.0',
+ 'primary_key' => TRUE,
+ 'auto_increment' => TRUE,
+ ],
+ 'group_id' => [
+ 'title' => ts('Group ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Select',
+ 'required' => TRUE,
+ 'description' => ts('ID of the group'),
+ 'add' => '2.0',
+ 'input_attrs' => [
+ 'label' => ts('Group'),
+ ],
+ 'pseudoconstant' => [
+ 'table' => 'civicrm_group',
+ 'key_column' => 'id',
+ 'label_column' => 'title',
+ ],
+ 'entity_reference' => [
+ 'entity' => 'Group',
+ 'key' => 'id',
+ 'on_delete' => 'CASCADE',
+ ],
+ ],
+ 'organization_id' => [
+ 'title' => ts('Organization ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'required' => TRUE,
+ 'description' => ts('ID of the Organization Contact'),
+ 'add' => '2.0',
+ 'input_attrs' => [
+ 'label' => ts('Organization'),
+ ],
+ 'entity_reference' => [
+ 'entity' => 'Contact',
+ 'key' => 'id',
+ 'on_delete' => 'CASCADE',
+ ],
+ ],
+ ],
+];
diff --git a/www/modules/civicrm/schema/Contact/Relationship.entityType.php b/www/modules/civicrm/schema/Contact/Relationship.entityType.php
new file mode 100644
index 000000000..9fdc9f3d1
--- /dev/null
+++ b/www/modules/civicrm/schema/Contact/Relationship.entityType.php
@@ -0,0 +1,199 @@
+ 'Relationship',
+ 'table' => 'civicrm_relationship',
+ 'class' => 'CRM_Contact_DAO_Relationship',
+ 'getInfo' => fn() => [
+ 'title' => ts('Relationship'),
+ 'title_plural' => ts('Relationships'),
+ 'description' => ts('Relationship between any 2 types of contacts.'),
+ 'log' => TRUE,
+ 'add' => '1.1',
+ 'icon' => 'fa-handshake-o',
+ ],
+ 'getPaths' => fn() => [
+ 'view' => 'civicrm/contact/view/rel?action=view&reset=1&cid=[contact_id_a]&id=[id]',
+ 'delete' => 'civicrm/contact/view/rel?action=delete&reset=1&cid=[contact_id_a]&id=[id]',
+ ],
+ 'getFields' => fn() => [
+ 'id' => [
+ 'title' => ts('Relationship ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'required' => TRUE,
+ 'description' => ts('Relationship ID'),
+ 'add' => '1.1',
+ 'primary_key' => TRUE,
+ 'auto_increment' => TRUE,
+ ],
+ 'contact_id_a' => [
+ 'title' => ts('Contact A ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'required' => TRUE,
+ 'description' => ts('id of the first contact'),
+ 'add' => '1.1',
+ 'input_attrs' => [
+ 'label' => ts('Contact A'),
+ ],
+ 'entity_reference' => [
+ 'entity' => 'Contact',
+ 'key' => 'id',
+ 'on_delete' => 'CASCADE',
+ ],
+ ],
+ 'contact_id_b' => [
+ 'title' => ts('Contact B ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'required' => TRUE,
+ 'description' => ts('id of the second contact'),
+ 'add' => '1.1',
+ 'input_attrs' => [
+ 'label' => ts('Contact B'),
+ ],
+ 'entity_reference' => [
+ 'entity' => 'Contact',
+ 'key' => 'id',
+ 'on_delete' => 'CASCADE',
+ ],
+ ],
+ 'relationship_type_id' => [
+ 'title' => ts('Relationship Type ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Select',
+ 'required' => TRUE,
+ 'description' => ts('Type of relationship'),
+ 'add' => '1.1',
+ 'input_attrs' => [
+ 'label' => ts('Relationship Type'),
+ ],
+ 'pseudoconstant' => [
+ 'table' => 'civicrm_relationship_type',
+ 'key_column' => 'id',
+ 'name_column' => 'name_a_b',
+ 'label_column' => 'label_a_b',
+ ],
+ 'entity_reference' => [
+ 'entity' => 'RelationshipType',
+ 'key' => 'id',
+ 'on_delete' => 'CASCADE',
+ ],
+ ],
+ 'start_date' => [
+ 'title' => ts('Relationship Start Date'),
+ 'sql_type' => 'date',
+ 'input_type' => 'Select Date',
+ 'description' => ts('date when the relationship started'),
+ 'add' => '1.1',
+ 'unique_name' => 'relationship_start_date',
+ 'input_attrs' => [
+ 'format_type' => 'activityDate',
+ ],
+ ],
+ 'end_date' => [
+ 'title' => ts('Relationship End Date'),
+ 'sql_type' => 'date',
+ 'input_type' => 'Select Date',
+ 'description' => ts('date when the relationship ended'),
+ 'add' => '1.1',
+ 'unique_name' => 'relationship_end_date',
+ 'input_attrs' => [
+ 'format_type' => 'activityDate',
+ ],
+ ],
+ 'is_active' => [
+ 'title' => ts('Relationship Is Active'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('is the relationship active ?'),
+ 'add' => '1.1',
+ 'default' => TRUE,
+ 'input_attrs' => [
+ 'label' => ts('Enabled'),
+ ],
+ ],
+ 'description' => [
+ 'title' => ts('Relationship Description'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'description' => ts('Optional verbose description for the relationship.'),
+ 'add' => '1.5',
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'is_permission_a_b' => [
+ 'title' => ts('Contact A has Permission Over Contact B'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Radio',
+ 'required' => TRUE,
+ 'description' => ts('Permission that Contact A has to view/update Contact B'),
+ 'add' => '2.1',
+ 'default' => 0,
+ 'pseudoconstant' => [
+ 'callback' => 'CRM_Core_SelectValues::getPermissionedRelationshipOptions',
+ 'suffixes' => [
+ 'name',
+ 'label',
+ 'icon',
+ ],
+ ],
+ ],
+ 'is_permission_b_a' => [
+ 'title' => ts('Contact B has Permission Over Contact A'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Radio',
+ 'required' => TRUE,
+ 'description' => ts('Permission that Contact B has to view/update Contact A'),
+ 'add' => '2.1',
+ 'default' => 0,
+ 'pseudoconstant' => [
+ 'callback' => 'CRM_Core_SelectValues::getPermissionedRelationshipOptions',
+ 'suffixes' => [
+ 'name',
+ 'label',
+ 'icon',
+ ],
+ ],
+ ],
+ 'case_id' => [
+ 'title' => ts('Case ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'description' => ts('FK to civicrm_case'),
+ 'add' => '2.2',
+ 'component' => 'CiviCase',
+ 'default' => NULL,
+ 'input_attrs' => [
+ 'label' => ts('Case'),
+ ],
+ 'entity_reference' => [
+ 'entity' => 'Case',
+ 'key' => 'id',
+ 'on_delete' => 'CASCADE',
+ ],
+ ],
+ 'created_date' => [
+ 'title' => ts('Created Date'),
+ 'sql_type' => 'timestamp',
+ 'input_type' => NULL,
+ 'required' => TRUE,
+ 'description' => ts('Relationship created date.'),
+ 'add' => '5.47',
+ 'default' => 'CURRENT_TIMESTAMP',
+ ],
+ 'modified_date' => [
+ 'title' => ts('Relationship Modified Date'),
+ 'sql_type' => 'timestamp',
+ 'input_type' => NULL,
+ 'required' => TRUE,
+ 'readonly' => TRUE,
+ 'description' => ts('Relationship last modified.'),
+ 'add' => '5.47',
+ 'default' => 'CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP',
+ ],
+ ],
+];
diff --git a/www/modules/civicrm/schema/Contact/RelationshipCache.entityType.php b/www/modules/civicrm/schema/Contact/RelationshipCache.entityType.php
new file mode 100644
index 000000000..e0d5028c2
--- /dev/null
+++ b/www/modules/civicrm/schema/Contact/RelationshipCache.entityType.php
@@ -0,0 +1,231 @@
+ 'RelationshipCache',
+ 'table' => 'civicrm_relationship_cache',
+ 'class' => 'CRM_Contact_DAO_RelationshipCache',
+ 'getInfo' => fn() => [
+ 'title' => ts('Related Contact'),
+ 'title_plural' => ts('Related Contacts'),
+ 'description' => ts('The cache permutes information from the relationship table to facilitate querying. Every relationship is mapped to multiple records in the cache. Joins should begin on the near side and extract info from the far side.'),
+ 'log' => FALSE,
+ 'add' => '5.29',
+ 'icon' => 'fa-handshake-o',
+ ],
+ 'getPaths' => fn() => [
+ 'add' => 'civicrm/contact/view/rel?cid=[near_contact_id]&action=add&reset=1',
+ 'view' => 'civicrm/contact/view/rel?action=view&reset=1&cid=[near_contact_id]&id=[relationship_id]',
+ 'update' => 'civicrm/contact/view/rel?action=update&reset=1&cid=[near_contact_id]&id=[relationship_id]&rtype=[orientation]',
+ 'delete' => 'civicrm/contact/view/rel?action=delete&reset=1&cid=[near_contact_id]&id=[relationship_id]',
+ ],
+ 'getIndices' => fn() => [
+ 'UI_relationship' => [
+ 'fields' => [
+ 'relationship_id' => TRUE,
+ 'orientation' => TRUE,
+ ],
+ 'unique' => TRUE,
+ 'add' => '5.29',
+ ],
+ 'index_nearid_nearrelation' => [
+ 'fields' => [
+ 'near_contact_id' => TRUE,
+ 'near_relation' => TRUE,
+ ],
+ 'add' => '5.29',
+ ],
+ 'index_nearid_farrelation' => [
+ 'fields' => [
+ 'near_contact_id' => TRUE,
+ 'far_relation' => TRUE,
+ ],
+ 'add' => '5.29',
+ ],
+ 'index_near_relation' => [
+ 'fields' => [
+ 'near_relation' => TRUE,
+ ],
+ 'add' => '5.29',
+ ],
+ ],
+ 'getFields' => fn() => [
+ 'id' => [
+ 'title' => ts('Relationship Cache ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'required' => TRUE,
+ 'description' => ts('Relationship Cache ID'),
+ 'add' => '5.29',
+ 'primary_key' => TRUE,
+ 'auto_increment' => TRUE,
+ ],
+ 'relationship_id' => [
+ 'title' => ts('Relationship ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => NULL,
+ 'required' => TRUE,
+ 'readonly' => TRUE,
+ 'description' => ts('id of the relationship (FK to civicrm_relationship.id)'),
+ 'add' => '5.29',
+ 'input_attrs' => [
+ 'label' => ts('Relationship'),
+ ],
+ 'entity_reference' => [
+ 'entity' => 'Relationship',
+ 'key' => 'id',
+ 'on_delete' => 'CASCADE',
+ ],
+ ],
+ 'relationship_type_id' => [
+ 'title' => ts('Relationship Type ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => NULL,
+ 'required' => TRUE,
+ 'readonly' => TRUE,
+ 'description' => ts('id of the relationship type'),
+ 'add' => '5.29',
+ 'input_attrs' => [
+ 'label' => ts('Relationship Type'),
+ ],
+ 'entity_reference' => [
+ 'entity' => 'RelationshipType',
+ 'key' => 'id',
+ 'on_delete' => 'CASCADE',
+ ],
+ ],
+ 'orientation' => [
+ 'title' => ts('Orientation (a_b or b_a)'),
+ 'sql_type' => 'char(3)',
+ 'input_type' => NULL,
+ 'required' => TRUE,
+ 'readonly' => TRUE,
+ 'description' => ts('The cache record is a permutation of the original relationship record. The orientation indicates whether it is forward (a_b) or reverse (b_a) relationship.'),
+ 'add' => '5.29',
+ 'input_attrs' => [
+ 'maxlength' => 3,
+ ],
+ 'pseudoconstant' => [
+ 'callback' => 'CRM_Core_SelectValues::relationshipOrientation',
+ ],
+ ],
+ 'near_contact_id' => [
+ 'title' => ts('Contact ID (Near side)'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'required' => TRUE,
+ 'readonly' => TRUE,
+ 'description' => ts('id of the first contact'),
+ 'add' => '5.29',
+ 'input_attrs' => [
+ 'label' => ts('Contact (Near side)'),
+ ],
+ 'entity_reference' => [
+ 'entity' => 'Contact',
+ 'key' => 'id',
+ 'on_delete' => 'CASCADE',
+ ],
+ ],
+ 'near_relation' => [
+ 'title' => ts('Relationship Name (to related contact)'),
+ 'sql_type' => 'varchar(64)',
+ 'input_type' => 'Select',
+ 'readonly' => TRUE,
+ 'description' => ts('name for relationship of near_contact to far_contact.'),
+ 'add' => '5.29',
+ 'input_attrs' => [
+ 'label' => ts('Relationship to contact'),
+ 'maxlength' => 64,
+ ],
+ 'pseudoconstant' => [
+ 'callback' => 'CRM_Core_PseudoConstant::relationshipTypeOptions',
+ ],
+ ],
+ 'far_contact_id' => [
+ 'title' => ts('Contact ID (Far side)'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'required' => TRUE,
+ 'readonly' => TRUE,
+ 'description' => ts('id of the second contact'),
+ 'add' => '5.29',
+ 'input_attrs' => [
+ 'label' => ts('Contact (Far side)'),
+ ],
+ 'entity_reference' => [
+ 'entity' => 'Contact',
+ 'key' => 'id',
+ 'on_delete' => 'CASCADE',
+ ],
+ ],
+ 'far_relation' => [
+ 'title' => ts('Relationship Name (from related contact)'),
+ 'sql_type' => 'varchar(64)',
+ 'input_type' => 'Select',
+ 'readonly' => TRUE,
+ 'description' => ts('name for relationship of far_contact to near_contact.'),
+ 'add' => '5.29',
+ 'input_attrs' => [
+ 'label' => ts('Relationship from contact'),
+ 'maxlength' => 64,
+ ],
+ 'pseudoconstant' => [
+ 'callback' => 'CRM_Core_PseudoConstant::relationshipTypeOptions',
+ ],
+ ],
+ 'is_active' => [
+ 'title' => ts('Relationship Is Active'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'readonly' => TRUE,
+ 'description' => ts('is the relationship active ?'),
+ 'add' => '5.29',
+ 'default' => TRUE,
+ 'input_attrs' => [
+ 'label' => ts('Enabled'),
+ ],
+ ],
+ 'start_date' => [
+ 'title' => ts('Relationship Start Date'),
+ 'sql_type' => 'date',
+ 'input_type' => 'Select Date',
+ 'readonly' => TRUE,
+ 'description' => ts('date when the relationship started'),
+ 'add' => '5.29',
+ 'unique_name' => 'relationship_start_date',
+ 'input_attrs' => [
+ 'format_type' => 'activityDate',
+ ],
+ ],
+ 'end_date' => [
+ 'title' => ts('Relationship End Date'),
+ 'sql_type' => 'date',
+ 'input_type' => 'Select Date',
+ 'readonly' => TRUE,
+ 'description' => ts('date when the relationship ended'),
+ 'add' => '5.29',
+ 'unique_name' => 'relationship_end_date',
+ 'input_attrs' => [
+ 'format_type' => 'activityDate',
+ ],
+ ],
+ 'case_id' => [
+ 'title' => ts('Case ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'readonly' => TRUE,
+ 'description' => ts('FK to civicrm_case'),
+ 'add' => '5.44',
+ 'component' => 'CiviCase',
+ 'default' => NULL,
+ 'input_attrs' => [
+ 'label' => ts('Case'),
+ ],
+ 'entity_reference' => [
+ 'entity' => 'Case',
+ 'key' => 'id',
+ 'on_delete' => 'CASCADE',
+ ],
+ ],
+ ],
+];
diff --git a/www/modules/civicrm/schema/Contact/RelationshipType.entityType.php b/www/modules/civicrm/schema/Contact/RelationshipType.entityType.php
new file mode 100644
index 000000000..686bf281e
--- /dev/null
+++ b/www/modules/civicrm/schema/Contact/RelationshipType.entityType.php
@@ -0,0 +1,188 @@
+ 'RelationshipType',
+ 'table' => 'civicrm_relationship_type',
+ 'class' => 'CRM_Contact_DAO_RelationshipType',
+ 'getInfo' => fn() => [
+ 'title' => ts('Relationship Type'),
+ 'title_plural' => ts('Relationship Types'),
+ 'description' => ts('Relationship types s/b structured with contact_a as the \'subject/child\' contact and contact_b as the \'object/parent\' contact (e.g. Individual A is Employee of Org B).'),
+ 'log' => TRUE,
+ 'add' => '1.1',
+ 'label_field' => 'label_a_b',
+ ],
+ 'getPaths' => fn() => [
+ 'add' => 'civicrm/admin/reltype/edit?action=add&reset=1',
+ 'view' => 'civicrm/admin/reltype/edit?action=view&id=[id]&reset=1',
+ 'update' => 'civicrm/admin/reltype/edit?action=update&id=[id]&reset=1',
+ 'delete' => 'civicrm/admin/reltype/edit?action=delete&id=[id]&reset=1',
+ 'browse' => 'civicrm/admin/reltype',
+ ],
+ 'getIndices' => fn() => [
+ 'UI_name_a_b' => [
+ 'fields' => [
+ 'name_a_b' => TRUE,
+ ],
+ 'unique' => TRUE,
+ 'add' => '2.1',
+ ],
+ 'UI_name_b_a' => [
+ 'fields' => [
+ 'name_b_a' => TRUE,
+ ],
+ 'unique' => TRUE,
+ 'add' => '2.1',
+ ],
+ ],
+ 'getFields' => fn() => [
+ 'id' => [
+ 'title' => ts('Relationship Type ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'required' => TRUE,
+ 'description' => ts('Primary key'),
+ 'add' => '1.1',
+ 'primary_key' => TRUE,
+ 'auto_increment' => TRUE,
+ ],
+ 'name_a_b' => [
+ 'title' => ts('Relationship Type Name A to B'),
+ 'sql_type' => 'varchar(64)',
+ 'input_type' => 'Text',
+ 'description' => ts('name for relationship of contact_a to contact_b.'),
+ 'add' => '1.1',
+ 'input_attrs' => [
+ 'maxlength' => 64,
+ ],
+ ],
+ 'label_a_b' => [
+ 'title' => ts('Relationship Type Label A to B'),
+ 'sql_type' => 'varchar(64)',
+ 'input_type' => 'Text',
+ 'localizable' => TRUE,
+ 'description' => ts('label for relationship of contact_a to contact_b.'),
+ 'add' => '3.0',
+ 'input_attrs' => [
+ 'maxlength' => 64,
+ ],
+ ],
+ 'name_b_a' => [
+ 'title' => ts('Relationship Type Name B to A'),
+ 'sql_type' => 'varchar(64)',
+ 'input_type' => 'Text',
+ 'description' => ts('Optional name for relationship of contact_b to contact_a.'),
+ 'add' => '1.1',
+ 'input_attrs' => [
+ 'maxlength' => 64,
+ ],
+ ],
+ 'label_b_a' => [
+ 'title' => ts('Relationship Type Label B to A'),
+ 'sql_type' => 'varchar(64)',
+ 'input_type' => 'Text',
+ 'localizable' => TRUE,
+ 'description' => ts('Optional label for relationship of contact_b to contact_a.'),
+ 'add' => '3.0',
+ 'input_attrs' => [
+ 'maxlength' => 64,
+ ],
+ ],
+ 'description' => [
+ 'title' => ts('Relationship Description'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'localizable' => TRUE,
+ 'description' => ts('Optional verbose description of the relationship type.'),
+ 'add' => '1.1',
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'contact_type_a' => [
+ 'title' => ts('Contact Type for Contact A'),
+ 'sql_type' => 'varchar(12)',
+ 'input_type' => 'Select',
+ 'description' => ts('If defined, contact_a in a relationship of this type must be a specific contact_type.'),
+ 'add' => '1.1',
+ 'input_attrs' => [
+ 'maxlength' => 12,
+ ],
+ 'pseudoconstant' => [
+ 'table' => 'civicrm_contact_type',
+ 'key_column' => 'name',
+ 'label_column' => 'label',
+ 'condition' => 'parent_id IS NULL',
+ ],
+ ],
+ 'contact_type_b' => [
+ 'title' => ts('Contact Type for Contact B'),
+ 'sql_type' => 'varchar(12)',
+ 'input_type' => 'Select',
+ 'description' => ts('If defined, contact_b in a relationship of this type must be a specific contact_type.'),
+ 'add' => '1.1',
+ 'input_attrs' => [
+ 'maxlength' => 12,
+ ],
+ 'pseudoconstant' => [
+ 'table' => 'civicrm_contact_type',
+ 'key_column' => 'name',
+ 'label_column' => 'label',
+ 'condition' => 'parent_id IS NULL',
+ ],
+ ],
+ 'contact_sub_type_a' => [
+ 'title' => ts('Contact Subtype A'),
+ 'sql_type' => 'varchar(64)',
+ 'input_type' => 'Select',
+ 'description' => ts('If defined, contact_sub_type_a in a relationship of this type must be a specific contact_sub_type.'),
+ 'add' => '3.1',
+ 'input_attrs' => [
+ 'maxlength' => 64,
+ ],
+ 'pseudoconstant' => [
+ 'table' => 'civicrm_contact_type',
+ 'key_column' => 'name',
+ 'label_column' => 'label',
+ 'condition' => 'parent_id IS NOT NULL',
+ ],
+ ],
+ 'contact_sub_type_b' => [
+ 'title' => ts('Contact Subtype B'),
+ 'sql_type' => 'varchar(64)',
+ 'input_type' => 'Select',
+ 'description' => ts('If defined, contact_sub_type_b in a relationship of this type must be a specific contact_sub_type.'),
+ 'add' => '3.1',
+ 'input_attrs' => [
+ 'maxlength' => 64,
+ ],
+ 'pseudoconstant' => [
+ 'table' => 'civicrm_contact_type',
+ 'key_column' => 'name',
+ 'label_column' => 'label',
+ 'condition' => 'parent_id IS NOT NULL',
+ ],
+ ],
+ 'is_reserved' => [
+ 'title' => ts('Relationship Type is Reserved'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('Is this relationship type a predefined system type (can not be changed or de-activated)?'),
+ 'add' => '1.1',
+ 'default' => FALSE,
+ ],
+ 'is_active' => [
+ 'title' => ts('Relationship Type is Active'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('Is this relationship type currently active (i.e. can be used when creating or editing relationships)?'),
+ 'add' => '1.1',
+ 'default' => TRUE,
+ 'input_attrs' => [
+ 'label' => ts('Enabled'),
+ ],
+ ],
+ ],
+];
diff --git a/www/modules/civicrm/schema/Contact/SavedSearch.entityType.php b/www/modules/civicrm/schema/Contact/SavedSearch.entityType.php
new file mode 100644
index 000000000..d9a112d8f
--- /dev/null
+++ b/www/modules/civicrm/schema/Contact/SavedSearch.entityType.php
@@ -0,0 +1,190 @@
+ 'SavedSearch',
+ 'table' => 'civicrm_saved_search',
+ 'class' => 'CRM_Contact_DAO_SavedSearch',
+ 'getInfo' => fn() => [
+ 'title' => ts('Saved Search'),
+ 'title_plural' => ts('Saved Searches'),
+ 'description' => ts('Users can save their complex SQL queries and use them later.'),
+ 'add' => '1.1',
+ 'icon' => 'fa-search-plus',
+ 'label_field' => 'label',
+ ],
+ 'getIndices' => fn() => [
+ 'UI_name' => [
+ 'fields' => [
+ 'name' => TRUE,
+ ],
+ 'unique' => TRUE,
+ 'add' => '5.32',
+ ],
+ ],
+ 'getFields' => fn() => [
+ 'id' => [
+ 'title' => ts('Saved Search ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'required' => TRUE,
+ 'description' => ts('Saved Search ID'),
+ 'add' => '1.1',
+ 'input_attrs' => [
+ 'label' => ts('ID'),
+ ],
+ 'primary_key' => TRUE,
+ 'auto_increment' => TRUE,
+ ],
+ 'name' => [
+ 'title' => ts('Saved Search Name'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'description' => ts('Unique name of saved search'),
+ 'add' => '1.0',
+ 'default' => NULL,
+ 'input_attrs' => [
+ 'label' => ts('Name'),
+ 'maxlength' => 255,
+ ],
+ ],
+ 'label' => [
+ 'title' => ts('Saved Search Label'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'description' => ts('Administrative label for search'),
+ 'add' => '5.32',
+ 'default' => NULL,
+ 'input_attrs' => [
+ 'label' => ts('Label'),
+ 'maxlength' => 255,
+ ],
+ ],
+ 'form_values' => [
+ 'title' => ts('Submitted Form Values'),
+ 'sql_type' => 'text',
+ 'input_type' => 'TextArea',
+ 'description' => ts('Submitted form values for this search'),
+ 'add' => '1.1',
+ 'serialize' => CRM_Core_DAO::SERIALIZE_PHP,
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ ],
+ 'mapping_id' => [
+ 'title' => ts('Mapping ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'description' => ts('Foreign key to civicrm_mapping used for saved search-builder searches.'),
+ 'add' => '1.5',
+ 'input_attrs' => [
+ 'label' => ts('Mapping'),
+ ],
+ 'entity_reference' => [
+ 'entity' => 'Mapping',
+ 'key' => 'id',
+ 'on_delete' => 'SET NULL',
+ ],
+ ],
+ 'search_custom_id' => [
+ 'title' => ts('Option Value ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'description' => ts('Foreign key to civicrm_option value table used for saved custom searches.'),
+ 'add' => '2.0',
+ ],
+ 'api_entity' => [
+ 'title' => ts('Entity Name'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Select',
+ 'description' => ts('Entity name for API based search'),
+ 'add' => '5.24',
+ 'input_attrs' => [
+ 'label' => ts('For'),
+ 'maxlength' => 255,
+ ],
+ 'pseudoconstant' => [
+ 'callback' => 'CRM_Contact_BAO_SavedSearch::getApiEntityOptions',
+ ],
+ ],
+ 'api_params' => [
+ 'title' => ts('API Parameters'),
+ 'sql_type' => 'text',
+ 'input_type' => 'TextArea',
+ 'description' => ts('Parameters for API based search'),
+ 'add' => '5.24',
+ 'serialize' => CRM_Core_DAO::SERIALIZE_JSON,
+ ],
+ 'created_id' => [
+ 'title' => ts('Created By Contact ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => NULL,
+ 'readonly' => TRUE,
+ 'description' => ts('FK to contact table.'),
+ 'add' => '5.36',
+ 'input_attrs' => [
+ 'label' => ts('Created By'),
+ ],
+ 'entity_reference' => [
+ 'entity' => 'Contact',
+ 'key' => 'id',
+ 'on_delete' => 'SET NULL',
+ ],
+ ],
+ 'modified_id' => [
+ 'title' => ts('Modified By Contact ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => NULL,
+ 'readonly' => TRUE,
+ 'description' => ts('FK to contact table.'),
+ 'add' => '5.36',
+ 'input_attrs' => [
+ 'label' => ts('Modified By'),
+ ],
+ 'entity_reference' => [
+ 'entity' => 'Contact',
+ 'key' => 'id',
+ 'on_delete' => 'SET NULL',
+ ],
+ ],
+ 'expires_date' => [
+ 'title' => ts('Search Expiry Date'),
+ 'sql_type' => 'timestamp',
+ 'input_type' => NULL,
+ 'description' => ts('Optional date after which the search is not needed'),
+ 'add' => '5.36',
+ ],
+ 'created_date' => [
+ 'title' => ts('Created Date'),
+ 'sql_type' => 'timestamp',
+ 'input_type' => NULL,
+ 'required' => TRUE,
+ 'readonly' => TRUE,
+ 'description' => ts('When the search was created.'),
+ 'add' => '5.36',
+ 'default' => 'CURRENT_TIMESTAMP',
+ ],
+ 'modified_date' => [
+ 'title' => ts('Modified Date'),
+ 'sql_type' => 'timestamp',
+ 'input_type' => NULL,
+ 'required' => TRUE,
+ 'readonly' => TRUE,
+ 'description' => ts('When the search was last modified.'),
+ 'add' => '5.36',
+ 'default' => 'CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP',
+ ],
+ 'description' => [
+ 'title' => ts('Saved Search Description'),
+ 'sql_type' => 'text',
+ 'input_type' => 'TextArea',
+ 'add' => '5.36',
+ 'input_attrs' => [
+ 'label' => ts('Description'),
+ 'rows' => 2,
+ 'cols' => 60,
+ ],
+ ],
+ ],
+];
diff --git a/www/modules/civicrm/schema/Contact/SubscriptionHistory.entityType.php b/www/modules/civicrm/schema/Contact/SubscriptionHistory.entityType.php
new file mode 100644
index 000000000..fa764eca5
--- /dev/null
+++ b/www/modules/civicrm/schema/Contact/SubscriptionHistory.entityType.php
@@ -0,0 +1,111 @@
+ 'SubscriptionHistory',
+ 'table' => 'civicrm_subscription_history',
+ 'class' => 'CRM_Contact_DAO_SubscriptionHistory',
+ 'getInfo' => fn() => [
+ 'title' => ts('Subscription History'),
+ 'title_plural' => ts('Subscription Histories'),
+ 'description' => ts('History information of subscribe/unsubscribe actions'),
+ 'log' => TRUE,
+ 'add' => '1.1',
+ ],
+ 'getFields' => fn() => [
+ 'id' => [
+ 'title' => ts('Group Membership History ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'required' => TRUE,
+ 'description' => ts('Internal ID'),
+ 'add' => '1.1',
+ 'primary_key' => TRUE,
+ 'auto_increment' => TRUE,
+ ],
+ 'contact_id' => [
+ 'title' => ts('Contact ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'required' => TRUE,
+ 'description' => ts('Contact ID'),
+ 'add' => '1.1',
+ 'input_attrs' => [
+ 'label' => ts('Contact'),
+ ],
+ 'entity_reference' => [
+ 'entity' => 'Contact',
+ 'key' => 'id',
+ 'on_delete' => 'CASCADE',
+ ],
+ ],
+ 'group_id' => [
+ 'title' => ts('Group ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Select',
+ 'description' => ts('Group ID'),
+ 'add' => '1.1',
+ 'input_attrs' => [
+ 'label' => ts('Group'),
+ ],
+ 'pseudoconstant' => [
+ 'table' => 'civicrm_group',
+ 'key_column' => 'id',
+ 'label_column' => 'title',
+ ],
+ 'entity_reference' => [
+ 'entity' => 'Group',
+ 'key' => 'id',
+ 'on_delete' => 'CASCADE',
+ ],
+ ],
+ 'date' => [
+ 'title' => ts('Group Membership Action Date'),
+ 'sql_type' => 'timestamp',
+ 'input_type' => 'Select Date',
+ 'required' => TRUE,
+ 'description' => ts('Date of the (un)subscription'),
+ 'add' => '1.1',
+ 'default' => 'CURRENT_TIMESTAMP',
+ 'input_attrs' => [
+ 'label' => ts('Group Membership Action Date'),
+ 'format_type' => 'activityDateTime',
+ ],
+ ],
+ 'method' => [
+ 'title' => ts('Group Membership Action'),
+ 'sql_type' => 'varchar(8)',
+ 'input_type' => 'Select',
+ 'description' => ts('How the (un)subscription was triggered'),
+ 'add' => '1.1',
+ 'input_attrs' => [
+ 'maxlength' => 8,
+ ],
+ 'pseudoconstant' => [
+ 'callback' => 'CRM_Core_SelectValues::getSubscriptionHistoryMethods',
+ ],
+ ],
+ 'status' => [
+ 'title' => ts('Group Membership Status'),
+ 'sql_type' => 'varchar(8)',
+ 'input_type' => 'Select',
+ 'description' => ts('The state of the contact within the group'),
+ 'add' => '1.1',
+ 'input_attrs' => [
+ 'maxlength' => 8,
+ ],
+ 'pseudoconstant' => [
+ 'callback' => 'CRM_Core_SelectValues::groupContactStatus',
+ ],
+ ],
+ 'tracking' => [
+ 'title' => ts('Group Membership Tracking'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'description' => ts('IP address or other tracking info'),
+ 'add' => '1.1',
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ ],
+];
diff --git a/www/modules/civicrm/schema/Contribute/Contribution.entityType.php b/www/modules/civicrm/schema/Contribute/Contribution.entityType.php
new file mode 100644
index 000000000..49712fc05
--- /dev/null
+++ b/www/modules/civicrm/schema/Contribute/Contribution.entityType.php
@@ -0,0 +1,606 @@
+ 'Contribution',
+ 'table' => 'civicrm_contribution',
+ 'class' => 'CRM_Contribute_DAO_Contribution',
+ 'getInfo' => fn() => [
+ 'title' => ts('Contribution'),
+ 'title_plural' => ts('Contributions'),
+ 'description' => ts('Financial records consisting of transactions, line-items, etc.'),
+ 'log' => TRUE,
+ 'add' => '1.3',
+ 'icon' => 'fa-credit-card',
+ ],
+ 'getPaths' => fn() => [
+ 'add' => 'civicrm/contribute/add?reset=1&action=add&context=standalone',
+ 'view' => 'civicrm/contact/view/contribution?reset=1&action=view&id=[id]',
+ 'update' => 'civicrm/contact/view/contribution?reset=1&action=update&id=[id]',
+ 'delete' => 'civicrm/contact/view/contribution?reset=1&action=delete&id=[id]',
+ ],
+ 'getIndices' => fn() => [
+ 'UI_contrib_payment_instrument_id' => [
+ 'fields' => [
+ 'payment_instrument_id' => TRUE,
+ ],
+ 'add' => '1.6',
+ ],
+ 'index_total_amount_receive_date' => [
+ 'fields' => [
+ 'total_amount' => TRUE,
+ 'receive_date' => TRUE,
+ ],
+ 'add' => '4.7',
+ ],
+ 'index_source' => [
+ 'fields' => [
+ 'source' => TRUE,
+ ],
+ 'add' => '4.7',
+ ],
+ 'UI_contrib_trxn_id' => [
+ 'fields' => [
+ 'trxn_id' => TRUE,
+ ],
+ 'unique' => TRUE,
+ 'add' => '2.1',
+ ],
+ 'UI_contrib_invoice_id' => [
+ 'fields' => [
+ 'invoice_id' => TRUE,
+ ],
+ 'unique' => TRUE,
+ 'add' => '2.1',
+ ],
+ 'index_contribution_status' => [
+ 'fields' => [
+ 'contribution_status_id' => TRUE,
+ ],
+ 'add' => '1.6',
+ ],
+ 'received_date' => [
+ 'fields' => [
+ 'receive_date' => TRUE,
+ ],
+ 'add' => '1.6',
+ ],
+ 'check_number' => [
+ 'fields' => [
+ 'check_number' => TRUE,
+ ],
+ 'add' => '2.2',
+ ],
+ 'index_creditnote_id' => [
+ 'fields' => [
+ 'creditnote_id' => TRUE,
+ ],
+ 'add' => '4.7',
+ ],
+ ],
+ 'getFields' => fn() => [
+ 'id' => [
+ 'title' => ts('Contribution ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'required' => TRUE,
+ 'description' => ts('Contribution ID'),
+ 'add' => '1.3',
+ 'unique_name' => 'contribution_id',
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ 'primary_key' => TRUE,
+ 'auto_increment' => TRUE,
+ ],
+ 'contact_id' => [
+ 'title' => ts('Contact ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'required' => TRUE,
+ 'description' => ts('FK to Contact ID'),
+ 'add' => '1.3',
+ 'unique_name' => 'contribution_contact_id',
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ 'input_attrs' => [
+ 'label' => ts('Contact'),
+ ],
+ 'entity_reference' => [
+ 'entity' => 'Contact',
+ 'key' => 'id',
+ 'on_delete' => 'CASCADE',
+ ],
+ ],
+ 'financial_type_id' => [
+ 'title' => ts('Financial Type ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Select',
+ 'description' => ts('FK to Financial Type for (total_amount - non_deductible_amount).'),
+ 'add' => '4.3',
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ 'input_attrs' => [
+ 'label' => ts('Financial Type'),
+ ],
+ 'pseudoconstant' => [
+ 'table' => 'civicrm_financial_type',
+ 'key_column' => 'id',
+ 'label_column' => 'name',
+ ],
+ 'entity_reference' => [
+ 'entity' => 'FinancialType',
+ 'key' => 'id',
+ ],
+ ],
+ 'contribution_page_id' => [
+ 'title' => ts('Contribution Page ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Select',
+ 'description' => ts('The Contribution Page which triggered this contribution'),
+ 'add' => '1.5',
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ 'input_attrs' => [
+ 'label' => ts('Contribution Page'),
+ ],
+ 'pseudoconstant' => [
+ 'table' => 'civicrm_contribution_page',
+ 'key_column' => 'id',
+ 'name_column' => 'name',
+ 'label_column' => 'title',
+ ],
+ 'entity_reference' => [
+ 'entity' => 'ContributionPage',
+ 'key' => 'id',
+ 'on_delete' => 'SET NULL',
+ ],
+ ],
+ 'payment_instrument_id' => [
+ 'title' => ts('Payment Method ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Select',
+ 'description' => ts('FK to Payment Instrument'),
+ 'add' => '1.3',
+ 'unique_name' => 'payment_instrument_id',
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ 'input_attrs' => [
+ 'label' => ts('Payment Method'),
+ ],
+ 'pseudoconstant' => [
+ 'option_group_name' => 'payment_instrument',
+ ],
+ ],
+ 'receive_date' => [
+ 'title' => ts('Contribution Date'),
+ 'sql_type' => 'datetime',
+ 'input_type' => 'Select Date',
+ 'add' => '1.3',
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ 'input_attrs' => [
+ 'format_type' => 'activityDateTime',
+ ],
+ ],
+ 'non_deductible_amount' => [
+ 'title' => ts('Non-deductible Amount'),
+ 'sql_type' => 'decimal(20,2)',
+ 'input_type' => 'Text',
+ 'description' => ts('Portion of total amount which is NOT tax deductible. Equal to total_amount for non-deductible financial types.'),
+ 'add' => '1.3',
+ 'default' => '0',
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ ],
+ 'total_amount' => [
+ 'title' => ts('Total Amount'),
+ 'sql_type' => 'decimal(20,2)',
+ 'input_type' => 'Text',
+ 'required' => TRUE,
+ 'description' => ts('Total amount of this contribution. Use market value for non-monetary gifts.'),
+ 'add' => '1.3',
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ 'input_attrs' => [
+ 'label' => ts('Total Amount'),
+ ],
+ ],
+ 'fee_amount' => [
+ 'title' => ts('Fee Amount'),
+ 'sql_type' => 'decimal(20,2)',
+ 'input_type' => 'Text',
+ 'description' => ts('actual processor fee if known - may be 0.'),
+ 'add' => '1.3',
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ 'input_attrs' => [
+ 'label' => ts('Fee Amount'),
+ ],
+ ],
+ 'net_amount' => [
+ 'title' => ts('Net Amount'),
+ 'sql_type' => 'decimal(20,2)',
+ 'input_type' => 'Text',
+ 'description' => ts('actual funds transfer amount. total less fees. if processor does not report actual fee during transaction, this is set to total_amount.'),
+ 'add' => '1.3',
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ 'input_attrs' => [
+ 'label' => ts('Net Amount'),
+ ],
+ ],
+ 'trxn_id' => [
+ 'title' => ts('Transaction ID'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'readonly' => TRUE,
+ 'description' => ts('unique transaction id. may be processor id, bank id + trans id, or account number + check number... depending on payment_method'),
+ 'add' => '1.3',
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'invoice_id' => [
+ 'title' => ts('Invoice Reference'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'readonly' => TRUE,
+ 'description' => ts('unique invoice id, system generated or passed in'),
+ 'add' => '1.3',
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'invoice_number' => [
+ 'title' => ts('Invoice Number'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'description' => ts('Human readable invoice number'),
+ 'add' => '4.7',
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'currency' => [
+ 'title' => ts('Currency'),
+ 'sql_type' => 'varchar(3)',
+ 'input_type' => 'Select',
+ 'description' => ts('3 character string, value from config setting or input via user.'),
+ 'add' => '1.3',
+ 'default' => NULL,
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ 'input_attrs' => [
+ 'label' => ts('Currency'),
+ 'maxlength' => 3,
+ ],
+ 'pseudoconstant' => [
+ 'table' => 'civicrm_currency',
+ 'key_column' => 'name',
+ 'label_column' => 'full_name',
+ 'name_column' => 'name',
+ 'abbr_column' => 'symbol',
+ ],
+ ],
+ 'cancel_date' => [
+ 'title' => ts('Cancelled / Refunded Date'),
+ 'sql_type' => 'datetime',
+ 'input_type' => 'Select Date',
+ 'description' => ts('when was gift cancelled'),
+ 'add' => '1.3',
+ 'unique_name' => 'contribution_cancel_date',
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ 'input_attrs' => [
+ 'format_type' => 'activityDateTime',
+ ],
+ ],
+ 'cancel_reason' => [
+ 'title' => ts('Cancellation / Refund Reason'),
+ 'sql_type' => 'text',
+ 'input_type' => 'Text',
+ 'add' => '1.3',
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ 'input_attrs' => [
+ 'size' => '40',
+ ],
+ ],
+ 'receipt_date' => [
+ 'title' => ts('Receipt Date'),
+ 'sql_type' => 'datetime',
+ 'input_type' => 'Select Date',
+ 'description' => ts('when (if) receipt was sent. populated automatically for online donations w/ automatic receipting'),
+ 'add' => '1.3',
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ 'input_attrs' => [
+ 'format_type' => 'activityDateTime',
+ 'label' => ts('Receipt Date'),
+ ],
+ ],
+ 'thankyou_date' => [
+ 'title' => ts('Thank-you Date'),
+ 'sql_type' => 'datetime',
+ 'input_type' => 'Select Date',
+ 'description' => ts('when (if) was donor thanked'),
+ 'add' => '1.3',
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ 'input_attrs' => [
+ 'format_type' => 'activityDateTime',
+ ],
+ ],
+ 'source' => [
+ 'title' => ts('Contribution Source'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'description' => ts('Origin of this Contribution.'),
+ 'add' => '1.3',
+ 'unique_name' => 'contribution_source',
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'amount_level' => [
+ 'title' => ts('Amount Label'),
+ 'sql_type' => 'text',
+ 'input_type' => 'Text',
+ 'add' => '1.7',
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ ],
+ 'contribution_recur_id' => [
+ 'title' => ts('Recurring Contribution ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'readonly' => TRUE,
+ 'description' => ts('Conditional foreign key to civicrm_contribution_recur id. Each contribution made in connection with a recurring contribution carries a foreign key to the recurring contribution record. This assumes we can track these processor initiated events.'),
+ 'add' => '1.4',
+ 'usage' => [
+ 'export',
+ ],
+ 'input_attrs' => [
+ 'label' => ts('Recurring Contribution'),
+ ],
+ 'entity_reference' => [
+ 'entity' => 'ContributionRecur',
+ 'key' => 'id',
+ 'on_delete' => 'SET NULL',
+ ],
+ ],
+ 'is_test' => [
+ 'title' => ts('Test'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'default' => FALSE,
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ ],
+ 'is_pay_later' => [
+ 'title' => ts('Is Pay Later'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'add' => '2.1',
+ 'default' => FALSE,
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ ],
+ 'contribution_status_id' => [
+ 'title' => ts('Contribution Status ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Select',
+ 'add' => '1.6',
+ 'default' => 1,
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ 'input_attrs' => [
+ 'label' => ts('Contribution Status'),
+ ],
+ 'pseudoconstant' => [
+ 'option_group_name' => 'contribution_status',
+ ],
+ ],
+ 'address_id' => [
+ 'title' => ts('Address ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'description' => ts('Conditional foreign key to civicrm_address.id. We insert an address record for each contribution when we have associated billing name and address data.'),
+ 'add' => '2.2',
+ 'unique_name' => 'contribution_address_id',
+ 'usage' => [
+ 'export',
+ ],
+ 'input_attrs' => [
+ 'label' => ts('Address'),
+ ],
+ 'entity_reference' => [
+ 'entity' => 'Address',
+ 'key' => 'id',
+ 'on_delete' => 'SET NULL',
+ ],
+ ],
+ 'check_number' => [
+ 'title' => ts('Check Number'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'add' => '2.2',
+ 'unique_name' => 'contribution_check_number',
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ 'input_attrs' => [
+ 'size' => '6',
+ 'maxlength' => 255,
+ ],
+ ],
+ 'campaign_id' => [
+ 'title' => ts('Campaign ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'description' => ts('The campaign for which this contribution has been triggered.'),
+ 'add' => '3.4',
+ 'unique_name' => 'contribution_campaign_id',
+ 'component' => 'CiviCampaign',
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ 'input_attrs' => [
+ 'label' => ts('Campaign'),
+ ],
+ 'pseudoconstant' => [
+ 'table' => 'civicrm_campaign',
+ 'key_column' => 'id',
+ 'label_column' => 'title',
+ 'prefetch' => 'disabled',
+ ],
+ 'entity_reference' => [
+ 'entity' => 'Campaign',
+ 'key' => 'id',
+ 'on_delete' => 'SET NULL',
+ ],
+ ],
+ 'creditnote_id' => [
+ 'title' => ts('Credit Note ID'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'description' => ts('unique credit note id, system generated or passed in'),
+ 'add' => '4.6',
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'tax_amount' => [
+ 'title' => ts('Tax Amount'),
+ 'sql_type' => 'decimal(20,2)',
+ 'input_type' => 'Text',
+ 'required' => TRUE,
+ 'description' => ts('Total tax amount of this contribution.'),
+ 'add' => '4.6',
+ 'default' => '0',
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ ],
+ 'revenue_recognition_date' => [
+ 'title' => ts('Revenue Recognition Date'),
+ 'sql_type' => 'datetime',
+ 'input_type' => 'Select Date',
+ 'description' => ts('Stores the date when revenue should be recognized.'),
+ 'add' => '4.7',
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ 'input_attrs' => [
+ 'format_type' => 'activityDateTime',
+ 'label' => ts('Revenue Recognition Date'),
+ ],
+ ],
+ 'is_template' => [
+ 'title' => ts('Is a Template Contribution'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'readonly' => TRUE,
+ 'description' => ts('Shows this is a template for recurring contributions.'),
+ 'add' => '5.20',
+ 'default' => FALSE,
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ ],
+ ],
+];
diff --git a/www/modules/civicrm/schema/Contribute/ContributionPage.entityType.php b/www/modules/civicrm/schema/Contribute/ContributionPage.entityType.php
new file mode 100644
index 000000000..23165b3d2
--- /dev/null
+++ b/www/modules/civicrm/schema/Contribute/ContributionPage.entityType.php
@@ -0,0 +1,538 @@
+ 'ContributionPage',
+ 'table' => 'civicrm_contribution_page',
+ 'class' => 'CRM_Contribute_DAO_ContributionPage',
+ 'getInfo' => fn() => [
+ 'title' => ts('Contribution Page'),
+ 'title_plural' => ts('Contribution Pages'),
+ 'description' => ts('A Contribution object store meta information about a single customized contribution page'),
+ 'log' => TRUE,
+ 'add' => '1.3',
+ 'label_field' => 'title',
+ ],
+ 'getPaths' => fn() => [
+ 'add' => 'civicrm/admin/contribute/add?reset=1&action=add',
+ 'update' => 'civicrm/admin/contribute/settings?reset=1&action=update&id=[id]',
+ 'delete' => 'civicrm/admin/contribute/manage?reset=1&action=delete&id=[id]',
+ 'browse' => 'civicrm/admin/contribute',
+ ],
+ 'getIndices' => fn() => [
+ 'UI_name' => [
+ 'fields' => [
+ 'name' => TRUE,
+ ],
+ 'unique' => TRUE,
+ 'add' => '2.1',
+ ],
+ ],
+ 'getFields' => fn() => [
+ 'id' => [
+ 'title' => ts('Contribution Page ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'required' => TRUE,
+ 'description' => ts('Contribution ID'),
+ 'add' => '1.3',
+ 'primary_key' => TRUE,
+ 'auto_increment' => TRUE,
+ ],
+ 'title' => [
+ 'title' => ts('Page Name'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'required' => TRUE,
+ 'localizable' => TRUE,
+ 'description' => ts('Contribution Page title. For top of page display'),
+ 'add' => '1.3',
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'frontend_title' => [
+ 'title' => ts('Public Title'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'required' => TRUE,
+ 'localizable' => TRUE,
+ 'description' => ts('Contribution Page Public title'),
+ 'add' => '5.20',
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'name' => [
+ 'title' => ts('Unique Name'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'required' => TRUE,
+ 'description' => ts('Unique name for identifying contribution page'),
+ 'add' => '5.63',
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'intro_text' => [
+ 'title' => ts('Contribution Page Introduction Text'),
+ 'sql_type' => 'text',
+ 'input_type' => 'RichTextEditor',
+ 'localizable' => TRUE,
+ 'description' => ts('Text and html allowed. Displayed below title.'),
+ 'add' => '1.3',
+ 'input_attrs' => [
+ 'rows' => 6,
+ 'cols' => 50,
+ ],
+ ],
+ 'financial_type_id' => [
+ 'title' => ts('Financial Type ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Select',
+ 'description' => ts('default financial type assigned to contributions submitted via this page, e.g. Contribution, Campaign Contribution'),
+ 'add' => '4.3',
+ 'input_attrs' => [
+ 'label' => ts('Financial Type'),
+ ],
+ 'pseudoconstant' => [
+ 'table' => 'civicrm_financial_type',
+ 'key_column' => 'id',
+ 'label_column' => 'name',
+ ],
+ 'entity_reference' => [
+ 'entity' => 'FinancialType',
+ 'key' => 'id',
+ ],
+ ],
+ 'payment_processor' => [
+ 'title' => ts('Payment Processor'),
+ 'sql_type' => 'varchar(128)',
+ 'input_type' => 'Select',
+ 'description' => ts('Payment Processors configured for this contribution Page'),
+ 'add' => '1.8',
+ 'serialize' => CRM_Core_DAO::SERIALIZE_SEPARATOR_TRIMMED,
+ 'input_attrs' => [
+ 'label' => ts('Payment Processors'),
+ 'maxlength' => 128,
+ ],
+ 'pseudoconstant' => [
+ 'table' => 'civicrm_payment_processor',
+ 'key_column' => 'id',
+ 'label_column' => 'name',
+ ],
+ ],
+ 'is_credit_card_only' => [
+ 'title' => ts('Is Credit Card Only?'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('if true - processing logic must reject transaction at confirmation stage if pay method != credit card'),
+ 'add' => '1.3',
+ 'default' => FALSE,
+ ],
+ 'is_monetary' => [
+ 'title' => ts('Is Monetary'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('if true - allows real-time monetary transactions otherwise non-monetary transactions'),
+ 'add' => '1.6',
+ 'default' => TRUE,
+ ],
+ 'is_recur' => [
+ 'title' => ts('Is Recurring'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('if true - allows recurring contributions, valid only for PayPal_Standard'),
+ 'add' => '1.6',
+ 'default' => FALSE,
+ ],
+ 'is_confirm_enabled' => [
+ 'title' => ts('Confirmation Page?'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('if FALSE, the confirm page in contribution pages gets skipped'),
+ 'add' => '4.2',
+ 'default' => TRUE,
+ ],
+ 'recur_frequency_unit' => [
+ 'title' => ts('Recurring Frequency'),
+ 'sql_type' => 'varchar(128)',
+ 'input_type' => 'Select',
+ 'description' => ts('Supported recurring frequency units.'),
+ 'add' => '2.1',
+ 'serialize' => CRM_Core_DAO::SERIALIZE_SEPARATOR_TRIMMED,
+ 'input_attrs' => [
+ 'multiple' => '1',
+ 'maxlength' => 128,
+ ],
+ 'pseudoconstant' => [
+ 'option_group_name' => 'recur_frequency_units',
+ 'key_column' => 'name',
+ ],
+ ],
+ 'is_recur_interval' => [
+ 'title' => ts('Support Recurring Intervals'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('if true - supports recurring intervals'),
+ 'add' => '2.1',
+ 'default' => FALSE,
+ ],
+ 'is_recur_installments' => [
+ 'title' => ts('Recurring Installments?'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('if true - asks user for recurring installments'),
+ 'add' => '4.3',
+ 'default' => FALSE,
+ ],
+ 'adjust_recur_start_date' => [
+ 'title' => ts('Adjust Recurring Start Date'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('if true - user is able to adjust payment start date'),
+ 'add' => '4.7',
+ 'default' => FALSE,
+ ],
+ 'is_pay_later' => [
+ 'title' => ts('Pay Later'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('if true - allows the user to send payment directly to the org later'),
+ 'add' => '2.0',
+ 'default' => FALSE,
+ ],
+ 'pay_later_text' => [
+ 'title' => ts('Pay Later Text'),
+ 'sql_type' => 'text',
+ 'input_type' => 'TextArea',
+ 'localizable' => TRUE,
+ 'description' => ts('The text displayed to the user in the main form'),
+ 'add' => '2.0',
+ ],
+ 'pay_later_receipt' => [
+ 'title' => ts('Pay Later Receipt'),
+ 'sql_type' => 'text',
+ 'input_type' => 'RichTextEditor',
+ 'localizable' => TRUE,
+ 'description' => ts('The receipt sent to the user instead of the normal receipt text'),
+ 'add' => '2.0',
+ 'input_attrs' => [
+ 'rows' => 8,
+ 'cols' => 60,
+ ],
+ ],
+ 'is_partial_payment' => [
+ 'title' => ts('Allow Partial Payment'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'description' => ts('is partial payment enabled for this online contribution page'),
+ 'add' => '4.3',
+ 'default' => FALSE,
+ ],
+ 'initial_amount_label' => [
+ 'title' => ts('Initial Amount Label'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'localizable' => TRUE,
+ 'description' => ts('Initial amount label for partial payment'),
+ 'add' => '4.3',
+ 'input_attrs' => [
+ 'label' => ts('Initial Amount Label'),
+ 'maxlength' => 255,
+ ],
+ ],
+ 'initial_amount_help_text' => [
+ 'title' => ts('Initial Amount Help Text'),
+ 'sql_type' => 'text',
+ 'input_type' => 'TextArea',
+ 'localizable' => TRUE,
+ 'description' => ts('Initial amount help text for partial payment'),
+ 'add' => '4.3',
+ 'input_attrs' => [
+ 'label' => ts('Initial Amount Help Text'),
+ ],
+ ],
+ 'min_initial_amount' => [
+ 'title' => ts('Min Initial Amount'),
+ 'sql_type' => 'decimal(20,2)',
+ 'input_type' => NULL,
+ 'description' => ts('Minimum initial amount for partial payment'),
+ 'add' => '4.3',
+ 'input_attrs' => [
+ 'label' => ts('Min. Initial Amount'),
+ ],
+ ],
+ 'is_allow_other_amount' => [
+ 'title' => ts('Allow Other Amounts'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('if TRUE, page will include an input text field where user can enter their own amount'),
+ 'add' => '1.3',
+ 'default' => FALSE,
+ ],
+ 'default_amount_id' => [
+ 'title' => ts('Default Amount'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'description' => ts('FK to civicrm_option_value.'),
+ 'add' => '1.7',
+ ],
+ 'min_amount' => [
+ 'title' => ts('Minimum Amount'),
+ 'sql_type' => 'decimal(20,2)',
+ 'input_type' => NULL,
+ 'description' => ts('if other amounts allowed, user can configure minimum allowed.'),
+ 'add' => '1.3',
+ ],
+ 'max_amount' => [
+ 'title' => ts('Maximum Amount'),
+ 'sql_type' => 'decimal(20,2)',
+ 'input_type' => NULL,
+ 'description' => ts('if other amounts allowed, user can configure maximum allowed.'),
+ 'add' => '1.3',
+ ],
+ 'goal_amount' => [
+ 'title' => ts('Goal Amount'),
+ 'sql_type' => 'decimal(20,2)',
+ 'input_type' => NULL,
+ 'description' => ts('The target goal for this page, allows people to build a goal meter'),
+ 'add' => '1.5',
+ 'input_attrs' => [
+ 'label' => ts('Goal Amount'),
+ ],
+ ],
+ 'thankyou_title' => [
+ 'title' => ts('Thank-you Title'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'localizable' => TRUE,
+ 'description' => ts('Title for Thank-you page (header title tag, and display at the top of the page).'),
+ 'add' => '1.3',
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'thankyou_text' => [
+ 'title' => ts('Thank-you Text'),
+ 'sql_type' => 'text',
+ 'input_type' => 'RichTextEditor',
+ 'localizable' => TRUE,
+ 'description' => ts('text and html allowed. displayed above result on success page'),
+ 'add' => '1.3',
+ 'input_attrs' => [
+ 'rows' => 8,
+ 'cols' => 60,
+ ],
+ ],
+ 'thankyou_footer' => [
+ 'title' => ts('Thank-you Footer'),
+ 'sql_type' => 'text',
+ 'input_type' => 'RichTextEditor',
+ 'localizable' => TRUE,
+ 'description' => ts('Text and html allowed. displayed at the bottom of the success page. Common usage is to include link(s) to other pages such as tell-a-friend, etc.'),
+ 'add' => '1.3',
+ 'input_attrs' => [
+ 'rows' => 8,
+ 'cols' => 60,
+ ],
+ ],
+ 'is_email_receipt' => [
+ 'title' => ts('Send email Receipt'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('if TRUE, receipt is automatically emailed to contact on success'),
+ 'add' => '1.3',
+ 'default' => FALSE,
+ ],
+ 'receipt_from_name' => [
+ 'title' => ts('Receipt From'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'localizable' => TRUE,
+ 'description' => ts('FROM email name used for receipts generated by contributions to this contribution page.'),
+ 'add' => '1.3',
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'receipt_from_email' => [
+ 'title' => ts('Receipt From email'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'description' => ts('FROM email address used for receipts generated by contributions to this contribution page.'),
+ 'add' => '1.3',
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'cc_receipt' => [
+ 'title' => ts('Receipt cc'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'description' => ts('comma-separated list of email addresses to cc each time a receipt is sent'),
+ 'add' => '1.3',
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'bcc_receipt' => [
+ 'title' => ts('Receipt bcc'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'description' => ts('comma-separated list of email addresses to bcc each time a receipt is sent'),
+ 'add' => '1.3',
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'receipt_text' => [
+ 'title' => ts('Receipt Text'),
+ 'sql_type' => 'text',
+ 'input_type' => 'TextArea',
+ 'localizable' => TRUE,
+ 'description' => ts('text to include above standard receipt info on receipt email. emails are text-only, so do not allow html for now'),
+ 'add' => '1.3',
+ 'input_attrs' => [
+ 'rows' => 6,
+ 'cols' => 50,
+ ],
+ ],
+ 'is_active' => [
+ 'title' => ts('Is Page Active?'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('Is this page active?'),
+ 'add' => '1.3',
+ 'default' => TRUE,
+ 'input_attrs' => [
+ 'label' => ts('Enabled'),
+ ],
+ ],
+ 'footer_text' => [
+ 'title' => ts('Footer Text'),
+ 'sql_type' => 'text',
+ 'input_type' => 'RichTextEditor',
+ 'localizable' => TRUE,
+ 'description' => ts('Text and html allowed. Displayed at the bottom of the first page of the contribution wizard.'),
+ 'add' => '1.4',
+ 'input_attrs' => [
+ 'rows' => 6,
+ 'cols' => 50,
+ ],
+ ],
+ 'amount_block_is_active' => [
+ 'title' => ts('Is Amount Block Active?'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('Is this property active?'),
+ 'add' => '1.5',
+ 'default' => TRUE,
+ ],
+ 'start_date' => [
+ 'title' => ts('Contribution Page Start Date'),
+ 'sql_type' => 'datetime',
+ 'input_type' => 'Select Date',
+ 'description' => ts('Date and time that this page starts.'),
+ 'add' => '1.8',
+ ],
+ 'end_date' => [
+ 'title' => ts('Contribution Page End Date'),
+ 'sql_type' => 'datetime',
+ 'input_type' => 'Select Date',
+ 'description' => ts('Date and time that this page ends. May be NULL if no defined end date/time'),
+ 'add' => '1.8',
+ ],
+ 'created_id' => [
+ 'title' => ts('Created By Contact ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'description' => ts('FK to civicrm_contact, who created this contribution page'),
+ 'add' => '3.0',
+ 'input_attrs' => [
+ 'label' => ts('Created By'),
+ ],
+ 'entity_reference' => [
+ 'entity' => 'Contact',
+ 'key' => 'id',
+ 'on_delete' => 'SET NULL',
+ ],
+ ],
+ 'created_date' => [
+ 'title' => ts('Contribution Page Created Date'),
+ 'sql_type' => 'datetime',
+ 'input_type' => 'Select Date',
+ 'description' => ts('Date and time that contribution page was created.'),
+ 'add' => '3.0',
+ ],
+ 'currency' => [
+ 'title' => ts('Contribution Page Currency'),
+ 'sql_type' => 'varchar(3)',
+ 'input_type' => 'Select',
+ 'description' => ts('3 character string, value from config setting or input via user.'),
+ 'add' => '3.3',
+ 'default' => NULL,
+ 'input_attrs' => [
+ 'maxlength' => 3,
+ ],
+ 'pseudoconstant' => [
+ 'table' => 'civicrm_currency',
+ 'key_column' => 'name',
+ 'label_column' => 'full_name',
+ 'name_column' => 'name',
+ 'abbr_column' => 'symbol',
+ ],
+ ],
+ 'campaign_id' => [
+ 'title' => ts('Campaign ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'description' => ts('The campaign for which we are collecting contributions with this page.'),
+ 'add' => '3.4',
+ 'component' => 'CiviCampaign',
+ 'input_attrs' => [
+ 'label' => ts('Campaign'),
+ ],
+ 'pseudoconstant' => [
+ 'table' => 'civicrm_campaign',
+ 'key_column' => 'id',
+ 'label_column' => 'title',
+ 'prefetch' => 'disabled',
+ ],
+ 'entity_reference' => [
+ 'entity' => 'Campaign',
+ 'key' => 'id',
+ 'on_delete' => 'SET NULL',
+ ],
+ ],
+ 'is_share' => [
+ 'title' => ts('Is Contribution Page Shared?'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('Can people share the contribution page through social media?'),
+ 'add' => '4.1',
+ 'default' => TRUE,
+ ],
+ 'is_billing_required' => [
+ 'title' => ts('Is billing block required'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('if true - billing block is required for online contribution page'),
+ 'add' => '4.6',
+ 'default' => FALSE,
+ ],
+ ],
+];
diff --git a/www/modules/civicrm/schema/Contribute/ContributionProduct.entityType.php b/www/modules/civicrm/schema/Contribute/ContributionProduct.entityType.php
new file mode 100644
index 000000000..caedaa78b
--- /dev/null
+++ b/www/modules/civicrm/schema/Contribute/ContributionProduct.entityType.php
@@ -0,0 +1,136 @@
+ 'ContributionProduct',
+ 'table' => 'civicrm_contribution_product',
+ 'class' => 'CRM_Contribute_DAO_ContributionProduct',
+ 'getInfo' => fn() => [
+ 'title' => ts('Contribution Product'),
+ 'title_plural' => ts('Contribution Products'),
+ 'description' => ts('FIXME'),
+ 'log' => TRUE,
+ 'add' => '1.4',
+ ],
+ 'getFields' => fn() => [
+ 'id' => [
+ 'title' => ts('Contribution Product ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'required' => TRUE,
+ 'add' => '1.4',
+ 'primary_key' => TRUE,
+ 'auto_increment' => TRUE,
+ ],
+ 'product_id' => [
+ 'title' => ts('Product ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'required' => TRUE,
+ 'add' => '1.4',
+ 'entity_reference' => [
+ 'entity' => 'Product',
+ 'key' => 'id',
+ 'on_delete' => 'CASCADE',
+ ],
+ ],
+ 'contribution_id' => [
+ 'title' => ts('Contribution ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'required' => TRUE,
+ 'add' => '1.4',
+ 'input_attrs' => [
+ 'label' => ts('Contribution'),
+ ],
+ 'entity_reference' => [
+ 'entity' => 'Contribution',
+ 'key' => 'id',
+ 'on_delete' => 'CASCADE',
+ ],
+ ],
+ 'product_option' => [
+ 'title' => ts('Product Option'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'description' => ts('Option value selected if applicable - e.g. color, size etc.'),
+ 'add' => '1.4',
+ 'usage' => [
+ 'export',
+ ],
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'quantity' => [
+ 'title' => ts('Quantity'),
+ 'sql_type' => 'int',
+ 'input_type' => 'Number',
+ 'add' => '1.4',
+ 'usage' => [
+ 'export',
+ ],
+ ],
+ 'fulfilled_date' => [
+ 'title' => ts('Fulfilled Date'),
+ 'sql_type' => 'date',
+ 'input_type' => 'Select Date',
+ 'description' => ts('Optional. Can be used to record the date this product was fulfilled or shipped.'),
+ 'add' => '1.4',
+ 'usage' => [
+ 'export',
+ ],
+ 'input_attrs' => [
+ 'format_type' => 'activityDate',
+ ],
+ ],
+ 'start_date' => [
+ 'title' => ts('Start date for premium'),
+ 'sql_type' => 'date',
+ 'input_type' => 'Select Date',
+ 'description' => ts('Actual start date for a time-delimited premium (subscription, service or membership)'),
+ 'add' => '1.4',
+ 'unique_name' => 'contribution_start_date',
+ 'usage' => [
+ 'export',
+ ],
+ ],
+ 'end_date' => [
+ 'title' => ts('End date for premium'),
+ 'sql_type' => 'date',
+ 'input_type' => 'Select Date',
+ 'description' => ts('Actual end date for a time-delimited premium (subscription, service or membership)'),
+ 'add' => '1.4',
+ 'unique_name' => 'contribution_end_date',
+ 'usage' => [
+ 'export',
+ ],
+ ],
+ 'comment' => [
+ 'title' => ts('Premium comment'),
+ 'sql_type' => 'text',
+ 'input_type' => 'TextArea',
+ 'add' => '1.4',
+ ],
+ 'financial_type_id' => [
+ 'title' => ts('Financial Type ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'description' => ts('FK to Financial Type(for membership price sets only).'),
+ 'add' => '4.3',
+ 'default' => NULL,
+ 'input_attrs' => [
+ 'label' => ts('Financial Type'),
+ ],
+ 'pseudoconstant' => [
+ 'table' => 'civicrm_financial_type',
+ 'key_column' => 'id',
+ 'label_column' => 'name',
+ ],
+ 'entity_reference' => [
+ 'entity' => 'FinancialType',
+ 'key' => 'id',
+ 'on_delete' => 'SET NULL',
+ ],
+ ],
+ ],
+];
diff --git a/www/modules/civicrm/schema/Contribute/ContributionRecur.entityType.php b/www/modules/civicrm/schema/Contribute/ContributionRecur.entityType.php
new file mode 100644
index 000000000..676f4b45c
--- /dev/null
+++ b/www/modules/civicrm/schema/Contribute/ContributionRecur.entityType.php
@@ -0,0 +1,419 @@
+ 'ContributionRecur',
+ 'table' => 'civicrm_contribution_recur',
+ 'class' => 'CRM_Contribute_DAO_ContributionRecur',
+ 'getInfo' => fn() => [
+ 'title' => ts('Recurring Contribution'),
+ 'title_plural' => ts('Recurring Contributions'),
+ 'description' => ts('FIXME'),
+ 'log' => TRUE,
+ 'add' => '1.6',
+ ],
+ 'getIndices' => fn() => [
+ 'UI_contrib_trxn_id' => [
+ 'fields' => [
+ 'trxn_id' => TRUE,
+ ],
+ 'unique' => TRUE,
+ 'add' => '2.1',
+ ],
+ 'UI_contrib_invoice_id' => [
+ 'fields' => [
+ 'invoice_id' => TRUE,
+ ],
+ 'unique' => TRUE,
+ 'add' => '2.1',
+ ],
+ 'index_contribution_status' => [
+ 'fields' => [
+ 'contribution_status_id' => TRUE,
+ ],
+ 'add' => '1.6',
+ ],
+ 'UI_contribution_recur_payment_instrument_id' => [
+ 'fields' => [
+ 'payment_instrument_id' => TRUE,
+ ],
+ 'add' => '4.1',
+ ],
+ ],
+ 'getFields' => fn() => [
+ 'id' => [
+ 'title' => ts('Recurring Contribution ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'required' => TRUE,
+ 'description' => ts('Contribution Recur ID'),
+ 'add' => '1.6',
+ 'unique_name' => 'contribution_recur_id',
+ 'primary_key' => TRUE,
+ 'auto_increment' => TRUE,
+ ],
+ 'contact_id' => [
+ 'title' => ts('Contact ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'required' => TRUE,
+ 'description' => ts('Foreign key to civicrm_contact.id.'),
+ 'add' => '1.6',
+ 'input_attrs' => [
+ 'label' => ts('Contact'),
+ ],
+ 'entity_reference' => [
+ 'entity' => 'Contact',
+ 'key' => 'id',
+ 'on_delete' => 'CASCADE',
+ ],
+ ],
+ 'amount' => [
+ 'title' => ts('Amount'),
+ 'sql_type' => 'decimal(20,2)',
+ 'input_type' => 'Text',
+ 'required' => TRUE,
+ 'description' => ts('Amount to be collected (including any sales tax) by payment processor each recurrence.'),
+ 'add' => '1.6',
+ ],
+ 'currency' => [
+ 'title' => ts('Currency'),
+ 'sql_type' => 'varchar(3)',
+ 'input_type' => 'Select',
+ 'description' => ts('3 character string, value from config setting or input via user.'),
+ 'add' => '3.2',
+ 'default' => NULL,
+ 'input_attrs' => [
+ 'maxlength' => 3,
+ ],
+ 'pseudoconstant' => [
+ 'table' => 'civicrm_currency',
+ 'key_column' => 'name',
+ 'label_column' => 'full_name',
+ 'name_column' => 'name',
+ 'abbr_column' => 'symbol',
+ ],
+ ],
+ 'frequency_unit' => [
+ 'title' => ts('Frequency Unit'),
+ 'sql_type' => 'varchar(8)',
+ 'input_type' => 'Select',
+ 'description' => ts('Time units for recurrence of payment.'),
+ 'add' => '1.6',
+ 'default' => 'month',
+ 'input_attrs' => [
+ 'maxlength' => 8,
+ ],
+ 'pseudoconstant' => [
+ 'option_group_name' => 'recur_frequency_units',
+ 'key_column' => 'name',
+ ],
+ ],
+ 'frequency_interval' => [
+ 'title' => ts('Interval (number of units)'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Text',
+ 'required' => TRUE,
+ 'description' => ts('Number of time units for recurrence of payment.'),
+ 'add' => '1.6',
+ 'default' => 1,
+ ],
+ 'installments' => [
+ 'title' => ts('Number of Installments'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Text',
+ 'description' => ts('Total number of payments to be made. Set this to 0 if this is an open-ended commitment i.e. no set end date.'),
+ 'add' => '1.6',
+ ],
+ 'start_date' => [
+ 'title' => ts('Start Date'),
+ 'sql_type' => 'datetime',
+ 'input_type' => 'Select Date',
+ 'required' => TRUE,
+ 'description' => ts('The date the first scheduled recurring contribution occurs.'),
+ 'add' => '1.6',
+ 'unique_name' => 'contribution_recur_start_date',
+ 'unique_title' => 'Recurring Contribution Start Date',
+ 'default' => 'CURRENT_TIMESTAMP',
+ 'input_attrs' => [
+ 'format_type' => 'activityDateTime',
+ ],
+ ],
+ 'create_date' => [
+ 'title' => ts('Created Date'),
+ 'sql_type' => 'datetime',
+ 'input_type' => 'Select Date',
+ 'required' => TRUE,
+ 'description' => ts('When this recurring contribution record was created.'),
+ 'add' => '1.6',
+ 'unique_name' => 'contribution_recur_create_date',
+ 'unique_title' => 'Recurring Contribution Create Date',
+ 'default' => 'CURRENT_TIMESTAMP',
+ 'input_attrs' => [
+ 'format_type' => 'activityDateTime',
+ ],
+ ],
+ 'modified_date' => [
+ 'title' => ts('Modified Date'),
+ 'sql_type' => 'timestamp',
+ 'input_type' => 'Select Date',
+ 'readonly' => TRUE,
+ 'description' => ts('Last updated date for this record. mostly the last time a payment was received'),
+ 'add' => '1.6',
+ 'unique_name' => 'contribution_recur_modified_date',
+ 'unique_title' => 'Recurring Contribution Modified Date',
+ 'default' => 'CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP',
+ 'input_attrs' => [
+ 'format_type' => 'activityDateTime',
+ ],
+ ],
+ 'cancel_date' => [
+ 'title' => ts('Cancel Date'),
+ 'sql_type' => 'datetime',
+ 'input_type' => 'Select Date',
+ 'description' => ts('Date this recurring contribution was cancelled by contributor- if we can get access to it'),
+ 'add' => '1.6',
+ 'unique_name' => 'contribution_recur_cancel_date',
+ 'unique_title' => 'Recurring Contribution Cancel Date',
+ 'input_attrs' => [
+ 'format_type' => 'activityDate',
+ ],
+ ],
+ 'cancel_reason' => [
+ 'title' => ts('Cancellation Reason'),
+ 'sql_type' => 'text',
+ 'input_type' => 'Text',
+ 'description' => ts('Free text field for a reason for cancelling'),
+ 'add' => '5.13',
+ 'unique_name' => 'contribution_recur_cancel_reason',
+ 'unique_title' => 'Recurring Contribution Cancel Reason',
+ 'input_attrs' => [
+ 'size' => '40',
+ ],
+ ],
+ 'end_date' => [
+ 'title' => ts('Recurring Contribution End Date'),
+ 'sql_type' => 'datetime',
+ 'input_type' => 'Select Date',
+ 'description' => ts('Date this recurring contribution finished successfully'),
+ 'add' => '1.6',
+ 'unique_name' => 'contribution_recur_end_date',
+ 'unique_title' => 'Recurring Contribution End Date',
+ 'input_attrs' => [
+ 'format_type' => 'activityDate',
+ ],
+ ],
+ 'processor_id' => [
+ 'title' => ts('Processor ID'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'description' => ts('Possibly needed to store a unique identifier for this recurring payment order - if this is available from the processor??'),
+ 'add' => '1.6',
+ 'unique_name' => 'contribution_recur_processor_id',
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'payment_token_id' => [
+ 'title' => ts('Payment Token ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'description' => ts('Optionally used to store a link to a payment token used for this recurring contribution.'),
+ 'add' => '4.6',
+ 'input_attrs' => [
+ 'label' => ts('Payment Token'),
+ ],
+ 'entity_reference' => [
+ 'entity' => 'PaymentToken',
+ 'key' => 'id',
+ 'on_delete' => 'SET NULL',
+ ],
+ ],
+ 'trxn_id' => [
+ 'title' => ts('Transaction ID'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'description' => ts('unique transaction id (deprecated - use processor_id)'),
+ 'add' => '1.6',
+ 'unique_name' => 'contribution_recur_trxn_id',
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'invoice_id' => [
+ 'title' => ts('Invoice ID'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'description' => ts('unique invoice id, system generated or passed in'),
+ 'add' => '1.6',
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'contribution_status_id' => [
+ 'title' => ts('Status'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Select',
+ 'add' => '1.6',
+ 'unique_name' => 'contribution_recur_contribution_status_id',
+ 'default' => 2,
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ 'pseudoconstant' => [
+ 'option_group_name' => 'contribution_recur_status',
+ ],
+ ],
+ 'is_test' => [
+ 'title' => ts('Test'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'default' => FALSE,
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ ],
+ 'cycle_day' => [
+ 'title' => ts('Cycle Day'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Text',
+ 'required' => TRUE,
+ 'description' => ts('Day in the period when the payment should be charged e.g. 1st of month, 15th etc.'),
+ 'add' => '1.6',
+ 'default' => 1,
+ ],
+ 'next_sched_contribution_date' => [
+ 'title' => ts('Next Scheduled Contribution Date'),
+ 'sql_type' => 'datetime',
+ 'input_type' => 'Select Date',
+ 'description' => ts('Next scheduled date'),
+ 'add' => '4.4',
+ 'unique_name' => 'contribution_recur_next_sched_contribution_date',
+ 'unique_title' => 'Next Scheduled Recurring Contribution',
+ 'input_attrs' => [
+ 'format_type' => 'activityDate',
+ ],
+ ],
+ 'failure_count' => [
+ 'title' => ts('Number of Failures'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Text',
+ 'description' => ts('Number of failed charge attempts since last success. Business rule could be set to deactivate on more than x failures.'),
+ 'add' => '1.6',
+ 'default' => 0,
+ ],
+ 'failure_retry_date' => [
+ 'title' => ts('Retry Failed Attempt Date'),
+ 'sql_type' => 'datetime',
+ 'input_type' => 'Select Date',
+ 'description' => ts('Date to retry failed attempt'),
+ 'add' => '1.6',
+ 'unique_name' => 'contribution_recur_failure_retry_date',
+ 'unique_title' => 'Failed Recurring Contribution Retry Date',
+ 'input_attrs' => [
+ 'format_type' => 'activityDate',
+ ],
+ ],
+ 'auto_renew' => [
+ 'title' => ts('Auto Renew'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('Some systems allow contributor to set a number of installments - but then auto-renew the subscription or commitment if they do not cancel.'),
+ 'add' => '1.6',
+ 'default' => FALSE,
+ ],
+ 'payment_processor_id' => [
+ 'title' => ts('Payment Processor ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Select',
+ 'description' => ts('Foreign key to civicrm_payment_processor.id'),
+ 'add' => '3.3',
+ 'unique_name' => 'contribution_recur_payment_processor_id',
+ 'input_attrs' => [
+ 'label' => ts('Payment Processor'),
+ ],
+ 'pseudoconstant' => [
+ 'table' => 'civicrm_payment_processor',
+ 'key_column' => 'id',
+ 'label_column' => 'title',
+ ],
+ 'entity_reference' => [
+ 'entity' => 'PaymentProcessor',
+ 'key' => 'id',
+ 'on_delete' => 'SET NULL',
+ ],
+ ],
+ 'financial_type_id' => [
+ 'title' => ts('Financial Type ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Select',
+ 'description' => ts('FK to Financial Type'),
+ 'add' => '4.3',
+ 'input_attrs' => [
+ 'label' => ts('Financial Type'),
+ ],
+ 'pseudoconstant' => [
+ 'table' => 'civicrm_financial_type',
+ 'key_column' => 'id',
+ 'label_column' => 'name',
+ ],
+ 'entity_reference' => [
+ 'entity' => 'FinancialType',
+ 'key' => 'id',
+ 'on_delete' => 'SET NULL',
+ ],
+ ],
+ 'payment_instrument_id' => [
+ 'title' => ts('Payment Method'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Select',
+ 'description' => ts('FK to Payment Instrument'),
+ 'add' => '4.1',
+ 'pseudoconstant' => [
+ 'option_group_name' => 'payment_instrument',
+ ],
+ ],
+ 'campaign_id' => [
+ 'title' => ts('Campaign ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'description' => ts('The campaign for which this contribution has been triggered.'),
+ 'add' => '4.1',
+ 'unique_name' => 'contribution_campaign_id',
+ 'component' => 'CiviCampaign',
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ 'input_attrs' => [
+ 'label' => ts('Campaign'),
+ ],
+ 'pseudoconstant' => [
+ 'table' => 'civicrm_campaign',
+ 'key_column' => 'id',
+ 'label_column' => 'title',
+ 'prefetch' => 'disabled',
+ ],
+ 'entity_reference' => [
+ 'entity' => 'Campaign',
+ 'key' => 'id',
+ 'on_delete' => 'SET NULL',
+ ],
+ ],
+ 'is_email_receipt' => [
+ 'title' => ts('Send email Receipt?'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('if TRUE, receipt is automatically emailed to contact on each successful payment'),
+ 'add' => '4.1',
+ 'default' => TRUE,
+ ],
+ ],
+];
diff --git a/www/modules/civicrm/schema/Contribute/ContributionSoft.entityType.php b/www/modules/civicrm/schema/Contribute/ContributionSoft.entityType.php
new file mode 100644
index 000000000..a5de9241c
--- /dev/null
+++ b/www/modules/civicrm/schema/Contribute/ContributionSoft.entityType.php
@@ -0,0 +1,169 @@
+ 'ContributionSoft',
+ 'table' => 'civicrm_contribution_soft',
+ 'class' => 'CRM_Contribute_DAO_ContributionSoft',
+ 'getInfo' => fn() => [
+ 'title' => ts('Contribution Soft Credit'),
+ 'title_plural' => ts('Contribution Soft Credits'),
+ 'description' => ts('FIXME'),
+ 'log' => TRUE,
+ 'add' => '2.2',
+ ],
+ 'getIndices' => fn() => [
+ 'index_id' => [
+ 'fields' => [
+ 'pcp_id' => TRUE,
+ ],
+ 'add' => '2.2',
+ ],
+ ],
+ 'getFields' => fn() => [
+ 'id' => [
+ 'title' => ts('Soft Credit ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'required' => TRUE,
+ 'description' => ts('Soft Credit ID'),
+ 'add' => '2.2',
+ 'unique_name' => 'contribution_soft_id',
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ 'primary_key' => TRUE,
+ 'auto_increment' => TRUE,
+ ],
+ 'contribution_id' => [
+ 'title' => ts('Contribution ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'required' => TRUE,
+ 'description' => ts('FK to contribution table.'),
+ 'add' => '2.2',
+ 'input_attrs' => [
+ 'label' => ts('Contribution'),
+ ],
+ 'entity_reference' => [
+ 'entity' => 'Contribution',
+ 'key' => 'id',
+ 'on_delete' => 'CASCADE',
+ ],
+ ],
+ 'contact_id' => [
+ 'title' => ts('Contact ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'required' => TRUE,
+ 'description' => ts('FK to Contact ID'),
+ 'add' => '2.2',
+ 'unique_name' => 'contribution_soft_contact_id',
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ 'input_attrs' => [
+ 'label' => ts('Contact'),
+ ],
+ 'entity_reference' => [
+ 'entity' => 'Contact',
+ 'key' => 'id',
+ 'on_delete' => 'CASCADE',
+ ],
+ ],
+ 'amount' => [
+ 'title' => ts('Soft Credit Amount'),
+ 'sql_type' => 'decimal(20,2)',
+ 'input_type' => NULL,
+ 'required' => TRUE,
+ 'description' => ts('Amount of this soft credit.'),
+ 'add' => '2.2',
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ ],
+ 'currency' => [
+ 'title' => ts('Soft Contribution Currency'),
+ 'sql_type' => 'varchar(3)',
+ 'input_type' => 'Select',
+ 'description' => ts('3 character string, value from config setting or input via user.'),
+ 'add' => '3.2',
+ 'default' => NULL,
+ 'input_attrs' => [
+ 'maxlength' => 3,
+ ],
+ 'pseudoconstant' => [
+ 'table' => 'civicrm_currency',
+ 'key_column' => 'name',
+ 'label_column' => 'full_name',
+ 'name_column' => 'name',
+ 'abbr_column' => 'symbol',
+ ],
+ ],
+ 'pcp_id' => [
+ 'title' => ts('PCP ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'description' => ts('FK to civicrm_pcp.id'),
+ 'add' => '2.2',
+ 'default' => NULL,
+ 'input_attrs' => [
+ 'label' => ts('PCP'),
+ ],
+ 'pseudoconstant' => [
+ 'table' => 'civicrm_pcp',
+ 'key_column' => 'id',
+ 'label_column' => 'title',
+ ],
+ 'entity_reference' => [
+ 'entity' => 'PCP',
+ 'key' => 'id',
+ 'on_delete' => 'SET NULL',
+ ],
+ ],
+ 'pcp_display_in_roll' => [
+ 'title' => ts('Soft Contribution Display on PCP'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'add' => '2.2',
+ 'default' => FALSE,
+ ],
+ 'pcp_roll_nickname' => [
+ 'title' => ts('Soft Contribution PCP Nickname'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'add' => '2.2',
+ 'default' => NULL,
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'pcp_personal_note' => [
+ 'title' => ts('Soft Contribution PCP Note'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'TextArea',
+ 'add' => '2.2',
+ 'default' => NULL,
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'soft_credit_type_id' => [
+ 'title' => ts('Soft Credit Type'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Select',
+ 'description' => ts('Soft Credit Type ID.Implicit FK to civicrm_option_value where option_group = soft_credit_type.'),
+ 'add' => '2.2',
+ 'default' => NULL,
+ 'pseudoconstant' => [
+ 'option_group_name' => 'soft_credit_type',
+ ],
+ ],
+ ],
+];
diff --git a/www/modules/civicrm/schema/Contribute/Premium.entityType.php b/www/modules/civicrm/schema/Contribute/Premium.entityType.php
new file mode 100644
index 000000000..68eee76f4
--- /dev/null
+++ b/www/modules/civicrm/schema/Contribute/Premium.entityType.php
@@ -0,0 +1,125 @@
+ 'Premium',
+ 'table' => 'civicrm_premiums',
+ 'class' => 'CRM_Contribute_DAO_Premium',
+ 'getInfo' => fn() => [
+ 'title' => ts('Premium'),
+ 'title_plural' => ts('Premiums'),
+ 'description' => ts('table - settings for the Premiums features for a given contribution page'),
+ 'log' => TRUE,
+ 'add' => '1.4',
+ ],
+ 'getFields' => fn() => [
+ 'id' => [
+ 'title' => ts('Premium ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'required' => TRUE,
+ 'add' => '1.4',
+ 'primary_key' => TRUE,
+ 'auto_increment' => TRUE,
+ ],
+ 'entity_table' => [
+ 'title' => ts('Premium Entity'),
+ 'sql_type' => 'varchar(64)',
+ 'input_type' => 'Select',
+ 'required' => TRUE,
+ 'description' => ts('Joins these premium settings to another object. Always civicrm_contribution_page for now.'),
+ 'add' => '1.4',
+ 'input_attrs' => [
+ 'maxlength' => 64,
+ ],
+ 'pseudoconstant' => [
+ 'callback' => 'CRM_Contribute_BAO_Premium::entityTables',
+ ],
+ ],
+ 'entity_id' => [
+ 'title' => ts('Premium entity ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'required' => TRUE,
+ 'add' => '1.4',
+ 'entity_reference' => [
+ 'dynamic_entity' => 'entity_table',
+ 'key' => 'id',
+ ],
+ ],
+ 'premiums_active' => [
+ 'title' => ts('Is Premium Active?'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('Is the Premiums feature enabled for this page?'),
+ 'add' => '1.4',
+ 'default' => FALSE,
+ ],
+ 'premiums_intro_title' => [
+ 'title' => ts('Title for Premiums section'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'localizable' => TRUE,
+ 'description' => ts('Title for Premiums section.'),
+ 'add' => '1.4',
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'premiums_intro_text' => [
+ 'title' => ts('Premium Introductory Text'),
+ 'sql_type' => 'text',
+ 'input_type' => 'TextArea',
+ 'localizable' => TRUE,
+ 'description' => ts('Displayed in at top of Premiums section of page. Text and HTML allowed.'),
+ 'add' => '1.4',
+ ],
+ 'premiums_contact_email' => [
+ 'title' => ts('Premium Contact Email'),
+ 'sql_type' => 'varchar(100)',
+ 'input_type' => 'Text',
+ 'description' => ts('This email address is included in receipts if it is populated and a premium has been selected.'),
+ 'add' => '1.4',
+ 'input_attrs' => [
+ 'maxlength' => 100,
+ ],
+ ],
+ 'premiums_contact_phone' => [
+ 'title' => ts('Premiums Contact Phone'),
+ 'sql_type' => 'varchar(50)',
+ 'input_type' => 'Text',
+ 'description' => ts('This phone number is included in receipts if it is populated and a premium has been selected.'),
+ 'add' => '1.4',
+ 'input_attrs' => [
+ 'maxlength' => 50,
+ ],
+ ],
+ 'premiums_display_min_contribution' => [
+ 'title' => ts('Display Minimum Contribution?'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('Boolean. Should we automatically display minimum contribution amount text after the premium descriptions.'),
+ 'add' => '1.4',
+ 'default' => FALSE,
+ ],
+ 'premiums_nothankyou_label' => [
+ 'title' => ts('No Thank-you Text'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'localizable' => TRUE,
+ 'description' => ts('Label displayed for No Thank-you option in premiums block (e.g. No thank you)'),
+ 'add' => '4.3',
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'premiums_nothankyou_position' => [
+ 'title' => ts('No Thank-you Position'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'add' => '4.3',
+ 'default' => 1,
+ ],
+ ],
+];
diff --git a/www/modules/civicrm/schema/Contribute/PremiumsProduct.entityType.php b/www/modules/civicrm/schema/Contribute/PremiumsProduct.entityType.php
new file mode 100644
index 000000000..bee0b0a67
--- /dev/null
+++ b/www/modules/civicrm/schema/Contribute/PremiumsProduct.entityType.php
@@ -0,0 +1,84 @@
+ 'PremiumsProduct',
+ 'table' => 'civicrm_premiums_product',
+ 'class' => 'CRM_Contribute_DAO_PremiumsProduct',
+ 'getInfo' => fn() => [
+ 'title' => ts('Product Premium'),
+ 'title_plural' => ts('Product Premiums'),
+ 'description' => ts('joins premiums (settings) to individual product/premium items - determines which products are available for a given contribution page'),
+ 'log' => TRUE,
+ 'add' => '1.4',
+ ],
+ 'getFields' => fn() => [
+ 'id' => [
+ 'title' => ts('Premium Product ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'required' => TRUE,
+ 'description' => ts('Contribution ID'),
+ 'add' => '1.4',
+ 'primary_key' => TRUE,
+ 'auto_increment' => TRUE,
+ ],
+ 'premiums_id' => [
+ 'title' => ts('Premium ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'required' => TRUE,
+ 'description' => ts('Foreign key to premiums settings record.'),
+ 'add' => '1.4',
+ 'input_attrs' => [
+ 'label' => ts('Premium'),
+ ],
+ 'entity_reference' => [
+ 'entity' => 'Premium',
+ 'key' => 'id',
+ ],
+ ],
+ 'product_id' => [
+ 'title' => ts('Product ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'required' => TRUE,
+ 'description' => ts('Foreign key to each product object.'),
+ 'add' => '1.4',
+ 'input_attrs' => [
+ 'label' => ts('Product'),
+ ],
+ 'entity_reference' => [
+ 'entity' => 'Product',
+ 'key' => 'id',
+ ],
+ ],
+ 'weight' => [
+ 'title' => ts('Order'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'required' => TRUE,
+ 'add' => '2.0',
+ ],
+ 'financial_type_id' => [
+ 'title' => ts('Financial Type ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'description' => ts('FK to Financial Type.'),
+ 'add' => '4.3',
+ 'default' => NULL,
+ 'input_attrs' => [
+ 'label' => ts('Financial Type'),
+ ],
+ 'pseudoconstant' => [
+ 'table' => 'civicrm_financial_type',
+ 'key_column' => 'id',
+ 'label_column' => 'name',
+ ],
+ 'entity_reference' => [
+ 'entity' => 'FinancialType',
+ 'key' => 'id',
+ 'on_delete' => 'SET NULL',
+ ],
+ ],
+ ],
+];
diff --git a/www/modules/civicrm/schema/Contribute/Product.entityType.php b/www/modules/civicrm/schema/Contribute/Product.entityType.php
new file mode 100644
index 000000000..966fa3206
--- /dev/null
+++ b/www/modules/civicrm/schema/Contribute/Product.entityType.php
@@ -0,0 +1,235 @@
+ 'Product',
+ 'table' => 'civicrm_product',
+ 'class' => 'CRM_Contribute_DAO_Product',
+ 'getInfo' => fn() => [
+ 'title' => ts('Product'),
+ 'title_plural' => ts('Products'),
+ 'description' => ts('able - stores "product info" for premiums and can be used for non-incentive products'),
+ 'log' => TRUE,
+ 'add' => '1.4',
+ 'label_field' => 'name',
+ ],
+ 'getPaths' => fn() => [
+ 'add' => 'civicrm/admin/contribute/managePremiums/edit?action=add&reset=1',
+ 'update' => 'civicrm/admin/contribute/managePremiums/edit?action=update&id=[id]&reset=1',
+ 'delete' => 'civicrm/admin/contribute/managePremiums/edit?action=delete&id=[id]&reset=1',
+ 'preview' => 'civicrm/admin/contribute/managePremiums/edit?action=preview&reset=1&id=[id]',
+ 'browse' => 'civicrm/admin/contribute/managePremiums/',
+ ],
+ 'getFields' => fn() => [
+ 'id' => [
+ 'title' => ts('Product ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'required' => TRUE,
+ 'add' => '1.4',
+ 'primary_key' => TRUE,
+ 'auto_increment' => TRUE,
+ ],
+ 'name' => [
+ 'title' => ts('Product Name'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'required' => TRUE,
+ 'localizable' => TRUE,
+ 'description' => ts('Required product/premium name'),
+ 'add' => '1.4',
+ 'unique_name' => 'product_name',
+ 'usage' => [
+ 'export',
+ ],
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'description' => [
+ 'title' => ts('Description'),
+ 'sql_type' => 'text',
+ 'input_type' => 'TextArea',
+ 'localizable' => TRUE,
+ 'description' => ts('Optional description of the product/premium.'),
+ 'add' => '1.4',
+ ],
+ 'sku' => [
+ 'title' => ts('SKU'),
+ 'sql_type' => 'varchar(50)',
+ 'input_type' => 'Text',
+ 'description' => ts('Optional product sku or code.'),
+ 'add' => '1.4',
+ 'usage' => [
+ 'export',
+ ],
+ 'input_attrs' => [
+ 'maxlength' => 50,
+ ],
+ ],
+ 'options' => [
+ 'title' => ts('Options'),
+ 'sql_type' => 'text',
+ 'input_type' => 'TextArea',
+ 'localizable' => TRUE,
+ 'description' => ts('Store comma-delimited list of color, size, etc. options for the product.'),
+ 'add' => '1.4',
+ 'serialize' => CRM_Core_DAO::SERIALIZE_COMMA,
+ ],
+ 'image' => [
+ 'title' => ts('Image'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'description' => ts('Full or relative URL to uploaded image - fullsize.'),
+ 'add' => '1.4',
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'thumbnail' => [
+ 'title' => ts('Thumbnail'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'description' => ts('Full or relative URL to image thumbnail.'),
+ 'add' => '1.4',
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'price' => [
+ 'title' => ts('Price'),
+ 'sql_type' => 'decimal(20,2)',
+ 'input_type' => NULL,
+ 'description' => ts('Sell price or market value for premiums. For tax-deductible contributions, this will be stored as non_deductible_amount in the contribution record.'),
+ 'add' => '1.4',
+ ],
+ 'currency' => [
+ 'title' => ts('Currency'),
+ 'sql_type' => 'varchar(3)',
+ 'input_type' => 'Select',
+ 'description' => ts('3 character string, value from config setting or input via user.'),
+ 'add' => '3.2',
+ 'default' => NULL,
+ 'input_attrs' => [
+ 'label' => ts('Currency'),
+ 'maxlength' => 3,
+ ],
+ 'pseudoconstant' => [
+ 'table' => 'civicrm_currency',
+ 'key_column' => 'name',
+ 'label_column' => 'full_name',
+ 'name_column' => 'name',
+ 'abbr_column' => 'symbol',
+ ],
+ ],
+ 'financial_type_id' => [
+ 'title' => ts('Financial Type ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'description' => ts('FK to Financial Type.'),
+ 'add' => '4.3',
+ 'default' => NULL,
+ 'input_attrs' => [
+ 'label' => ts('Financial Type'),
+ ],
+ 'pseudoconstant' => [
+ 'table' => 'civicrm_financial_type',
+ 'key_column' => 'id',
+ 'label_column' => 'name',
+ ],
+ 'entity_reference' => [
+ 'entity' => 'FinancialType',
+ 'key' => 'id',
+ 'on_delete' => 'SET NULL',
+ ],
+ ],
+ 'min_contribution' => [
+ 'title' => ts('Minimum Contribution'),
+ 'sql_type' => 'decimal(20,2)',
+ 'input_type' => NULL,
+ 'description' => ts('Minimum contribution required to be eligible to select this premium.'),
+ 'add' => '1.4',
+ ],
+ 'cost' => [
+ 'title' => ts('Cost'),
+ 'sql_type' => 'decimal(20,2)',
+ 'input_type' => NULL,
+ 'description' => ts('Actual cost of this product. Useful to determine net return from sale or using this as an incentive.'),
+ 'add' => '1.4',
+ ],
+ 'is_active' => [
+ 'title' => ts('Is Active'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('Disabling premium removes it from the premiums_premium join table below.'),
+ 'add' => '1.4',
+ 'default' => TRUE,
+ 'input_attrs' => [
+ 'label' => ts('Enabled'),
+ ],
+ ],
+ 'period_type' => [
+ 'title' => ts('Period Type'),
+ 'sql_type' => 'varchar(8)',
+ 'input_type' => 'Select',
+ 'description' => ts('Rolling means we set start/end based on current day, fixed means we set start/end for current year or month (e.g. 1 year + fixed -> we would set start/end for 1/1/06 thru 12/31/06 for any premium chosen in 2006)'),
+ 'add' => '1.4',
+ 'default' => 'rolling',
+ 'input_attrs' => [
+ 'maxlength' => 8,
+ ],
+ 'pseudoconstant' => [
+ 'callback' => 'CRM_Core_SelectValues::periodType',
+ ],
+ ],
+ 'fixed_period_start_day' => [
+ 'title' => ts('Fixed Period Start Day'),
+ 'sql_type' => 'int',
+ 'input_type' => 'Number',
+ 'description' => ts('Month and day (MMDD) that fixed period type subscription or membership starts.'),
+ 'add' => '1.4',
+ 'default' => 101,
+ ],
+ 'duration_unit' => [
+ 'title' => ts('Duration Unit'),
+ 'sql_type' => 'varchar(8)',
+ 'input_type' => 'Select',
+ 'add' => '1.4',
+ 'default' => 'year',
+ 'input_attrs' => [
+ 'maxlength' => 8,
+ ],
+ 'pseudoconstant' => [
+ 'callback' => 'CRM_Core_SelectValues::getPremiumUnits',
+ ],
+ ],
+ 'duration_interval' => [
+ 'title' => ts('Duration Interval'),
+ 'sql_type' => 'int',
+ 'input_type' => 'Number',
+ 'description' => ts('Number of units for total duration of subscription, service, membership (e.g. 12 Months).'),
+ 'add' => '1.4',
+ ],
+ 'frequency_unit' => [
+ 'title' => ts('Frequency Unit'),
+ 'sql_type' => 'varchar(8)',
+ 'input_type' => 'Select',
+ 'description' => ts('Frequency unit and interval allow option to store actual delivery frequency for a subscription or service.'),
+ 'add' => '1.4',
+ 'default' => 'month',
+ 'input_attrs' => [
+ 'maxlength' => 8,
+ ],
+ 'pseudoconstant' => [
+ 'callback' => 'CRM_Core_SelectValues::getPremiumUnits',
+ ],
+ ],
+ 'frequency_interval' => [
+ 'title' => ts('Frequency Interval'),
+ 'sql_type' => 'int',
+ 'input_type' => 'Number',
+ 'description' => ts('Number of units for delivery frequency of subscription, service, membership (e.g. every 3 Months).'),
+ 'add' => '1.4',
+ ],
+ ],
+];
diff --git a/www/modules/civicrm/schema/Contribute/Widget.entityType.php b/www/modules/civicrm/schema/Contribute/Widget.entityType.php
new file mode 100644
index 000000000..e5aac081d
--- /dev/null
+++ b/www/modules/civicrm/schema/Contribute/Widget.entityType.php
@@ -0,0 +1,181 @@
+ 'Widget',
+ 'table' => 'civicrm_contribution_widget',
+ 'class' => 'CRM_Contribute_DAO_Widget',
+ 'getInfo' => fn() => [
+ 'title' => ts('Widget'),
+ 'title_plural' => ts('Widgets'),
+ 'description' => ts('A Widget object to store meta information about a single customized contribution widget'),
+ 'log' => TRUE,
+ 'add' => '2.0',
+ ],
+ 'getFields' => fn() => [
+ 'id' => [
+ 'title' => ts('Widget ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'required' => TRUE,
+ 'description' => ts('Contribution ID'),
+ 'add' => '2.0',
+ 'primary_key' => TRUE,
+ 'auto_increment' => TRUE,
+ ],
+ 'contribution_page_id' => [
+ 'title' => ts('Contribution Page ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'description' => ts('The Contribution Page which triggered this contribution'),
+ 'add' => '1.5',
+ 'input_attrs' => [
+ 'label' => ts('Contribution Page'),
+ ],
+ 'entity_reference' => [
+ 'entity' => 'ContributionPage',
+ 'key' => 'id',
+ 'on_delete' => 'CASCADE',
+ ],
+ ],
+ 'is_active' => [
+ 'title' => ts('Enabled?'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('Is this property active?'),
+ 'add' => '2.0',
+ 'default' => TRUE,
+ 'input_attrs' => [
+ 'label' => ts('Enabled'),
+ ],
+ ],
+ 'title' => [
+ 'title' => ts('Widget Title'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'description' => ts('Widget title.'),
+ 'add' => '2.0',
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'url_logo' => [
+ 'title' => ts('Widget Image Url'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'description' => ts('URL to Widget logo'),
+ 'add' => '2.0',
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'button_title' => [
+ 'title' => ts('Button Title'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'description' => ts('Button title.'),
+ 'add' => '2.0',
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'about' => [
+ 'title' => ts('Description'),
+ 'sql_type' => 'text',
+ 'input_type' => 'TextArea',
+ 'description' => ts('About description.'),
+ 'add' => '2.0',
+ ],
+ 'url_homepage' => [
+ 'title' => ts('Homepage Url'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'description' => ts('URL to Homepage.'),
+ 'add' => '2.0',
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'color_title' => [
+ 'title' => ts('Title Color'),
+ 'sql_type' => 'varchar(10)',
+ 'input_type' => 'Text',
+ 'add' => '2.0',
+ 'input_attrs' => [
+ 'maxlength' => 10,
+ ],
+ ],
+ 'color_button' => [
+ 'title' => ts('Button Color'),
+ 'sql_type' => 'varchar(10)',
+ 'input_type' => 'Text',
+ 'add' => '2.0',
+ 'input_attrs' => [
+ 'maxlength' => 10,
+ ],
+ ],
+ 'color_bar' => [
+ 'title' => ts('Bar Color'),
+ 'sql_type' => 'varchar(10)',
+ 'input_type' => 'Text',
+ 'add' => '2.0',
+ 'input_attrs' => [
+ 'maxlength' => 10,
+ ],
+ ],
+ 'color_main_text' => [
+ 'title' => ts('Main Text Color'),
+ 'sql_type' => 'varchar(10)',
+ 'input_type' => 'Text',
+ 'add' => '2.0',
+ 'input_attrs' => [
+ 'maxlength' => 10,
+ ],
+ ],
+ 'color_main' => [
+ 'title' => ts('Main Color'),
+ 'sql_type' => 'varchar(10)',
+ 'input_type' => 'Text',
+ 'add' => '2.0',
+ 'input_attrs' => [
+ 'maxlength' => 10,
+ ],
+ ],
+ 'color_main_bg' => [
+ 'title' => ts('Background Color'),
+ 'sql_type' => 'varchar(10)',
+ 'input_type' => 'Text',
+ 'add' => '2.0',
+ 'input_attrs' => [
+ 'maxlength' => 10,
+ ],
+ ],
+ 'color_bg' => [
+ 'title' => ts('Other Background Color'),
+ 'sql_type' => 'varchar(10)',
+ 'input_type' => 'Text',
+ 'add' => '2.0',
+ 'input_attrs' => [
+ 'maxlength' => 10,
+ ],
+ ],
+ 'color_about_link' => [
+ 'title' => ts('About Link Color'),
+ 'sql_type' => 'varchar(10)',
+ 'input_type' => 'Text',
+ 'add' => '2.0',
+ 'input_attrs' => [
+ 'maxlength' => 10,
+ ],
+ ],
+ 'color_homepage_link' => [
+ 'title' => ts('Homepage Link Color'),
+ 'sql_type' => 'varchar(10)',
+ 'input_type' => 'Text',
+ 'add' => '2.0',
+ 'input_attrs' => [
+ 'maxlength' => 10,
+ ],
+ ],
+ ],
+];
diff --git a/www/modules/civicrm/schema/Core/ActionLog.entityType.php b/www/modules/civicrm/schema/Core/ActionLog.entityType.php
new file mode 100644
index 000000000..a9e6d578f
--- /dev/null
+++ b/www/modules/civicrm/schema/Core/ActionLog.entityType.php
@@ -0,0 +1,115 @@
+ 'ActionLog',
+ 'table' => 'civicrm_action_log',
+ 'class' => 'CRM_Core_DAO_ActionLog',
+ 'getInfo' => fn() => [
+ 'title' => ts('Action Log'),
+ 'title_plural' => ts('Action Logs'),
+ 'description' => ts('Table to store log for the reminder.'),
+ 'add' => '3.4',
+ ],
+ 'getFields' => fn() => [
+ 'id' => [
+ 'title' => ts('Action Schedule ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'required' => TRUE,
+ 'add' => '3.4',
+ 'primary_key' => TRUE,
+ 'auto_increment' => TRUE,
+ ],
+ 'contact_id' => [
+ 'title' => ts('Contact ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'description' => ts('FK to Contact ID'),
+ 'add' => '3.4',
+ 'input_attrs' => [
+ 'label' => ts('Contact'),
+ ],
+ 'entity_reference' => [
+ 'entity' => 'Contact',
+ 'key' => 'id',
+ 'on_delete' => 'CASCADE',
+ ],
+ ],
+ 'entity_id' => [
+ 'title' => ts('Entity ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'required' => TRUE,
+ 'description' => ts('FK to id of the entity that the action was performed on. Pseudo - FK.'),
+ 'add' => '3.4',
+ 'entity_reference' => [
+ 'dynamic_entity' => 'entity_table',
+ 'key' => 'id',
+ ],
+ ],
+ 'entity_table' => [
+ 'title' => ts('Entity Table'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'description' => ts('name of the entity table for the above id, e.g. civicrm_activity, civicrm_participant'),
+ 'add' => '3.4',
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'action_schedule_id' => [
+ 'title' => ts('Schedule ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'required' => TRUE,
+ 'description' => ts('FK to the action schedule that this action originated from.'),
+ 'add' => '3.4',
+ 'input_attrs' => [
+ 'label' => ts('Schedule'),
+ ],
+ 'entity_reference' => [
+ 'entity' => 'ActionSchedule',
+ 'key' => 'id',
+ 'on_delete' => 'CASCADE',
+ ],
+ ],
+ 'action_date_time' => [
+ 'title' => ts('Action Date And Time'),
+ 'sql_type' => 'datetime',
+ 'input_type' => 'Select Date',
+ 'description' => ts('date time that the action was performed on.'),
+ 'add' => '3.4',
+ ],
+ 'is_error' => [
+ 'title' => ts('Error?'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('Was there any error sending the reminder?'),
+ 'add' => '3.4',
+ 'default' => FALSE,
+ ],
+ 'message' => [
+ 'title' => ts('Message'),
+ 'sql_type' => 'text',
+ 'input_type' => 'TextArea',
+ 'description' => ts('Description / text in case there was an error encountered.'),
+ 'add' => '3.4',
+ ],
+ 'repetition_number' => [
+ 'title' => ts('Repetition Number'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'description' => ts('Keeps track of the sequence number of this repetition.'),
+ 'add' => '3.4',
+ ],
+ 'reference_date' => [
+ 'title' => ts('Reference Date'),
+ 'sql_type' => 'datetime',
+ 'input_type' => 'Select Date',
+ 'description' => ts('Stores the date from the entity which triggered this reminder action (e.g. membership.end_date for most membership renewal reminders)'),
+ 'add' => '4.6',
+ 'default' => NULL,
+ ],
+ ],
+];
diff --git a/www/modules/civicrm/schema/Core/ActionSchedule.entityType.php b/www/modules/civicrm/schema/Core/ActionSchedule.entityType.php
new file mode 100644
index 000000000..7e2900a9d
--- /dev/null
+++ b/www/modules/civicrm/schema/Core/ActionSchedule.entityType.php
@@ -0,0 +1,577 @@
+ 'ActionSchedule',
+ 'table' => 'civicrm_action_schedule',
+ 'class' => 'CRM_Core_DAO_ActionSchedule',
+ 'getInfo' => fn() => [
+ 'title' => ts('Scheduled Reminder'),
+ 'title_plural' => ts('Scheduled Reminders'),
+ 'description' => ts('Table to store the reminders.'),
+ 'add' => '3.4',
+ 'label_field' => 'title',
+ ],
+ 'getPaths' => fn() => [
+ 'browse' => 'civicrm/admin/scheduleReminders',
+ 'add' => 'civicrm/admin/scheduleReminders/edit?reset=1&action=add',
+ 'update' => 'civicrm/admin/scheduleReminders/edit?reset=1&action=update&id=[id]',
+ 'delete' => 'civicrm/admin/scheduleReminders/edit?reset=1&action=delete&id=[id]',
+ ],
+ 'getIndices' => fn() => [
+ 'UI_name' => [
+ 'fields' => [
+ 'name' => TRUE,
+ ],
+ 'unique' => TRUE,
+ 'add' => '5.65',
+ ],
+ ],
+ 'getFields' => fn() => [
+ 'id' => [
+ 'title' => ts('Action Schedule ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'required' => TRUE,
+ 'add' => '3.4',
+ 'primary_key' => TRUE,
+ 'auto_increment' => TRUE,
+ ],
+ 'name' => [
+ 'title' => ts('Name'),
+ 'sql_type' => 'varchar(128)',
+ 'input_type' => 'Text',
+ 'required' => TRUE,
+ 'description' => ts('Name of the scheduled action'),
+ 'add' => '3.4',
+ 'input_attrs' => [
+ 'maxlength' => 128,
+ ],
+ ],
+ 'title' => [
+ 'title' => ts('Title'),
+ 'sql_type' => 'varchar(64)',
+ 'input_type' => 'Text',
+ 'description' => ts('Title of the action(reminder)'),
+ 'add' => '3.4',
+ 'input_attrs' => [
+ 'maxlength' => 64,
+ ],
+ ],
+ 'recipient' => [
+ 'title' => ts('Recipient'),
+ 'sql_type' => 'varchar(64)',
+ 'input_type' => 'Select',
+ 'description' => ts('Recipient'),
+ 'add' => '3.4',
+ 'input_attrs' => [
+ 'label' => ts('Limit or Add Recipients'),
+ 'control_field' => 'mapping_id',
+ 'maxlength' => 64,
+ ],
+ 'pseudoconstant' => [
+ 'callback' => 'CRM_Core_BAO_ActionSchedule::getRecipientOptions',
+ ],
+ ],
+ 'limit_to' => [
+ 'title' => ts('Limit To'),
+ 'sql_type' => 'int',
+ 'input_type' => 'Select',
+ 'description' => ts('Is this the recipient criteria limited to OR in addition to?'),
+ 'add' => '4.4',
+ 'input_attrs' => [
+ 'label' => ts('Limit/Add'),
+ 'control_field' => 'mapping_id',
+ ],
+ 'pseudoconstant' => [
+ 'callback' => 'CRM_Core_BAO_ActionSchedule::getLimitToOptions',
+ ],
+ ],
+ 'entity_value' => [
+ 'title' => ts('Entity Value'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Select',
+ 'description' => ts('Entity value'),
+ 'add' => '3.4',
+ 'serialize' => CRM_Core_DAO::SERIALIZE_SEPARATOR_TRIMMED,
+ 'input_attrs' => [
+ 'label' => ts('Entity Value'),
+ 'multiple' => '1',
+ 'control_field' => 'mapping_id',
+ 'maxlength' => 255,
+ ],
+ 'pseudoconstant' => [
+ 'callback' => 'CRM_Core_BAO_ActionSchedule::getEntityValueOptions',
+ ],
+ ],
+ 'entity_status' => [
+ 'title' => ts('Entity Status'),
+ 'sql_type' => 'varchar(64)',
+ 'input_type' => 'Select',
+ 'description' => ts('Entity status'),
+ 'add' => '3.4',
+ 'serialize' => CRM_Core_DAO::SERIALIZE_SEPARATOR_TRIMMED,
+ 'input_attrs' => [
+ 'label' => ts('Entity Status'),
+ 'multiple' => '1',
+ 'control_field' => 'entity_value',
+ 'maxlength' => 64,
+ ],
+ 'pseudoconstant' => [
+ 'callback' => 'CRM_Core_BAO_ActionSchedule::getEntityStatusOptions',
+ ],
+ ],
+ 'start_action_offset' => [
+ 'title' => ts('Start Action Offset'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'description' => ts('Reminder Interval.'),
+ 'add' => '3.4',
+ 'default' => 0,
+ 'input_attrs' => [
+ 'min' => '0',
+ 'label' => ts('Start Action Offset'),
+ ],
+ ],
+ 'start_action_unit' => [
+ 'title' => ts('Start Action Unit'),
+ 'sql_type' => 'varchar(8)',
+ 'input_type' => 'Select',
+ 'description' => ts('Time units for reminder.'),
+ 'add' => '3.4',
+ 'input_attrs' => [
+ 'label' => ts('Start Action Unit'),
+ 'control_field' => 'start_action_offset',
+ 'maxlength' => 8,
+ ],
+ 'pseudoconstant' => [
+ 'callback' => 'CRM_Core_BAO_ActionSchedule::getDateUnits',
+ ],
+ ],
+ 'start_action_condition' => [
+ 'title' => ts('Start Action Condition'),
+ 'sql_type' => 'varchar(64)',
+ 'input_type' => 'Select',
+ 'description' => ts('Reminder Action'),
+ 'add' => '3.4',
+ 'input_attrs' => [
+ 'label' => ts('Start Condition'),
+ 'maxlength' => 64,
+ ],
+ 'pseudoconstant' => [
+ 'callback' => 'CRM_Core_SelectValues::beforeAfter',
+ ],
+ ],
+ 'start_action_date' => [
+ 'title' => ts('Start Action Date'),
+ 'sql_type' => 'varchar(64)',
+ 'input_type' => 'Select',
+ 'description' => ts('Entity date'),
+ 'add' => '3.4',
+ 'input_attrs' => [
+ 'label' => ts('Start Date'),
+ 'control_field' => 'entity_value',
+ 'maxlength' => 64,
+ ],
+ 'pseudoconstant' => [
+ 'callback' => 'CRM_Core_BAO_ActionSchedule::getActionDateOptions',
+ ],
+ ],
+ 'is_repeat' => [
+ 'title' => ts('Repeat'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'add' => '3.4',
+ 'default' => FALSE,
+ ],
+ 'repetition_frequency_unit' => [
+ 'title' => ts('Repetition Frequency Unit'),
+ 'sql_type' => 'varchar(8)',
+ 'input_type' => 'Select',
+ 'description' => ts('Time units for repetition of reminder.'),
+ 'add' => '3.4',
+ 'input_attrs' => [
+ 'label' => ts('Repetition Frequency Unit'),
+ 'control_field' => 'repetition_frequency_interval',
+ 'maxlength' => 8,
+ ],
+ 'pseudoconstant' => [
+ 'callback' => 'CRM_Core_BAO_ActionSchedule::getDateUnits',
+ ],
+ ],
+ 'repetition_frequency_interval' => [
+ 'title' => ts('Repetition Frequency Interval'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'description' => ts('Time interval for repeating the reminder.'),
+ 'add' => '3.4',
+ 'default' => 0,
+ 'input_attrs' => [
+ 'min' => '0',
+ 'label' => ts('Repetition Frequency Interval'),
+ ],
+ ],
+ 'end_frequency_unit' => [
+ 'title' => ts('End Frequency Unit'),
+ 'sql_type' => 'varchar(8)',
+ 'input_type' => 'Select',
+ 'description' => ts('Time units till repetition of reminder.'),
+ 'add' => '3.4',
+ 'input_attrs' => [
+ 'label' => ts('End Frequency Unit'),
+ 'control_field' => 'end_frequency_interval',
+ 'maxlength' => 8,
+ ],
+ 'pseudoconstant' => [
+ 'callback' => 'CRM_Core_BAO_ActionSchedule::getDateUnits',
+ ],
+ ],
+ 'end_frequency_interval' => [
+ 'title' => ts('End Frequency Interval'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'description' => ts('Time interval till repeating the reminder.'),
+ 'add' => '3.4',
+ 'default' => 0,
+ 'input_attrs' => [
+ 'min' => '0',
+ 'label' => ts('End Frequency Interval'),
+ ],
+ ],
+ 'end_action' => [
+ 'title' => ts('End Action'),
+ 'sql_type' => 'varchar(32)',
+ 'input_type' => 'Select',
+ 'description' => ts('Reminder Action till repeating the reminder.'),
+ 'add' => '3.4',
+ 'input_attrs' => [
+ 'label' => ts('End Condition'),
+ 'maxlength' => 32,
+ ],
+ 'pseudoconstant' => [
+ 'callback' => 'CRM_Core_SelectValues::beforeAfter',
+ ],
+ ],
+ 'end_date' => [
+ 'title' => ts('End Date'),
+ 'sql_type' => 'varchar(64)',
+ 'input_type' => 'Select',
+ 'description' => ts('Entity end date'),
+ 'add' => '3.4',
+ 'input_attrs' => [
+ 'label' => ts('End Date'),
+ 'control_field' => 'entity_value',
+ 'maxlength' => 64,
+ ],
+ 'pseudoconstant' => [
+ 'callback' => 'CRM_Core_BAO_ActionSchedule::getActionDateOptions',
+ ],
+ ],
+ 'is_active' => [
+ 'title' => ts('Schedule is Active?'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('Is this option active?'),
+ 'add' => '3.4',
+ 'default' => TRUE,
+ 'input_attrs' => [
+ 'label' => ts('Enabled'),
+ ],
+ ],
+ 'recipient_manual' => [
+ 'title' => ts('Recipient Manual'),
+ 'sql_type' => 'varchar(128)',
+ 'input_type' => 'EntityRef',
+ 'description' => ts('Contact IDs to which reminder should be sent.'),
+ 'add' => '3.4',
+ 'serialize' => CRM_Core_DAO::SERIALIZE_COMMA,
+ 'input_attrs' => [
+ 'label' => ts('Manual Recipients'),
+ 'multiple' => '1',
+ 'maxlength' => 128,
+ ],
+ ],
+ 'recipient_listing' => [
+ 'title' => ts('Recipient Listing'),
+ 'sql_type' => 'varchar(128)',
+ 'input_type' => 'Select',
+ 'description' => ts('listing based on recipient field.'),
+ 'add' => '4.1',
+ 'serialize' => CRM_Core_DAO::SERIALIZE_SEPARATOR_TRIMMED,
+ 'input_attrs' => [
+ 'label' => ts('Recipient Roles'),
+ 'multiple' => '1',
+ 'control_field' => 'recipient',
+ 'maxlength' => 128,
+ ],
+ 'pseudoconstant' => [
+ 'callback' => 'CRM_Core_BAO_ActionSchedule::getRecipientListingOptions',
+ ],
+ ],
+ 'body_text' => [
+ 'title' => ts('Reminder Text'),
+ 'sql_type' => 'longtext',
+ 'input_type' => 'TextArea',
+ 'description' => ts('Body of the mailing in text format.'),
+ 'add' => '3.4',
+ ],
+ 'body_html' => [
+ 'title' => ts('Reminder HTML'),
+ 'sql_type' => 'longtext',
+ 'input_type' => 'RichTextEditor',
+ 'description' => ts('Body of the mailing in html format.'),
+ 'add' => '3.4',
+ ],
+ 'sms_body_text' => [
+ 'title' => ts('SMS Reminder Text'),
+ 'sql_type' => 'longtext',
+ 'input_type' => 'TextArea',
+ 'description' => ts('Content of the SMS text.'),
+ 'add' => '4.5',
+ ],
+ 'subject' => [
+ 'title' => ts('Reminder Subject'),
+ 'sql_type' => 'varchar(128)',
+ 'input_type' => 'Text',
+ 'description' => ts('Subject of mailing'),
+ 'add' => '3.4',
+ 'input_attrs' => [
+ 'maxlength' => 128,
+ ],
+ ],
+ 'record_activity' => [
+ 'title' => ts('Record Activity'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('Record Activity for this reminder?'),
+ 'add' => '3.4',
+ 'default' => FALSE,
+ ],
+ 'mapping_id' => [
+ 'title' => ts('Reminder For'),
+ 'sql_type' => 'varchar(64)',
+ 'input_type' => 'Select',
+ 'description' => ts('Name/ID of the mapping to use on this table'),
+ 'add' => '3.4',
+ 'input_attrs' => [
+ 'label' => ts('Used For'),
+ 'maxlength' => 64,
+ ],
+ 'pseudoconstant' => [
+ 'callback' => 'CRM_Core_BAO_ActionSchedule::getMappingOptions',
+ 'suffixes' => [
+ 'name',
+ 'label',
+ 'icon',
+ ],
+ ],
+ ],
+ 'group_id' => [
+ 'title' => ts('Group ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'description' => ts('FK to Group'),
+ 'add' => '3.4',
+ 'input_attrs' => [
+ 'label' => ts('Group'),
+ ],
+ 'pseudoconstant' => [
+ 'table' => 'civicrm_group',
+ 'key_column' => 'id',
+ 'label_column' => 'title',
+ 'prefetch' => 'disabled',
+ ],
+ 'entity_reference' => [
+ 'entity' => 'Group',
+ 'key' => 'id',
+ 'on_delete' => 'SET NULL',
+ ],
+ ],
+ 'msg_template_id' => [
+ 'title' => ts('Message Template ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'description' => ts('FK to the message template.'),
+ 'input_attrs' => [
+ 'label' => ts('Message Template'),
+ ],
+ 'entity_reference' => [
+ 'entity' => 'MessageTemplate',
+ 'key' => 'id',
+ 'on_delete' => 'SET NULL',
+ ],
+ ],
+ 'sms_template_id' => [
+ 'title' => ts('SMS Template ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'description' => ts('FK to the message template.'),
+ 'input_attrs' => [
+ 'label' => ts('SMS Template'),
+ ],
+ 'entity_reference' => [
+ 'entity' => 'MessageTemplate',
+ 'key' => 'id',
+ 'on_delete' => 'SET NULL',
+ ],
+ ],
+ 'absolute_date' => [
+ 'title' => ts('Fixed Date for Reminder'),
+ 'sql_type' => 'date',
+ 'input_type' => 'Select Date',
+ 'description' => ts('Date on which the reminder be sent.'),
+ 'add' => '4.1',
+ 'input_attrs' => [
+ 'format_type' => 'activityDate',
+ ],
+ ],
+ 'from_name' => [
+ 'title' => ts('Reminder from Name'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'description' => ts('Name in "from" field'),
+ 'add' => '4.5',
+ 'input_attrs' => [
+ 'label' => ts('From Name'),
+ 'maxlength' => 255,
+ ],
+ ],
+ 'from_email' => [
+ 'title' => ts('Reminder From Email'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Email',
+ 'description' => ts('Email address in "from" field'),
+ 'add' => '4.5',
+ 'input_attrs' => [
+ 'label' => ts('From Email'),
+ 'maxlength' => 255,
+ ],
+ ],
+ 'mode' => [
+ 'title' => ts('Message Mode'),
+ 'sql_type' => 'varchar(128)',
+ 'input_type' => 'Select',
+ 'description' => ts('Send the message as email or sms or both.'),
+ 'add' => '4.5',
+ 'default' => 'Email',
+ 'input_attrs' => [
+ 'maxlength' => 128,
+ ],
+ 'pseudoconstant' => [
+ 'option_group_name' => 'msg_mode',
+ ],
+ ],
+ 'sms_provider_id' => [
+ 'title' => ts('SMS Provider ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Select',
+ 'add' => '4.5',
+ 'input_attrs' => [
+ 'label' => ts('SMS Provider'),
+ ],
+ 'pseudoconstant' => [
+ 'callback' => 'CRM_Core_SelectValues::smsProvider',
+ ],
+ 'entity_reference' => [
+ 'entity' => 'SmsProvider',
+ 'key' => 'id',
+ 'on_delete' => 'SET NULL',
+ ],
+ ],
+ 'used_for' => [
+ 'title' => ts('Used For'),
+ 'sql_type' => 'varchar(64)',
+ 'input_type' => 'Text',
+ 'description' => ts('Used for repeating entity'),
+ 'add' => '4.6',
+ 'input_attrs' => [
+ 'label' => ts('Used For'),
+ 'maxlength' => 64,
+ ],
+ ],
+ 'filter_contact_language' => [
+ 'title' => ts('Filter Contact Language'),
+ 'sql_type' => 'varchar(128)',
+ 'input_type' => 'Select',
+ 'description' => ts('Used for multilingual installation'),
+ 'add' => '4.7',
+ 'serialize' => CRM_Core_DAO::SERIALIZE_SEPARATOR_TRIMMED,
+ 'input_attrs' => [
+ 'multiple' => '1',
+ 'label' => ts('Recipients Language'),
+ 'maxlength' => 128,
+ ],
+ 'pseudoconstant' => [
+ 'callback' => 'CRM_Core_BAO_ActionSchedule::getFilterContactLanguageOptions',
+ ],
+ ],
+ 'communication_language' => [
+ 'title' => ts('Communication Language'),
+ 'sql_type' => 'varchar(8)',
+ 'input_type' => 'Select',
+ 'description' => ts('Used for multilingual installation'),
+ 'add' => '4.7',
+ 'input_attrs' => [
+ 'label' => ts('Communication Language'),
+ 'maxlength' => 8,
+ ],
+ 'pseudoconstant' => [
+ 'callback' => 'CRM_Core_BAO_ActionSchedule::getCommunicationLanguageOptions',
+ ],
+ ],
+ 'created_date' => [
+ 'title' => ts('Created Date'),
+ 'sql_type' => 'timestamp',
+ 'input_type' => NULL,
+ 'description' => ts('When was the scheduled reminder created.'),
+ 'add' => '5.34',
+ 'unique_name' => 'action_schedule_created_date',
+ 'default' => 'CURRENT_TIMESTAMP',
+ 'usage' => [
+ 'export',
+ ],
+ ],
+ 'modified_date' => [
+ 'title' => ts('Modified Date'),
+ 'sql_type' => 'timestamp',
+ 'input_type' => NULL,
+ 'readonly' => TRUE,
+ 'description' => ts('When the reminder was created or modified.'),
+ 'add' => '5.34',
+ 'default' => 'CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP',
+ 'input_attrs' => [
+ 'label' => ts('Modified Date'),
+ ],
+ ],
+ 'effective_start_date' => [
+ 'title' => ts('Effective start date'),
+ 'sql_type' => 'timestamp',
+ 'input_type' => 'Select Date',
+ 'description' => ts('Earliest date to consider start events from.'),
+ 'add' => '5.34',
+ 'unique_name' => 'action_schedule_effective_start_date',
+ 'usage' => [
+ 'export',
+ ],
+ 'input_attrs' => [
+ 'format_type' => 'activityDate',
+ ],
+ ],
+ 'effective_end_date' => [
+ 'title' => ts('Effective end date'),
+ 'sql_type' => 'timestamp',
+ 'input_type' => 'Select Date',
+ 'description' => ts('Latest date to consider end events from.'),
+ 'add' => '5.34',
+ 'unique_name' => 'action_schedule_effective_end_date',
+ 'usage' => [
+ 'export',
+ ],
+ 'input_attrs' => [
+ 'format_type' => 'activityDate',
+ ],
+ ],
+ ],
+];
diff --git a/www/modules/civicrm/schema/Core/Address.entityType.php b/www/modules/civicrm/schema/Core/Address.entityType.php
new file mode 100644
index 000000000..df96ac4d2
--- /dev/null
+++ b/www/modules/civicrm/schema/Core/Address.entityType.php
@@ -0,0 +1,478 @@
+ 'Address',
+ 'table' => 'civicrm_address',
+ 'class' => 'CRM_Core_DAO_Address',
+ 'getInfo' => fn() => [
+ 'title' => ts('Address'),
+ 'title_plural' => ts('Addresses'),
+ 'description' => ts('Stores the physical street / mailing address. This format should be capable of storing ALL international addresses.'),
+ 'log' => TRUE,
+ 'add' => '1.1',
+ 'icon' => 'fa-map-marker',
+ ],
+ 'getIndices' => fn() => [
+ 'index_location_type' => [
+ 'fields' => [
+ 'location_type_id' => TRUE,
+ ],
+ 'add' => '2.0',
+ ],
+ 'index_is_primary' => [
+ 'fields' => [
+ 'is_primary' => TRUE,
+ ],
+ 'add' => '2.0',
+ ],
+ 'index_is_billing' => [
+ 'fields' => [
+ 'is_billing' => TRUE,
+ ],
+ 'add' => '2.0',
+ ],
+ 'index_street_name' => [
+ 'fields' => [
+ 'street_name' => TRUE,
+ ],
+ 'add' => '1.1',
+ ],
+ 'index_city' => [
+ 'fields' => [
+ 'city' => TRUE,
+ ],
+ 'add' => '1.1',
+ ],
+ 'index_geo_code_1_geo_code_2' => [
+ 'fields' => [
+ 'geo_code_1' => TRUE,
+ 'geo_code_2' => TRUE,
+ ],
+ ],
+ ],
+ 'getFields' => fn() => [
+ 'id' => [
+ 'title' => ts('Address ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'required' => TRUE,
+ 'description' => ts('Unique Address ID'),
+ 'add' => '1.1',
+ 'unique_name' => 'address_id',
+ 'usage' => [
+ 'export',
+ ],
+ 'primary_key' => TRUE,
+ 'auto_increment' => TRUE,
+ ],
+ 'contact_id' => [
+ 'title' => ts('Contact ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'description' => ts('FK to Contact ID'),
+ 'add' => '2.0',
+ 'input_attrs' => [
+ 'label' => ts('Contact'),
+ ],
+ 'entity_reference' => [
+ 'entity' => 'Contact',
+ 'key' => 'id',
+ 'on_delete' => 'CASCADE',
+ ],
+ ],
+ 'location_type_id' => [
+ 'title' => ts('Address Location Type'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Select',
+ 'description' => ts('Which Location does this address belong to.'),
+ 'add' => '2.0',
+ 'pseudoconstant' => [
+ 'table' => 'civicrm_location_type',
+ 'key_column' => 'id',
+ 'label_column' => 'display_name',
+ ],
+ ],
+ 'is_primary' => [
+ 'title' => ts('Is Primary'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'Radio',
+ 'required' => TRUE,
+ 'description' => ts('Is this the primary address.'),
+ 'add' => '2.0',
+ 'default' => FALSE,
+ ],
+ 'is_billing' => [
+ 'title' => ts('Is Billing Address'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('Is this the billing address.'),
+ 'add' => '2.0',
+ 'default' => FALSE,
+ ],
+ 'street_address' => [
+ 'title' => ts('Street Address'),
+ 'sql_type' => 'varchar(96)',
+ 'input_type' => 'Text',
+ 'description' => ts('Concatenation of all routable street address components (prefix, street number, street name, suffix, unit number OR P.O. Box). Apps should be able to determine physical location with this data (for mapping, mail delivery, etc.).'),
+ 'add' => '1.1',
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ 'input_attrs' => [
+ 'maxlength' => 96,
+ ],
+ ],
+ 'street_number' => [
+ 'title' => ts('Street Number'),
+ 'sql_type' => 'int',
+ 'input_type' => 'Text',
+ 'description' => ts('Numeric portion of address number on the street, e.g. For 112A Main St, the street_number = 112.'),
+ 'add' => '1.1',
+ 'usage' => [
+ 'export',
+ ],
+ ],
+ 'street_number_suffix' => [
+ 'title' => ts('Street Number Suffix'),
+ 'sql_type' => 'varchar(8)',
+ 'input_type' => 'Text',
+ 'description' => ts('Non-numeric portion of address number on the street, e.g. For 112A Main St, the street_number_suffix = A'),
+ 'add' => '1.1',
+ 'usage' => [
+ 'export',
+ ],
+ 'input_attrs' => [
+ 'maxlength' => 8,
+ ],
+ ],
+ 'street_number_predirectional' => [
+ 'title' => ts('Street Direction Prefix'),
+ 'sql_type' => 'varchar(8)',
+ 'input_type' => 'Text',
+ 'description' => ts('Directional prefix, e.g. SE Main St, SE is the prefix.'),
+ 'add' => '1.1',
+ 'input_attrs' => [
+ 'maxlength' => 8,
+ ],
+ ],
+ 'street_name' => [
+ 'title' => ts('Street Name'),
+ 'sql_type' => 'varchar(64)',
+ 'input_type' => 'Text',
+ 'description' => ts('Actual street name, excluding St, Dr, Rd, Ave, e.g. For 112 Main St, the street_name = Main.'),
+ 'add' => '1.1',
+ 'usage' => [
+ 'export',
+ ],
+ 'input_attrs' => [
+ 'maxlength' => 64,
+ ],
+ ],
+ 'street_type' => [
+ 'title' => ts('Street Type'),
+ 'sql_type' => 'varchar(8)',
+ 'input_type' => 'Text',
+ 'description' => ts('St, Rd, Dr, etc.'),
+ 'add' => '1.1',
+ 'input_attrs' => [
+ 'maxlength' => 8,
+ ],
+ ],
+ 'street_number_postdirectional' => [
+ 'title' => ts('Street Direction Suffix'),
+ 'sql_type' => 'varchar(8)',
+ 'input_type' => 'Text',
+ 'description' => ts('Directional prefix, e.g. Main St S, S is the suffix.'),
+ 'add' => '1.1',
+ 'input_attrs' => [
+ 'maxlength' => 8,
+ ],
+ ],
+ 'street_unit' => [
+ 'title' => ts('Street Unit'),
+ 'sql_type' => 'varchar(16)',
+ 'input_type' => 'Text',
+ 'description' => ts('Secondary unit designator, e.g. Apt 3 or Unit # 14, or Bldg 1200'),
+ 'add' => '1.1',
+ 'usage' => [
+ 'export',
+ ],
+ 'input_attrs' => [
+ 'maxlength' => 16,
+ ],
+ ],
+ 'supplemental_address_1' => [
+ 'title' => ts('Supplemental Address 1'),
+ 'sql_type' => 'varchar(96)',
+ 'input_type' => 'Text',
+ 'description' => ts('Supplemental Address Information, Line 1'),
+ 'add' => '1.1',
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ 'input_attrs' => [
+ 'maxlength' => 96,
+ ],
+ ],
+ 'supplemental_address_2' => [
+ 'title' => ts('Supplemental Address 2'),
+ 'sql_type' => 'varchar(96)',
+ 'input_type' => 'Text',
+ 'description' => ts('Supplemental Address Information, Line 2'),
+ 'add' => '1.1',
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ 'input_attrs' => [
+ 'maxlength' => 96,
+ ],
+ ],
+ 'supplemental_address_3' => [
+ 'title' => ts('Supplemental Address 3'),
+ 'sql_type' => 'varchar(96)',
+ 'input_type' => 'Text',
+ 'description' => ts('Supplemental Address Information, Line 3'),
+ 'add' => '1.1',
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ 'input_attrs' => [
+ 'maxlength' => 96,
+ ],
+ ],
+ 'city' => [
+ 'title' => ts('City'),
+ 'sql_type' => 'varchar(64)',
+ 'input_type' => 'Text',
+ 'description' => ts('City, Town or Village Name.'),
+ 'add' => '1.1',
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ 'input_attrs' => [
+ 'maxlength' => 64,
+ ],
+ ],
+ 'county_id' => [
+ 'title' => ts('County ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'ChainSelect',
+ 'description' => ts('Which County does this address belong to.'),
+ 'add' => '1.1',
+ 'input_attrs' => [
+ 'control_field' => 'state_province_id',
+ 'label' => ts('County'),
+ ],
+ 'pseudoconstant' => [
+ 'table' => 'civicrm_county',
+ 'key_column' => 'id',
+ 'label_column' => 'name',
+ 'abbr_column' => 'abbreviation',
+ 'suffixes' => [
+ 'label',
+ 'abbr',
+ ],
+ ],
+ 'entity_reference' => [
+ 'entity' => 'County',
+ 'key' => 'id',
+ 'on_delete' => 'SET NULL',
+ ],
+ ],
+ 'state_province_id' => [
+ 'title' => ts('State/Province ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'ChainSelect',
+ 'description' => ts('Which State_Province does this address belong to.'),
+ 'add' => '1.1',
+ 'localize_context' => 'province',
+ 'input_attrs' => [
+ 'control_field' => 'country_id',
+ 'label' => ts('State/Province'),
+ ],
+ 'pseudoconstant' => [
+ 'table' => 'civicrm_state_province',
+ 'key_column' => 'id',
+ 'label_column' => 'name',
+ 'abbr_column' => 'abbreviation',
+ 'suffixes' => [
+ 'label',
+ 'abbr',
+ ],
+ ],
+ 'entity_reference' => [
+ 'entity' => 'StateProvince',
+ 'key' => 'id',
+ 'on_delete' => 'SET NULL',
+ ],
+ ],
+ 'postal_code_suffix' => [
+ 'title' => ts('Postal Code Suffix'),
+ 'sql_type' => 'varchar(12)',
+ 'input_type' => 'Text',
+ 'description' => ts('Store the suffix, like the +4 part in the USPS system.'),
+ 'add' => '1.1',
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ 'input_attrs' => [
+ 'size' => '3',
+ 'maxlength' => 12,
+ ],
+ ],
+ 'postal_code' => [
+ 'title' => ts('Postal Code'),
+ 'sql_type' => 'varchar(64)',
+ 'input_type' => 'Text',
+ 'description' => ts('Store both US (zip5) AND international postal codes. App is responsible for country/region appropriate validation.'),
+ 'add' => '1.1',
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ 'input_attrs' => [
+ 'size' => '6',
+ 'maxlength' => 64,
+ ],
+ ],
+ 'usps_adc' => [
+ 'title' => ts('USPS Code'),
+ 'sql_type' => 'varchar(32)',
+ 'input_type' => 'Text',
+ 'deprecated' => TRUE,
+ 'description' => ts('USPS Bulk mailing code.'),
+ 'add' => '1.1',
+ 'input_attrs' => [
+ 'maxlength' => 32,
+ ],
+ ],
+ 'country_id' => [
+ 'title' => ts('Country ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Select',
+ 'description' => ts('Which Country does this address belong to.'),
+ 'add' => '1.1',
+ 'localize_context' => 'country',
+ 'input_attrs' => [
+ 'label' => ts('Country'),
+ ],
+ 'pseudoconstant' => [
+ 'table' => 'civicrm_country',
+ 'key_column' => 'id',
+ 'label_column' => 'name',
+ 'name_column' => 'iso_code',
+ 'abbr_column' => 'iso_code',
+ 'suffixes' => [
+ 'label',
+ 'abbr',
+ ],
+ ],
+ 'entity_reference' => [
+ 'entity' => 'Country',
+ 'key' => 'id',
+ 'on_delete' => 'SET NULL',
+ ],
+ ],
+ 'geo_code_1' => [
+ 'title' => ts('Latitude'),
+ 'sql_type' => 'double',
+ 'input_type' => 'Text',
+ 'description' => ts('Latitude'),
+ 'add' => '1.1',
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ 'input_attrs' => [
+ 'size' => '9',
+ ],
+ ],
+ 'geo_code_2' => [
+ 'title' => ts('Longitude'),
+ 'sql_type' => 'double',
+ 'input_type' => 'Text',
+ 'description' => ts('Longitude'),
+ 'add' => '1.1',
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ 'input_attrs' => [
+ 'size' => '9',
+ ],
+ ],
+ 'manual_geo_code' => [
+ 'title' => ts('Is Manually Geocoded'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('Is this a manually entered geo code'),
+ 'add' => '4.3',
+ 'default' => FALSE,
+ 'usage' => [
+ 'export',
+ ],
+ ],
+ 'timezone' => [
+ 'title' => ts('Timezone'),
+ 'sql_type' => 'varchar(8)',
+ 'input_type' => 'Text',
+ 'description' => ts('Timezone expressed as a UTC offset - e.g. United States CST would be written as "UTC-6".'),
+ 'add' => '1.1',
+ 'input_attrs' => [
+ 'maxlength' => 8,
+ ],
+ ],
+ 'name' => [
+ 'title' => ts('Address Name'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'add' => '2.1',
+ 'unique_name' => 'address_name',
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'master_id' => [
+ 'title' => ts('Master Address ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'description' => ts('FK to Address ID'),
+ 'add' => '3.3',
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ 'input_attrs' => [
+ 'label' => ts('Master Address Belongs To'),
+ ],
+ 'entity_reference' => [
+ 'entity' => 'Address',
+ 'key' => 'id',
+ 'on_delete' => 'SET NULL',
+ ],
+ ],
+ ],
+];
diff --git a/www/modules/civicrm/schema/Core/AddressFormat.entityType.php b/www/modules/civicrm/schema/Core/AddressFormat.entityType.php
new file mode 100644
index 000000000..4a40ade7e
--- /dev/null
+++ b/www/modules/civicrm/schema/Core/AddressFormat.entityType.php
@@ -0,0 +1,32 @@
+ 'AddressFormat',
+ 'table' => 'civicrm_address_format',
+ 'class' => 'CRM_Core_DAO_AddressFormat',
+ 'getInfo' => fn() => [
+ 'title' => ts('Address Format'),
+ 'title_plural' => ts('Address Formats'),
+ 'description' => ts('FIXME'),
+ 'add' => '3.2',
+ ],
+ 'getFields' => fn() => [
+ 'id' => [
+ 'title' => ts('Address Format ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'required' => TRUE,
+ 'description' => ts('Address Format ID'),
+ 'add' => '3.2',
+ 'primary_key' => TRUE,
+ 'auto_increment' => TRUE,
+ ],
+ 'format' => [
+ 'title' => ts('Address Format'),
+ 'sql_type' => 'text',
+ 'input_type' => 'TextArea',
+ 'description' => ts('The format of an address'),
+ 'add' => '3.2',
+ ],
+ ],
+];
diff --git a/www/modules/civicrm/schema/Core/Cache.entityType.php b/www/modules/civicrm/schema/Core/Cache.entityType.php
new file mode 100644
index 000000000..dfaf57ebb
--- /dev/null
+++ b/www/modules/civicrm/schema/Core/Cache.entityType.php
@@ -0,0 +1,104 @@
+ 'Cache',
+ 'table' => 'civicrm_cache',
+ 'class' => 'CRM_Core_DAO_Cache',
+ 'getInfo' => fn() => [
+ 'title' => ts('Cache'),
+ 'title_plural' => ts('Caches'),
+ 'description' => ts('Table to cache items for civicrm components.'),
+ 'add' => '2.1',
+ ],
+ 'getIndices' => fn() => [
+ 'UI_group_name_path' => [
+ 'fields' => [
+ 'group_name' => TRUE,
+ 'path' => TRUE,
+ ],
+ 'unique' => TRUE,
+ 'add' => '5.61',
+ ],
+ 'index_expired_date' => [
+ 'fields' => [
+ 'expired_date' => TRUE,
+ ],
+ 'add' => '5.61',
+ ],
+ ],
+ 'getFields' => fn() => [
+ 'id' => [
+ 'title' => ts('Cache ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'required' => TRUE,
+ 'description' => ts('Unique table ID'),
+ 'add' => '2.1',
+ 'primary_key' => TRUE,
+ 'auto_increment' => TRUE,
+ ],
+ 'group_name' => [
+ 'title' => ts('Group Name'),
+ 'sql_type' => 'varchar(32)',
+ 'input_type' => 'Text',
+ 'required' => TRUE,
+ 'description' => ts('group name for cache element, useful in cleaning cache elements'),
+ 'add' => '2.1',
+ 'input_attrs' => [
+ 'maxlength' => 32,
+ ],
+ ],
+ 'path' => [
+ 'title' => ts('Path'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'description' => ts('Unique path name for cache element'),
+ 'add' => '2.1',
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'data' => [
+ 'title' => ts('Data'),
+ 'sql_type' => 'longtext',
+ 'input_type' => 'TextArea',
+ 'description' => ts('data associated with this path'),
+ 'add' => '2.1',
+ ],
+ 'component_id' => [
+ 'title' => ts('Component ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Select',
+ 'description' => ts('Component that this menu item belongs to'),
+ 'add' => '2.1',
+ 'input_attrs' => [
+ 'label' => ts('Component'),
+ ],
+ 'pseudoconstant' => [
+ 'table' => 'civicrm_component',
+ 'key_column' => 'id',
+ 'label_column' => 'name',
+ ],
+ 'entity_reference' => [
+ 'entity' => 'Component',
+ 'key' => 'id',
+ ],
+ ],
+ 'created_date' => [
+ 'title' => ts('Created Date'),
+ 'sql_type' => 'timestamp',
+ 'input_type' => NULL,
+ 'description' => ts('When was the cache item created'),
+ 'add' => '2.1',
+ 'default' => 'CURRENT_TIMESTAMP',
+ ],
+ 'expired_date' => [
+ 'title' => ts('Expired Date'),
+ 'sql_type' => 'timestamp',
+ 'input_type' => NULL,
+ 'description' => ts('When should the cache item expire'),
+ 'add' => '2.1',
+ 'default' => NULL,
+ ],
+ ],
+];
diff --git a/www/modules/civicrm/schema/Core/Component.entityType.php b/www/modules/civicrm/schema/Core/Component.entityType.php
new file mode 100644
index 000000000..35daea071
--- /dev/null
+++ b/www/modules/civicrm/schema/Core/Component.entityType.php
@@ -0,0 +1,46 @@
+ 'Component',
+ 'table' => 'civicrm_component',
+ 'class' => 'CRM_Core_DAO_Component',
+ 'getInfo' => fn() => [
+ 'title' => ts('Component'),
+ 'title_plural' => ts('Components'),
+ 'description' => ts('FIXME'),
+ 'add' => '2.0',
+ ],
+ 'getFields' => fn() => [
+ 'id' => [
+ 'title' => ts('Component ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'required' => TRUE,
+ 'description' => ts('Component ID'),
+ 'add' => '2.0',
+ 'primary_key' => TRUE,
+ 'auto_increment' => TRUE,
+ ],
+ 'name' => [
+ 'title' => ts('Component name'),
+ 'sql_type' => 'varchar(64)',
+ 'input_type' => 'Text',
+ 'required' => TRUE,
+ 'description' => ts('Name of the component.'),
+ 'add' => '2.0',
+ 'input_attrs' => [
+ 'maxlength' => 64,
+ ],
+ ],
+ 'namespace' => [
+ 'title' => ts('Namespace reserved for component.'),
+ 'sql_type' => 'varchar(128)',
+ 'input_type' => 'Text',
+ 'description' => ts('Path to components main directory in a form of a class namespace.'),
+ 'add' => '2.0',
+ 'input_attrs' => [
+ 'maxlength' => 128,
+ ],
+ ],
+ ],
+];
diff --git a/www/modules/civicrm/schema/Core/Country.entityType.php b/www/modules/civicrm/schema/Core/Country.entityType.php
new file mode 100644
index 000000000..359509e3e
--- /dev/null
+++ b/www/modules/civicrm/schema/Core/Country.entityType.php
@@ -0,0 +1,148 @@
+ 'Country',
+ 'table' => 'civicrm_country',
+ 'class' => 'CRM_Core_DAO_Country',
+ 'getInfo' => fn() => [
+ 'title' => ts('Country'),
+ 'title_plural' => ts('Countries'),
+ 'description' => ts('Countries of the world'),
+ 'add' => '1.1',
+ 'icon' => 'fa-globe',
+ 'label_field' => 'name',
+ ],
+ 'getIndices' => fn() => [
+ 'UI_name_iso_code' => [
+ 'fields' => [
+ 'name' => TRUE,
+ 'iso_code' => TRUE,
+ ],
+ 'unique' => TRUE,
+ 'add' => '1.1',
+ ],
+ ],
+ 'getFields' => fn() => [
+ 'id' => [
+ 'title' => ts('Country ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'required' => TRUE,
+ 'description' => ts('Country ID'),
+ 'add' => '1.1',
+ 'primary_key' => TRUE,
+ 'auto_increment' => TRUE,
+ ],
+ 'name' => [
+ 'title' => ts('Country'),
+ 'sql_type' => 'varchar(64)',
+ 'input_type' => 'Text',
+ 'description' => ts('Country Name'),
+ 'add' => '1.1',
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ 'input_attrs' => [
+ 'maxlength' => 64,
+ ],
+ ],
+ 'iso_code' => [
+ 'title' => ts('Country ISO Code'),
+ 'sql_type' => 'char(2)',
+ 'input_type' => 'Text',
+ 'description' => ts('ISO Code'),
+ 'add' => '1.1',
+ 'input_attrs' => [
+ 'maxlength' => 2,
+ ],
+ ],
+ 'country_code' => [
+ 'title' => ts('Country Phone Prefix'),
+ 'sql_type' => 'varchar(4)',
+ 'input_type' => 'Text',
+ 'description' => ts('National prefix to be used when dialing TO this country.'),
+ 'add' => '1.1',
+ 'input_attrs' => [
+ 'maxlength' => 4,
+ ],
+ ],
+ 'address_format_id' => [
+ 'title' => ts('Address Format ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'description' => ts('Foreign key to civicrm_address_format.id.'),
+ 'add' => '3.2',
+ 'input_attrs' => [
+ 'label' => ts('Address Format'),
+ ],
+ 'entity_reference' => [
+ 'entity' => 'AddressFormat',
+ 'key' => 'id',
+ ],
+ ],
+ 'idd_prefix' => [
+ 'title' => ts('Outgoing Phone Prefix'),
+ 'sql_type' => 'varchar(4)',
+ 'input_type' => 'Text',
+ 'description' => ts('International direct dialing prefix from within the country TO another country'),
+ 'add' => '1.1',
+ 'input_attrs' => [
+ 'maxlength' => 4,
+ ],
+ ],
+ 'ndd_prefix' => [
+ 'title' => ts('Area Code'),
+ 'sql_type' => 'varchar(4)',
+ 'input_type' => 'Text',
+ 'description' => ts('Access prefix to call within a country to a different area'),
+ 'add' => '1.1',
+ 'input_attrs' => [
+ 'maxlength' => 4,
+ ],
+ ],
+ 'region_id' => [
+ 'title' => ts('World Region ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Select',
+ 'required' => TRUE,
+ 'description' => ts('Foreign key to civicrm_worldregion.id.'),
+ 'add' => '1.8',
+ 'localize_context' => 'country',
+ 'input_attrs' => [
+ 'label' => ts('World Region'),
+ ],
+ 'pseudoconstant' => [
+ 'table' => 'civicrm_worldregion',
+ 'key_column' => 'id',
+ 'label_column' => 'name',
+ ],
+ 'entity_reference' => [
+ 'entity' => 'WorldRegion',
+ 'key' => 'id',
+ ],
+ ],
+ 'is_province_abbreviated' => [
+ 'title' => ts('Abbreviate Province?'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('Should state/province be displayed as abbreviation for contacts from this country?'),
+ 'add' => '3.1',
+ 'default' => FALSE,
+ ],
+ 'is_active' => [
+ 'title' => ts('Country Is Active'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('Is this Country active?'),
+ 'add' => '5.35',
+ 'default' => TRUE,
+ 'input_attrs' => [
+ 'label' => ts('Enabled'),
+ ],
+ ],
+ ],
+];
diff --git a/www/modules/civicrm/schema/Core/County.entityType.php b/www/modules/civicrm/schema/Core/County.entityType.php
new file mode 100644
index 000000000..167472e1e
--- /dev/null
+++ b/www/modules/civicrm/schema/Core/County.entityType.php
@@ -0,0 +1,94 @@
+ 'County',
+ 'table' => 'civicrm_county',
+ 'class' => 'CRM_Core_DAO_County',
+ 'getInfo' => fn() => [
+ 'title' => ts('County'),
+ 'title_plural' => ts('Counties'),
+ 'description' => ts('FIXME'),
+ 'add' => '1.1',
+ 'label_field' => 'name',
+ ],
+ 'getIndices' => fn() => [
+ 'UI_name_state_id' => [
+ 'fields' => [
+ 'name' => TRUE,
+ 'state_province_id' => TRUE,
+ ],
+ 'unique' => TRUE,
+ 'add' => '1.1',
+ ],
+ ],
+ 'getFields' => fn() => [
+ 'id' => [
+ 'title' => ts('County ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'required' => TRUE,
+ 'description' => ts('County ID'),
+ 'add' => '1.1',
+ 'primary_key' => TRUE,
+ 'auto_increment' => TRUE,
+ ],
+ 'name' => [
+ 'title' => ts('County'),
+ 'sql_type' => 'varchar(64)',
+ 'input_type' => 'Text',
+ 'description' => ts('Name of County'),
+ 'add' => '1.1',
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ 'input_attrs' => [
+ 'maxlength' => 64,
+ ],
+ ],
+ 'abbreviation' => [
+ 'title' => ts('County Abbreviation'),
+ 'sql_type' => 'varchar(4)',
+ 'input_type' => 'Text',
+ 'description' => ts('2-4 Character Abbreviation of County'),
+ 'add' => '1.1',
+ 'input_attrs' => [
+ 'maxlength' => 4,
+ ],
+ ],
+ 'state_province_id' => [
+ 'title' => ts('State ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'required' => TRUE,
+ 'description' => ts('ID of State/Province that County belongs'),
+ 'add' => '1.1',
+ 'input_attrs' => [
+ 'label' => ts('State'),
+ ],
+ 'pseudoconstant' => [
+ 'table' => 'civicrm_state_province',
+ 'key_column' => 'id',
+ 'label_column' => 'name',
+ 'abbr_column' => 'abbreviation',
+ ],
+ 'entity_reference' => [
+ 'entity' => 'StateProvince',
+ 'key' => 'id',
+ ],
+ ],
+ 'is_active' => [
+ 'title' => ts('County Is Active'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('Is this County active?'),
+ 'add' => '5.35',
+ 'default' => TRUE,
+ 'input_attrs' => [
+ 'label' => ts('Enabled'),
+ ],
+ ],
+ ],
+];
diff --git a/www/modules/civicrm/schema/Core/CustomField.entityType.php b/www/modules/civicrm/schema/Core/CustomField.entityType.php
new file mode 100644
index 000000000..e4c90b903
--- /dev/null
+++ b/www/modules/civicrm/schema/Core/CustomField.entityType.php
@@ -0,0 +1,371 @@
+ 'CustomField',
+ 'table' => 'civicrm_custom_field',
+ 'class' => 'CRM_Core_DAO_CustomField',
+ 'getInfo' => fn() => [
+ 'title' => ts('Custom Field'),
+ 'title_plural' => ts('Custom Fields'),
+ 'description' => ts('Stores info about an extended (custom) property (data and form field info).'),
+ 'log' => TRUE,
+ 'add' => '1.1',
+ 'label_field' => 'label',
+ ],
+ 'getPaths' => fn() => [
+ 'add' => 'civicrm/admin/custom/group/field/add?reset=1&action=add&gid=[custom_group_id]',
+ 'update' => 'civicrm/admin/custom/group/field/update?action=update&reset=1&id=[id]&gid=[custom_group_id]',
+ 'preview' => 'civicrm/admin/custom/group/preview?reset=1&fid=[id]',
+ 'delete' => 'civicrm/admin/custom/group/field/delete?reset=1&id=[id]',
+ 'detach' => 'civicrm/admin/custom/group/field/move?reset=1&fid=[id]',
+ ],
+ 'getIndices' => fn() => [
+ 'UI_label_custom_group_id' => [
+ 'fields' => [
+ 'label' => TRUE,
+ 'custom_group_id' => TRUE,
+ ],
+ 'unique' => TRUE,
+ 'add' => '1.1',
+ ],
+ 'UI_name_custom_group_id' => [
+ 'fields' => [
+ 'name' => TRUE,
+ 'custom_group_id' => TRUE,
+ ],
+ 'unique' => TRUE,
+ 'add' => '4.3',
+ ],
+ ],
+ 'getFields' => fn() => [
+ 'id' => [
+ 'title' => ts('Custom Field ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'required' => TRUE,
+ 'description' => ts('Unique Custom Field ID'),
+ 'add' => '1.1',
+ 'primary_key' => TRUE,
+ 'auto_increment' => TRUE,
+ ],
+ 'custom_group_id' => [
+ 'title' => ts('Custom Group ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Select',
+ 'required' => TRUE,
+ 'description' => ts('FK to civicrm_custom_group.'),
+ 'add' => '1.1',
+ 'input_attrs' => [
+ 'label' => ts('Custom Group'),
+ ],
+ 'pseudoconstant' => [
+ 'table' => 'civicrm_custom_group',
+ 'key_column' => 'id',
+ 'label_column' => 'title',
+ ],
+ 'entity_reference' => [
+ 'entity' => 'CustomGroup',
+ 'key' => 'id',
+ 'on_delete' => 'CASCADE',
+ ],
+ ],
+ 'name' => [
+ 'title' => ts('Custom Field Name'),
+ 'sql_type' => 'varchar(64)',
+ 'input_type' => 'Text',
+ 'description' => ts('Variable name/programmatic handle for this field.'),
+ 'add' => '3.3',
+ 'input_attrs' => [
+ 'maxlength' => 64,
+ ],
+ ],
+ 'label' => [
+ 'title' => ts('Custom Field Label'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'required' => TRUE,
+ 'localizable' => TRUE,
+ 'description' => ts('Text for form field label (also friendly name for administering this custom property).'),
+ 'add' => '1.1',
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'data_type' => [
+ 'title' => ts('Data Type'),
+ 'sql_type' => 'varchar(16)',
+ 'input_type' => 'Select',
+ 'required' => TRUE,
+ 'description' => ts('Controls location of data storage in extended_data table.'),
+ 'add' => '1.1',
+ 'input_attrs' => [
+ 'label' => ts('Data Type'),
+ 'maxlength' => 16,
+ ],
+ 'pseudoconstant' => [
+ 'callback' => 'CRM_Core_BAO_CustomField::dataType',
+ ],
+ ],
+ 'html_type' => [
+ 'title' => ts('HTML Type'),
+ 'sql_type' => 'varchar(32)',
+ 'input_type' => 'Select',
+ 'required' => TRUE,
+ 'description' => ts('HTML types plus several built-in extended types.'),
+ 'add' => '1.1',
+ 'input_attrs' => [
+ 'label' => ts('Field Input Type'),
+ 'maxlength' => 32,
+ ],
+ 'pseudoconstant' => [
+ 'callback' => 'CRM_Core_SelectValues::customHtmlType',
+ ],
+ ],
+ 'default_value' => [
+ 'title' => ts('Custom Field Default'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'description' => ts('Use form_options.is_default for field_types which use options.'),
+ 'add' => '1.1',
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'is_required' => [
+ 'title' => ts('Custom Field Is Required?'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('Is a value required for this property.'),
+ 'add' => '1.1',
+ 'default' => FALSE,
+ ],
+ 'is_searchable' => [
+ 'title' => ts('Allow Searching on Field?'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('Is this property searchable.'),
+ 'add' => '1.1',
+ 'default' => FALSE,
+ ],
+ 'is_search_range' => [
+ 'title' => ts('Search as a Range'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('Is this property range searchable.'),
+ 'add' => '1.4',
+ 'default' => FALSE,
+ ],
+ 'weight' => [
+ 'title' => ts('Order'),
+ 'sql_type' => 'int',
+ 'input_type' => 'Number',
+ 'required' => TRUE,
+ 'description' => ts('Controls field display order within an extended property group.'),
+ 'add' => '1.1',
+ 'default' => 1,
+ ],
+ 'help_pre' => [
+ 'title' => ts('Custom Field Pre Text'),
+ 'sql_type' => 'text',
+ 'input_type' => 'TextArea',
+ 'localizable' => TRUE,
+ 'description' => ts('Description and/or help text to display before this field.'),
+ 'add' => '1.1',
+ ],
+ 'help_post' => [
+ 'title' => ts('Custom Field Post Text'),
+ 'sql_type' => 'text',
+ 'input_type' => 'TextArea',
+ 'localizable' => TRUE,
+ 'description' => ts('Description and/or help text to display after this field.'),
+ 'add' => '1.1',
+ ],
+ 'attributes' => [
+ 'title' => ts('Custom Field Attributes'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'description' => ts('Store collection of type-appropriate attributes, e.g. textarea needs rows/cols attributes'),
+ 'add' => '1.1',
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'is_active' => [
+ 'title' => ts('Custom Field Is Active?'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'description' => ts('Is this property active?'),
+ 'add' => '1.1',
+ 'default' => TRUE,
+ 'input_attrs' => [
+ 'label' => ts('Enabled'),
+ ],
+ ],
+ 'is_view' => [
+ 'title' => ts('Field is Viewable'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('Is this property set by PHP Code? A code field is viewable but not editable'),
+ 'add' => '1.1',
+ 'default' => FALSE,
+ ],
+ 'options_per_line' => [
+ 'title' => ts('Field Options Per Line'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'description' => ts('number of options per line for checkbox and radio'),
+ ],
+ 'text_length' => [
+ 'title' => ts('Field Length'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'description' => ts('field length if alphanumeric'),
+ 'add' => '2.2',
+ ],
+ 'start_date_years' => [
+ 'title' => ts('Field Start Date'),
+ 'sql_type' => 'int',
+ 'input_type' => 'Number',
+ 'description' => ts('Date may be up to start_date_years years prior to the current date.'),
+ 'add' => '1.4',
+ ],
+ 'end_date_years' => [
+ 'title' => ts('Field End Date'),
+ 'sql_type' => 'int',
+ 'input_type' => 'Number',
+ 'description' => ts('Date may be up to end_date_years years after the current date.'),
+ 'add' => '1.4',
+ ],
+ 'date_format' => [
+ 'title' => ts('Field Data Format'),
+ 'sql_type' => 'varchar(64)',
+ 'input_type' => 'Select',
+ 'description' => ts('date format for custom date'),
+ 'add' => '3.1',
+ 'input_attrs' => [
+ 'maxlength' => 64,
+ ],
+ 'pseudoconstant' => [
+ 'callback' => 'CRM_Core_SelectValues::getDatePluginInputFormats',
+ ],
+ ],
+ 'time_format' => [
+ 'title' => ts('Field Time Format'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Select',
+ 'description' => ts('time format for custom date'),
+ 'add' => '3.1',
+ 'pseudoconstant' => [
+ 'callback' => 'CRM_Core_SelectValues::getTimeFormats',
+ ],
+ ],
+ 'note_columns' => [
+ 'title' => ts('Field Note Columns'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'description' => ts('Number of columns in Note Field'),
+ 'add' => '1.4',
+ ],
+ 'note_rows' => [
+ 'title' => ts('Field Note Rows'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'description' => ts('Number of rows in Note Field'),
+ 'add' => '1.4',
+ ],
+ 'column_name' => [
+ 'title' => ts('Field Column Name'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'description' => ts('Name of the column that holds the values for this field.'),
+ 'add' => '2.0',
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'option_group_id' => [
+ 'title' => ts('Field Option Group ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'description' => ts('For elements with options, the option group id that is used'),
+ 'add' => '1.4',
+ 'input_attrs' => [
+ 'label' => ts('Field Option Group'),
+ ],
+ 'pseudoconstant' => [
+ 'table' => 'civicrm_option_group',
+ 'key_column' => 'id',
+ 'label_column' => 'title',
+ ],
+ 'entity_reference' => [
+ 'entity' => 'OptionGroup',
+ 'key' => 'id',
+ 'on_delete' => 'SET NULL',
+ ],
+ ],
+ 'serialize' => [
+ 'title' => ts('Serialize'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Select',
+ 'required' => TRUE,
+ 'description' => ts('Serialization method - a non-zero value indicates a multi-valued field.'),
+ 'add' => '5.27',
+ 'default' => 0,
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ 'pseudoconstant' => [
+ 'callback' => 'CRM_Core_SelectValues::fieldSerialization',
+ ],
+ ],
+ 'filter' => [
+ 'title' => ts('Field Filter'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'description' => ts('Stores Contact Get API params contact reference custom fields. May be used for other filters in the future.'),
+ 'add' => '4.1',
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'in_selector' => [
+ 'title' => ts('Field Display'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('Should the multi-record custom field values be displayed in tab table listing'),
+ 'add' => '4.5',
+ 'default' => FALSE,
+ ],
+ 'fk_entity' => [
+ 'title' => ts('Entity'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'description' => ts('Name of entity being referenced.'),
+ 'add' => '5.60',
+ 'default' => NULL,
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'fk_entity_on_delete' => [
+ 'title' => ts('On Referenced Entity Delete'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Select',
+ 'required' => TRUE,
+ 'description' => ts('Behavior if referenced entity is deleted.'),
+ 'add' => '5.71',
+ 'default' => 'set_null',
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ 'pseudoconstant' => [
+ 'callback' => 'CRM_Core_BAO_CustomField::getFkEntityOnDeleteOptions',
+ ],
+ ],
+ ],
+];
diff --git a/www/modules/civicrm/schema/Core/CustomGroup.entityType.php b/www/modules/civicrm/schema/Core/CustomGroup.entityType.php
new file mode 100644
index 000000000..206035b01
--- /dev/null
+++ b/www/modules/civicrm/schema/Core/CustomGroup.entityType.php
@@ -0,0 +1,289 @@
+ 'CustomGroup',
+ 'table' => 'civicrm_custom_group',
+ 'class' => 'CRM_Core_DAO_CustomGroup',
+ 'getInfo' => fn() => [
+ 'title' => ts('Custom Field Group'),
+ 'title_plural' => ts('Custom Field Groups'),
+ 'description' => ts('All extended (custom) properties are associated with a group. These are logical sets of related data.'),
+ 'log' => TRUE,
+ 'add' => '1.1',
+ 'label_field' => 'title',
+ ],
+ 'getPaths' => fn() => [
+ 'add' => 'civicrm/admin/custom/group/edit?action=add&reset=1',
+ 'update' => 'civicrm/admin/custom/group/edit?action=update&reset=1&id=[id]',
+ 'preview' => 'civicrm/admin/custom/group/preview?reset=1&gid=[id]',
+ 'delete' => 'civicrm/admin/custom/group/delete?reset=1&id=[id]',
+ 'browse' => 'civicrm/admin/custom/group',
+ ],
+ 'getIndices' => fn() => [
+ 'UI_title_extends' => [
+ 'fields' => [
+ 'title' => TRUE,
+ 'extends' => TRUE,
+ ],
+ 'unique' => TRUE,
+ 'add' => '2.1',
+ ],
+ 'UI_name' => [
+ 'fields' => [
+ 'name' => TRUE,
+ ],
+ 'unique' => TRUE,
+ 'add' => '5.47',
+ ],
+ ],
+ 'getFields' => fn() => [
+ 'id' => [
+ 'title' => ts('Custom Group ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'required' => TRUE,
+ 'description' => ts('Unique Custom Group ID'),
+ 'add' => '1.1',
+ 'primary_key' => TRUE,
+ 'auto_increment' => TRUE,
+ ],
+ 'name' => [
+ 'title' => ts('Custom Group Name'),
+ 'sql_type' => 'varchar(64)',
+ 'input_type' => 'Text',
+ 'description' => ts('Variable name/programmatic handle for this group.'),
+ 'add' => '1.1',
+ 'input_attrs' => [
+ 'maxlength' => 64,
+ ],
+ ],
+ 'title' => [
+ 'title' => ts('Custom Group Title'),
+ 'sql_type' => 'varchar(64)',
+ 'input_type' => 'Text',
+ 'required' => TRUE,
+ 'localizable' => TRUE,
+ 'description' => ts('Friendly Name.'),
+ 'add' => '1.1',
+ 'input_attrs' => [
+ 'maxlength' => 64,
+ ],
+ ],
+ 'extends' => [
+ 'title' => ts('Custom Group Extends'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Select',
+ 'description' => ts('Type of object this group extends (can add other options later e.g. contact_address, etc.).'),
+ 'add' => '1.1',
+ 'default' => 'Contact',
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ 'pseudoconstant' => [
+ 'callback' => 'CRM_Core_BAO_CustomGroup::getCustomGroupExtendsOptions',
+ 'suffixes' => [
+ 'name',
+ 'label',
+ 'grouping',
+ 'icon',
+ ],
+ ],
+ ],
+ 'extends_entity_column_id' => [
+ 'title' => ts('Custom Group Subtype List'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'ChainSelect',
+ 'description' => ts('FK to civicrm_option_value.value (for option group custom_data_type)'),
+ 'add' => '2.2',
+ 'default' => NULL,
+ 'input_attrs' => [
+ 'control_field' => 'extends',
+ ],
+ 'pseudoconstant' => [
+ 'callback' => 'CRM_Core_BAO_CustomGroup::getExtendsEntityColumnIdOptions',
+ 'suffixes' => [
+ 'name',
+ 'label',
+ 'grouping',
+ ],
+ ],
+ ],
+ 'extends_entity_column_value' => [
+ 'title' => ts('Custom Group Subtype'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'ChainSelect',
+ 'description' => ts('linking custom group for dynamic object'),
+ 'add' => '1.6',
+ 'serialize' => CRM_Core_DAO::SERIALIZE_SEPARATOR_BOOKEND,
+ 'input_attrs' => [
+ 'control_field' => 'extends_entity_column_id',
+ 'maxlength' => 255,
+ ],
+ 'pseudoconstant' => [
+ 'callback' => 'CRM_Core_BAO_CustomGroup::getExtendsEntityColumnValueOptions',
+ ],
+ ],
+ 'style' => [
+ 'title' => ts('Custom Group Style'),
+ 'sql_type' => 'varchar(15)',
+ 'input_type' => 'Select',
+ 'description' => ts('Visual relationship between this form and its parent.'),
+ 'add' => '1.1',
+ 'input_attrs' => [
+ 'maxlength' => 15,
+ ],
+ 'pseudoconstant' => [
+ 'callback' => 'CRM_Core_SelectValues::customGroupStyle',
+ ],
+ ],
+ 'collapse_display' => [
+ 'title' => ts('Collapse Custom Group?'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('Will this group be in collapsed or expanded mode on initial display ?'),
+ 'add' => '1.1',
+ 'default' => FALSE,
+ ],
+ 'help_pre' => [
+ 'title' => ts('Custom Group Pre Text'),
+ 'sql_type' => 'text',
+ 'input_type' => 'TextArea',
+ 'localizable' => TRUE,
+ 'description' => ts('Description and/or help text to display before fields in form.'),
+ 'add' => '1.1',
+ 'input_attrs' => [
+ 'rows' => 4,
+ 'cols' => 80,
+ ],
+ ],
+ 'help_post' => [
+ 'title' => ts('Custom Group Post Text'),
+ 'sql_type' => 'text',
+ 'input_type' => 'TextArea',
+ 'localizable' => TRUE,
+ 'description' => ts('Description and/or help text to display after fields in form.'),
+ 'add' => '1.1',
+ 'input_attrs' => [
+ 'rows' => 4,
+ 'cols' => 80,
+ ],
+ ],
+ 'weight' => [
+ 'title' => ts('Order'),
+ 'sql_type' => 'int',
+ 'input_type' => 'Number',
+ 'required' => TRUE,
+ 'description' => ts('Controls display order when multiple extended property groups are setup for the same class.'),
+ 'add' => '1.1',
+ 'default' => 1,
+ ],
+ 'is_active' => [
+ 'title' => ts('Custom Group Is Active?'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('Is this property active?'),
+ 'add' => '1.1',
+ 'default' => TRUE,
+ 'input_attrs' => [
+ 'label' => ts('Enabled'),
+ ],
+ ],
+ 'table_name' => [
+ 'title' => ts('Table Name'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => NULL,
+ 'readonly' => TRUE,
+ 'description' => ts('Name of the table that holds the values for this group.'),
+ 'add' => '2.0',
+ 'input_attrs' => [
+ 'label' => ts('Table Name'),
+ 'maxlength' => 255,
+ ],
+ ],
+ 'is_multiple' => [
+ 'title' => ts('Supports Multiple Records'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('Does this group hold multiple values?'),
+ 'add' => '2.0',
+ 'default' => FALSE,
+ ],
+ 'min_multiple' => [
+ 'title' => ts('Minimum Multiple Records'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'description' => ts('minimum number of multiple records (typically 0?)'),
+ 'add' => '2.2',
+ ],
+ 'max_multiple' => [
+ 'title' => ts('Maximum Multiple Records'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'description' => ts('maximum number of multiple records, if 0 - no max'),
+ 'add' => '2.2',
+ ],
+ 'collapse_adv_display' => [
+ 'title' => ts('Collapse Group Display'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('Will this group be in collapsed or expanded mode on advanced search display ?'),
+ 'add' => '3.0',
+ 'default' => FALSE,
+ ],
+ 'created_id' => [
+ 'title' => ts('Created By Contact ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'description' => ts('FK to civicrm_contact, who created this custom group'),
+ 'add' => '3.0',
+ 'input_attrs' => [
+ 'label' => ts('Created By'),
+ ],
+ 'entity_reference' => [
+ 'entity' => 'Contact',
+ 'key' => 'id',
+ 'on_delete' => 'SET NULL',
+ ],
+ ],
+ 'created_date' => [
+ 'title' => ts('Custom Group Created Date'),
+ 'sql_type' => 'datetime',
+ 'input_type' => 'Select Date',
+ 'description' => ts('Date and time this custom group was created.'),
+ 'add' => '3.0',
+ ],
+ 'is_reserved' => [
+ 'title' => ts('Reserved Group?'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('Is this a reserved Custom Group?'),
+ 'add' => '4.4',
+ 'default' => FALSE,
+ ],
+ 'is_public' => [
+ 'title' => ts('Custom Group Is Public?'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('Is this property public?'),
+ 'add' => '4.7',
+ 'default' => TRUE,
+ ],
+ 'icon' => [
+ 'title' => ts('Icon'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'description' => ts('crm-i icon class'),
+ 'add' => '5.28',
+ 'default' => NULL,
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ ],
+];
diff --git a/www/modules/civicrm/schema/Core/Dashboard.entityType.php b/www/modules/civicrm/schema/Core/Dashboard.entityType.php
new file mode 100644
index 000000000..9a82535ca
--- /dev/null
+++ b/www/modules/civicrm/schema/Core/Dashboard.entityType.php
@@ -0,0 +1,150 @@
+ 'Dashboard',
+ 'table' => 'civicrm_dashboard',
+ 'class' => 'CRM_Core_DAO_Dashboard',
+ 'getInfo' => fn() => [
+ 'title' => ts('Dashboard'),
+ 'title_plural' => ts('Dashboards'),
+ 'description' => ts('Table to store dashboard.'),
+ 'add' => '3.1',
+ ],
+ 'getFields' => fn() => [
+ 'id' => [
+ 'title' => ts('DashletID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'required' => TRUE,
+ 'add' => '3.1',
+ 'primary_key' => TRUE,
+ 'auto_increment' => TRUE,
+ ],
+ 'domain_id' => [
+ 'title' => ts('Domain ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'required' => TRUE,
+ 'description' => ts('Domain for dashboard'),
+ 'add' => '3.1',
+ 'input_attrs' => [
+ 'label' => ts('Domain'),
+ ],
+ 'pseudoconstant' => [
+ 'table' => 'civicrm_domain',
+ 'key_column' => 'id',
+ 'label_column' => 'name',
+ ],
+ 'entity_reference' => [
+ 'entity' => 'Domain',
+ 'key' => 'id',
+ 'on_delete' => 'CASCADE',
+ ],
+ ],
+ 'name' => [
+ 'title' => ts('Dashlet Name'),
+ 'sql_type' => 'varchar(64)',
+ 'input_type' => 'Text',
+ 'description' => ts('Internal name of dashlet.'),
+ 'add' => '4.4',
+ 'input_attrs' => [
+ 'maxlength' => 64,
+ ],
+ ],
+ 'label' => [
+ 'title' => ts('Dashlet Title'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'localizable' => TRUE,
+ 'description' => ts('dashlet title'),
+ 'add' => '3.1',
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'url' => [
+ 'title' => ts('Dashlet URL'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'description' => ts('url in case of external dashlet'),
+ 'add' => '3.1',
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'permission' => [
+ 'title' => ts('Dashlet Permission'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'description' => ts('Permission for the dashlet'),
+ 'add' => '3.1',
+ 'serialize' => CRM_Core_DAO::SERIALIZE_COMMA,
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'permission_operator' => [
+ 'title' => ts('Dashlet Permission Operator'),
+ 'sql_type' => 'varchar(3)',
+ 'input_type' => 'Select',
+ 'description' => ts('Permission Operator'),
+ 'add' => '3.1',
+ 'input_attrs' => [
+ 'maxlength' => 3,
+ ],
+ 'pseudoconstant' => [
+ 'callback' => 'CRM_Core_SelectValues::andOr',
+ ],
+ ],
+ 'fullscreen_url' => [
+ 'title' => ts('Fullscreen URL'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'description' => ts('fullscreen url for dashlet'),
+ 'add' => '3.4',
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'is_active' => [
+ 'title' => ts('Is Dashlet Active?'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('Is this dashlet active?'),
+ 'add' => '3.1',
+ 'default' => FALSE,
+ 'input_attrs' => [
+ 'label' => ts('Enabled'),
+ ],
+ ],
+ 'is_reserved' => [
+ 'title' => ts('Is Dashlet Reserved?'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('Is this dashlet reserved?'),
+ 'add' => '3.1',
+ 'default' => FALSE,
+ ],
+ 'cache_minutes' => [
+ 'title' => ts('Cache Minutes'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'required' => TRUE,
+ 'description' => ts('Number of minutes to cache dashlet content in browser localStorage.'),
+ 'add' => '4.7',
+ 'default' => 60,
+ ],
+ 'directive' => [
+ 'title' => ts('Angular directive'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'description' => ts('Element name of angular directive to invoke (lowercase hyphenated format)'),
+ 'add' => '5.33',
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ ],
+];
diff --git a/www/modules/civicrm/schema/Core/Discount.entityType.php b/www/modules/civicrm/schema/Core/Discount.entityType.php
new file mode 100644
index 000000000..fbc74b757
--- /dev/null
+++ b/www/modules/civicrm/schema/Core/Discount.entityType.php
@@ -0,0 +1,109 @@
+ 'Discount',
+ 'table' => 'civicrm_discount',
+ 'class' => 'CRM_Core_DAO_Discount',
+ 'getInfo' => fn() => [
+ 'title' => ts('Discount'),
+ 'title_plural' => ts('Discounts'),
+ 'description' => ts('Stores discounts for events on the basis of date'),
+ 'log' => TRUE,
+ 'add' => '2.1',
+ ],
+ 'getIndices' => fn() => [
+ 'index_entity' => [
+ 'fields' => [
+ 'entity_table' => TRUE,
+ 'entity_id' => TRUE,
+ ],
+ 'add' => '2.1',
+ ],
+ 'index_entity_option_id' => [
+ 'fields' => [
+ 'entity_table' => TRUE,
+ 'entity_id' => TRUE,
+ 'price_set_id' => TRUE,
+ ],
+ 'add' => '2.1',
+ ],
+ ],
+ 'getFields' => fn() => [
+ 'id' => [
+ 'title' => ts('Discount ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'required' => TRUE,
+ 'description' => ts('primary key'),
+ 'add' => '2.1',
+ 'primary_key' => TRUE,
+ 'auto_increment' => TRUE,
+ ],
+ 'entity_table' => [
+ 'title' => ts('Entity Table'),
+ 'sql_type' => 'varchar(64)',
+ 'input_type' => 'Select',
+ 'required' => TRUE,
+ 'description' => ts('physical tablename for entity being joined to discount, e.g. civicrm_event'),
+ 'add' => '2.1',
+ 'input_attrs' => [
+ 'maxlength' => 64,
+ ],
+ 'pseudoconstant' => [
+ 'callback' => 'CRM_Core_BAO_Discount::entityTables',
+ ],
+ ],
+ 'entity_id' => [
+ 'title' => ts('Entity ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'required' => TRUE,
+ 'description' => ts('FK to entity table specified in entity_table column.'),
+ 'add' => '2.1',
+ 'entity_reference' => [
+ 'dynamic_entity' => 'entity_table',
+ 'key' => 'id',
+ ],
+ ],
+ 'price_set_id' => [
+ 'title' => ts('Price Set ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Select',
+ 'required' => TRUE,
+ 'description' => ts('FK to civicrm_price_set'),
+ 'add' => '4.3',
+ 'unique_name' => 'participant_discount_name',
+ 'usage' => [
+ 'export',
+ ],
+ 'input_attrs' => [
+ 'label' => ts('Price Set'),
+ 'control_field' => 'entity_id',
+ ],
+ 'pseudoconstant' => [
+ 'table' => 'civicrm_price_set',
+ 'key_column' => 'id',
+ 'label_column' => 'title',
+ ],
+ 'entity_reference' => [
+ 'entity' => 'PriceSet',
+ 'key' => 'id',
+ 'on_delete' => 'CASCADE',
+ ],
+ ],
+ 'start_date' => [
+ 'title' => ts('Discount Start Date'),
+ 'sql_type' => 'date',
+ 'input_type' => 'Select Date',
+ 'description' => ts('Date when discount starts.'),
+ 'add' => '2.1',
+ ],
+ 'end_date' => [
+ 'title' => ts('Discount End Date'),
+ 'sql_type' => 'date',
+ 'input_type' => 'Select Date',
+ 'description' => ts('Date when discount ends.'),
+ 'add' => '2.1',
+ ],
+ ],
+];
diff --git a/www/modules/civicrm/schema/Core/Domain.entityType.php b/www/modules/civicrm/schema/Core/Domain.entityType.php
new file mode 100644
index 000000000..689462b38
--- /dev/null
+++ b/www/modules/civicrm/schema/Core/Domain.entityType.php
@@ -0,0 +1,94 @@
+ 'Domain',
+ 'table' => 'civicrm_domain',
+ 'class' => 'CRM_Core_DAO_Domain',
+ 'getInfo' => fn() => [
+ 'title' => ts('Domain'),
+ 'title_plural' => ts('Domains'),
+ 'description' => ts('Top-level hierarchy to support multi-org/domain installations. Define domains for multi-org installs, else all contacts belong to one domain.'),
+ 'add' => '1.1',
+ ],
+ 'getIndices' => fn() => [
+ 'UI_name' => [
+ 'fields' => [
+ 'name' => TRUE,
+ ],
+ 'unique' => TRUE,
+ 'add' => '1.1',
+ ],
+ ],
+ 'getFields' => fn() => [
+ 'id' => [
+ 'title' => ts('Domain ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'required' => TRUE,
+ 'description' => ts('Domain ID'),
+ 'add' => '1.1',
+ 'primary_key' => TRUE,
+ 'auto_increment' => TRUE,
+ ],
+ 'name' => [
+ 'title' => ts('Domain Name'),
+ 'sql_type' => 'varchar(64)',
+ 'input_type' => 'Text',
+ 'description' => ts('Name of Domain / Organization'),
+ 'add' => '1.1',
+ 'input_attrs' => [
+ 'maxlength' => 64,
+ ],
+ ],
+ 'description' => [
+ 'title' => ts('Domain Description'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'description' => ts('Description of Domain.'),
+ 'add' => '1.1',
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'version' => [
+ 'title' => ts('CiviCRM Version'),
+ 'sql_type' => 'varchar(32)',
+ 'input_type' => 'Text',
+ 'description' => ts('The civicrm version this instance is running'),
+ 'add' => '2.0',
+ 'input_attrs' => [
+ 'maxlength' => 32,
+ ],
+ ],
+ 'contact_id' => [
+ 'title' => ts('Contact ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'description' => ts('FK to Contact ID. This is specifically not an FK to avoid circular constraints'),
+ 'add' => '4.3',
+ 'input_attrs' => [
+ 'label' => ts('Contact'),
+ ],
+ 'entity_reference' => [
+ 'entity' => 'Contact',
+ 'key' => 'id',
+ ],
+ ],
+ 'locales' => [
+ 'title' => ts('Supported Languages'),
+ 'sql_type' => 'text',
+ 'input_type' => 'TextArea',
+ 'description' => ts('list of locales supported by the current db state (NULL for single-lang install)'),
+ 'add' => '2.1',
+ 'serialize' => CRM_Core_DAO::SERIALIZE_SEPARATOR_TRIMMED,
+ ],
+ 'locale_custom_strings' => [
+ 'title' => ts('Language Customizations'),
+ 'sql_type' => 'text',
+ 'input_type' => 'TextArea',
+ 'description' => ts('Locale specific string overrides'),
+ 'add' => '3.2',
+ 'serialize' => CRM_Core_DAO::SERIALIZE_PHP,
+ ],
+ ],
+];
diff --git a/www/modules/civicrm/schema/Core/Email.entityType.php b/www/modules/civicrm/schema/Core/Email.entityType.php
new file mode 100644
index 000000000..f651c6e9e
--- /dev/null
+++ b/www/modules/civicrm/schema/Core/Email.entityType.php
@@ -0,0 +1,197 @@
+ 'Email',
+ 'table' => 'civicrm_email',
+ 'class' => 'CRM_Core_DAO_Email',
+ 'getInfo' => fn() => [
+ 'title' => ts('Email'),
+ 'title_plural' => ts('Emails'),
+ 'description' => ts('Email information for a specific location.'),
+ 'log' => TRUE,
+ 'add' => '1.1',
+ 'icon' => 'fa-envelope-o',
+ 'label_field' => 'email',
+ ],
+ 'getIndices' => fn() => [
+ 'index_location_type' => [
+ 'fields' => [
+ 'location_type_id' => TRUE,
+ ],
+ 'add' => '2.0',
+ ],
+ 'UI_email' => [
+ 'fields' => [
+ 'email' => TRUE,
+ ],
+ 'add' => '1.5',
+ ],
+ 'index_is_primary' => [
+ 'fields' => [
+ 'is_primary' => TRUE,
+ ],
+ 'add' => '2.0',
+ ],
+ 'index_is_billing' => [
+ 'fields' => [
+ 'is_billing' => TRUE,
+ ],
+ 'add' => '2.0',
+ ],
+ ],
+ 'getFields' => fn() => [
+ 'id' => [
+ 'title' => ts('Email ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'required' => TRUE,
+ 'description' => ts('Unique Email ID'),
+ 'add' => '1.1',
+ 'primary_key' => TRUE,
+ 'auto_increment' => TRUE,
+ ],
+ 'contact_id' => [
+ 'title' => ts('Contact ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'description' => ts('FK to Contact ID'),
+ 'add' => '2.0',
+ 'input_attrs' => [
+ 'label' => ts('Contact'),
+ ],
+ 'entity_reference' => [
+ 'entity' => 'Contact',
+ 'key' => 'id',
+ 'on_delete' => 'CASCADE',
+ ],
+ ],
+ 'location_type_id' => [
+ 'title' => ts('Email Location Type'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Select',
+ 'description' => ts('Which Location does this email belong to.'),
+ 'add' => '2.0',
+ 'pseudoconstant' => [
+ 'table' => 'civicrm_location_type',
+ 'key_column' => 'id',
+ 'label_column' => 'display_name',
+ ],
+ ],
+ 'email' => [
+ 'title' => ts('Email'),
+ 'sql_type' => 'varchar(254)',
+ 'input_type' => 'Email',
+ 'description' => ts('Email address'),
+ 'add' => '1.1',
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ 'input_attrs' => [
+ 'size' => '30',
+ 'maxlength' => 254,
+ ],
+ ],
+ 'is_primary' => [
+ 'title' => ts('Is Primary'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'Radio',
+ 'required' => TRUE,
+ 'description' => ts('Is this the primary email address'),
+ 'add' => '1.1',
+ 'default' => FALSE,
+ ],
+ 'is_billing' => [
+ 'title' => ts('Is Billing Email?'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('Is this the billing?'),
+ 'add' => '2.0',
+ 'default' => FALSE,
+ ],
+ 'on_hold' => [
+ 'title' => ts('On Hold'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Select',
+ 'required' => TRUE,
+ 'description' => ts('Implicit FK to civicrm_option_value where option_group = email_on_hold.'),
+ 'add' => '1.1',
+ 'default' => 0,
+ 'usage' => [
+ 'export',
+ ],
+ 'pseudoconstant' => [
+ 'callback' => 'CRM_Core_PseudoConstant::emailOnHoldOptions',
+ ],
+ ],
+ 'is_bulkmail' => [
+ 'title' => ts('Use for Bulk Mail'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('Is this address for bulk mail ?'),
+ 'add' => '1.9',
+ 'default' => FALSE,
+ 'usage' => [
+ 'export',
+ ],
+ ],
+ 'hold_date' => [
+ 'title' => ts('Hold Date'),
+ 'sql_type' => 'datetime',
+ 'input_type' => 'Select Date',
+ 'readonly' => TRUE,
+ 'description' => ts('When the address went on bounce hold'),
+ 'add' => '1.1',
+ 'input_attrs' => [
+ 'label' => ts('Hold Date'),
+ 'format_type' => 'activityDateTime',
+ ],
+ ],
+ 'reset_date' => [
+ 'title' => ts('Reset Date'),
+ 'sql_type' => 'datetime',
+ 'input_type' => 'Select Date',
+ 'description' => ts('When the address bounce status was last reset'),
+ 'add' => '1.1',
+ 'input_attrs' => [
+ 'label' => ts('Reset Date'),
+ 'format_type' => 'activityDateTime',
+ ],
+ ],
+ 'signature_text' => [
+ 'title' => ts('Signature Text'),
+ 'sql_type' => 'text',
+ 'input_type' => 'TextArea',
+ 'description' => ts('Text formatted signature for the email.'),
+ 'add' => '3.2',
+ 'default' => NULL,
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ 'input_attrs' => [
+ 'label' => ts('Signature Text'),
+ ],
+ ],
+ 'signature_html' => [
+ 'title' => ts('Signature Html'),
+ 'sql_type' => 'text',
+ 'input_type' => 'TextArea',
+ 'description' => ts('HTML formatted signature for the email.'),
+ 'add' => '3.2',
+ 'default' => NULL,
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ 'input_attrs' => [
+ 'label' => ts('Signature HTML'),
+ ],
+ ],
+ ],
+];
diff --git a/www/modules/civicrm/schema/Core/EntityFile.entityType.php b/www/modules/civicrm/schema/Core/EntityFile.entityType.php
new file mode 100644
index 000000000..cd8dbdfef
--- /dev/null
+++ b/www/modules/civicrm/schema/Core/EntityFile.entityType.php
@@ -0,0 +1,78 @@
+ 'EntityFile',
+ 'table' => 'civicrm_entity_file',
+ 'class' => 'CRM_Core_DAO_EntityFile',
+ 'getInfo' => fn() => [
+ 'title' => ts('Entity File'),
+ 'title_plural' => ts('Entity Files'),
+ 'description' => ts('Attaches (joins) uploaded files (images, documents, etc.) to entities (Contacts, Groups, Actions).'),
+ 'log' => TRUE,
+ 'add' => '1.5',
+ ],
+ 'getIndices' => fn() => [
+ 'UI_entity_id_entity_table_file_id' => [
+ 'fields' => [
+ 'entity_id' => TRUE,
+ 'entity_table' => TRUE,
+ 'file_id' => TRUE,
+ ],
+ 'unique' => TRUE,
+ 'add' => '1.1',
+ ],
+ ],
+ 'getFields' => fn() => [
+ 'id' => [
+ 'title' => ts('Entity File ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'required' => TRUE,
+ 'description' => ts('primary key'),
+ 'add' => '1.5',
+ 'primary_key' => TRUE,
+ 'auto_increment' => TRUE,
+ ],
+ 'entity_table' => [
+ 'title' => ts('Entity Table'),
+ 'sql_type' => 'varchar(64)',
+ 'input_type' => 'Select',
+ 'required' => TRUE,
+ 'description' => ts('physical tablename for entity being joined to file, e.g. civicrm_contact'),
+ 'add' => '1.5',
+ 'input_attrs' => [
+ 'maxlength' => 64,
+ ],
+ 'pseudoconstant' => [
+ 'callback' => 'CRM_Core_BAO_File::getEntityTables',
+ ],
+ ],
+ 'entity_id' => [
+ 'title' => ts('Entity ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'required' => TRUE,
+ 'description' => ts('FK to entity table specified in entity_table column.'),
+ 'add' => '1.5',
+ 'entity_reference' => [
+ 'dynamic_entity' => 'entity_table',
+ 'key' => 'id',
+ ],
+ ],
+ 'file_id' => [
+ 'title' => ts('File ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'required' => TRUE,
+ 'description' => ts('FK to civicrm_file'),
+ 'add' => '1.5',
+ 'input_attrs' => [
+ 'label' => ts('File'),
+ ],
+ 'entity_reference' => [
+ 'entity' => 'File',
+ 'key' => 'id',
+ ],
+ ],
+ ],
+];
diff --git a/www/modules/civicrm/schema/Core/EntityTag.entityType.php b/www/modules/civicrm/schema/Core/EntityTag.entityType.php
new file mode 100644
index 000000000..ec80c449f
--- /dev/null
+++ b/www/modules/civicrm/schema/Core/EntityTag.entityType.php
@@ -0,0 +1,86 @@
+ 'EntityTag',
+ 'table' => 'civicrm_entity_tag',
+ 'class' => 'CRM_Core_DAO_EntityTag',
+ 'getInfo' => fn() => [
+ 'title' => ts('Entity Tag'),
+ 'title_plural' => ts('Entity Tags'),
+ 'description' => ts('Tag entities (Contacts, Groups, Actions) to categories.'),
+ 'log' => TRUE,
+ 'add' => '1.1',
+ ],
+ 'getIndices' => fn() => [
+ 'UI_entity_id_entity_table_tag_id' => [
+ 'fields' => [
+ 'entity_id' => TRUE,
+ 'entity_table' => TRUE,
+ 'tag_id' => TRUE,
+ ],
+ 'unique' => TRUE,
+ 'add' => '3.4',
+ ],
+ ],
+ 'getFields' => fn() => [
+ 'id' => [
+ 'title' => ts('Entity Tag ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'required' => TRUE,
+ 'description' => ts('primary key'),
+ 'add' => '1.1',
+ 'primary_key' => TRUE,
+ 'auto_increment' => TRUE,
+ ],
+ 'entity_table' => [
+ 'title' => ts('Entity Table'),
+ 'sql_type' => 'varchar(64)',
+ 'input_type' => 'Select',
+ 'description' => ts('physical tablename for entity being joined to file, e.g. civicrm_contact'),
+ 'add' => '3.2',
+ 'input_attrs' => [
+ 'maxlength' => 64,
+ ],
+ 'pseudoconstant' => [
+ 'option_group_name' => 'tag_used_for',
+ ],
+ ],
+ 'entity_id' => [
+ 'title' => ts('Entity ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'required' => TRUE,
+ 'description' => ts('FK to entity table specified in entity_table column.'),
+ 'add' => '3.2',
+ 'entity_reference' => [
+ 'dynamic_entity' => 'entity_table',
+ 'key' => 'id',
+ ],
+ ],
+ 'tag_id' => [
+ 'title' => ts('Tag ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Select',
+ 'required' => TRUE,
+ 'description' => ts('FK to civicrm_tag'),
+ 'add' => '1.1',
+ 'input_attrs' => [
+ 'label' => ts('Tag'),
+ 'control_field' => 'entity_table',
+ ],
+ 'pseudoconstant' => [
+ 'table' => 'civicrm_tag',
+ 'key_column' => 'id',
+ 'name_column' => 'name',
+ 'label_column' => 'label',
+ 'condition' => 'is_tagset != 1',
+ ],
+ 'entity_reference' => [
+ 'entity' => 'Tag',
+ 'key' => 'id',
+ 'on_delete' => 'CASCADE',
+ ],
+ ],
+ ],
+];
diff --git a/www/modules/civicrm/schema/Core/Extension.entityType.php b/www/modules/civicrm/schema/Core/Extension.entityType.php
new file mode 100644
index 000000000..e99e6b2e5
--- /dev/null
+++ b/www/modules/civicrm/schema/Core/Extension.entityType.php
@@ -0,0 +1,136 @@
+ 'Extension',
+ 'table' => 'civicrm_extension',
+ 'class' => 'CRM_Core_DAO_Extension',
+ 'getInfo' => fn() => [
+ 'title' => ts('Extension'),
+ 'title_plural' => ts('Extensions'),
+ 'description' => ts('FIXME'),
+ 'log' => FALSE,
+ 'add' => '4.2',
+ ],
+ 'getIndices' => fn() => [
+ 'UI_extension_full_name' => [
+ 'fields' => [
+ 'full_name' => TRUE,
+ ],
+ 'unique' => TRUE,
+ 'add' => '4.2',
+ ],
+ 'UI_extension_name' => [
+ 'fields' => [
+ 'name' => TRUE,
+ ],
+ 'add' => '4.2',
+ ],
+ ],
+ 'getFields' => fn() => [
+ 'id' => [
+ 'title' => ts('Extension ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'required' => TRUE,
+ 'description' => ts('Local Extension ID'),
+ 'add' => '4.2',
+ 'primary_key' => TRUE,
+ 'auto_increment' => TRUE,
+ ],
+ 'type' => [
+ 'title' => ts('Type'),
+ 'sql_type' => 'varchar(8)',
+ 'input_type' => 'Select',
+ 'required' => TRUE,
+ 'add' => '4.2',
+ 'input_attrs' => [
+ 'maxlength' => 8,
+ ],
+ 'pseudoconstant' => [
+ 'callback' => 'CRM_Core_SelectValues::getExtensionTypes',
+ ],
+ ],
+ 'full_name' => [
+ 'title' => ts('Key'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'required' => TRUE,
+ 'description' => ts('Fully qualified extension name'),
+ 'add' => '4.2',
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'name' => [
+ 'title' => ts('Name'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'description' => ts('Short name'),
+ 'add' => '4.2',
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'label' => [
+ 'title' => ts('Label'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'description' => ts('Short, printable name'),
+ 'add' => '4.2',
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'file' => [
+ 'title' => ts('File'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'description' => ts('Primary PHP file'),
+ 'add' => '4.2',
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'schema_version' => [
+ 'title' => ts('Schema Version'),
+ 'sql_type' => 'varchar(63)',
+ 'input_type' => 'Text',
+ 'description' => ts('Revision code of the database schema; the format is module-defined'),
+ 'add' => '4.2',
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ 'input_attrs' => [
+ 'maxlength' => 63,
+ ],
+ ],
+ 'is_active' => [
+ 'title' => ts('Extension is Active?'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'description' => ts('Is this extension active?'),
+ 'add' => '4.2',
+ 'default' => TRUE,
+ 'input_attrs' => [
+ 'label' => ts('Enabled'),
+ ],
+ ],
+ ],
+];
diff --git a/www/modules/civicrm/schema/Core/File.entityType.php b/www/modules/civicrm/schema/Core/File.entityType.php
new file mode 100644
index 000000000..f40ba2f7e
--- /dev/null
+++ b/www/modules/civicrm/schema/Core/File.entityType.php
@@ -0,0 +1,95 @@
+ 'File',
+ 'table' => 'civicrm_file',
+ 'class' => 'CRM_Core_DAO_File',
+ 'getInfo' => fn() => [
+ 'title' => ts('File'),
+ 'title_plural' => ts('Files'),
+ 'description' => ts('Data store for uploaded (attached) files (pointer to file on disk OR blob). Maybe be joined to entities via custom_value.file_id or entity_file table.'),
+ 'log' => TRUE,
+ 'add' => '1.5',
+ ],
+ 'getFields' => fn() => [
+ 'id' => [
+ 'title' => ts('File ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'required' => TRUE,
+ 'description' => ts('Unique ID'),
+ 'add' => '1.5',
+ 'primary_key' => TRUE,
+ 'auto_increment' => TRUE,
+ ],
+ 'file_type_id' => [
+ 'title' => ts('File Type'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Select',
+ 'description' => ts('Type of file (e.g. Transcript, Income Tax Return, etc). FK to civicrm_option_value.'),
+ 'add' => '1.5',
+ 'pseudoconstant' => [
+ 'option_group_name' => 'file_type',
+ ],
+ ],
+ 'mime_type' => [
+ 'title' => ts('Mime Type'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'description' => ts('mime type of the document'),
+ 'add' => '1.5',
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'uri' => [
+ 'title' => ts('Path'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'description' => ts('uri of the file on disk'),
+ 'add' => '1.5',
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'document' => [
+ 'title' => ts('File Contents'),
+ 'sql_type' => 'mediumblob',
+ 'input_type' => NULL,
+ 'description' => ts('contents of the document'),
+ 'add' => '1.5',
+ ],
+ 'description' => [
+ 'title' => ts('File Description'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'description' => ts('Additional descriptive text regarding this attachment (optional).'),
+ 'add' => '1.5',
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'upload_date' => [
+ 'title' => ts('File Upload Date'),
+ 'sql_type' => 'datetime',
+ 'input_type' => 'Select Date',
+ 'description' => ts('Date and time that this attachment was uploaded or written to server.'),
+ 'add' => '1.5',
+ ],
+ 'created_id' => [
+ 'title' => ts('Created By Contact ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'description' => ts('FK to civicrm_contact, who uploaded this file'),
+ 'add' => '5.3',
+ 'input_attrs' => [
+ 'label' => ts('Created By'),
+ ],
+ 'entity_reference' => [
+ 'entity' => 'Contact',
+ 'key' => 'id',
+ 'on_delete' => 'SET NULL',
+ ],
+ ],
+ ],
+];
diff --git a/www/modules/civicrm/schema/Core/IM.entityType.php b/www/modules/civicrm/schema/Core/IM.entityType.php
new file mode 100644
index 000000000..5e43f24c8
--- /dev/null
+++ b/www/modules/civicrm/schema/Core/IM.entityType.php
@@ -0,0 +1,124 @@
+ 'IM',
+ 'table' => 'civicrm_im',
+ 'class' => 'CRM_Core_DAO_IM',
+ 'getInfo' => fn() => [
+ 'title' => ts('Instant Messaging'),
+ 'title_plural' => ts('Instant Messaging'),
+ 'description' => ts('IM information for a specific location.'),
+ 'log' => TRUE,
+ 'add' => '1.1',
+ 'icon' => 'fa-comments-o',
+ 'label_field' => 'name',
+ ],
+ 'getIndices' => fn() => [
+ 'index_location_type' => [
+ 'fields' => [
+ 'location_type_id' => TRUE,
+ ],
+ 'add' => '2.0',
+ ],
+ 'UI_provider_id' => [
+ 'fields' => [
+ 'provider_id' => TRUE,
+ ],
+ 'add' => '1.6',
+ ],
+ 'index_is_primary' => [
+ 'fields' => [
+ 'is_primary' => TRUE,
+ ],
+ 'add' => '2.0',
+ ],
+ 'index_is_billing' => [
+ 'fields' => [
+ 'is_billing' => TRUE,
+ ],
+ 'add' => '2.0',
+ ],
+ ],
+ 'getFields' => fn() => [
+ 'id' => [
+ 'title' => ts('Instant Messenger ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'required' => TRUE,
+ 'description' => ts('Unique IM ID'),
+ 'add' => '1.1',
+ 'primary_key' => TRUE,
+ 'auto_increment' => TRUE,
+ ],
+ 'contact_id' => [
+ 'title' => ts('Contact ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'description' => ts('FK to Contact ID'),
+ 'add' => '2.0',
+ 'input_attrs' => [
+ 'label' => ts('Contact'),
+ ],
+ 'entity_reference' => [
+ 'entity' => 'Contact',
+ 'key' => 'id',
+ 'on_delete' => 'CASCADE',
+ ],
+ ],
+ 'location_type_id' => [
+ 'title' => ts('IM Location Type'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Select',
+ 'description' => ts('Which Location does this email belong to.'),
+ 'add' => '2.0',
+ 'pseudoconstant' => [
+ 'table' => 'civicrm_location_type',
+ 'key_column' => 'id',
+ 'label_column' => 'display_name',
+ ],
+ ],
+ 'name' => [
+ 'title' => ts('IM Screen Name'),
+ 'sql_type' => 'varchar(64)',
+ 'input_type' => 'Text',
+ 'description' => ts('IM screen name'),
+ 'add' => '1.1',
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ 'input_attrs' => [
+ 'maxlength' => 64,
+ ],
+ ],
+ 'provider_id' => [
+ 'title' => ts('IM Provider'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Select',
+ 'description' => ts('Which IM Provider does this screen name belong to.'),
+ 'add' => '1.1',
+ 'pseudoconstant' => [
+ 'option_group_name' => 'instant_messenger_service',
+ ],
+ ],
+ 'is_primary' => [
+ 'title' => ts('Is Primary'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'Radio',
+ 'required' => TRUE,
+ 'description' => ts('Is this the primary IM for this contact and location.'),
+ 'add' => '1.1',
+ 'default' => FALSE,
+ ],
+ 'is_billing' => [
+ 'title' => ts('Is IM Billing?'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('Is this the billing?'),
+ 'add' => '2.0',
+ 'default' => FALSE,
+ ],
+ ],
+];
diff --git a/www/modules/civicrm/schema/Core/Job.entityType.php b/www/modules/civicrm/schema/Core/Job.entityType.php
new file mode 100644
index 000000000..a63e646a1
--- /dev/null
+++ b/www/modules/civicrm/schema/Core/Job.entityType.php
@@ -0,0 +1,164 @@
+ 'Job',
+ 'table' => 'civicrm_job',
+ 'class' => 'CRM_Core_DAO_Job',
+ 'getInfo' => fn() => [
+ 'title' => ts('Job'),
+ 'title_plural' => ts('Jobs'),
+ 'description' => ts('Scheduled job.'),
+ 'log' => FALSE,
+ 'add' => '4.1',
+ ],
+ 'getPaths' => fn() => [
+ 'add' => 'civicrm/admin/job/add?reset=1&action=add',
+ 'delete' => 'civicrm/admin/job/edit?reset=1&action=delete&id=[id]',
+ 'update' => 'civicrm/admin/job/edit?reset=1&action=update&id=[id]',
+ 'browse' => 'civicrm/admin/job',
+ ],
+ 'getFields' => fn() => [
+ 'id' => [
+ 'title' => ts('Job ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'required' => TRUE,
+ 'description' => ts('Job ID'),
+ 'add' => '4.1',
+ 'primary_key' => TRUE,
+ 'auto_increment' => TRUE,
+ ],
+ 'domain_id' => [
+ 'title' => ts('Domain ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Select',
+ 'required' => TRUE,
+ 'description' => ts('Which Domain is this scheduled job for'),
+ 'add' => '4.1',
+ 'input_attrs' => [
+ 'label' => ts('Domain'),
+ ],
+ 'pseudoconstant' => [
+ 'table' => 'civicrm_domain',
+ 'key_column' => 'id',
+ 'label_column' => 'name',
+ ],
+ 'entity_reference' => [
+ 'entity' => 'Domain',
+ 'key' => 'id',
+ ],
+ ],
+ 'run_frequency' => [
+ 'title' => ts('Job Frequency'),
+ 'sql_type' => 'varchar(8)',
+ 'input_type' => 'Select',
+ 'description' => ts('Scheduled job run frequency.'),
+ 'add' => '4.1',
+ 'default' => 'Daily',
+ 'input_attrs' => [
+ 'maxlength' => 8,
+ ],
+ 'pseudoconstant' => [
+ 'callback' => 'CRM_Core_SelectValues::getJobFrequency',
+ ],
+ ],
+ 'last_run' => [
+ 'title' => ts('Last Run'),
+ 'sql_type' => 'timestamp',
+ 'input_type' => NULL,
+ 'description' => ts('When was this cron entry last run'),
+ 'add' => '4.1',
+ 'default' => NULL,
+ 'input_attrs' => [
+ 'label' => ts('Last Run'),
+ ],
+ ],
+ 'last_run_end' => [
+ 'title' => ts('Last Run End'),
+ 'sql_type' => 'timestamp',
+ 'input_type' => NULL,
+ 'description' => ts('When did this cron entry last finish running'),
+ 'add' => '5.72',
+ 'default' => NULL,
+ 'input_attrs' => [
+ 'label' => ts('Last Run End'),
+ ],
+ ],
+ 'scheduled_run_date' => [
+ 'title' => ts('Scheduled Run Date'),
+ 'sql_type' => 'timestamp',
+ 'input_type' => NULL,
+ 'description' => ts('When is this cron entry scheduled to run'),
+ 'add' => '4.7',
+ 'default' => NULL,
+ 'input_attrs' => [
+ 'label' => ts('Scheduled Run Date'),
+ ],
+ ],
+ 'name' => [
+ 'title' => ts('Job Name'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'description' => ts('Title of the job'),
+ 'add' => '4.1',
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'description' => [
+ 'title' => ts('Job Description'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'TextArea',
+ 'description' => ts('Description of the job'),
+ 'add' => '4.1',
+ 'input_attrs' => [
+ 'rows' => 4,
+ 'cols' => 60,
+ 'maxlength' => 255,
+ ],
+ ],
+ 'api_entity' => [
+ 'title' => ts('API Entity'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'description' => ts('Entity of the job api call'),
+ 'add' => '4.1',
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'api_action' => [
+ 'title' => ts('API Action'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'description' => ts('Action of the job api call'),
+ 'add' => '4.1',
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'parameters' => [
+ 'title' => ts('API Parameters'),
+ 'sql_type' => 'text',
+ 'input_type' => 'TextArea',
+ 'description' => ts('List of parameters to the command.'),
+ 'add' => '4.1',
+ 'input_attrs' => [
+ 'rows' => 4,
+ 'cols' => 60,
+ ],
+ ],
+ 'is_active' => [
+ 'title' => ts('Job Is Active?'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('Is this job active?'),
+ 'add' => '4.1',
+ 'default' => TRUE,
+ 'input_attrs' => [
+ 'label' => ts('Enabled'),
+ ],
+ ],
+ ],
+];
diff --git a/www/modules/civicrm/schema/Core/JobLog.entityType.php b/www/modules/civicrm/schema/Core/JobLog.entityType.php
new file mode 100644
index 000000000..ac8125e54
--- /dev/null
+++ b/www/modules/civicrm/schema/Core/JobLog.entityType.php
@@ -0,0 +1,102 @@
+ 'JobLog',
+ 'table' => 'civicrm_job_log',
+ 'class' => 'CRM_Core_DAO_JobLog',
+ 'getInfo' => fn() => [
+ 'title' => ts('Job Log'),
+ 'title_plural' => ts('Job Logs'),
+ 'description' => ts('Scheduled jobs log.'),
+ 'log' => FALSE,
+ 'add' => '4.1',
+ ],
+ 'getFields' => fn() => [
+ 'id' => [
+ 'title' => ts('Job Log ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'required' => TRUE,
+ 'description' => ts('Job log entry ID'),
+ 'add' => '4.1',
+ 'primary_key' => TRUE,
+ 'auto_increment' => TRUE,
+ ],
+ 'domain_id' => [
+ 'title' => ts('Domain ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'required' => TRUE,
+ 'description' => ts('Which Domain is this scheduled job for'),
+ 'add' => '4.1',
+ 'input_attrs' => [
+ 'label' => ts('Domain'),
+ ],
+ 'pseudoconstant' => [
+ 'table' => 'civicrm_domain',
+ 'key_column' => 'id',
+ 'label_column' => 'name',
+ ],
+ 'entity_reference' => [
+ 'entity' => 'Domain',
+ 'key' => 'id',
+ ],
+ ],
+ 'run_time' => [
+ 'title' => ts('Timestamp'),
+ 'sql_type' => 'timestamp',
+ 'input_type' => NULL,
+ 'description' => ts('Log entry date'),
+ 'add' => '4.1',
+ ],
+ 'job_id' => [
+ 'title' => ts('Job ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'description' => ts('Pointer to job id'),
+ 'add' => '4.1',
+ 'entity_reference' => [
+ 'entity' => 'Job',
+ 'key' => 'id',
+ 'on_delete' => 'SET NULL',
+ ],
+ ],
+ 'name' => [
+ 'title' => ts('Job Name'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'description' => ts('Title of the job'),
+ 'add' => '4.1',
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'command' => [
+ 'title' => ts('Command'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'description' => ts('Full path to file containing job script'),
+ 'add' => '4.1',
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'description' => [
+ 'title' => ts('Description'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'description' => ts('Title line of log entry'),
+ 'add' => '4.1',
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'data' => [
+ 'title' => ts('Extended Data'),
+ 'sql_type' => 'longtext',
+ 'input_type' => 'TextArea',
+ 'description' => ts('Potential extended data for specific job run (e.g. tracebacks).'),
+ 'add' => '4.1',
+ ],
+ ],
+];
diff --git a/www/modules/civicrm/schema/Core/LocBlock.entityType.php b/www/modules/civicrm/schema/Core/LocBlock.entityType.php
new file mode 100644
index 000000000..3b8d34624
--- /dev/null
+++ b/www/modules/civicrm/schema/Core/LocBlock.entityType.php
@@ -0,0 +1,139 @@
+ 'LocBlock',
+ 'table' => 'civicrm_loc_block',
+ 'class' => 'CRM_Core_DAO_LocBlock',
+ 'getInfo' => fn() => [
+ 'title' => ts('Location'),
+ 'title_plural' => ts('Locations'),
+ 'description' => ts('Define location specific properties'),
+ 'log' => TRUE,
+ 'add' => '2.0',
+ 'icon' => 'fa-map-o',
+ ],
+ 'getFields' => fn() => [
+ 'id' => [
+ 'title' => ts('Location Block ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'required' => TRUE,
+ 'description' => ts('Unique ID'),
+ 'add' => '2.0',
+ 'primary_key' => TRUE,
+ 'auto_increment' => TRUE,
+ ],
+ 'address_id' => [
+ 'title' => ts('Address ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'add' => '2.0',
+ 'input_attrs' => [
+ 'label' => ts('Address'),
+ ],
+ 'entity_reference' => [
+ 'entity' => 'Address',
+ 'key' => 'id',
+ 'on_delete' => 'SET NULL',
+ ],
+ ],
+ 'email_id' => [
+ 'title' => ts('Email ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'add' => '2.0',
+ 'input_attrs' => [
+ 'label' => ts('Email'),
+ ],
+ 'entity_reference' => [
+ 'entity' => 'Email',
+ 'key' => 'id',
+ 'on_delete' => 'SET NULL',
+ ],
+ ],
+ 'phone_id' => [
+ 'title' => ts('Phone ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'add' => '2.0',
+ 'input_attrs' => [
+ 'label' => ts('Phone'),
+ ],
+ 'entity_reference' => [
+ 'entity' => 'Phone',
+ 'key' => 'id',
+ 'on_delete' => 'SET NULL',
+ ],
+ ],
+ 'im_id' => [
+ 'title' => ts('IM ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'add' => '2.0',
+ 'input_attrs' => [
+ 'label' => ts('Instant Messenger'),
+ ],
+ 'entity_reference' => [
+ 'entity' => 'IM',
+ 'key' => 'id',
+ 'on_delete' => 'SET NULL',
+ ],
+ ],
+ 'address_2_id' => [
+ 'title' => ts('Address 2 ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'add' => '2.0',
+ 'input_attrs' => [
+ 'label' => ts('Address 2'),
+ ],
+ 'entity_reference' => [
+ 'entity' => 'Address',
+ 'key' => 'id',
+ 'on_delete' => 'SET NULL',
+ ],
+ ],
+ 'email_2_id' => [
+ 'title' => ts('Email 2 ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'add' => '2.0',
+ 'input_attrs' => [
+ 'label' => ts('Email 2'),
+ ],
+ 'entity_reference' => [
+ 'entity' => 'Email',
+ 'key' => 'id',
+ 'on_delete' => 'SET NULL',
+ ],
+ ],
+ 'phone_2_id' => [
+ 'title' => ts('Phone 2 ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'add' => '2.0',
+ 'input_attrs' => [
+ 'label' => ts('Phone 2'),
+ ],
+ 'entity_reference' => [
+ 'entity' => 'Phone',
+ 'key' => 'id',
+ 'on_delete' => 'SET NULL',
+ ],
+ ],
+ 'im_2_id' => [
+ 'title' => ts('IM 2 ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'add' => '2.0',
+ 'input_attrs' => [
+ 'label' => ts('Instant Messenger 2'),
+ ],
+ 'entity_reference' => [
+ 'entity' => 'IM',
+ 'key' => 'id',
+ 'on_delete' => 'SET NULL',
+ ],
+ ],
+ ],
+];
diff --git a/www/modules/civicrm/schema/Core/LocationType.entityType.php b/www/modules/civicrm/schema/Core/LocationType.entityType.php
new file mode 100644
index 000000000..53a04b73b
--- /dev/null
+++ b/www/modules/civicrm/schema/Core/LocationType.entityType.php
@@ -0,0 +1,121 @@
+ 'LocationType',
+ 'table' => 'civicrm_location_type',
+ 'class' => 'CRM_Core_DAO_LocationType',
+ 'getInfo' => fn() => [
+ 'title' => ts('Location Type'),
+ 'title_plural' => ts('Location Types'),
+ 'description' => ts('FIXME'),
+ 'log' => TRUE,
+ 'add' => '1.1',
+ 'label_field' => 'display_name',
+ ],
+ 'getPaths' => fn() => [
+ 'add' => 'civicrm/admin/locationType/edit?action=add&reset=1',
+ 'update' => 'civicrm/admin/locationType/edit?action=update&id=[id]&reset=1',
+ 'delete' => 'civicrm/admin/locationType/edit?action=delete&id=[id]&reset=1',
+ 'browse' => 'civicrm/admin/locationType',
+ ],
+ 'getIndices' => fn() => [
+ 'UI_name' => [
+ 'fields' => [
+ 'name' => TRUE,
+ ],
+ 'unique' => TRUE,
+ 'add' => '2.1',
+ ],
+ ],
+ 'getFields' => fn() => [
+ 'id' => [
+ 'title' => ts('Location Type ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'required' => TRUE,
+ 'description' => ts('Location Type ID'),
+ 'add' => '1.1',
+ 'primary_key' => TRUE,
+ 'auto_increment' => TRUE,
+ ],
+ 'name' => [
+ 'title' => ts('Location Type'),
+ 'sql_type' => 'varchar(64)',
+ 'input_type' => 'Text',
+ 'required' => TRUE,
+ 'description' => ts('Location Type Name.'),
+ 'add' => '1.1',
+ 'input_attrs' => [
+ 'maxlength' => 64,
+ ],
+ ],
+ 'display_name' => [
+ 'title' => ts('Display Name'),
+ 'sql_type' => 'varchar(64)',
+ 'input_type' => 'Text',
+ 'required' => TRUE,
+ 'localizable' => TRUE,
+ 'description' => ts('Location Type Display Name.'),
+ 'add' => '4.1',
+ 'input_attrs' => [
+ 'maxlength' => 64,
+ ],
+ ],
+ 'vcard_name' => [
+ 'title' => ts('vCard Location Type'),
+ 'sql_type' => 'varchar(64)',
+ 'input_type' => 'Text',
+ 'description' => ts('vCard Location Type Name.'),
+ 'add' => '1.1',
+ 'input_attrs' => [
+ 'maxlength' => 64,
+ ],
+ ],
+ 'description' => [
+ 'title' => ts('Description'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'description' => ts('Location Type Description.'),
+ 'add' => '1.1',
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'is_reserved' => [
+ 'title' => ts('Location Type is Reserved?'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('Is this location type a predefined system location?'),
+ 'add' => '1.1',
+ 'default' => FALSE,
+ 'input_attrs' => [
+ 'label' => ts('Reserved'),
+ ],
+ ],
+ 'is_active' => [
+ 'title' => ts('Location Type is Active?'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('Is this property active?'),
+ 'add' => '1.1',
+ 'default' => TRUE,
+ 'input_attrs' => [
+ 'label' => ts('Enabled'),
+ ],
+ ],
+ 'is_default' => [
+ 'title' => ts('Default Location Type?'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('Is this location type the default?'),
+ 'add' => '1.1',
+ 'default' => FALSE,
+ 'input_attrs' => [
+ 'label' => ts('Default'),
+ ],
+ ],
+ ],
+];
diff --git a/www/modules/civicrm/schema/Core/Log.entityType.php b/www/modules/civicrm/schema/Core/Log.entityType.php
new file mode 100644
index 000000000..7fafa0ee1
--- /dev/null
+++ b/www/modules/civicrm/schema/Core/Log.entityType.php
@@ -0,0 +1,86 @@
+ 'Log',
+ 'table' => 'civicrm_log',
+ 'class' => 'CRM_Core_DAO_Log',
+ 'getInfo' => fn() => [
+ 'title' => ts('Log'),
+ 'title_plural' => ts('Logs'),
+ 'description' => ts('Log can be linked to any object in the application.'),
+ 'add' => '1.5',
+ ],
+ 'getIndices' => fn() => [
+ 'index_entity' => [
+ 'fields' => [
+ 'entity_table' => TRUE,
+ 'entity_id' => TRUE,
+ ],
+ 'add' => '1.5',
+ ],
+ ],
+ 'getFields' => fn() => [
+ 'id' => [
+ 'title' => ts('Log ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'required' => TRUE,
+ 'description' => ts('Log ID'),
+ 'add' => '1.5',
+ 'primary_key' => TRUE,
+ 'auto_increment' => TRUE,
+ ],
+ 'entity_table' => [
+ 'title' => ts('Entity Table'),
+ 'sql_type' => 'varchar(64)',
+ 'input_type' => 'Text',
+ 'required' => TRUE,
+ 'description' => ts('Name of table where item being referenced is stored.'),
+ 'add' => '1.5',
+ 'input_attrs' => [
+ 'maxlength' => 64,
+ ],
+ ],
+ 'entity_id' => [
+ 'title' => ts('Entity ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'required' => TRUE,
+ 'description' => ts('Foreign key to the referenced item.'),
+ 'add' => '1.5',
+ 'entity_reference' => [
+ 'dynamic_entity' => 'entity_table',
+ 'key' => 'id',
+ ],
+ ],
+ 'data' => [
+ 'title' => ts('Data'),
+ 'sql_type' => 'text',
+ 'input_type' => 'TextArea',
+ 'description' => ts('Updates does to this object if any.'),
+ 'add' => '1.5',
+ ],
+ 'modified_id' => [
+ 'title' => ts('Modified By Contact ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'description' => ts('FK to Contact ID of person under whose credentials this data modification was made.'),
+ 'add' => '1.5',
+ 'input_attrs' => [
+ 'label' => ts('Modified By'),
+ ],
+ 'entity_reference' => [
+ 'entity' => 'Contact',
+ 'key' => 'id',
+ 'on_delete' => 'CASCADE',
+ ],
+ ],
+ 'modified_date' => [
+ 'title' => ts('Modified Date'),
+ 'sql_type' => 'datetime',
+ 'input_type' => 'Select Date',
+ 'description' => ts('When was the referenced entity created or modified or deleted.'),
+ 'add' => '1.5',
+ ],
+ ],
+];
diff --git a/www/modules/civicrm/schema/Core/MailSettings.entityType.php b/www/modules/civicrm/schema/Core/MailSettings.entityType.php
new file mode 100644
index 000000000..1a2cafeb9
--- /dev/null
+++ b/www/modules/civicrm/schema/Core/MailSettings.entityType.php
@@ -0,0 +1,278 @@
+ 'MailSettings',
+ 'table' => 'civicrm_mail_settings',
+ 'class' => 'CRM_Core_DAO_MailSettings',
+ 'getInfo' => fn() => [
+ 'title' => ts('Mail Account'),
+ 'title_plural' => ts('Mail Accounts'),
+ 'description' => ts('Various email accounts for use by CiviMail (and its processor)'),
+ 'add' => '2.2',
+ ],
+ 'getPaths' => fn() => [
+ 'add' => 'civicrm/admin/mailSettings/edit?action=add&reset=1',
+ 'update' => 'civicrm/admin/mailSettings/edit?action=update&id=[id]&reset=1',
+ 'delete' => 'civicrm/admin/mailSettings/edit?action=delete&id=[id]&reset=1',
+ 'browse' => 'civicrm/admin/mailSettings',
+ ],
+ 'getFields' => fn() => [
+ 'id' => [
+ 'title' => ts('Mail Settings ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'required' => TRUE,
+ 'description' => ts('primary key'),
+ 'add' => '2.2',
+ 'primary_key' => TRUE,
+ 'auto_increment' => TRUE,
+ ],
+ 'domain_id' => [
+ 'title' => ts('Domain ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'required' => TRUE,
+ 'description' => ts('Which Domain is this match entry for'),
+ 'add' => '3.1',
+ 'input_attrs' => [
+ 'label' => ts('Domain'),
+ ],
+ 'pseudoconstant' => [
+ 'table' => 'civicrm_domain',
+ 'key_column' => 'id',
+ 'label_column' => 'name',
+ ],
+ 'entity_reference' => [
+ 'entity' => 'Domain',
+ 'key' => 'id',
+ 'on_delete' => 'CASCADE',
+ ],
+ ],
+ 'name' => [
+ 'title' => ts('Mail Settings Name'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'description' => ts('name of this group of settings'),
+ 'add' => '2.2',
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'is_default' => [
+ 'title' => ts('Is Default Mail Settings?'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('whether this is the default set of settings for this domain'),
+ 'add' => '2.2',
+ 'default' => FALSE,
+ 'input_attrs' => [
+ 'label' => ts('Default'),
+ ],
+ ],
+ 'domain' => [
+ 'title' => ts('email Domain'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'description' => ts('email address domain (the part after @)'),
+ 'add' => '2.2',
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'localpart' => [
+ 'title' => ts('email Local Part'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'description' => ts('optional local part (like civimail+ for addresses like civimail+s.1.2@example.com)'),
+ 'add' => '2.2',
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'return_path' => [
+ 'title' => ts('Return Path'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'description' => ts('contents of the Return-Path header'),
+ 'add' => '2.2',
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'protocol' => [
+ 'title' => ts('Protocol'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Select',
+ 'description' => ts('name of the protocol to use for polling (like IMAP, POP3 or Maildir)'),
+ 'add' => '2.2',
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ 'pseudoconstant' => [
+ 'option_group_name' => 'mail_protocol',
+ ],
+ ],
+ 'server' => [
+ 'title' => ts('Mail Server'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'description' => ts('server to use when polling'),
+ 'add' => '2.2',
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'port' => [
+ 'title' => ts('Mail Port'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'description' => ts('port to use when polling'),
+ 'add' => '2.2',
+ ],
+ 'username' => [
+ 'title' => ts('Mail Account Username'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'description' => ts('username to use when polling'),
+ 'add' => '2.2',
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'password' => [
+ 'title' => ts('Mail Account Password'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'description' => ts('password to use when polling'),
+ 'add' => '2.2',
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'is_ssl' => [
+ 'title' => ts('Mail Account Uses SSL'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('whether to use SSL or not'),
+ 'add' => '2.2',
+ 'default' => FALSE,
+ ],
+ 'source' => [
+ 'title' => ts('Mail Folder'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'description' => ts('folder to poll from when using IMAP, path to poll from when using Maildir, etc.'),
+ 'add' => '2.2',
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'activity_status' => [
+ 'title' => ts('Activity Status'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Select',
+ 'description' => ts('Name of status to use when creating email to activity.'),
+ 'add' => '4.7',
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ 'pseudoconstant' => [
+ 'option_group_name' => 'activity_status',
+ 'key_column' => 'name',
+ ],
+ ],
+ 'is_non_case_email_skipped' => [
+ 'title' => ts('Skip emails which do not have a Case ID or Case hash'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('Enabling this option will have CiviCRM skip any emails that do not have the Case ID or Case Hash so that the system will only process emails that can be placed on case records. Any emails that are not processed will be moved to the ignored folder.'),
+ 'add' => '5.31',
+ 'default' => FALSE,
+ ],
+ 'is_contact_creation_disabled_if_no_match' => [
+ 'title' => ts('Do not create new contacts when filing emails'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('If this option is enabled, CiviCRM will not create new contacts when filing emails.'),
+ 'add' => '5.31',
+ 'default' => FALSE,
+ ],
+ 'is_active' => [
+ 'title' => ts('Enabled?'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('Ignored for bounce processing, only for email-to-activity'),
+ 'add' => '5.66',
+ 'default' => TRUE,
+ ],
+ 'activity_type_id' => [
+ 'title' => ts('Activity Type'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Select',
+ 'description' => ts('Implicit FK to civicrm_option_value where option_group = activity_type'),
+ 'add' => '5.66',
+ 'pseudoconstant' => [
+ 'option_group_name' => 'activity_type',
+ ],
+ ],
+ 'campaign_id' => [
+ 'title' => ts('Campaign ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'description' => ts('Foreign key to the Campaign.'),
+ 'add' => '5.66',
+ 'default' => NULL,
+ 'input_attrs' => [
+ 'label' => ts('Campaign'),
+ ],
+ 'pseudoconstant' => [
+ 'table' => 'civicrm_campaign',
+ 'key_column' => 'id',
+ 'label_column' => 'title',
+ 'prefetch' => 'disabled',
+ ],
+ 'entity_reference' => [
+ 'entity' => 'Campaign',
+ 'key' => 'id',
+ 'on_delete' => 'SET NULL',
+ ],
+ ],
+ 'activity_source' => [
+ 'title' => ts('Activity Source'),
+ 'sql_type' => 'varchar(4)',
+ 'input_type' => 'Select',
+ 'description' => ts('Which email recipient to add as the activity source (from, to, cc, bcc).'),
+ 'add' => '5.66',
+ 'input_attrs' => [
+ 'maxlength' => 4,
+ ],
+ ],
+ 'activity_targets' => [
+ 'title' => ts('Activity Targets'),
+ 'sql_type' => 'varchar(16)',
+ 'input_type' => 'Select',
+ 'description' => ts('Which email recipients to add as the activity targets (from, to, cc, bcc).'),
+ 'add' => '5.66',
+ 'serialize' => CRM_Core_DAO::SERIALIZE_COMMA,
+ 'input_attrs' => [
+ 'maxlength' => 16,
+ ],
+ ],
+ 'activity_assignees' => [
+ 'title' => ts('Activity Assignees'),
+ 'sql_type' => 'varchar(16)',
+ 'input_type' => 'Select',
+ 'description' => ts('Which email recipients to add as the activity assignees (from, to, cc, bcc).'),
+ 'add' => '5.66',
+ 'serialize' => CRM_Core_DAO::SERIALIZE_COMMA,
+ 'input_attrs' => [
+ 'maxlength' => 16,
+ ],
+ ],
+ ],
+];
diff --git a/www/modules/civicrm/schema/Core/Managed.entityType.php b/www/modules/civicrm/schema/Core/Managed.entityType.php
new file mode 100644
index 000000000..ef99e9010
--- /dev/null
+++ b/www/modules/civicrm/schema/Core/Managed.entityType.php
@@ -0,0 +1,108 @@
+ 'Managed',
+ 'table' => 'civicrm_managed',
+ 'class' => 'CRM_Core_DAO_Managed',
+ 'getInfo' => fn() => [
+ 'title' => ts('Managed Record'),
+ 'title_plural' => ts('Managed Records'),
+ 'description' => ts('List of declaratively managed objects'),
+ 'log' => FALSE,
+ 'add' => '4.2',
+ ],
+ 'getIndices' => fn() => [
+ 'UI_managed_module_name' => [
+ 'fields' => [
+ 'module' => TRUE,
+ 'name' => TRUE,
+ ],
+ 'add' => '4.2',
+ ],
+ 'UI_managed_entity' => [
+ 'fields' => [
+ 'entity_type' => TRUE,
+ 'entity_id' => TRUE,
+ ],
+ 'add' => '4.2',
+ ],
+ ],
+ 'getFields' => fn() => [
+ 'id' => [
+ 'title' => ts('Managed ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'required' => TRUE,
+ 'description' => ts('Surrogate Key'),
+ 'add' => '4.2',
+ 'primary_key' => TRUE,
+ 'auto_increment' => TRUE,
+ ],
+ 'module' => [
+ 'title' => ts('Module'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Select',
+ 'required' => TRUE,
+ 'description' => ts('Name of the module which declared this object (soft FK to civicrm_extension.full_name)'),
+ 'add' => '4.2',
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ 'pseudoconstant' => [
+ 'callback' => 'CRM_Core_BAO_Managed::getBaseModules',
+ ],
+ ],
+ 'name' => [
+ 'title' => ts('Name'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'required' => TRUE,
+ 'description' => ts('Symbolic name used by the module to identify the object'),
+ 'add' => '4.2',
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'entity_type' => [
+ 'title' => ts('Entity Type'),
+ 'sql_type' => 'varchar(64)',
+ 'input_type' => 'Text',
+ 'required' => TRUE,
+ 'description' => ts('API entity type'),
+ 'add' => '4.2',
+ 'input_attrs' => [
+ 'maxlength' => 64,
+ ],
+ ],
+ 'entity_id' => [
+ 'title' => ts('Entity ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'description' => ts('Soft foreign key to the referenced item.'),
+ 'add' => '4.2',
+ ],
+ 'cleanup' => [
+ 'title' => ts('Cleanup Setting'),
+ 'sql_type' => 'varchar(16)',
+ 'input_type' => 'Select',
+ 'required' => TRUE,
+ 'description' => ts('Policy on when to cleanup entity (always, never, unused)'),
+ 'add' => '4.5',
+ 'default' => 'always',
+ 'input_attrs' => [
+ 'maxlength' => 16,
+ ],
+ 'pseudoconstant' => [
+ 'callback' => 'CRM_Core_ManagedEntities::getCleanupOptions',
+ ],
+ ],
+ 'entity_modified_date' => [
+ 'title' => ts('Entity Modified Date'),
+ 'sql_type' => 'timestamp',
+ 'input_type' => NULL,
+ 'description' => ts('When the managed entity was changed from its original settings.'),
+ 'add' => '5.45',
+ 'default' => NULL,
+ ],
+ ],
+];
diff --git a/www/modules/civicrm/schema/Core/Mapping.entityType.php b/www/modules/civicrm/schema/Core/Mapping.entityType.php
new file mode 100644
index 000000000..448d83fd2
--- /dev/null
+++ b/www/modules/civicrm/schema/Core/Mapping.entityType.php
@@ -0,0 +1,71 @@
+ 'Mapping',
+ 'table' => 'civicrm_mapping',
+ 'class' => 'CRM_Core_DAO_Mapping',
+ 'getInfo' => fn() => [
+ 'title' => ts('Field Mapping'),
+ 'title_plural' => ts('Field Mappings'),
+ 'description' => ts('Store field mappings in import or export for reuse'),
+ 'add' => '1.2',
+ 'label_field' => 'name',
+ ],
+ 'getPaths' => fn() => [
+ 'add' => 'civicrm/admin/mapping/edit?reset=1&action=add',
+ 'browse' => 'civicrm/admin/mapping?reset=1',
+ 'update' => 'civicrm/admin/mapping/edit?reset=1&action=update&id=[id]',
+ ],
+ 'getIndices' => fn() => [
+ 'UI_name' => [
+ 'fields' => [
+ 'name' => TRUE,
+ ],
+ 'unique' => TRUE,
+ 'add' => '1.2',
+ ],
+ ],
+ 'getFields' => fn() => [
+ 'id' => [
+ 'title' => ts('Mapping ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'required' => TRUE,
+ 'description' => ts('Mapping ID'),
+ 'add' => '1.2',
+ 'primary_key' => TRUE,
+ 'auto_increment' => TRUE,
+ ],
+ 'name' => [
+ 'title' => ts('Mapping Name'),
+ 'sql_type' => 'varchar(64)',
+ 'input_type' => 'Text',
+ 'required' => TRUE,
+ 'description' => ts('Unique name of Mapping'),
+ 'add' => '1.2',
+ 'input_attrs' => [
+ 'maxlength' => 64,
+ ],
+ ],
+ 'description' => [
+ 'title' => ts('Description'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'description' => ts('Description of Mapping.'),
+ 'add' => '1.2',
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'mapping_type_id' => [
+ 'title' => ts('Mapping Type'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Select',
+ 'description' => ts('Mapping Type'),
+ 'add' => '2.1',
+ 'pseudoconstant' => [
+ 'option_group_name' => 'mapping_type',
+ ],
+ ],
+ ],
+];
diff --git a/www/modules/civicrm/schema/Core/MappingField.entityType.php b/www/modules/civicrm/schema/Core/MappingField.entityType.php
new file mode 100644
index 000000000..d9278c340
--- /dev/null
+++ b/www/modules/civicrm/schema/Core/MappingField.entityType.php
@@ -0,0 +1,169 @@
+ 'MappingField',
+ 'table' => 'civicrm_mapping_field',
+ 'class' => 'CRM_Core_DAO_MappingField',
+ 'getInfo' => fn() => [
+ 'title' => ts('Mapping Field'),
+ 'title_plural' => ts('Mapping Fields'),
+ 'description' => ts('Individual field mappings for Mapping'),
+ 'add' => '1.2',
+ ],
+ 'getFields' => fn() => [
+ 'id' => [
+ 'title' => ts('Mapping Field ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'required' => TRUE,
+ 'description' => ts('Mapping Field ID'),
+ 'add' => '1.2',
+ 'primary_key' => TRUE,
+ 'auto_increment' => TRUE,
+ ],
+ 'mapping_id' => [
+ 'title' => ts('Mapping ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'required' => TRUE,
+ 'description' => ts('Mapping to which this field belongs'),
+ 'add' => '1.2',
+ 'input_attrs' => [
+ 'label' => ts('Mapping'),
+ ],
+ 'entity_reference' => [
+ 'entity' => 'Mapping',
+ 'key' => 'id',
+ 'on_delete' => 'CASCADE',
+ ],
+ ],
+ 'name' => [
+ 'title' => ts('Field Name (or unique reference)'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'description' => ts('Mapping field key'),
+ 'add' => '1.2',
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'contact_type' => [
+ 'title' => ts('Contact Type'),
+ 'sql_type' => 'varchar(64)',
+ 'input_type' => 'Select',
+ 'description' => ts('Contact Type in mapping'),
+ 'add' => '1.2',
+ 'input_attrs' => [
+ 'maxlength' => 64,
+ ],
+ ],
+ 'column_number' => [
+ 'title' => ts('Column Number to map to'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'required' => TRUE,
+ 'description' => ts('Column number for mapping set'),
+ 'add' => '1.2',
+ ],
+ 'location_type_id' => [
+ 'title' => ts('Location type ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Select',
+ 'description' => ts('Location type of this mapping, if required'),
+ 'add' => '1.2',
+ 'input_attrs' => [
+ 'label' => ts('Location type'),
+ ],
+ 'pseudoconstant' => [
+ 'table' => 'civicrm_location_type',
+ 'key_column' => 'id',
+ 'label_column' => 'display_name',
+ ],
+ 'entity_reference' => [
+ 'entity' => 'LocationType',
+ 'key' => 'id',
+ ],
+ ],
+ 'phone_type_id' => [
+ 'title' => ts('Phone type ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'description' => ts('Which type of phone does this number belongs.'),
+ 'add' => '2.2',
+ ],
+ 'im_provider_id' => [
+ 'title' => ts('IM provider ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Select',
+ 'description' => ts('Which type of IM Provider does this name belong.'),
+ 'add' => '3.0',
+ 'pseudoconstant' => [
+ 'option_group_name' => 'instant_messenger_service',
+ ],
+ ],
+ 'website_type_id' => [
+ 'title' => ts('Website type ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Select',
+ 'description' => ts('Which type of website does this site belong'),
+ 'add' => '3.2',
+ 'pseudoconstant' => [
+ 'option_group_name' => 'website_type',
+ ],
+ ],
+ 'relationship_type_id' => [
+ 'title' => ts('Relationship type ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'description' => ts('Relationship type, if required'),
+ 'add' => '1.2',
+ 'input_attrs' => [
+ 'label' => ts('Relationship type'),
+ ],
+ 'entity_reference' => [
+ 'entity' => 'RelationshipType',
+ 'key' => 'id',
+ ],
+ ],
+ 'relationship_direction' => [
+ 'title' => ts('Relationship Direction'),
+ 'sql_type' => 'varchar(6)',
+ 'input_type' => 'Text',
+ 'add' => '1.7',
+ 'input_attrs' => [
+ 'maxlength' => 6,
+ ],
+ ],
+ 'grouping' => [
+ 'title' => ts('Field Grouping'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'description' => ts('Used to group mapping_field records into related sets (e.g. for criteria sets in search builder mappings).'),
+ 'add' => '1.5',
+ 'default' => 1,
+ ],
+ 'operator' => [
+ 'title' => ts('Operator'),
+ 'sql_type' => 'varchar(16)',
+ 'input_type' => 'Select',
+ 'description' => ts('SQL WHERE operator for search-builder mapping fields (search criteria).'),
+ 'add' => '1.5',
+ 'input_attrs' => [
+ 'maxlength' => 16,
+ ],
+ 'pseudoconstant' => [
+ 'callback' => 'CRM_Core_SelectValues::getSearchBuilderOperators',
+ ],
+ ],
+ 'value' => [
+ 'title' => ts('Search builder where clause'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'description' => ts('SQL WHERE value for search-builder mapping fields.'),
+ 'add' => '1.5',
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ ],
+];
diff --git a/www/modules/civicrm/schema/Core/Menu.entityType.php b/www/modules/civicrm/schema/Core/Menu.entityType.php
new file mode 100644
index 000000000..049e238cf
--- /dev/null
+++ b/www/modules/civicrm/schema/Core/Menu.entityType.php
@@ -0,0 +1,244 @@
+ 'Menu',
+ 'table' => 'civicrm_menu',
+ 'class' => 'CRM_Core_DAO_Menu',
+ 'getInfo' => fn() => [
+ 'title' => ts('Menu'),
+ 'title_plural' => ts('Menus'),
+ 'description' => ts('Table to store menu items for all civicrm components.'),
+ 'add' => '1.1',
+ ],
+ 'getIndices' => fn() => [
+ 'UI_path_domain_id' => [
+ 'fields' => [
+ 'path' => TRUE,
+ 'domain_id' => TRUE,
+ ],
+ 'unique' => TRUE,
+ 'add' => '2.1',
+ ],
+ ],
+ 'getFields' => fn() => [
+ 'id' => [
+ 'title' => ts('Menu ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'required' => TRUE,
+ 'add' => '2.1',
+ 'primary_key' => TRUE,
+ 'auto_increment' => TRUE,
+ ],
+ 'domain_id' => [
+ 'title' => ts('Domain ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Select',
+ 'required' => TRUE,
+ 'description' => ts('Which Domain is this menu item for'),
+ 'add' => '3.0',
+ 'input_attrs' => [
+ 'label' => ts('Domain'),
+ ],
+ 'pseudoconstant' => [
+ 'table' => 'civicrm_domain',
+ 'key_column' => 'id',
+ 'label_column' => 'name',
+ ],
+ 'entity_reference' => [
+ 'entity' => 'Domain',
+ 'key' => 'id',
+ ],
+ ],
+ 'path' => [
+ 'title' => ts('Path'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'description' => ts('Path Name'),
+ 'add' => '2.1',
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'path_arguments' => [
+ 'title' => ts('Arguments'),
+ 'sql_type' => 'text',
+ 'input_type' => 'TextArea',
+ 'description' => ts('Arguments to pass to the url'),
+ 'add' => '2.1',
+ ],
+ 'title' => [
+ 'title' => ts('Menu Title'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'add' => '2.1',
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'access_callback' => [
+ 'title' => ts('Access Callback'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'description' => ts('Function to call to check access permissions'),
+ 'add' => '2.1',
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'access_arguments' => [
+ 'title' => ts('Access Arguments'),
+ 'sql_type' => 'text',
+ 'input_type' => 'TextArea',
+ 'description' => ts('Arguments to pass to access callback'),
+ 'add' => '2.1',
+ ],
+ 'page_callback' => [
+ 'title' => ts('Page Callback'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'description' => ts('function to call for this url'),
+ 'add' => '2.1',
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'page_arguments' => [
+ 'title' => ts('Page Arguments'),
+ 'sql_type' => 'text',
+ 'input_type' => 'TextArea',
+ 'description' => ts('Arguments to pass to page callback'),
+ 'add' => '2.1',
+ ],
+ 'breadcrumb' => [
+ 'title' => ts('Breadcrumb'),
+ 'sql_type' => 'text',
+ 'input_type' => 'TextArea',
+ 'description' => ts('Breadcrumb for the path.'),
+ 'add' => '2.1',
+ ],
+ 'return_url' => [
+ 'title' => ts('Return Url'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'description' => ts('Url where a page should redirected to, if next url not known.'),
+ 'add' => '2.1',
+ 'input_attrs' => [
+ 'label' => ts('Return URL'),
+ 'maxlength' => 255,
+ ],
+ ],
+ 'return_url_args' => [
+ 'title' => ts('Return Url Args'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'description' => ts('Arguments to pass to return_url'),
+ 'add' => '2.1',
+ 'input_attrs' => [
+ 'label' => ts('Return URL Arguments'),
+ 'maxlength' => 255,
+ ],
+ ],
+ 'component_id' => [
+ 'title' => ts('Component ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Select',
+ 'description' => ts('Component that this menu item belongs to'),
+ 'add' => '2.1',
+ 'input_attrs' => [
+ 'label' => ts('Component'),
+ ],
+ 'pseudoconstant' => [
+ 'table' => 'civicrm_component',
+ 'key_column' => 'id',
+ 'label_column' => 'name',
+ ],
+ 'entity_reference' => [
+ 'entity' => 'Component',
+ 'key' => 'id',
+ ],
+ ],
+ 'is_active' => [
+ 'title' => ts('Enabled?'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('Is this menu item active?'),
+ 'add' => '2.1',
+ 'default' => TRUE,
+ 'input_attrs' => [
+ 'label' => ts('Enabled'),
+ ],
+ ],
+ 'is_public' => [
+ 'title' => ts('Public?'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('Is this menu accessible to the public?'),
+ 'add' => '2.1',
+ 'default' => FALSE,
+ ],
+ 'is_exposed' => [
+ 'title' => ts('Exposed?'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('Is this menu exposed to the navigation system?'),
+ 'add' => '2.1',
+ 'default' => TRUE,
+ ],
+ 'is_ssl' => [
+ 'title' => ts('Use SSL?'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('Should this menu be exposed via SSL if enabled?'),
+ 'add' => '2.1',
+ 'default' => TRUE,
+ ],
+ 'weight' => [
+ 'title' => ts('Order'),
+ 'sql_type' => 'int',
+ 'input_type' => 'Number',
+ 'required' => TRUE,
+ 'description' => ts('Ordering of the menu items in various blocks.'),
+ 'add' => '2.1',
+ 'default' => 1,
+ ],
+ 'type' => [
+ 'title' => ts('Type'),
+ 'sql_type' => 'int',
+ 'input_type' => 'Number',
+ 'required' => TRUE,
+ 'description' => ts('Drupal menu type.'),
+ 'add' => '2.1',
+ 'default' => 1,
+ ],
+ 'page_type' => [
+ 'title' => ts('Page Type'),
+ 'sql_type' => 'int',
+ 'input_type' => 'Number',
+ 'required' => TRUE,
+ 'description' => ts('CiviCRM menu type.'),
+ 'add' => '2.1',
+ 'default' => 1,
+ ],
+ 'skipBreadcrumb' => [
+ 'title' => ts('Hide Breadcrumb?'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('skip this url being exposed to breadcrumb'),
+ 'add' => '2.2',
+ 'default' => FALSE,
+ ],
+ 'module_data' => [
+ 'title' => ts('Other menu data'),
+ 'sql_type' => 'text',
+ 'input_type' => 'TextArea',
+ 'description' => ts('All other menu metadata not stored in other fields'),
+ 'add' => '4.7',
+ ],
+ ],
+];
diff --git a/www/modules/civicrm/schema/Core/MessageTemplate.entityType.php b/www/modules/civicrm/schema/Core/MessageTemplate.entityType.php
new file mode 100644
index 000000000..46dd327cb
--- /dev/null
+++ b/www/modules/civicrm/schema/Core/MessageTemplate.entityType.php
@@ -0,0 +1,140 @@
+ 'MessageTemplate',
+ 'table' => 'civicrm_msg_template',
+ 'class' => 'CRM_Core_DAO_MessageTemplate',
+ 'getInfo' => fn() => [
+ 'title' => ts('Message Template'),
+ 'title_plural' => ts('Message Templates'),
+ 'description' => ts('Users will need a way to save and retrieve templates with tokens for use in recurring email communication tasks'),
+ 'add' => '1.6',
+ 'icon' => 'fa-newspaper-o',
+ 'label_field' => 'msg_title',
+ ],
+ 'getPaths' => fn() => [
+ 'add' => 'civicrm/admin/messageTemplates/add?action=add&reset=1',
+ 'view' => 'civicrm/admin/messageTemplates/add?action=view&id=[id]&reset=1',
+ 'update' => 'civicrm/admin/messageTemplates/add?action=update&id=[id]&reset=1',
+ 'delete' => 'civicrm/admin/messageTemplates?action=delete&id=[id]&reset=1',
+ ],
+ 'getFields' => fn() => [
+ 'id' => [
+ 'title' => ts('Message Template ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'required' => TRUE,
+ 'description' => ts('Message Template ID'),
+ 'add' => '1.6',
+ 'primary_key' => TRUE,
+ 'auto_increment' => TRUE,
+ ],
+ 'msg_title' => [
+ 'title' => ts('Message Template Title'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'description' => ts('Descriptive title of message'),
+ 'add' => '1.6',
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'msg_subject' => [
+ 'title' => ts('Message Template Subject'),
+ 'sql_type' => 'text',
+ 'input_type' => 'Text',
+ 'description' => ts('Subject for email message.'),
+ 'add' => '1.6',
+ ],
+ 'msg_text' => [
+ 'title' => ts('Message Template Text'),
+ 'sql_type' => 'longtext',
+ 'input_type' => 'TextArea',
+ 'description' => ts('Text formatted message'),
+ 'add' => '1.6',
+ 'input_attrs' => [
+ 'rows' => 10,
+ 'cols' => 75,
+ ],
+ ],
+ 'msg_html' => [
+ 'title' => ts('Message Template HTML'),
+ 'sql_type' => 'longtext',
+ 'input_type' => 'RichTextEditor',
+ 'description' => ts('HTML formatted message'),
+ 'add' => '1.6',
+ 'input_attrs' => [
+ 'rows' => 10,
+ 'cols' => 75,
+ ],
+ ],
+ 'is_active' => [
+ 'title' => ts('Is Active'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'add' => '1.6',
+ 'default' => TRUE,
+ 'input_attrs' => [
+ 'label' => ts('Enabled'),
+ ],
+ ],
+ 'workflow_id' => [
+ 'title' => ts('Deprecated field for Message Template Workflow.'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'description' => ts('a pseudo-FK to civicrm_option_value'),
+ 'add' => '3.1',
+ ],
+ 'workflow_name' => [
+ 'title' => ts('Message Template Workflow Name'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'add' => '5.26',
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'is_default' => [
+ 'title' => ts('Message Template Is Default?'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('is this the default message template for the workflow referenced by workflow_id?'),
+ 'add' => '3.1',
+ 'default' => TRUE,
+ 'input_attrs' => [
+ 'label' => ts('Default'),
+ ],
+ ],
+ 'is_reserved' => [
+ 'title' => ts('Message Template Is Reserved?'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('is this the reserved message template which we ship for the workflow referenced by workflow_id?'),
+ 'add' => '3.1',
+ 'default' => FALSE,
+ ],
+ 'is_sms' => [
+ 'title' => ts('Message Template is used for SMS?'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('Is this message template used for sms?'),
+ 'add' => '4.5',
+ 'default' => FALSE,
+ ],
+ 'pdf_format_id' => [
+ 'title' => ts('Message Template Format'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Select',
+ 'description' => ts('a pseudo-FK to civicrm_option_value containing PDF Page Format.'),
+ 'add' => '3.4',
+ 'pseudoconstant' => [
+ 'option_group_name' => 'pdf_format',
+ 'key_column' => 'id',
+ ],
+ ],
+ ],
+];
diff --git a/www/modules/civicrm/schema/Core/Navigation.entityType.php b/www/modules/civicrm/schema/Core/Navigation.entityType.php
new file mode 100644
index 000000000..03fcc0fb3
--- /dev/null
+++ b/www/modules/civicrm/schema/Core/Navigation.entityType.php
@@ -0,0 +1,163 @@
+ 'Navigation',
+ 'table' => 'civicrm_navigation',
+ 'class' => 'CRM_Core_DAO_Navigation',
+ 'getInfo' => fn() => [
+ 'title' => ts('Menu Item'),
+ 'title_plural' => ts('Menu Items'),
+ 'description' => ts('Table to store navigation.'),
+ 'add' => '3.0',
+ 'label_field' => 'label',
+ ],
+ 'getFields' => fn() => [
+ 'id' => [
+ 'title' => ts('Navigation ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'required' => TRUE,
+ 'add' => '3.0',
+ 'primary_key' => TRUE,
+ 'auto_increment' => TRUE,
+ ],
+ 'domain_id' => [
+ 'title' => ts('Domain ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'required' => TRUE,
+ 'description' => ts('Which Domain is this navigation item for'),
+ 'add' => '3.0',
+ 'input_attrs' => [
+ 'label' => ts('Domain'),
+ ],
+ 'pseudoconstant' => [
+ 'table' => 'civicrm_domain',
+ 'key_column' => 'id',
+ 'label_column' => 'name',
+ ],
+ 'entity_reference' => [
+ 'entity' => 'Domain',
+ 'key' => 'id',
+ ],
+ ],
+ 'label' => [
+ 'title' => ts('Navigation Item Label'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'description' => ts('Navigation Title'),
+ 'add' => '3.0',
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'name' => [
+ 'title' => ts('Navigation Item Machine Name'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'description' => ts('Internal Name'),
+ 'add' => '3.0',
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'url' => [
+ 'title' => ts('Url'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'description' => ts('url in case of custom navigation link'),
+ 'add' => '3.0',
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'icon' => [
+ 'title' => ts('Icon'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'description' => ts('CSS class name for an icon'),
+ 'add' => '4.7',
+ 'default' => NULL,
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'permission' => [
+ 'title' => ts('Required Permission'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'description' => ts('Permission(s) needed to access menu item'),
+ 'add' => '3.0',
+ 'serialize' => CRM_Core_DAO::SERIALIZE_COMMA,
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'permission_operator' => [
+ 'title' => ts('Permission Operator'),
+ 'sql_type' => 'varchar(3)',
+ 'input_type' => 'Select',
+ 'description' => ts('Operator to use if item has more than one permission'),
+ 'add' => '3.0',
+ 'input_attrs' => [
+ 'maxlength' => 3,
+ ],
+ 'pseudoconstant' => [
+ 'callback' => 'CRM_Core_SelectValues::andOr',
+ ],
+ ],
+ 'parent_id' => [
+ 'title' => ts('parent ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'description' => ts('Parent navigation item, used for grouping'),
+ 'add' => '3.0',
+ 'input_attrs' => [
+ 'label' => ts('parent'),
+ ],
+ 'pseudoconstant' => [
+ 'table' => 'civicrm_navigation',
+ 'key_column' => 'id',
+ 'name_column' => 'name',
+ 'label_column' => 'label',
+ ],
+ 'entity_reference' => [
+ 'entity' => 'Navigation',
+ 'key' => 'id',
+ 'on_delete' => 'CASCADE',
+ ],
+ ],
+ 'is_active' => [
+ 'title' => ts('Is Active'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('Is this navigation item active?'),
+ 'add' => '3.0',
+ 'default' => TRUE,
+ 'input_attrs' => [
+ 'label' => ts('Enabled'),
+ ],
+ ],
+ 'has_separator' => [
+ 'title' => ts('Separator'),
+ 'sql_type' => 'tinyint',
+ 'input_type' => 'Select',
+ 'description' => ts('Place a separator either before or after this menu item.'),
+ 'add' => '3.0',
+ 'default' => 0,
+ 'pseudoconstant' => [
+ 'callback' => 'CRM_Core_SelectValues::navigationMenuSeparator',
+ ],
+ ],
+ 'weight' => [
+ 'title' => ts('Order'),
+ 'sql_type' => 'int',
+ 'input_type' => 'Number',
+ 'required' => TRUE,
+ 'description' => ts('Ordering of the navigation items in various blocks.'),
+ 'add' => '3.0',
+ 'default' => 0,
+ ],
+ ],
+];
diff --git a/www/modules/civicrm/schema/Core/Note.entityType.php b/www/modules/civicrm/schema/Core/Note.entityType.php
new file mode 100644
index 000000000..19114314c
--- /dev/null
+++ b/www/modules/civicrm/schema/Core/Note.entityType.php
@@ -0,0 +1,166 @@
+ 'Note',
+ 'table' => 'civicrm_note',
+ 'class' => 'CRM_Core_DAO_Note',
+ 'getInfo' => fn() => [
+ 'title' => ts('Note'),
+ 'title_plural' => ts('Notes'),
+ 'description' => ts('Notes can be linked to any object in the application.'),
+ 'log' => TRUE,
+ 'add' => '1.1',
+ 'icon' => 'fa-sticky-note',
+ ],
+ 'getPaths' => fn() => [
+ 'add' => 'civicrm/note?reset=1&action=add&entity_table=[entity_table]&entity_id=[entity_id]',
+ 'view' => 'civicrm/note?reset=1&action=view&id=[id]',
+ 'update' => 'civicrm/note?reset=1&action=update&id=[id]',
+ 'delete' => 'civicrm/note?reset=1&action=delete&id=[id]',
+ ],
+ 'getIndices' => fn() => [
+ 'index_entity' => [
+ 'fields' => [
+ 'entity_table' => TRUE,
+ 'entity_id' => TRUE,
+ ],
+ 'add' => '1.1',
+ ],
+ ],
+ 'getFields' => fn() => [
+ 'id' => [
+ 'title' => ts('Note ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'required' => TRUE,
+ 'description' => ts('Note ID'),
+ 'add' => '1.1',
+ 'primary_key' => TRUE,
+ 'auto_increment' => TRUE,
+ ],
+ 'entity_table' => [
+ 'title' => ts('Note Entity'),
+ 'sql_type' => 'varchar(64)',
+ 'input_type' => 'Select',
+ 'required' => TRUE,
+ 'description' => ts('Name of table where item being referenced is stored.'),
+ 'add' => '1.1',
+ 'input_attrs' => [
+ 'label' => ts('Reference Type'),
+ 'maxlength' => 64,
+ ],
+ 'pseudoconstant' => [
+ 'option_group_name' => 'note_used_for',
+ ],
+ ],
+ 'entity_id' => [
+ 'title' => ts('Note Entity ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'required' => TRUE,
+ 'description' => ts('Foreign key to the referenced item.'),
+ 'add' => '1.1',
+ 'input_attrs' => [
+ 'label' => ts('Reference Item'),
+ ],
+ 'entity_reference' => [
+ 'dynamic_entity' => 'entity_table',
+ 'key' => 'id',
+ ],
+ ],
+ 'note' => [
+ 'title' => ts('Note'),
+ 'sql_type' => 'text',
+ 'input_type' => 'TextArea',
+ 'description' => ts('Note and/or Comment.'),
+ 'add' => '1.1',
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ 'input_attrs' => [
+ 'rows' => 4,
+ 'cols' => 60,
+ ],
+ ],
+ 'contact_id' => [
+ 'title' => ts('Created By Contact ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'description' => ts('FK to Contact ID creator'),
+ 'add' => '1.1',
+ 'input_attrs' => [
+ 'label' => ts('Created By'),
+ ],
+ 'entity_reference' => [
+ 'entity' => 'Contact',
+ 'key' => 'id',
+ 'on_delete' => 'SET NULL',
+ ],
+ ],
+ 'note_date' => [
+ 'title' => ts('Note Date'),
+ 'sql_type' => 'timestamp',
+ 'input_type' => 'Select Date',
+ 'description' => ts('Date attached to the note'),
+ 'add' => '5.36',
+ 'default' => 'CURRENT_TIMESTAMP',
+ 'input_attrs' => [
+ 'format_type' => 'activityDateTime',
+ ],
+ ],
+ 'created_date' => [
+ 'title' => ts('Created Date'),
+ 'sql_type' => 'timestamp',
+ 'input_type' => 'Select Date',
+ 'required' => TRUE,
+ 'readonly' => TRUE,
+ 'description' => ts('When the note was created.'),
+ 'add' => '5.36',
+ 'default' => 'CURRENT_TIMESTAMP',
+ 'input_attrs' => [
+ 'format_type' => 'activityDateTime',
+ ],
+ ],
+ 'modified_date' => [
+ 'title' => ts('Note Modified Date'),
+ 'sql_type' => 'timestamp',
+ 'input_type' => 'Select Date',
+ 'readonly' => TRUE,
+ 'description' => ts('When was this note last modified/edited'),
+ 'add' => '1.1',
+ 'default' => 'CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP',
+ 'input_attrs' => [
+ 'label' => ts('Modified Date'),
+ 'format_type' => 'activityDateTime',
+ ],
+ ],
+ 'subject' => [
+ 'title' => ts('Subject'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'description' => ts('subject of note description'),
+ 'add' => '1.5',
+ 'input_attrs' => [
+ 'size' => '60',
+ 'maxlength' => 255,
+ ],
+ ],
+ 'privacy' => [
+ 'title' => ts('Privacy'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Select',
+ 'required' => TRUE,
+ 'description' => ts('Foreign Key to Note Privacy Level (which is an option value pair and hence an implicit FK)'),
+ 'add' => '3.3',
+ 'default' => '0',
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ 'pseudoconstant' => [
+ 'option_group_name' => 'note_privacy',
+ ],
+ ],
+ ],
+];
diff --git a/www/modules/civicrm/schema/Core/OpenID.entityType.php b/www/modules/civicrm/schema/Core/OpenID.entityType.php
new file mode 100644
index 000000000..740011f0c
--- /dev/null
+++ b/www/modules/civicrm/schema/Core/OpenID.entityType.php
@@ -0,0 +1,103 @@
+ 'OpenID',
+ 'table' => 'civicrm_openid',
+ 'class' => 'CRM_Core_DAO_OpenID',
+ 'getInfo' => fn() => [
+ 'title' => ts('Open ID'),
+ 'title_plural' => ts('Open IDs'),
+ 'description' => ts('OpenID information for a specific location.'),
+ 'add' => '2.0',
+ ],
+ 'getIndices' => fn() => [
+ 'index_location_type' => [
+ 'fields' => [
+ 'location_type_id' => TRUE,
+ ],
+ 'add' => '2.0',
+ ],
+ 'UI_openid' => [
+ 'fields' => [
+ 'openid' => TRUE,
+ ],
+ 'unique' => TRUE,
+ 'add' => '2.0',
+ ],
+ ],
+ 'getFields' => fn() => [
+ 'id' => [
+ 'title' => ts('Open ID identifier'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'required' => TRUE,
+ 'description' => ts('Unique OpenID ID'),
+ 'add' => '2.0',
+ 'primary_key' => TRUE,
+ 'auto_increment' => TRUE,
+ ],
+ 'contact_id' => [
+ 'title' => ts('Contact ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'description' => ts('FK to Contact ID'),
+ 'add' => '2.0',
+ 'input_attrs' => [
+ 'label' => ts('Contact'),
+ ],
+ 'entity_reference' => [
+ 'entity' => 'Contact',
+ 'key' => 'id',
+ 'on_delete' => 'CASCADE',
+ ],
+ ],
+ 'location_type_id' => [
+ 'title' => ts('OpenID Location Type'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Select',
+ 'description' => ts('Which Location does this email belong to.'),
+ 'add' => '2.0',
+ 'input_attrs' => [
+ 'label' => ts('Location Type'),
+ ],
+ 'pseudoconstant' => [
+ 'table' => 'civicrm_location_type',
+ 'key_column' => 'id',
+ 'label_column' => 'display_name',
+ ],
+ ],
+ 'openid' => [
+ 'title' => ts('OpenID'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Url',
+ 'description' => ts('the OpenID (or OpenID-style http://username.domain/) unique identifier for this contact mainly used for logging in to CiviCRM'),
+ 'add' => '2.0',
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'allowed_to_login' => [
+ 'title' => ts('Allowed to login?'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('Whether or not this user is allowed to login'),
+ 'add' => '2.0',
+ 'default' => FALSE,
+ ],
+ 'is_primary' => [
+ 'title' => ts('Is Primary'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'Radio',
+ 'required' => TRUE,
+ 'description' => ts('Is this the primary email for this contact and location.'),
+ 'add' => '2.0',
+ 'default' => FALSE,
+ ],
+ ],
+];
diff --git a/www/modules/civicrm/schema/Core/OptionGroup.entityType.php b/www/modules/civicrm/schema/Core/OptionGroup.entityType.php
new file mode 100644
index 000000000..31c66d33e
--- /dev/null
+++ b/www/modules/civicrm/schema/Core/OptionGroup.entityType.php
@@ -0,0 +1,133 @@
+ 'OptionGroup',
+ 'table' => 'civicrm_option_group',
+ 'class' => 'CRM_Core_DAO_OptionGroup',
+ 'getInfo' => fn() => [
+ 'title' => ts('Option Group'),
+ 'title_plural' => ts('Option Groups'),
+ 'description' => ts('FIXME'),
+ 'log' => TRUE,
+ 'add' => '1.5',
+ ],
+ 'getPaths' => fn() => [
+ 'add' => 'civicrm/admin/options?action=add&reset=1',
+ 'update' => 'civicrm/admin/options?action=update&reset=1&id=[id]',
+ ],
+ 'getIndices' => fn() => [
+ 'UI_name' => [
+ 'fields' => [
+ 'name' => TRUE,
+ ],
+ 'unique' => TRUE,
+ 'add' => '2.1',
+ ],
+ ],
+ 'getFields' => fn() => [
+ 'id' => [
+ 'title' => ts('Option Group ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'required' => TRUE,
+ 'description' => ts('Option Group ID'),
+ 'add' => '1.5',
+ 'primary_key' => TRUE,
+ 'auto_increment' => TRUE,
+ ],
+ 'name' => [
+ 'title' => ts('Option Group Name'),
+ 'sql_type' => 'varchar(64)',
+ 'input_type' => 'Text',
+ 'required' => TRUE,
+ 'description' => ts('Option group name. Used as selection key by class properties which lookup options in civicrm_option_value.'),
+ 'add' => '1.5',
+ 'input_attrs' => [
+ 'maxlength' => 64,
+ ],
+ ],
+ 'title' => [
+ 'title' => ts('Option Group Title'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'localizable' => TRUE,
+ 'description' => ts('Option Group title.'),
+ 'add' => '1.5',
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'description' => [
+ 'title' => ts('Option Group Description'),
+ 'sql_type' => 'text',
+ 'input_type' => 'Text',
+ 'localizable' => TRUE,
+ 'description' => ts('Option group description.'),
+ 'add' => '1.5',
+ ],
+ 'data_type' => [
+ 'title' => ts('Data Type'),
+ 'sql_type' => 'varchar(128)',
+ 'input_type' => 'Select',
+ 'description' => ts('Type of data stored by this option group.'),
+ 'add' => '4.7',
+ 'input_attrs' => [
+ 'maxlength' => 128,
+ ],
+ 'pseudoconstant' => [
+ 'callback' => 'CRM_Utils_Type::dataTypes',
+ ],
+ ],
+ 'is_reserved' => [
+ 'title' => ts('Option Group Is Reserved'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('Is this a predefined system option group (i.e. it can not be deleted)?'),
+ 'add' => '1.5',
+ 'default' => TRUE,
+ 'input_attrs' => [
+ 'label' => ts('Reserved'),
+ ],
+ ],
+ 'is_active' => [
+ 'title' => ts('Enabled'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('Is this option group active?'),
+ 'add' => '1.5',
+ 'default' => TRUE,
+ 'input_attrs' => [
+ 'label' => ts('Enabled'),
+ ],
+ ],
+ 'is_locked' => [
+ 'title' => ts('Option Group Is Locked'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('A lock to remove the ability to add new options via the UI.'),
+ 'add' => '4.5',
+ 'default' => FALSE,
+ 'input_attrs' => [
+ 'label' => ts('Locked'),
+ ],
+ ],
+ 'option_value_fields' => [
+ 'title' => ts('Option Value Fields'),
+ 'sql_type' => 'varchar(128)',
+ 'input_type' => 'Select',
+ 'description' => ts('Which optional columns from the option_value table are in use by this group.'),
+ 'add' => '5.49',
+ 'default' => 'name,label,description',
+ 'serialize' => CRM_Core_DAO::SERIALIZE_COMMA,
+ 'input_attrs' => [
+ 'maxlength' => 128,
+ ],
+ 'pseudoconstant' => [
+ 'callback' => 'CRM_Core_SelectValues::optionValueFields',
+ ],
+ ],
+ ],
+];
diff --git a/www/modules/civicrm/schema/Core/OptionValue.entityType.php b/www/modules/civicrm/schema/Core/OptionValue.entityType.php
new file mode 100644
index 000000000..f919b06e5
--- /dev/null
+++ b/www/modules/civicrm/schema/Core/OptionValue.entityType.php
@@ -0,0 +1,255 @@
+ 'OptionValue',
+ 'table' => 'civicrm_option_value',
+ 'class' => 'CRM_Core_DAO_OptionValue',
+ 'getInfo' => fn() => [
+ 'title' => ts('Option Value'),
+ 'title_plural' => ts('Option Values'),
+ 'description' => ts('FIXME'),
+ 'log' => TRUE,
+ 'add' => '1.5',
+ ],
+ 'getPaths' => fn() => [
+ 'update' => 'civicrm/admin/options/[option_group_id:name]?reset=1&action=update&id=[id]',
+ 'delete' => 'civicrm/admin/options/[option_group_id:name]?reset=1&action=delete&id=[id]',
+ ],
+ 'getIndices' => fn() => [
+ 'index_option_group_id_value' => [
+ 'fields' => [
+ 'value' => 128,
+ 'option_group_id' => TRUE,
+ ],
+ 'add' => '1.5',
+ ],
+ 'index_option_group_id_name' => [
+ 'fields' => [
+ 'name' => 128,
+ 'option_group_id' => TRUE,
+ ],
+ 'add' => '2.2',
+ ],
+ ],
+ 'getFields' => fn() => [
+ 'id' => [
+ 'title' => ts('Option Value ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'required' => TRUE,
+ 'description' => ts('Option ID'),
+ 'add' => '1.5',
+ 'primary_key' => TRUE,
+ 'auto_increment' => TRUE,
+ ],
+ 'option_group_id' => [
+ 'title' => ts('Option Group ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Select',
+ 'required' => TRUE,
+ 'description' => ts('Group which this option belongs to.'),
+ 'add' => '1.5',
+ 'input_attrs' => [
+ 'label' => ts('Option Group'),
+ ],
+ 'pseudoconstant' => [
+ 'table' => 'civicrm_option_group',
+ 'key_column' => 'id',
+ 'name_column' => 'name',
+ 'label_column' => 'title',
+ ],
+ 'entity_reference' => [
+ 'entity' => 'OptionGroup',
+ 'key' => 'id',
+ 'on_delete' => 'CASCADE',
+ ],
+ ],
+ 'label' => [
+ 'title' => ts('Option Label'),
+ 'sql_type' => 'varchar(512)',
+ 'input_type' => 'Text',
+ 'required' => TRUE,
+ 'localizable' => TRUE,
+ 'description' => ts('Option string as displayed to users - e.g. the label in an HTML OPTION tag.'),
+ 'add' => '1.5',
+ 'input_attrs' => [
+ 'maxlength' => 512,
+ ],
+ ],
+ 'value' => [
+ 'title' => ts('Option Value'),
+ 'sql_type' => 'varchar(512)',
+ 'input_type' => 'Text',
+ 'required' => TRUE,
+ 'description' => ts('The actual value stored (as a foreign key) in the data record. Functions which need lookup option_value.title should use civicrm_option_value.option_group_id plus civicrm_option_value.value as the key.'),
+ 'add' => '1.5',
+ 'input_attrs' => [
+ 'maxlength' => 512,
+ ],
+ ],
+ 'name' => [
+ 'title' => ts('Option Name'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'description' => ts('Stores a fixed (non-translated) name for this option value. Lookup functions should use the name as the key for the option value row.'),
+ 'add' => '1.5',
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'grouping' => [
+ 'title' => ts('Option Grouping Name'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'description' => ts('Use to sort and/or set display properties for sub-set(s) of options within an option group. EXAMPLE: Use for college_interest field, to differentiate partners from non-partners.'),
+ 'add' => '1.5',
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'filter' => [
+ 'title' => ts('Filter'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'description' => ts('Bitwise logic can be used to create subsets of options within an option_group for different uses.'),
+ 'add' => '1.5',
+ 'default' => 0,
+ 'input_attrs' => [
+ 'label' => ts('Filter'),
+ ],
+ ],
+ 'is_default' => [
+ 'title' => ts('Option is Default?'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'description' => ts('Is this the default option for the group?'),
+ 'add' => '1.5',
+ 'default' => FALSE,
+ 'input_attrs' => [
+ 'label' => ts('Default'),
+ ],
+ ],
+ 'weight' => [
+ 'title' => ts('Order'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'required' => TRUE,
+ 'description' => ts('Controls display sort order.'),
+ 'add' => '1.5',
+ ],
+ 'description' => [
+ 'title' => ts('Option Description'),
+ 'sql_type' => 'text',
+ 'input_type' => 'TextArea',
+ 'localizable' => TRUE,
+ 'description' => ts('Optional description.'),
+ 'add' => '1.5',
+ 'input_attrs' => [
+ 'rows' => 8,
+ 'cols' => 60,
+ ],
+ ],
+ 'is_optgroup' => [
+ 'title' => ts('Option is Header?'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'description' => ts('Is this row simply a display header? Expected usage is to render these as OPTGROUP tags within a SELECT field list of options?'),
+ 'add' => '1.5',
+ 'default' => FALSE,
+ ],
+ 'is_reserved' => [
+ 'title' => ts('Option Is Reserved?'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'description' => ts('Is this a predefined system object?'),
+ 'add' => '1.5',
+ 'default' => FALSE,
+ ],
+ 'is_active' => [
+ 'title' => ts('Option Is Active'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'description' => ts('Is this option active?'),
+ 'add' => '1.5',
+ 'default' => TRUE,
+ 'input_attrs' => [
+ 'label' => ts('Enabled'),
+ ],
+ ],
+ 'component_id' => [
+ 'title' => ts('Component ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Select',
+ 'description' => ts('Component that this option value belongs/caters to.'),
+ 'add' => '2.0',
+ 'input_attrs' => [
+ 'label' => ts('Component'),
+ ],
+ 'pseudoconstant' => [
+ 'table' => 'civicrm_component',
+ 'key_column' => 'id',
+ 'label_column' => 'name',
+ ],
+ 'entity_reference' => [
+ 'entity' => 'Component',
+ 'key' => 'id',
+ ],
+ ],
+ 'domain_id' => [
+ 'title' => ts('Domain ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'description' => ts('Which Domain is this option value for'),
+ 'add' => '3.1',
+ 'input_attrs' => [
+ 'label' => ts('Domain'),
+ ],
+ 'pseudoconstant' => [
+ 'table' => 'civicrm_domain',
+ 'key_column' => 'id',
+ 'label_column' => 'name',
+ ],
+ 'entity_reference' => [
+ 'entity' => 'Domain',
+ 'key' => 'id',
+ ],
+ ],
+ 'visibility_id' => [
+ 'title' => ts('Option Visibility'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Select',
+ 'add' => '2.2',
+ 'default' => NULL,
+ 'pseudoconstant' => [
+ 'option_group_name' => 'visibility',
+ ],
+ ],
+ 'icon' => [
+ 'title' => ts('Icon'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'description' => ts('crm-i icon class'),
+ 'add' => '4.7',
+ 'default' => NULL,
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'color' => [
+ 'title' => ts('Color'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'description' => ts('Hex color value e.g. #ffffff'),
+ 'add' => '4.7',
+ 'default' => NULL,
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ ],
+];
diff --git a/www/modules/civicrm/schema/Core/Phone.entityType.php b/www/modules/civicrm/schema/Core/Phone.entityType.php
new file mode 100644
index 000000000..ed03415cd
--- /dev/null
+++ b/www/modules/civicrm/schema/Core/Phone.entityType.php
@@ -0,0 +1,176 @@
+ 'Phone',
+ 'table' => 'civicrm_phone',
+ 'class' => 'CRM_Core_DAO_Phone',
+ 'getInfo' => fn() => [
+ 'title' => ts('Phone'),
+ 'title_plural' => ts('Phones'),
+ 'description' => ts('Phone information for a specific location.'),
+ 'log' => TRUE,
+ 'add' => '1.1',
+ 'icon' => 'fa-phone',
+ 'label_field' => 'phone',
+ ],
+ 'getIndices' => fn() => [
+ 'index_location_type' => [
+ 'fields' => [
+ 'location_type_id' => TRUE,
+ ],
+ 'add' => '2.0',
+ ],
+ 'index_is_primary' => [
+ 'fields' => [
+ 'is_primary' => TRUE,
+ ],
+ 'add' => '2.0',
+ ],
+ 'index_is_billing' => [
+ 'fields' => [
+ 'is_billing' => TRUE,
+ ],
+ 'add' => '2.0',
+ ],
+ 'UI_mobile_provider_id' => [
+ 'fields' => [
+ 'mobile_provider_id' => TRUE,
+ ],
+ 'add' => '1.6',
+ ],
+ 'index_phone_numeric' => [
+ 'fields' => [
+ 'phone_numeric' => TRUE,
+ ],
+ 'add' => '4.3',
+ ],
+ ],
+ 'getFields' => fn() => [
+ 'id' => [
+ 'title' => ts('Phone ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'required' => TRUE,
+ 'description' => ts('Unique Phone ID'),
+ 'add' => '1.1',
+ 'primary_key' => TRUE,
+ 'auto_increment' => TRUE,
+ ],
+ 'contact_id' => [
+ 'title' => ts('Contact ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'description' => ts('FK to Contact ID'),
+ 'add' => '2.0',
+ 'input_attrs' => [
+ 'label' => ts('Contact'),
+ ],
+ 'entity_reference' => [
+ 'entity' => 'Contact',
+ 'key' => 'id',
+ 'on_delete' => 'CASCADE',
+ ],
+ ],
+ 'location_type_id' => [
+ 'title' => ts('Location Type ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Select',
+ 'description' => ts('Which Location does this phone belong to.'),
+ 'add' => '2.0',
+ 'input_attrs' => [
+ 'label' => ts('Location Type'),
+ ],
+ 'pseudoconstant' => [
+ 'table' => 'civicrm_location_type',
+ 'key_column' => 'id',
+ 'label_column' => 'display_name',
+ ],
+ ],
+ 'is_primary' => [
+ 'title' => ts('Is Primary'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'Radio',
+ 'required' => TRUE,
+ 'description' => ts('Is this the primary phone for this contact and location.'),
+ 'add' => '1.1',
+ 'default' => FALSE,
+ ],
+ 'is_billing' => [
+ 'title' => ts('Is Billing Phone'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('Is this the billing?'),
+ 'add' => '2.0',
+ 'default' => FALSE,
+ ],
+ 'mobile_provider_id' => [
+ 'title' => ts('Mobile Provider'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'deprecated' => TRUE,
+ 'description' => ts('Which Mobile Provider does this phone belong to.'),
+ 'add' => '1.1',
+ ],
+ 'phone' => [
+ 'title' => ts('Phone'),
+ 'sql_type' => 'varchar(32)',
+ 'input_type' => 'Text',
+ 'description' => ts('Complete phone number.'),
+ 'add' => '1.1',
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ 'input_attrs' => [
+ 'label' => ts('Phone'),
+ 'maxlength' => 32,
+ ],
+ ],
+ 'phone_ext' => [
+ 'title' => ts('Phone Extension'),
+ 'sql_type' => 'varchar(16)',
+ 'input_type' => 'Text',
+ 'description' => ts('Optional extension for a phone number.'),
+ 'add' => '3.3',
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ 'input_attrs' => [
+ 'size' => '4',
+ 'maxlength' => 16,
+ ],
+ ],
+ 'phone_numeric' => [
+ 'title' => ts('Phone Numeric'),
+ 'sql_type' => 'varchar(32)',
+ 'input_type' => NULL,
+ 'readonly' => TRUE,
+ 'description' => ts('Phone number stripped of all whitespace, letters, and punctuation.'),
+ 'add' => '4.3',
+ 'input_attrs' => [
+ 'label' => ts('Numeric'),
+ 'maxlength' => 32,
+ ],
+ ],
+ 'phone_type_id' => [
+ 'title' => ts('Phone Type ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Select',
+ 'description' => ts('Which type of phone does this number belongs.'),
+ 'add' => '2.2',
+ 'usage' => [
+ 'export',
+ ],
+ 'input_attrs' => [
+ 'label' => ts('Phone Type'),
+ ],
+ 'pseudoconstant' => [
+ 'option_group_name' => 'phone_type',
+ ],
+ ],
+ ],
+];
diff --git a/www/modules/civicrm/schema/Core/PreferencesDate.entityType.php b/www/modules/civicrm/schema/Core/PreferencesDate.entityType.php
new file mode 100644
index 000000000..aecf75b7b
--- /dev/null
+++ b/www/modules/civicrm/schema/Core/PreferencesDate.entityType.php
@@ -0,0 +1,101 @@
+ 'PreferencesDate',
+ 'table' => 'civicrm_preferences_date',
+ 'class' => 'CRM_Core_DAO_PreferencesDate',
+ 'getInfo' => fn() => [
+ 'title' => ts('Date Preference'),
+ 'title_plural' => ts('Date Preferences'),
+ 'description' => ts('Define date preferences for the site'),
+ 'log' => TRUE,
+ 'add' => '2.0',
+ ],
+ 'getPaths' => fn() => [
+ 'add' => 'civicrm/admin/setting/preferences/date/edit?reset=1&action=add',
+ 'browse' => 'civicrm/admin/setting/preferences/date?reset=1',
+ 'update' => 'civicrm/admin/setting/preferences/date/edit?reset=1&action=update&id=[id]',
+ ],
+ 'getIndices' => fn() => [
+ 'index_name' => [
+ 'fields' => [
+ 'name' => TRUE,
+ ],
+ 'add' => '2.0',
+ ],
+ ],
+ 'getFields' => fn() => [
+ 'id' => [
+ 'title' => ts('Date Preference ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'required' => TRUE,
+ 'add' => '2.0',
+ 'primary_key' => TRUE,
+ 'auto_increment' => TRUE,
+ ],
+ 'name' => [
+ 'title' => ts('Date Preference Name'),
+ 'sql_type' => 'varchar(64)',
+ 'input_type' => 'Text',
+ 'required' => TRUE,
+ 'description' => ts('The meta name for this date (fixed in code)'),
+ 'add' => '2.0',
+ 'input_attrs' => [
+ 'maxlength' => 64,
+ ],
+ ],
+ 'description' => [
+ 'title' => ts('Description'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'description' => ts('Description of this date type.'),
+ 'add' => '2.0',
+ 'input_attrs' => [
+ 'label' => ts('Description'),
+ 'maxlength' => 255,
+ ],
+ ],
+ 'start' => [
+ 'title' => ts('Start'),
+ 'sql_type' => 'int',
+ 'input_type' => 'Number',
+ 'required' => TRUE,
+ 'description' => ts('The start offset relative to current year'),
+ 'add' => '2.0',
+ 'input_attrs' => [
+ 'label' => ts('Start'),
+ ],
+ ],
+ 'end' => [
+ 'title' => ts('End Offset'),
+ 'sql_type' => 'int',
+ 'input_type' => 'Number',
+ 'required' => TRUE,
+ 'description' => ts('The end offset relative to current year, can be negative'),
+ 'add' => '2.0',
+ ],
+ 'date_format' => [
+ 'title' => ts('Date Format'),
+ 'sql_type' => 'varchar(64)',
+ 'input_type' => 'Text',
+ 'description' => ts('The date type'),
+ 'add' => '2.0',
+ 'input_attrs' => [
+ 'label' => ts('Date Format'),
+ 'maxlength' => 64,
+ ],
+ ],
+ 'time_format' => [
+ 'title' => ts('Time Format'),
+ 'sql_type' => 'varchar(64)',
+ 'input_type' => 'Text',
+ 'description' => ts('time format'),
+ 'add' => '3.1',
+ 'input_attrs' => [
+ 'label' => ts('Time Format'),
+ 'maxlength' => 64,
+ ],
+ ],
+ ],
+];
diff --git a/www/modules/civicrm/schema/Core/PrevNextCache.entityType.php b/www/modules/civicrm/schema/Core/PrevNextCache.entityType.php
new file mode 100644
index 000000000..80aaf5560
--- /dev/null
+++ b/www/modules/civicrm/schema/Core/PrevNextCache.entityType.php
@@ -0,0 +1,86 @@
+ 'PrevNextCache',
+ 'table' => 'civicrm_prevnext_cache',
+ 'class' => 'CRM_Core_DAO_PrevNextCache',
+ 'getInfo' => fn() => [
+ 'title' => ts('Prev Next Cache'),
+ 'title_plural' => ts('Prev Next Caches'),
+ 'description' => ts('Table to cache items for navigation on civicrm searched results.'),
+ 'add' => '3.4',
+ ],
+ 'getIndices' => fn() => [
+ 'index_all' => [
+ 'fields' => [
+ 'cachekey' => TRUE,
+ 'entity_id1' => TRUE,
+ 'entity_id2' => TRUE,
+ 'entity_table' => TRUE,
+ 'is_selected' => TRUE,
+ ],
+ ],
+ ],
+ 'getFields' => fn() => [
+ 'id' => [
+ 'title' => ts('Prev Next Cache ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'required' => TRUE,
+ 'add' => '3.4',
+ 'primary_key' => TRUE,
+ 'auto_increment' => TRUE,
+ ],
+ 'entity_table' => [
+ 'title' => ts('Prev Next Entity Table'),
+ 'sql_type' => 'varchar(64)',
+ 'input_type' => 'Text',
+ 'description' => ts('physical tablename for entity being joined to discount, e.g. civicrm_event'),
+ 'add' => '3.4',
+ 'input_attrs' => [
+ 'maxlength' => 64,
+ ],
+ ],
+ 'entity_id1' => [
+ 'title' => ts('Prev Next Entity ID 1'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'required' => TRUE,
+ 'description' => ts('FK to entity table specified in entity_table column.'),
+ 'add' => '3.4',
+ ],
+ 'entity_id2' => [
+ 'title' => ts('Prev Next Entity ID 2'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'description' => ts('FK to entity table specified in entity_table column.'),
+ 'add' => '3.4',
+ ],
+ 'cachekey' => [
+ 'title' => ts('Cache Key'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'description' => ts('Unique path name for cache element of the searched item'),
+ 'add' => '3.4',
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'data' => [
+ 'title' => ts('Prev Next Data'),
+ 'sql_type' => 'longtext',
+ 'input_type' => 'TextArea',
+ 'description' => ts('cached snapshot of the serialized data'),
+ 'add' => '3.4',
+ 'serialize' => CRM_Core_DAO::SERIALIZE_PHP,
+ ],
+ 'is_selected' => [
+ 'title' => ts('Is Selected'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'add' => '4.2',
+ 'default' => FALSE,
+ ],
+ ],
+];
diff --git a/www/modules/civicrm/schema/Core/PrintLabel.entityType.php b/www/modules/civicrm/schema/Core/PrintLabel.entityType.php
new file mode 100644
index 000000000..9174e9138
--- /dev/null
+++ b/www/modules/civicrm/schema/Core/PrintLabel.entityType.php
@@ -0,0 +1,136 @@
+ 'PrintLabel',
+ 'table' => 'civicrm_print_label',
+ 'class' => 'CRM_Core_DAO_PrintLabel',
+ 'getInfo' => fn() => [
+ 'title' => ts('Print Label'),
+ 'title_plural' => ts('Print Labels'),
+ 'description' => ts('Table to store the labels created by user.'),
+ 'add' => '4.4',
+ ],
+ 'getFields' => fn() => [
+ 'id' => [
+ 'title' => ts('Print Label ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'required' => TRUE,
+ 'add' => '4.4',
+ 'primary_key' => TRUE,
+ 'auto_increment' => TRUE,
+ ],
+ 'title' => [
+ 'title' => ts('Title'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'description' => ts('User title for this label layout'),
+ 'add' => '4.4',
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'name' => [
+ 'title' => ts('Name'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'description' => ts('variable name/programmatic handle for this field.'),
+ 'add' => '4.4',
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'description' => [
+ 'title' => ts('Description'),
+ 'sql_type' => 'text',
+ 'input_type' => 'TextArea',
+ 'description' => ts('Description of this label layout'),
+ 'add' => '4.4',
+ 'input_attrs' => [
+ 'label' => ts('Description'),
+ ],
+ ],
+ 'label_format_name' => [
+ 'title' => ts('Label Format'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Select',
+ 'description' => ts('This refers to name column of civicrm_option_value row in name_badge option group'),
+ 'add' => '4.4',
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ 'pseudoconstant' => [
+ 'option_group_name' => 'name_badge',
+ ],
+ ],
+ 'label_type_id' => [
+ 'title' => ts('Label Type'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Select',
+ 'description' => ts('Implicit FK to civicrm_option_value row in NEW label_type option group'),
+ 'add' => '4.4',
+ 'pseudoconstant' => [
+ 'option_group_name' => 'label_type',
+ ],
+ ],
+ 'data' => [
+ 'title' => ts('Data'),
+ 'sql_type' => 'longtext',
+ 'input_type' => 'TextArea',
+ 'description' => ts('contains json encode configurations options'),
+ 'add' => '4.4',
+ 'serialize' => CRM_Core_DAO::SERIALIZE_JSON,
+ 'input_attrs' => [
+ 'label' => ts('Data'),
+ ],
+ ],
+ 'is_default' => [
+ 'title' => ts('Label is Default?'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('Is this default?'),
+ 'add' => '4.4',
+ 'default' => TRUE,
+ 'input_attrs' => [
+ 'label' => ts('Default'),
+ ],
+ ],
+ 'is_active' => [
+ 'title' => ts('Label Is Active?'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('Is this option active?'),
+ 'add' => '4.4',
+ 'default' => TRUE,
+ 'input_attrs' => [
+ 'label' => ts('Enabled'),
+ ],
+ ],
+ 'is_reserved' => [
+ 'title' => ts('Is Label Reserved?'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('Is this reserved label?'),
+ 'add' => '4.4',
+ 'default' => TRUE,
+ ],
+ 'created_id' => [
+ 'title' => ts('Created By Contact ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'description' => ts('FK to civicrm_contact, who created this label layout'),
+ 'add' => '4.4',
+ 'input_attrs' => [
+ 'label' => ts('Created By'),
+ ],
+ 'entity_reference' => [
+ 'entity' => 'Contact',
+ 'key' => 'id',
+ 'on_delete' => 'SET NULL',
+ ],
+ ],
+ ],
+];
diff --git a/www/modules/civicrm/schema/Core/RecurringEntity.entityType.php b/www/modules/civicrm/schema/Core/RecurringEntity.entityType.php
new file mode 100644
index 000000000..6d1beb8fc
--- /dev/null
+++ b/www/modules/civicrm/schema/Core/RecurringEntity.entityType.php
@@ -0,0 +1,69 @@
+ 'RecurringEntity',
+ 'table' => 'civicrm_recurring_entity',
+ 'class' => 'CRM_Core_DAO_RecurringEntity',
+ 'getInfo' => fn() => [
+ 'title' => ts('Recurring Entity'),
+ 'title_plural' => ts('Recurring Entities'),
+ 'description' => ts('FIXME'),
+ 'log' => TRUE,
+ 'add' => '4.6',
+ ],
+ 'getFields' => fn() => [
+ 'id' => [
+ 'title' => ts('ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'required' => TRUE,
+ 'add' => '4.6',
+ 'input_attrs' => [
+ 'maxlength' => 10,
+ ],
+ 'primary_key' => TRUE,
+ 'auto_increment' => TRUE,
+ ],
+ 'parent_id' => [
+ 'title' => ts('Parent ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'required' => TRUE,
+ 'description' => ts('Recurring Entity Parent ID'),
+ 'add' => '4.6',
+ 'input_attrs' => [
+ 'maxlength' => 10,
+ ],
+ ],
+ 'entity_id' => [
+ 'title' => ts('Entity ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'description' => ts('Recurring Entity Child ID'),
+ 'add' => '4.6',
+ 'input_attrs' => [
+ 'maxlength' => 10,
+ ],
+ ],
+ 'entity_table' => [
+ 'title' => ts('Entity Table'),
+ 'sql_type' => 'varchar(64)',
+ 'input_type' => 'Text',
+ 'required' => TRUE,
+ 'description' => ts('Physical tablename for entity, e.g. civicrm_event'),
+ 'add' => '4.6',
+ 'input_attrs' => [
+ 'maxlength' => 64,
+ ],
+ ],
+ 'mode' => [
+ 'title' => ts('Cascade Type'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('1-this entity, 2-this and the following entities, 3-all the entities'),
+ 'add' => '4.6',
+ 'default' => TRUE,
+ ],
+ ],
+];
diff --git a/www/modules/civicrm/schema/Core/Setting.entityType.php b/www/modules/civicrm/schema/Core/Setting.entityType.php
new file mode 100644
index 000000000..881fe2262
--- /dev/null
+++ b/www/modules/civicrm/schema/Core/Setting.entityType.php
@@ -0,0 +1,142 @@
+ 'Setting',
+ 'table' => 'civicrm_setting',
+ 'class' => 'CRM_Core_DAO_Setting',
+ 'getInfo' => fn() => [
+ 'title' => ts('Setting'),
+ 'title_plural' => ts('Settings'),
+ 'description' => ts('Table to store civicrm settings for civicrm core and components.'),
+ 'add' => '4.1',
+ ],
+ 'getIndices' => fn() => [
+ 'index_domain_contact_name' => [
+ 'fields' => [
+ 'domain_id' => TRUE,
+ 'contact_id' => TRUE,
+ 'name' => TRUE,
+ ],
+ 'unique' => TRUE,
+ 'add' => '4.7',
+ ],
+ ],
+ 'getFields' => fn() => [
+ 'id' => [
+ 'title' => ts('Setting ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'required' => TRUE,
+ 'add' => '4.1',
+ 'primary_key' => TRUE,
+ 'auto_increment' => TRUE,
+ ],
+ 'name' => [
+ 'title' => ts('Setting Name'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'description' => ts('Unique name for setting'),
+ 'add' => '4.1',
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'value' => [
+ 'title' => ts('Value'),
+ 'sql_type' => 'text',
+ 'input_type' => 'TextArea',
+ 'description' => ts('data associated with this group / name combo'),
+ 'add' => '4.1',
+ 'serialize' => CRM_Core_DAO::SERIALIZE_PHP,
+ 'input_attrs' => [
+ 'label' => ts('Value'),
+ ],
+ ],
+ 'domain_id' => [
+ 'title' => ts('Domain ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'description' => ts('Which Domain does this setting belong to'),
+ 'add' => '4.1',
+ 'default' => NULL,
+ 'input_attrs' => [
+ 'label' => ts('Domain'),
+ ],
+ 'pseudoconstant' => [
+ 'table' => 'civicrm_domain',
+ 'key_column' => 'id',
+ 'label_column' => 'name',
+ ],
+ 'entity_reference' => [
+ 'entity' => 'Domain',
+ 'key' => 'id',
+ 'on_delete' => 'CASCADE',
+ ],
+ ],
+ 'contact_id' => [
+ 'title' => ts('Contact ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'description' => ts('FK to Contact ID if the setting is localized to a contact'),
+ 'add' => '4.1',
+ 'input_attrs' => [
+ 'label' => ts('Contact'),
+ ],
+ 'entity_reference' => [
+ 'entity' => 'Contact',
+ 'key' => 'id',
+ 'on_delete' => 'CASCADE',
+ ],
+ ],
+ 'is_domain' => [
+ 'title' => ts('Is Domain Setting?'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('Is this setting per-domain or global?'),
+ 'add' => '4.1',
+ 'default' => FALSE,
+ ],
+ 'component_id' => [
+ 'title' => ts('Component ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Select',
+ 'description' => ts('Component that this menu item belongs to'),
+ 'add' => '4.1',
+ 'input_attrs' => [
+ 'label' => ts('Component'),
+ ],
+ 'pseudoconstant' => [
+ 'table' => 'civicrm_component',
+ 'key_column' => 'id',
+ 'label_column' => 'name',
+ ],
+ 'entity_reference' => [
+ 'entity' => 'Component',
+ 'key' => 'id',
+ ],
+ ],
+ 'created_date' => [
+ 'title' => ts('Setting Created Date'),
+ 'sql_type' => 'datetime',
+ 'input_type' => 'Select Date',
+ 'description' => ts('When was the setting created'),
+ 'add' => '4.1',
+ ],
+ 'created_id' => [
+ 'title' => ts('Created By Contact ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'description' => ts('FK to civicrm_contact, who created this setting'),
+ 'add' => '4.1',
+ 'input_attrs' => [
+ 'label' => ts('Created By'),
+ ],
+ 'entity_reference' => [
+ 'entity' => 'Contact',
+ 'key' => 'id',
+ 'on_delete' => 'SET NULL',
+ ],
+ ],
+ ],
+];
diff --git a/www/modules/civicrm/schema/Core/StateProvince.entityType.php b/www/modules/civicrm/schema/Core/StateProvince.entityType.php
new file mode 100644
index 000000000..2db29878c
--- /dev/null
+++ b/www/modules/civicrm/schema/Core/StateProvince.entityType.php
@@ -0,0 +1,88 @@
+ 'StateProvince',
+ 'table' => 'civicrm_state_province',
+ 'class' => 'CRM_Core_DAO_StateProvince',
+ 'getInfo' => fn() => [
+ 'title' => ts('State/Province'),
+ 'title_plural' => ts('States/Provinces'),
+ 'description' => ts('FIXME'),
+ 'add' => '1.1',
+ 'label_field' => 'name',
+ ],
+ 'getIndices' => fn() => [
+ 'UI_name_country_id' => [
+ 'fields' => [
+ 'name' => TRUE,
+ 'country_id' => TRUE,
+ ],
+ 'unique' => TRUE,
+ 'add' => '1.1',
+ ],
+ ],
+ 'getFields' => fn() => [
+ 'id' => [
+ 'title' => ts('State ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'required' => TRUE,
+ 'description' => ts('State/Province ID'),
+ 'add' => '1.1',
+ 'primary_key' => TRUE,
+ 'auto_increment' => TRUE,
+ ],
+ 'name' => [
+ 'title' => ts('State'),
+ 'sql_type' => 'varchar(64)',
+ 'input_type' => 'Text',
+ 'description' => ts('Name of State/Province'),
+ 'add' => '1.1',
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ 'input_attrs' => [
+ 'maxlength' => 64,
+ ],
+ ],
+ 'abbreviation' => [
+ 'title' => ts('State Abbreviation'),
+ 'sql_type' => 'varchar(4)',
+ 'input_type' => 'Text',
+ 'description' => ts('2-4 Character Abbreviation of State/Province'),
+ 'add' => '1.1',
+ 'input_attrs' => [
+ 'maxlength' => 4,
+ ],
+ ],
+ 'country_id' => [
+ 'title' => ts('Country ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'required' => TRUE,
+ 'description' => ts('ID of Country that State/Province belong'),
+ 'add' => '1.1',
+ 'input_attrs' => [
+ 'label' => ts('Country'),
+ ],
+ 'entity_reference' => [
+ 'entity' => 'Country',
+ 'key' => 'id',
+ ],
+ ],
+ 'is_active' => [
+ 'title' => ts('StateProvince Is Active'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('Is this StateProvince active?'),
+ 'add' => '5.35',
+ 'default' => TRUE,
+ 'input_attrs' => [
+ 'label' => ts('Enabled'),
+ ],
+ ],
+ ],
+];
diff --git a/www/modules/civicrm/schema/Core/StatusPreference.entityType.php b/www/modules/civicrm/schema/Core/StatusPreference.entityType.php
new file mode 100644
index 000000000..36149e738
--- /dev/null
+++ b/www/modules/civicrm/schema/Core/StatusPreference.entityType.php
@@ -0,0 +1,130 @@
+ 'StatusPreference',
+ 'table' => 'civicrm_status_pref',
+ 'class' => 'CRM_Core_DAO_StatusPreference',
+ 'getInfo' => fn() => [
+ 'title' => ts('Status Preference'),
+ 'title_plural' => ts('Status Preferences'),
+ 'description' => ts('Preferences controlling status checks called in system.check.'),
+ 'add' => '4.7',
+ ],
+ 'getIndices' => fn() => [
+ 'UI_status_pref_name' => [
+ 'fields' => [
+ 'name' => TRUE,
+ ],
+ 'add' => '4.7',
+ ],
+ ],
+ 'getFields' => fn() => [
+ 'id' => [
+ 'title' => ts('Status Preference ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'required' => TRUE,
+ 'description' => ts('Unique Status Preference ID'),
+ 'add' => '4.7',
+ 'primary_key' => TRUE,
+ 'auto_increment' => TRUE,
+ ],
+ 'domain_id' => [
+ 'title' => ts('Domain ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'required' => TRUE,
+ 'description' => ts('Which Domain is this Status Preference for'),
+ 'add' => '4.7',
+ 'input_attrs' => [
+ 'label' => ts('Domain'),
+ ],
+ 'pseudoconstant' => [
+ 'table' => 'civicrm_domain',
+ 'key_column' => 'id',
+ 'label_column' => 'name',
+ ],
+ 'entity_reference' => [
+ 'entity' => 'Domain',
+ 'key' => 'id',
+ ],
+ ],
+ 'name' => [
+ 'title' => ts('Status Check Name'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'required' => TRUE,
+ 'description' => ts('Name of the status check this preference references.'),
+ 'add' => '4.7',
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'hush_until' => [
+ 'title' => ts('Snooze Status Notifications Until'),
+ 'sql_type' => 'date',
+ 'input_type' => 'Select Date',
+ 'description' => ts('expires ignore_severity. NULL never hushes.'),
+ 'add' => '4.7',
+ 'default' => NULL,
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ ],
+ 'ignore_severity' => [
+ 'title' => ts('Ignore Severity'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Select',
+ 'description' => ts('Hush messages up to and including this severity.'),
+ 'add' => '4.7',
+ 'default' => 1,
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ 'pseudoconstant' => [
+ 'callback' => 'CRM_Utils_Check::getSeverityOptions',
+ ],
+ ],
+ 'prefs' => [
+ 'title' => ts('Status Preferences'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'description' => ts('These settings are per-check, and can\'t be compared across checks.'),
+ 'add' => '4.7',
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'check_info' => [
+ 'title' => ts('Check Info'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'description' => ts('These values are per-check, and can\'t be compared across checks.'),
+ 'add' => '4.7',
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'is_active' => [
+ 'title' => ts('Check Is Active'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('Is this status check active?'),
+ 'add' => '5.19',
+ 'default' => TRUE,
+ 'input_attrs' => [
+ 'label' => ts('Enabled'),
+ ],
+ ],
+ ],
+];
diff --git a/www/modules/civicrm/schema/Core/SystemLog.entityType.php b/www/modules/civicrm/schema/Core/SystemLog.entityType.php
new file mode 100644
index 000000000..bcce81746
--- /dev/null
+++ b/www/modules/civicrm/schema/Core/SystemLog.entityType.php
@@ -0,0 +1,82 @@
+ 'SystemLog',
+ 'table' => 'civicrm_system_log',
+ 'class' => 'CRM_Core_DAO_SystemLog',
+ 'getInfo' => fn() => [
+ 'title' => ts('System Log'),
+ 'title_plural' => ts('System Logs'),
+ 'description' => ts('FIXME'),
+ 'add' => '4.5',
+ ],
+ 'getFields' => fn() => [
+ 'id' => [
+ 'title' => ts('System Log ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'required' => TRUE,
+ 'description' => ts('Primary key ID'),
+ 'add' => '4.4',
+ 'primary_key' => TRUE,
+ 'auto_increment' => TRUE,
+ ],
+ 'message' => [
+ 'title' => ts('System Log Message'),
+ 'sql_type' => 'varchar(128)',
+ 'input_type' => 'Text',
+ 'required' => TRUE,
+ 'description' => ts('Standardized message'),
+ 'add' => '4.5',
+ 'input_attrs' => [
+ 'maxlength' => 128,
+ ],
+ ],
+ 'context' => [
+ 'title' => ts('Detailed Log Data'),
+ 'sql_type' => 'longtext',
+ 'input_type' => 'TextArea',
+ 'description' => ts('JSON encoded data'),
+ 'add' => '4.5',
+ ],
+ 'level' => [
+ 'title' => ts('Detailed Log Data'),
+ 'sql_type' => 'varchar(9)',
+ 'input_type' => 'Text',
+ 'description' => ts('error level per PSR3'),
+ 'add' => '4.5',
+ 'default' => 'info',
+ 'input_attrs' => [
+ 'maxlength' => 9,
+ ],
+ ],
+ 'timestamp' => [
+ 'title' => ts('Log Timestamp'),
+ 'sql_type' => 'timestamp',
+ 'input_type' => NULL,
+ 'description' => ts('Timestamp of when event occurred.'),
+ 'add' => '4.5',
+ 'default' => 'CURRENT_TIMESTAMP',
+ ],
+ 'contact_id' => [
+ 'title' => ts('Log Contact ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'description' => ts('Optional Contact ID that created the log. Not an FK as we keep this regardless'),
+ 'add' => '4.5',
+ 'input_attrs' => [
+ 'maxlength' => 11,
+ ],
+ ],
+ 'hostname' => [
+ 'title' => ts('Log Host'),
+ 'sql_type' => 'varchar(128)',
+ 'input_type' => 'Text',
+ 'description' => ts('Optional Name of logging host'),
+ 'add' => '4.5',
+ 'input_attrs' => [
+ 'maxlength' => 128,
+ ],
+ ],
+ ],
+];
diff --git a/www/modules/civicrm/schema/Core/Tag.entityType.php b/www/modules/civicrm/schema/Core/Tag.entityType.php
new file mode 100644
index 000000000..c3507eadf
--- /dev/null
+++ b/www/modules/civicrm/schema/Core/Tag.entityType.php
@@ -0,0 +1,168 @@
+ 'Tag',
+ 'table' => 'civicrm_tag',
+ 'class' => 'CRM_Core_DAO_Tag',
+ 'getInfo' => fn() => [
+ 'title' => ts('Tag'),
+ 'title_plural' => ts('Tags'),
+ 'description' => ts('Provides support for flat or hierarchical classification of various types of entities (contacts, groups, actions...).'),
+ 'log' => TRUE,
+ 'add' => '1.1',
+ 'icon' => 'fa-tag',
+ 'label_field' => 'label',
+ ],
+ 'getIndices' => fn() => [
+ 'UI_name' => [
+ 'fields' => [
+ 'name' => TRUE,
+ ],
+ 'unique' => TRUE,
+ 'add' => '2.1',
+ ],
+ ],
+ 'getFields' => fn() => [
+ 'id' => [
+ 'title' => ts('Tag ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'required' => TRUE,
+ 'description' => ts('Tag ID'),
+ 'add' => '1.1',
+ 'primary_key' => TRUE,
+ 'auto_increment' => TRUE,
+ ],
+ 'name' => [
+ 'title' => ts('Tag Name'),
+ 'sql_type' => 'varchar(64)',
+ 'input_type' => 'Text',
+ 'required' => TRUE,
+ 'description' => ts('Unique machine name'),
+ 'add' => '1.1',
+ 'input_attrs' => [
+ 'maxlength' => 64,
+ ],
+ ],
+ 'label' => [
+ 'title' => ts('Tag Label'),
+ 'sql_type' => 'varchar(64)',
+ 'input_type' => 'Text',
+ 'required' => TRUE,
+ 'description' => ts('User-facing tag name'),
+ 'add' => '5.68',
+ 'input_attrs' => [
+ 'maxlength' => 64,
+ ],
+ ],
+ 'description' => [
+ 'title' => ts('Description'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'description' => ts('Optional verbose description of the tag.'),
+ 'add' => '1.1',
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'parent_id' => [
+ 'title' => ts('Parent Tag ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'description' => ts('Optional parent id for this tag.'),
+ 'add' => '1.1',
+ 'default' => NULL,
+ 'input_attrs' => [
+ 'label' => ts('Parent Tag'),
+ ],
+ 'pseudoconstant' => [
+ 'table' => 'civicrm_tag',
+ 'key_column' => 'id',
+ 'name_column' => 'name',
+ 'label_column' => 'label',
+ ],
+ 'entity_reference' => [
+ 'entity' => 'Tag',
+ 'key' => 'id',
+ ],
+ ],
+ 'is_selectable' => [
+ 'title' => ts('Display Tag?'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('Is this tag selectable / displayed'),
+ 'add' => '2.1',
+ 'default' => TRUE,
+ ],
+ 'is_reserved' => [
+ 'title' => ts('Reserved'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'add' => '3.2',
+ 'default' => FALSE,
+ ],
+ 'is_tagset' => [
+ 'title' => ts('Tagset'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'add' => '3.2',
+ 'default' => FALSE,
+ ],
+ 'used_for' => [
+ 'title' => ts('Used For'),
+ 'sql_type' => 'varchar(64)',
+ 'input_type' => 'Select',
+ 'add' => '3.2',
+ 'default' => NULL,
+ 'serialize' => CRM_Core_DAO::SERIALIZE_COMMA,
+ 'input_attrs' => [
+ 'maxlength' => 64,
+ ],
+ 'pseudoconstant' => [
+ 'option_group_name' => 'tag_used_for',
+ ],
+ ],
+ 'created_id' => [
+ 'title' => ts('Created By Contact ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'description' => ts('FK to civicrm_contact, who created this tag'),
+ 'add' => '3.4',
+ 'input_attrs' => [
+ 'label' => ts('Created By'),
+ ],
+ 'entity_reference' => [
+ 'entity' => 'Contact',
+ 'key' => 'id',
+ 'on_delete' => 'SET NULL',
+ ],
+ ],
+ 'color' => [
+ 'title' => ts('Color'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'description' => ts('Hex color value e.g. #ffffff'),
+ 'add' => '4.7',
+ 'default' => NULL,
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'created_date' => [
+ 'title' => ts('Tag Created Date'),
+ 'sql_type' => 'datetime',
+ 'input_type' => 'Select Date',
+ 'readonly' => TRUE,
+ 'description' => ts('Date and time that tag was created.'),
+ 'add' => '3.4',
+ 'default' => 'CURRENT_TIMESTAMP',
+ 'input_attrs' => [
+ 'format_type' => 'activityDateTime',
+ 'label' => ts('Created Date'),
+ ],
+ ],
+ ],
+];
diff --git a/www/modules/civicrm/schema/Core/Timezone.entityType.php b/www/modules/civicrm/schema/Core/Timezone.entityType.php
new file mode 100644
index 000000000..11190f4e6
--- /dev/null
+++ b/www/modules/civicrm/schema/Core/Timezone.entityType.php
@@ -0,0 +1,76 @@
+ 'Timezone',
+ 'table' => 'civicrm_timezone',
+ 'class' => 'CRM_Core_DAO_Timezone',
+ 'getInfo' => fn() => [
+ 'title' => ts('Timezone'),
+ 'title_plural' => ts('Timezones'),
+ 'description' => ts('FIXME'),
+ 'add' => '1.8',
+ ],
+ 'getFields' => fn() => [
+ 'id' => [
+ 'title' => ts('Timezone ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'required' => TRUE,
+ 'description' => ts('Timezone ID'),
+ 'add' => '1.8',
+ 'primary_key' => TRUE,
+ 'auto_increment' => TRUE,
+ ],
+ 'name' => [
+ 'title' => ts('Timezone Name'),
+ 'sql_type' => 'varchar(64)',
+ 'input_type' => 'Text',
+ 'description' => ts('Timezone full name'),
+ 'add' => '1.8',
+ 'input_attrs' => [
+ 'maxlength' => 64,
+ ],
+ ],
+ 'abbreviation' => [
+ 'title' => ts('Timezone Abbreviation'),
+ 'sql_type' => 'char(3)',
+ 'input_type' => 'Text',
+ 'description' => ts('ISO Code for timezone abbreviation'),
+ 'add' => '1.8',
+ 'input_attrs' => [
+ 'maxlength' => 3,
+ ],
+ ],
+ 'gmt' => [
+ 'title' => ts('GMT Name of Timezone'),
+ 'sql_type' => 'varchar(64)',
+ 'input_type' => 'Text',
+ 'description' => ts('GMT name of the timezone'),
+ 'add' => '1.8',
+ 'input_attrs' => [
+ 'maxlength' => 64,
+ ],
+ ],
+ 'offset' => [
+ 'title' => ts('GMT Offset'),
+ 'sql_type' => 'int',
+ 'input_type' => 'Number',
+ 'add' => '1.8',
+ ],
+ 'country_id' => [
+ 'title' => ts('Country ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'required' => TRUE,
+ 'description' => ts('Country ID'),
+ 'add' => '1.8',
+ 'input_attrs' => [
+ 'label' => ts('Country'),
+ ],
+ 'entity_reference' => [
+ 'entity' => 'Country',
+ 'key' => 'id',
+ ],
+ ],
+ ],
+];
diff --git a/www/modules/civicrm/schema/Core/Translation.entityType.php b/www/modules/civicrm/schema/Core/Translation.entityType.php
new file mode 100644
index 000000000..1faeb726f
--- /dev/null
+++ b/www/modules/civicrm/schema/Core/Translation.entityType.php
@@ -0,0 +1,118 @@
+ 'Translation',
+ 'table' => 'civicrm_translation',
+ 'class' => 'CRM_Core_DAO_Translation',
+ 'getInfo' => fn() => [
+ 'title' => ts('Translated String'),
+ 'title_plural' => ts('Translated Strings'),
+ 'description' => ts('Each string record is an alternate translation of some displayable string in the database.'),
+ 'log' => TRUE,
+ 'add' => '5.39',
+ ],
+ 'getIndices' => fn() => [
+ 'index_entity_lang' => [
+ 'fields' => [
+ 'entity_id' => TRUE,
+ 'entity_table' => TRUE,
+ 'language' => TRUE,
+ ],
+ 'add' => '5.39',
+ ],
+ ],
+ 'getFields' => fn() => [
+ 'id' => [
+ 'title' => ts('Translated String ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'required' => TRUE,
+ 'description' => ts('Unique String ID'),
+ 'add' => '5.39',
+ 'primary_key' => TRUE,
+ 'auto_increment' => TRUE,
+ ],
+ 'entity_table' => [
+ 'title' => ts('Translated Entity'),
+ 'sql_type' => 'varchar(64)',
+ 'input_type' => 'Select',
+ 'required' => TRUE,
+ 'description' => ts('Table where referenced item is stored'),
+ 'add' => '5.39',
+ 'input_attrs' => [
+ 'maxlength' => 64,
+ ],
+ 'pseudoconstant' => [
+ 'callback' => 'CRM_Core_BAO_Translation::getEntityTables',
+ ],
+ ],
+ 'entity_field' => [
+ 'title' => ts('Translated Field'),
+ 'sql_type' => 'varchar(64)',
+ 'input_type' => 'Select',
+ 'required' => TRUE,
+ 'description' => ts('Field where referenced item is stored'),
+ 'add' => '5.39',
+ 'input_attrs' => [
+ 'maxlength' => 64,
+ ],
+ 'pseudoconstant' => [
+ 'callback' => 'CRM_Core_BAO_Translation::getEntityFields',
+ ],
+ ],
+ 'entity_id' => [
+ 'title' => ts('Translated Entity ID'),
+ 'sql_type' => 'int',
+ 'input_type' => 'EntityRef',
+ 'required' => TRUE,
+ 'description' => ts('ID of the relevant entity.'),
+ 'add' => '5.39',
+ 'input_attrs' => [
+ 'maxlength' => 64,
+ ],
+ 'entity_reference' => [
+ 'dynamic_entity' => 'entity_table',
+ 'key' => 'id',
+ ],
+ ],
+ 'language' => [
+ 'title' => ts('Language'),
+ 'sql_type' => 'varchar(5)',
+ 'input_type' => 'Select',
+ 'required' => TRUE,
+ 'description' => ts('Relevant language'),
+ 'add' => '5.39',
+ 'input_attrs' => [
+ 'maxlength' => 5,
+ ],
+ 'pseudoconstant' => [
+ 'option_group_name' => 'languages',
+ 'key_column' => 'name',
+ 'option_edit_path' => 'civicrm/admin/options/languages',
+ ],
+ ],
+ 'status_id' => [
+ 'title' => ts('Status'),
+ 'sql_type' => 'tinyint',
+ 'input_type' => 'Select',
+ 'required' => TRUE,
+ 'description' => ts('Specify whether the string is active, draft, etc'),
+ 'add' => '5.39',
+ 'default' => 1,
+ 'input_attrs' => [
+ 'maxlength' => 3,
+ ],
+ 'pseudoconstant' => [
+ 'callback' => 'CRM_Core_BAO_Translation::getStatuses',
+ ],
+ ],
+ 'string' => [
+ 'title' => ts('Translated String'),
+ 'sql_type' => 'longtext',
+ 'input_type' => 'TextArea',
+ 'required' => TRUE,
+ 'description' => ts('Translated string'),
+ 'add' => '5.39',
+ ],
+ ],
+];
diff --git a/www/modules/civicrm/schema/Core/UFField.entityType.php b/www/modules/civicrm/schema/Core/UFField.entityType.php
new file mode 100644
index 000000000..cf93cbe4c
--- /dev/null
+++ b/www/modules/civicrm/schema/Core/UFField.entityType.php
@@ -0,0 +1,238 @@
+ 'UFField',
+ 'table' => 'civicrm_uf_field',
+ 'class' => 'CRM_Core_DAO_UFField',
+ 'getInfo' => fn() => [
+ 'title' => ts('Profile Field'),
+ 'title_plural' => ts('Profile Fields'),
+ 'description' => ts('User Framework fields and their properties.'),
+ 'log' => TRUE,
+ 'add' => '1.1',
+ ],
+ 'getPaths' => fn() => [
+ 'add' => 'civicrm/admin/uf/group/field/add?reset=1&action=add&gid=[uf_group_id]',
+ 'preview' => 'civicrm/admin/uf/group/preview?reset=1&gid=[uf_group_id]&fieldId=[id]',
+ 'update' => 'civicrm/admin/uf/group/field/update?reset=1&action=update&id=[id]',
+ 'delete' => 'civicrm/admin/uf/group/field/update?reset=1&action=delete&id=[id]',
+ 'browse' => 'civicrm/admin/uf/group/field',
+ ],
+ 'getIndices' => fn() => [
+ 'IX_website_type_id' => [
+ 'fields' => [
+ 'website_type_id' => TRUE,
+ ],
+ 'add' => '4.5',
+ ],
+ ],
+ 'getFields' => fn() => [
+ 'id' => [
+ 'title' => ts('Profile Field ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'required' => TRUE,
+ 'description' => ts('Unique table ID'),
+ 'add' => '1.1',
+ 'primary_key' => TRUE,
+ 'auto_increment' => TRUE,
+ ],
+ 'uf_group_id' => [
+ 'title' => ts('Profile ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Select',
+ 'required' => TRUE,
+ 'description' => ts('Which form does this field belong to.'),
+ 'add' => '1.1',
+ 'input_attrs' => [
+ 'label' => ts('Profile'),
+ ],
+ 'pseudoconstant' => [
+ 'table' => 'civicrm_uf_group',
+ 'key_column' => 'id',
+ 'label_column' => 'title',
+ ],
+ 'entity_reference' => [
+ 'entity' => 'UFGroup',
+ 'key' => 'id',
+ 'on_delete' => 'CASCADE',
+ ],
+ ],
+ 'field_name' => [
+ 'title' => ts('Profile Field Name'),
+ 'sql_type' => 'varchar(64)',
+ 'input_type' => 'Select',
+ 'required' => TRUE,
+ 'description' => ts('Name for CiviCRM field which is being exposed for sharing.'),
+ 'add' => '1.1',
+ 'input_attrs' => [
+ 'maxlength' => 64,
+ ],
+ 'pseudoconstant' => [
+ 'callback' => 'CRM_Core_BAO_UFField::getAvailableFieldOptions',
+ ],
+ ],
+ 'is_active' => [
+ 'title' => ts('Profile Field Is Active'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('Is this field currently shareable? If FALSE, hide the field for all sharing contexts.'),
+ 'add' => '1.1',
+ 'default' => TRUE,
+ 'input_attrs' => [
+ 'label' => ts('Enabled'),
+ ],
+ ],
+ 'is_view' => [
+ 'title' => ts('Profile Is View Only'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('the field is view only and not editable in user forms.'),
+ 'add' => '1.1',
+ 'default' => FALSE,
+ ],
+ 'is_required' => [
+ 'title' => ts('Profile Field Is Required'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('Is this field required when included in a user or registration form?'),
+ 'add' => '1.1',
+ 'default' => FALSE,
+ ],
+ 'weight' => [
+ 'title' => ts('Order'),
+ 'sql_type' => 'int',
+ 'input_type' => 'Number',
+ 'required' => TRUE,
+ 'description' => ts('Controls field display order when user framework fields are displayed in registration and account editing forms.'),
+ 'add' => '1.1',
+ 'default' => 1,
+ ],
+ 'help_post' => [
+ 'title' => ts('Profile Field Post Help'),
+ 'sql_type' => 'text',
+ 'input_type' => 'TextArea',
+ 'localizable' => TRUE,
+ 'description' => ts('Description and/or help text to display after this field.'),
+ 'add' => '1.1',
+ ],
+ 'help_pre' => [
+ 'title' => ts('Profile Field Pre Help'),
+ 'sql_type' => 'text',
+ 'input_type' => 'TextArea',
+ 'localizable' => TRUE,
+ 'description' => ts('Description and/or help text to display before this field.'),
+ 'add' => '3.2',
+ ],
+ 'visibility' => [
+ 'title' => ts('Profile Field Visibility'),
+ 'sql_type' => 'varchar(32)',
+ 'input_type' => 'Select',
+ 'description' => ts('In what context(s) is this field visible.'),
+ 'add' => '1.1',
+ 'default' => 'User and User Admin Only',
+ 'input_attrs' => [
+ 'maxlength' => 32,
+ ],
+ 'pseudoconstant' => [
+ 'callback' => 'CRM_Core_SelectValues::ufVisibility',
+ ],
+ ],
+ 'in_selector' => [
+ 'title' => ts('Profile Field Is a Filter'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('Is this field included as a column in the selector table?'),
+ 'add' => '1.2',
+ 'default' => FALSE,
+ ],
+ 'is_searchable' => [
+ 'title' => ts('Profile Field Is Searchable'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('Is this field included search form of profile?'),
+ 'add' => '1.4',
+ 'default' => FALSE,
+ ],
+ 'location_type_id' => [
+ 'title' => ts('Location Type ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'description' => ts('Location type of this mapping, if required'),
+ 'add' => '1.3',
+ 'input_attrs' => [
+ 'label' => ts('Location Type'),
+ ],
+ 'entity_reference' => [
+ 'entity' => 'LocationType',
+ 'key' => 'id',
+ 'on_delete' => 'SET NULL',
+ ],
+ ],
+ 'phone_type_id' => [
+ 'title' => ts('Profile Field Phone Type'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Select',
+ 'description' => ts('Phone Type ID, if required'),
+ 'add' => '2.2',
+ 'pseudoconstant' => [
+ 'option_group_name' => 'phone_type',
+ ],
+ ],
+ 'website_type_id' => [
+ 'title' => ts('Profile Field Website Type'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Select',
+ 'description' => ts('Website Type ID, if required'),
+ 'add' => '4.5',
+ 'pseudoconstant' => [
+ 'option_group_name' => 'website_type',
+ ],
+ ],
+ 'label' => [
+ 'title' => ts('Profile Field Label'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'required' => TRUE,
+ 'localizable' => TRUE,
+ 'description' => ts('To save label for fields.'),
+ 'add' => '1.4',
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'field_type' => [
+ 'title' => ts('Profile Field Type'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'description' => ts('This field saves field type (ie individual,household.. field etc).'),
+ 'add' => '1.4',
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'is_reserved' => [
+ 'title' => ts('Profile Field Is Reserved'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('Is this field reserved for use by some other CiviCRM functionality?'),
+ 'add' => '3.0',
+ 'default' => FALSE,
+ ],
+ 'is_multi_summary' => [
+ 'title' => ts('Profile Field Supports Multiple'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('Include in multi-record listing?'),
+ 'add' => '4.3',
+ 'default' => FALSE,
+ ],
+ ],
+];
diff --git a/www/modules/civicrm/schema/Core/UFGroup.entityType.php b/www/modules/civicrm/schema/Core/UFGroup.entityType.php
new file mode 100644
index 000000000..b925fe9f4
--- /dev/null
+++ b/www/modules/civicrm/schema/Core/UFGroup.entityType.php
@@ -0,0 +1,326 @@
+ 'UFGroup',
+ 'table' => 'civicrm_uf_group',
+ 'class' => 'CRM_Core_DAO_UFGroup',
+ 'getInfo' => fn() => [
+ 'title' => ts('Profile'),
+ 'title_plural' => ts('Profiles'),
+ 'description' => ts('User framework groups. Each group represents a form which encompasses a set of fields defined in civicrm_uf_fields table. Initially will be used for CiviCRM Profile form(s). Subsequently we anticipate using this to define other public facing forms (e.g. online donation solicitation forms, mailing list preferences, etc.).'),
+ 'log' => TRUE,
+ 'add' => '1.1',
+ ],
+ 'getPaths' => fn() => [
+ 'add' => 'civicrm/admin/uf/group/add?action=add&reset=1',
+ 'preview' => 'civicrm/admin/uf/group/preview?reset=1&gid=[id]',
+ 'update' => 'civicrm/admin/uf/group/update?action=update&reset=1&id=[id]',
+ 'delete' => 'civicrm/admin/uf/group/update?action=delete&reset=1&id=[id]',
+ 'browse' => 'civicrm/admin/uf/group',
+ 'copy' => 'civicrm/admin/uf/group/copy?action=copy&reset=1&gid=[id]',
+ ],
+ 'getIndices' => fn() => [
+ 'UI_name' => [
+ 'fields' => [
+ 'name' => TRUE,
+ ],
+ 'unique' => TRUE,
+ 'add' => '4.7',
+ ],
+ ],
+ 'getFields' => fn() => [
+ 'id' => [
+ 'title' => ts('Profile ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'required' => TRUE,
+ 'description' => ts('Unique table ID'),
+ 'add' => '1.1',
+ 'primary_key' => TRUE,
+ 'auto_increment' => TRUE,
+ ],
+ 'name' => [
+ 'title' => ts('Profile Name'),
+ 'sql_type' => 'varchar(64)',
+ 'input_type' => 'Text',
+ 'required' => TRUE,
+ 'description' => ts('Name of the UF group for directly addressing it in the codebase'),
+ 'add' => '3.0',
+ 'input_attrs' => [
+ 'maxlength' => 64,
+ ],
+ ],
+ 'is_active' => [
+ 'title' => ts('Profile Is Active'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('Is this profile currently active? If FALSE, hide all related fields for all sharing contexts.'),
+ 'add' => '1.1',
+ 'default' => TRUE,
+ 'input_attrs' => [
+ 'label' => ts('Enabled'),
+ ],
+ ],
+ 'group_type' => [
+ 'title' => ts('Profile Group Type'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'description' => ts('Comma separated list of the type(s) of profile fields.'),
+ 'add' => '2.1',
+ 'serialize' => CRM_Core_DAO::SERIALIZE_COMMA,
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'title' => [
+ 'title' => ts('Profile Title'),
+ 'sql_type' => 'varchar(64)',
+ 'input_type' => 'Text',
+ 'required' => TRUE,
+ 'localizable' => TRUE,
+ 'description' => ts('Form title.'),
+ 'add' => '1.1',
+ 'input_attrs' => [
+ 'maxlength' => 64,
+ ],
+ ],
+ 'frontend_title' => [
+ 'title' => ts('Public Title'),
+ 'sql_type' => 'varchar(64)',
+ 'input_type' => 'Text',
+ 'required' => TRUE,
+ 'localizable' => TRUE,
+ 'description' => ts('Profile Form Public title'),
+ 'add' => '4.7',
+ 'input_attrs' => [
+ 'maxlength' => 64,
+ ],
+ ],
+ 'description' => [
+ 'title' => ts('Profile Description'),
+ 'sql_type' => 'text',
+ 'input_type' => 'TextArea',
+ 'description' => ts('Optional verbose description of the profile.'),
+ 'add' => '4.4',
+ 'input_attrs' => [
+ 'rows' => 2,
+ 'cols' => 60,
+ ],
+ ],
+ 'help_pre' => [
+ 'title' => ts('Help Pre'),
+ 'sql_type' => 'text',
+ 'input_type' => 'TextArea',
+ 'localizable' => TRUE,
+ 'description' => ts('Description and/or help text to display before fields in form.'),
+ 'add' => '1.2',
+ 'input_attrs' => [
+ 'rows' => 4,
+ 'cols' => 80,
+ 'label' => ts('Pre Help'),
+ ],
+ ],
+ 'help_post' => [
+ 'title' => ts('Profile Post Text'),
+ 'sql_type' => 'text',
+ 'input_type' => 'TextArea',
+ 'localizable' => TRUE,
+ 'description' => ts('Description and/or help text to display after fields in form.'),
+ 'add' => '1.2',
+ 'input_attrs' => [
+ 'rows' => 4,
+ 'cols' => 80,
+ ],
+ ],
+ 'limit_listings_group_id' => [
+ 'title' => ts('Search Limit Group ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'description' => ts('Group id, foreign key from civicrm_group'),
+ 'add' => '1.4',
+ 'input_attrs' => [
+ 'label' => ts('Search Limit Group'),
+ ],
+ 'entity_reference' => [
+ 'entity' => 'Group',
+ 'key' => 'id',
+ 'on_delete' => 'SET NULL',
+ ],
+ ],
+ 'post_url' => [
+ 'title' => ts('Post Url'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'description' => ts('Redirect to URL on submit.'),
+ 'add' => '1.4',
+ 'input_attrs' => [
+ 'label' => ts('Post URL'),
+ 'maxlength' => 255,
+ ],
+ ],
+ 'add_to_group_id' => [
+ 'title' => ts('Add Contact To Group ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'description' => ts('foreign key to civicrm_group_id'),
+ 'input_attrs' => [
+ 'label' => ts('Add Contact To Group'),
+ ],
+ 'entity_reference' => [
+ 'entity' => 'Group',
+ 'key' => 'id',
+ 'on_delete' => 'SET NULL',
+ ],
+ ],
+ 'add_captcha' => [
+ 'title' => ts('Show Captcha On Profile'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('Should a CAPTCHA widget be included this Profile form.'),
+ 'add' => '1.1',
+ 'default' => FALSE,
+ ],
+ 'is_map' => [
+ 'title' => ts('Map Profile'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('Do we want to map results from this profile.'),
+ 'add' => '1.5',
+ 'default' => FALSE,
+ ],
+ 'is_edit_link' => [
+ 'title' => ts('Show Edit Link?'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('Should edit link display in profile selector'),
+ 'add' => '1.6',
+ 'default' => FALSE,
+ ],
+ 'is_uf_link' => [
+ 'title' => ts('Show Link to CMS User'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('Should we display a link to the website profile in profile selector'),
+ 'add' => '1.7',
+ 'default' => FALSE,
+ ],
+ 'is_update_dupe' => [
+ 'title' => ts('Update on Duplicate'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('Should we update the contact record if we find a duplicate'),
+ 'add' => '1.7',
+ 'default' => FALSE,
+ ],
+ 'cancel_url' => [
+ 'title' => ts('Profile Cancel URL'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'description' => ts('Redirect to URL when Cancel button clicked.'),
+ 'add' => '1.4',
+ 'input_attrs' => [
+ 'label' => ts('Cancel URL'),
+ 'maxlength' => 255,
+ ],
+ ],
+ 'is_cms_user' => [
+ 'title' => ts('Create CMS User?'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('Should we create a cms user for this profile'),
+ 'add' => '1.8',
+ 'default' => FALSE,
+ ],
+ 'notify' => [
+ 'title' => ts('Notify on Profile Submit'),
+ 'sql_type' => 'text',
+ 'input_type' => 'TextArea',
+ 'add' => '1.8',
+ ],
+ 'is_reserved' => [
+ 'title' => ts('Profile Is Reserved'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'Radio',
+ 'required' => TRUE,
+ 'description' => ts('Is this group reserved for use by some other CiviCRM functionality?'),
+ 'add' => '3.0',
+ 'default' => FALSE,
+ ],
+ 'created_id' => [
+ 'title' => ts('Created By Contact ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'description' => ts('FK to civicrm_contact, who created this UF group'),
+ 'add' => '3.0',
+ 'input_attrs' => [
+ 'label' => ts('Created By'),
+ ],
+ 'entity_reference' => [
+ 'entity' => 'Contact',
+ 'key' => 'id',
+ 'on_delete' => 'SET NULL',
+ ],
+ ],
+ 'created_date' => [
+ 'title' => ts('UF Group Created Date'),
+ 'sql_type' => 'datetime',
+ 'input_type' => 'Select Date',
+ 'description' => ts('Date and time this UF group was created.'),
+ 'add' => '3.0',
+ ],
+ 'is_proximity_search' => [
+ 'title' => ts('Include Proximity Search?'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('Should we include proximity search feature in this profile search form?'),
+ 'add' => '3.2',
+ 'default' => FALSE,
+ ],
+ 'cancel_button_text' => [
+ 'title' => ts('Cancel Button Text'),
+ 'sql_type' => 'varchar(64)',
+ 'input_type' => 'Text',
+ 'localizable' => TRUE,
+ 'description' => ts('Custom Text to display on the Cancel button when used in create or edit mode'),
+ 'add' => '4.7',
+ 'default' => NULL,
+ 'input_attrs' => [
+ 'maxlength' => 64,
+ ],
+ ],
+ 'submit_button_text' => [
+ 'title' => ts('Submit Button Text'),
+ 'sql_type' => 'varchar(64)',
+ 'input_type' => 'Text',
+ 'localizable' => TRUE,
+ 'description' => ts('Custom Text to display on the submit button on profile edit/create screens'),
+ 'add' => '4.7',
+ 'default' => NULL,
+ 'input_attrs' => [
+ 'maxlength' => 64,
+ ],
+ ],
+ 'add_cancel_button' => [
+ 'title' => ts('Include Cancel Button'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('Should a Cancel button be included in this Profile form.'),
+ 'add' => '5.0',
+ 'default' => TRUE,
+ ],
+ ],
+];
diff --git a/www/modules/civicrm/schema/Core/UFJoin.entityType.php b/www/modules/civicrm/schema/Core/UFJoin.entityType.php
new file mode 100644
index 000000000..d0e223055
--- /dev/null
+++ b/www/modules/civicrm/schema/Core/UFJoin.entityType.php
@@ -0,0 +1,119 @@
+ 'UFJoin',
+ 'table' => 'civicrm_uf_join',
+ 'class' => 'CRM_Core_DAO_UFJoin',
+ 'getInfo' => fn() => [
+ 'title' => ts('Profile Use'),
+ 'title_plural' => ts('Profile Uses'),
+ 'description' => ts('User framework join table. This links various internal civicrm object with a profile. Initial use cases are the donation object and the user module'),
+ 'log' => TRUE,
+ 'add' => '1.3',
+ ],
+ 'getIndices' => fn() => [
+ 'index_entity' => [
+ 'fields' => [
+ 'entity_table' => TRUE,
+ 'entity_id' => TRUE,
+ ],
+ 'add' => '1.3',
+ ],
+ ],
+ 'getFields' => fn() => [
+ 'id' => [
+ 'title' => ts('UF Join ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'required' => TRUE,
+ 'description' => ts('Unique table ID'),
+ 'add' => '1.3',
+ 'primary_key' => TRUE,
+ 'auto_increment' => TRUE,
+ ],
+ 'is_active' => [
+ 'title' => ts('Profile Use is active'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('Is this join currently active?'),
+ 'add' => '1.3',
+ 'default' => TRUE,
+ 'input_attrs' => [
+ 'label' => ts('Enabled'),
+ ],
+ ],
+ 'module' => [
+ 'title' => ts('Profile Module'),
+ 'sql_type' => 'varchar(64)',
+ 'input_type' => 'Text',
+ 'required' => TRUE,
+ 'description' => ts('Module which owns this uf_join instance, e.g. User Registration, CiviDonate, etc.'),
+ 'add' => '1.3',
+ 'input_attrs' => [
+ 'maxlength' => 64,
+ ],
+ ],
+ 'entity_table' => [
+ 'title' => ts('Profile Entity Table'),
+ 'sql_type' => 'varchar(64)',
+ 'input_type' => 'Select',
+ 'description' => ts('Name of table where item being referenced is stored. Modules which only need a single collection of uf_join instances may choose not to populate entity_table and entity_id.'),
+ 'add' => '1.3',
+ 'input_attrs' => [
+ 'maxlength' => 64,
+ ],
+ 'pseudoconstant' => [
+ 'callback' => 'CRM_Core_BAO_UFJoin::entityTables',
+ ],
+ ],
+ 'entity_id' => [
+ 'title' => ts('Profile Entity ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'description' => ts('Foreign key to the referenced item.'),
+ 'add' => '1.3',
+ 'entity_reference' => [
+ 'dynamic_entity' => 'entity_table',
+ 'key' => 'id',
+ ],
+ ],
+ 'weight' => [
+ 'title' => ts('Order'),
+ 'sql_type' => 'int',
+ 'input_type' => 'Number',
+ 'required' => TRUE,
+ 'description' => ts('Controls display order when multiple user framework groups are setup for concurrent display.'),
+ 'add' => '1.3',
+ 'default' => 1,
+ ],
+ 'uf_group_id' => [
+ 'title' => ts('Profile ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Select',
+ 'required' => TRUE,
+ 'description' => ts('Which form does this field belong to.'),
+ 'add' => '1.3',
+ 'input_attrs' => [
+ 'label' => ts('Profile'),
+ ],
+ 'pseudoconstant' => [
+ 'table' => 'civicrm_uf_group',
+ 'key_column' => 'id',
+ 'label_column' => 'title',
+ ],
+ 'entity_reference' => [
+ 'entity' => 'UFGroup',
+ 'key' => 'id',
+ ],
+ ],
+ 'module_data' => [
+ 'title' => ts('Profile Use Data'),
+ 'sql_type' => 'longtext',
+ 'input_type' => 'TextArea',
+ 'description' => ts('Json serialized array of data used by the ufjoin.module'),
+ 'add' => '4.5',
+ 'serialize' => CRM_Core_DAO::SERIALIZE_JSON,
+ ],
+ ],
+];
diff --git a/www/modules/civicrm/schema/Core/UFMatch.entityType.php b/www/modules/civicrm/schema/Core/UFMatch.entityType.php
new file mode 100644
index 000000000..6d8332428
--- /dev/null
+++ b/www/modules/civicrm/schema/Core/UFMatch.entityType.php
@@ -0,0 +1,120 @@
+ 'UFMatch',
+ 'table' => 'civicrm_uf_match',
+ 'class' => 'CRM_Core_DAO_UFMatch',
+ 'getInfo' => fn() => [
+ 'title' => ts('User Account'),
+ 'title_plural' => ts('User Accounts'),
+ 'description' => ts('The mapping from an user framework (UF) object to a CRM object.'),
+ 'log' => TRUE,
+ 'add' => '1.1',
+ ],
+ 'getIndices' => fn() => [
+ 'I_civicrm_uf_match_uf_id' => [
+ 'fields' => [
+ 'uf_id' => TRUE,
+ ],
+ 'add' => '3.3',
+ ],
+ 'UI_uf_match_uf_id_domain_id' => [
+ 'fields' => [
+ 'uf_id' => TRUE,
+ 'domain_id' => TRUE,
+ ],
+ 'add' => '5.69',
+ ],
+ 'UI_uf_name_domain_id' => [
+ 'fields' => [
+ 'uf_name' => TRUE,
+ 'domain_id' => TRUE,
+ ],
+ 'unique' => TRUE,
+ 'add' => '2.1',
+ ],
+ 'UI_contact_domain_id' => [
+ 'fields' => [
+ 'contact_id' => TRUE,
+ 'domain_id' => TRUE,
+ ],
+ 'unique' => TRUE,
+ 'add' => '1.6',
+ ],
+ ],
+ 'getFields' => fn() => [
+ 'id' => [
+ 'title' => ts('UF Match ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'required' => TRUE,
+ 'description' => ts('System generated ID.'),
+ 'add' => '1.1',
+ 'primary_key' => TRUE,
+ 'auto_increment' => TRUE,
+ ],
+ 'domain_id' => [
+ 'title' => ts('Domain ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'required' => TRUE,
+ 'description' => ts('Which Domain is this match entry for'),
+ 'add' => '3.0',
+ 'input_attrs' => [
+ 'label' => ts('Domain'),
+ ],
+ 'pseudoconstant' => [
+ 'table' => 'civicrm_domain',
+ 'key_column' => 'id',
+ 'label_column' => 'name',
+ ],
+ 'entity_reference' => [
+ 'entity' => 'Domain',
+ 'key' => 'id',
+ ],
+ ],
+ 'uf_id' => [
+ 'title' => ts('CMS ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'required' => TRUE,
+ 'description' => ts('UF ID'),
+ 'add' => '1.1',
+ ],
+ 'uf_name' => [
+ 'title' => ts('CMS Unique Identifier'),
+ 'sql_type' => 'varchar(128)',
+ 'input_type' => 'Text',
+ 'description' => ts('UF Name'),
+ 'add' => '1.9',
+ 'input_attrs' => [
+ 'maxlength' => 128,
+ ],
+ ],
+ 'contact_id' => [
+ 'title' => ts('Contact ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'description' => ts('FK to Contact ID'),
+ 'add' => '1.1',
+ 'input_attrs' => [
+ 'label' => ts('Contact'),
+ ],
+ 'entity_reference' => [
+ 'entity' => 'Contact',
+ 'key' => 'id',
+ 'on_delete' => 'CASCADE',
+ ],
+ ],
+ 'language' => [
+ 'title' => ts('Preferred Language'),
+ 'sql_type' => 'varchar(5)',
+ 'input_type' => 'Text',
+ 'description' => ts('UI language preferred by the given user/contact'),
+ 'add' => '2.1',
+ 'input_attrs' => [
+ 'maxlength' => 5,
+ ],
+ ],
+ ],
+];
diff --git a/www/modules/civicrm/schema/Core/UserJob.entityType.php b/www/modules/civicrm/schema/Core/UserJob.entityType.php
new file mode 100644
index 000000000..77dc68a39
--- /dev/null
+++ b/www/modules/civicrm/schema/Core/UserJob.entityType.php
@@ -0,0 +1,174 @@
+ 'UserJob',
+ 'table' => 'civicrm_user_job',
+ 'class' => 'CRM_Core_DAO_UserJob',
+ 'getInfo' => fn() => [
+ 'title' => ts('User Job'),
+ 'title_plural' => ts('User Jobs'),
+ 'description' => ts('Tracking for user jobs (eg. imports).'),
+ 'log' => FALSE,
+ 'add' => '5.50',
+ ],
+ 'getPaths' => fn() => [
+ 'view' => 'civicrm/import/contact/summary?reset=1&user_job_id=[id]',
+ ],
+ 'getIndices' => fn() => [
+ 'UI_name' => [
+ 'fields' => [
+ 'name' => TRUE,
+ ],
+ 'unique' => TRUE,
+ 'add' => '5.50',
+ ],
+ ],
+ 'getFields' => fn() => [
+ 'id' => [
+ 'title' => ts('User Job ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'required' => TRUE,
+ 'description' => ts('Job ID'),
+ 'add' => '5.50',
+ 'primary_key' => TRUE,
+ 'auto_increment' => TRUE,
+ ],
+ 'name' => [
+ 'title' => ts('User job name'),
+ 'sql_type' => 'varchar(64)',
+ 'input_type' => 'Text',
+ 'description' => ts('Unique name for job.'),
+ 'add' => '5.50',
+ 'input_attrs' => [
+ 'maxlength' => 64,
+ ],
+ ],
+ 'created_id' => [
+ 'title' => ts('Created By Contact ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'description' => ts('FK to contact table.'),
+ 'add' => '5.50',
+ 'input_attrs' => [
+ 'label' => ts('Created By'),
+ ],
+ 'entity_reference' => [
+ 'entity' => 'Contact',
+ 'key' => 'id',
+ 'on_delete' => 'SET NULL',
+ ],
+ ],
+ 'created_date' => [
+ 'title' => ts('Import Job Created Date'),
+ 'sql_type' => 'timestamp',
+ 'input_type' => 'Select Date',
+ 'required' => TRUE,
+ 'readonly' => TRUE,
+ 'description' => ts('Date and time this job was created.'),
+ 'add' => '5.50',
+ 'default' => 'CURRENT_TIMESTAMP',
+ 'input_attrs' => [
+ 'format_type' => 'activityDateTime',
+ ],
+ ],
+ 'start_date' => [
+ 'title' => ts('Import Job Started Date'),
+ 'sql_type' => 'timestamp',
+ 'input_type' => 'Select Date',
+ 'readonly' => TRUE,
+ 'description' => ts('Date and time this import job started.'),
+ 'add' => '5.50',
+ 'input_attrs' => [
+ 'format_type' => 'activityDateTime',
+ ],
+ ],
+ 'end_date' => [
+ 'title' => ts('Job Ended Date'),
+ 'sql_type' => 'timestamp',
+ 'input_type' => 'Select Date',
+ 'description' => ts('Date and time this import job ended.'),
+ 'add' => '5.50',
+ 'input_attrs' => [
+ 'format_type' => 'activityDateTime',
+ ],
+ ],
+ 'expires_date' => [
+ 'title' => ts('Import Job Expires Date'),
+ 'sql_type' => 'timestamp',
+ 'input_type' => 'Select Date',
+ 'description' => ts('Date and time to clean up after this import job (temp table deletion date).'),
+ 'add' => '5.50',
+ 'input_attrs' => [
+ 'format_type' => 'activityDateTime',
+ ],
+ ],
+ 'status_id' => [
+ 'title' => ts('User Job Status ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Select',
+ 'required' => TRUE,
+ 'add' => '5.50',
+ 'input_attrs' => [
+ 'label' => ts('Job Status'),
+ ],
+ 'pseudoconstant' => [
+ 'callback' => 'CRM_Core_BAO_UserJob::getStatuses',
+ ],
+ ],
+ 'job_type' => [
+ 'title' => ts('User Job Type'),
+ 'sql_type' => 'varchar(64)',
+ 'input_type' => 'Select',
+ 'required' => TRUE,
+ 'description' => ts('Name of the job type, which will allow finding the correct class'),
+ 'add' => '5.50',
+ 'input_attrs' => [
+ 'label' => ts('Job Type'),
+ 'maxlength' => 64,
+ ],
+ 'pseudoconstant' => [
+ 'callback' => 'CRM_Core_BAO_UserJob::getTypes',
+ 'suffixes' => [
+ 'name',
+ 'label',
+ 'url',
+ ],
+ ],
+ ],
+ 'queue_id' => [
+ 'title' => ts('Queue ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'description' => ts('FK to Queue'),
+ 'input_attrs' => [
+ 'label' => ts('Queue'),
+ ],
+ 'entity_reference' => [
+ 'entity' => 'Queue',
+ 'key' => 'id',
+ 'on_delete' => 'SET NULL',
+ ],
+ ],
+ 'metadata' => [
+ 'title' => ts('Job metadata'),
+ 'sql_type' => 'text',
+ 'input_type' => 'TextArea',
+ 'description' => ts('Data pertaining to job configuration'),
+ 'add' => '5.50',
+ 'serialize' => CRM_Core_DAO::SERIALIZE_JSON,
+ ],
+ 'is_template' => [
+ 'title' => ts('Is Template'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('Is this a template configuration (for use by other/future jobs)?'),
+ 'add' => '5.51',
+ 'default' => FALSE,
+ 'input_attrs' => [
+ 'label' => ts('Is Template'),
+ ],
+ ],
+ ],
+];
diff --git a/www/modules/civicrm/schema/Core/Website.entityType.php b/www/modules/civicrm/schema/Core/Website.entityType.php
new file mode 100644
index 000000000..e6171f12f
--- /dev/null
+++ b/www/modules/civicrm/schema/Core/Website.entityType.php
@@ -0,0 +1,76 @@
+ 'Website',
+ 'table' => 'civicrm_website',
+ 'class' => 'CRM_Core_DAO_Website',
+ 'getInfo' => fn() => [
+ 'title' => ts('Website'),
+ 'title_plural' => ts('Websites'),
+ 'description' => ts('Website information for a specific location.'),
+ 'add' => '3.2',
+ 'icon' => 'fa-desktop',
+ 'label_field' => 'url',
+ ],
+ 'getIndices' => fn() => [
+ 'UI_website_type_id' => [
+ 'fields' => [
+ 'website_type_id' => TRUE,
+ ],
+ 'add' => '3.2',
+ ],
+ ],
+ 'getFields' => fn() => [
+ 'id' => [
+ 'title' => ts('Website ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'required' => TRUE,
+ 'description' => ts('Unique Website ID'),
+ 'add' => '3.2',
+ 'primary_key' => TRUE,
+ 'auto_increment' => TRUE,
+ ],
+ 'contact_id' => [
+ 'title' => ts('Contact ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'description' => ts('FK to Contact ID'),
+ 'add' => '3.2',
+ 'input_attrs' => [
+ 'label' => ts('Contact'),
+ ],
+ 'entity_reference' => [
+ 'entity' => 'Contact',
+ 'key' => 'id',
+ 'on_delete' => 'CASCADE',
+ ],
+ ],
+ 'url' => [
+ 'title' => ts('Website'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'description' => ts('Website'),
+ 'add' => '3.2',
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ 'input_attrs' => [
+ 'size' => '45',
+ 'maxlength' => 255,
+ ],
+ ],
+ 'website_type_id' => [
+ 'title' => ts('Website Type'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Select',
+ 'description' => ts('Which Website type does this website belong to.'),
+ 'add' => '3.2',
+ 'pseudoconstant' => [
+ 'option_group_name' => 'website_type',
+ ],
+ ],
+ ],
+];
diff --git a/www/modules/civicrm/schema/Core/WordReplacement.entityType.php b/www/modules/civicrm/schema/Core/WordReplacement.entityType.php
new file mode 100644
index 000000000..e3a1f0594
--- /dev/null
+++ b/www/modules/civicrm/schema/Core/WordReplacement.entityType.php
@@ -0,0 +1,101 @@
+ 'WordReplacement',
+ 'table' => 'civicrm_word_replacement',
+ 'class' => 'CRM_Core_DAO_WordReplacement',
+ 'getInfo' => fn() => [
+ 'title' => ts('Word Replacement'),
+ 'title_plural' => ts('Word Replacements'),
+ 'description' => ts('Top-level hierarchy to support word replacement.'),
+ 'add' => '4.4',
+ ],
+ 'getIndices' => fn() => [
+ 'UI_domain_find' => [
+ 'fields' => [
+ 'domain_id' => TRUE,
+ 'find_word' => TRUE,
+ ],
+ 'unique' => TRUE,
+ 'add' => '4.4',
+ ],
+ ],
+ 'getFields' => fn() => [
+ 'id' => [
+ 'title' => ts('Word Replacement ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'required' => TRUE,
+ 'description' => ts('Word replacement ID'),
+ 'add' => '4.4',
+ 'primary_key' => TRUE,
+ 'auto_increment' => TRUE,
+ ],
+ 'find_word' => [
+ 'title' => ts('Replaced Word'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'description' => ts('Word which need to be replaced'),
+ 'add' => '4.4',
+ 'collate' => 'utf8_bin',
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'replace_word' => [
+ 'title' => ts('Replacement Word'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'description' => ts('Word which will replace the word in find'),
+ 'add' => '4.4',
+ 'collate' => 'utf8_bin',
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'is_active' => [
+ 'title' => ts('Word Replacement is Active'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('Is this entry active?'),
+ 'add' => '4.4',
+ 'default' => TRUE,
+ 'input_attrs' => [
+ 'label' => ts('Enabled'),
+ ],
+ ],
+ 'match_type' => [
+ 'title' => ts('Word Replacement Match Type'),
+ 'sql_type' => 'varchar(16)',
+ 'input_type' => 'Select',
+ 'add' => '4.4',
+ 'default' => 'wildcardMatch',
+ 'input_attrs' => [
+ 'maxlength' => 16,
+ ],
+ 'pseudoconstant' => [
+ 'callback' => 'CRM_Core_SelectValues::getWordReplacementMatchType',
+ ],
+ ],
+ 'domain_id' => [
+ 'title' => ts('Domain ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'description' => ts('FK to Domain ID. This is for Domain specific word replacement'),
+ 'add' => '1.1',
+ 'input_attrs' => [
+ 'label' => ts('Domain'),
+ ],
+ 'pseudoconstant' => [
+ 'table' => 'civicrm_domain',
+ 'key_column' => 'id',
+ 'label_column' => 'name',
+ ],
+ 'entity_reference' => [
+ 'entity' => 'Domain',
+ 'key' => 'id',
+ ],
+ ],
+ ],
+];
diff --git a/www/modules/civicrm/schema/Core/WorldRegion.entityType.php b/www/modules/civicrm/schema/Core/WorldRegion.entityType.php
new file mode 100644
index 000000000..2461ed415
--- /dev/null
+++ b/www/modules/civicrm/schema/Core/WorldRegion.entityType.php
@@ -0,0 +1,39 @@
+ 'WorldRegion',
+ 'table' => 'civicrm_worldregion',
+ 'class' => 'CRM_Core_DAO_Worldregion',
+ 'getInfo' => fn() => [
+ 'title' => ts('World Region'),
+ 'title_plural' => ts('World Regions'),
+ 'description' => ts('FIXME'),
+ 'add' => '1.8',
+ ],
+ 'getFields' => fn() => [
+ 'id' => [
+ 'title' => ts('World Region ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'required' => TRUE,
+ 'description' => ts('Country ID'),
+ 'add' => '1.8',
+ 'primary_key' => TRUE,
+ 'auto_increment' => TRUE,
+ ],
+ 'name' => [
+ 'title' => ts('World Region'),
+ 'sql_type' => 'varchar(128)',
+ 'input_type' => 'Text',
+ 'description' => ts('Region name to be associated with countries'),
+ 'add' => '1.8',
+ 'unique_name' => 'world_region',
+ 'usage' => [
+ 'export',
+ ],
+ 'input_attrs' => [
+ 'maxlength' => 128,
+ ],
+ ],
+ ],
+];
diff --git a/www/modules/civicrm/schema/Cxn/Cxn.entityType.php b/www/modules/civicrm/schema/Cxn/Cxn.entityType.php
new file mode 100644
index 000000000..1fc90cc50
--- /dev/null
+++ b/www/modules/civicrm/schema/Cxn/Cxn.entityType.php
@@ -0,0 +1,145 @@
+ 'Cxn',
+ 'table' => 'civicrm_cxn',
+ 'class' => 'CRM_Cxn_DAO_Cxn',
+ 'getInfo' => fn() => [
+ 'title' => ts('Cxn'),
+ 'title_plural' => ts('Cxns'),
+ 'description' => ts('FIXME'),
+ 'add' => '4.6',
+ ],
+ 'getIndices' => fn() => [
+ 'UI_appid' => [
+ 'fields' => [
+ 'app_guid' => TRUE,
+ ],
+ 'unique' => TRUE,
+ 'add' => '4.6',
+ ],
+ 'UI_keypair_cxnid' => [
+ 'fields' => [
+ 'cxn_guid' => TRUE,
+ ],
+ 'unique' => TRUE,
+ 'add' => '4.6',
+ ],
+ ],
+ 'getFields' => fn() => [
+ 'id' => [
+ 'title' => ts('Connection ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'required' => TRUE,
+ 'description' => ts('Connection ID'),
+ 'add' => '4.6',
+ 'primary_key' => TRUE,
+ 'auto_increment' => TRUE,
+ ],
+ 'app_guid' => [
+ 'title' => ts('Application GUID'),
+ 'sql_type' => 'varchar(128)',
+ 'input_type' => 'Text',
+ 'description' => ts('Application GUID'),
+ 'add' => '4.6',
+ 'input_attrs' => [
+ 'maxlength' => 128,
+ ],
+ ],
+ 'app_meta' => [
+ 'title' => ts('Application Metadata (JSON)'),
+ 'sql_type' => 'text',
+ 'input_type' => 'TextArea',
+ 'description' => ts('Application Metadata (JSON)'),
+ 'add' => '4.6',
+ ],
+ 'cxn_guid' => [
+ 'title' => ts('Connection GUID'),
+ 'sql_type' => 'varchar(128)',
+ 'input_type' => 'Text',
+ 'description' => ts('Connection GUID'),
+ 'add' => '4.6',
+ 'input_attrs' => [
+ 'maxlength' => 128,
+ ],
+ ],
+ 'secret' => [
+ 'title' => ts('Secret'),
+ 'sql_type' => 'text',
+ 'input_type' => 'TextArea',
+ 'description' => ts('Shared secret'),
+ 'add' => '4.6',
+ 'input_attrs' => [
+ 'label' => ts('Secret'),
+ ],
+ ],
+ 'perm' => [
+ 'title' => ts('Perm'),
+ 'sql_type' => 'text',
+ 'input_type' => 'TextArea',
+ 'description' => ts('Permissions approved for the service (JSON)'),
+ 'add' => '4.6',
+ 'input_attrs' => [
+ 'label' => ts('Permissions'),
+ ],
+ ],
+ 'options' => [
+ 'title' => ts('Options'),
+ 'sql_type' => 'text',
+ 'input_type' => 'TextArea',
+ 'description' => ts('Options for the service (JSON)'),
+ 'add' => '4.6',
+ 'serialize' => CRM_Core_DAO::SERIALIZE_JSON,
+ 'input_attrs' => [
+ 'label' => ts('Options'),
+ ],
+ ],
+ 'is_active' => [
+ 'title' => ts('Is Active'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('Is connection currently enabled?'),
+ 'add' => '4.6',
+ 'default' => TRUE,
+ 'input_attrs' => [
+ 'label' => ts('Enabled'),
+ ],
+ ],
+ 'created_date' => [
+ 'title' => ts('Created Date'),
+ 'sql_type' => 'timestamp',
+ 'input_type' => NULL,
+ 'description' => ts('When was the connection was created.'),
+ 'add' => '4.6',
+ 'default' => NULL,
+ 'input_attrs' => [
+ 'label' => ts('Created Date'),
+ ],
+ ],
+ 'modified_date' => [
+ 'title' => ts('Modified Date'),
+ 'sql_type' => 'timestamp',
+ 'input_type' => NULL,
+ 'readonly' => TRUE,
+ 'description' => ts('When the connection was created or modified.'),
+ 'add' => '4.6',
+ 'default' => 'CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP',
+ 'input_attrs' => [
+ 'label' => ts('Modified Date'),
+ ],
+ ],
+ 'fetched_date' => [
+ 'title' => ts('Fetched Date'),
+ 'sql_type' => 'timestamp',
+ 'input_type' => NULL,
+ 'description' => ts('The last time the application metadata was fetched.'),
+ 'add' => '4.6',
+ 'default' => NULL,
+ 'input_attrs' => [
+ 'label' => ts('Fetched Date'),
+ ],
+ ],
+ ],
+];
diff --git a/www/modules/civicrm/schema/Dedupe/DedupeException.entityType.php b/www/modules/civicrm/schema/Dedupe/DedupeException.entityType.php
new file mode 100644
index 000000000..5c41778b7
--- /dev/null
+++ b/www/modules/civicrm/schema/Dedupe/DedupeException.entityType.php
@@ -0,0 +1,67 @@
+ 'DedupeException',
+ 'table' => 'civicrm_dedupe_exception',
+ 'class' => 'CRM_Dedupe_DAO_DedupeException',
+ 'getInfo' => fn() => [
+ 'title' => ts('Dedupe Exception'),
+ 'title_plural' => ts('Dedupe Exceptions'),
+ 'description' => ts('Dedupe exceptions'),
+ 'add' => '3.3',
+ ],
+ 'getIndices' => fn() => [
+ 'UI_contact_id1_contact_id2' => [
+ 'fields' => [
+ 'contact_id1' => TRUE,
+ 'contact_id2' => TRUE,
+ ],
+ 'unique' => TRUE,
+ 'add' => '3.3',
+ ],
+ ],
+ 'getFields' => fn() => [
+ 'id' => [
+ 'title' => ts('Dedupe Exception ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'required' => TRUE,
+ 'description' => ts('Unique dedupe exception id'),
+ 'add' => '3.3',
+ 'primary_key' => TRUE,
+ 'auto_increment' => TRUE,
+ ],
+ 'contact_id1' => [
+ 'title' => ts('First Dupe Contact ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'required' => TRUE,
+ 'description' => ts('FK to Contact ID'),
+ 'add' => '3.3',
+ 'input_attrs' => [
+ 'label' => ts('First Dupe Contact'),
+ ],
+ 'entity_reference' => [
+ 'entity' => 'Contact',
+ 'key' => 'id',
+ 'on_delete' => 'CASCADE',
+ ],
+ ],
+ 'contact_id2' => [
+ 'title' => ts('Second Dupe Contact ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'required' => TRUE,
+ 'description' => ts('FK to Contact ID'),
+ 'add' => '3.3',
+ 'input_attrs' => [
+ 'label' => ts('Second Dupe Contact'),
+ ],
+ 'entity_reference' => [
+ 'entity' => 'Contact',
+ 'key' => 'id',
+ 'on_delete' => 'CASCADE',
+ ],
+ ],
+ ],
+];
diff --git a/www/modules/civicrm/schema/Dedupe/DedupeRule.entityType.php b/www/modules/civicrm/schema/Dedupe/DedupeRule.entityType.php
new file mode 100644
index 000000000..96ad4a0b1
--- /dev/null
+++ b/www/modules/civicrm/schema/Dedupe/DedupeRule.entityType.php
@@ -0,0 +1,77 @@
+ 'DedupeRule',
+ 'table' => 'civicrm_dedupe_rule',
+ 'class' => 'CRM_Dedupe_DAO_DedupeRule',
+ 'getInfo' => fn() => [
+ 'title' => ts('Dedupe Rule'),
+ 'title_plural' => ts('Dedupe Rules'),
+ 'description' => ts('Dedupe rules for use by rule groups'),
+ 'add' => '1.8',
+ ],
+ 'getFields' => fn() => [
+ 'id' => [
+ 'title' => ts('Dedupe Rule ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'required' => TRUE,
+ 'description' => ts('Unique dedupe rule id'),
+ 'add' => '1.8',
+ 'primary_key' => TRUE,
+ 'auto_increment' => TRUE,
+ ],
+ 'dedupe_rule_group_id' => [
+ 'title' => ts('Group ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'required' => TRUE,
+ 'description' => ts('The id of the rule group this rule belongs to'),
+ 'add' => '1.8',
+ 'input_attrs' => [
+ 'label' => ts('Group'),
+ ],
+ 'entity_reference' => [
+ 'entity' => 'DedupeRuleGroup',
+ 'key' => 'id',
+ ],
+ ],
+ 'rule_table' => [
+ 'title' => ts('Rule Table'),
+ 'sql_type' => 'varchar(64)',
+ 'input_type' => 'Text',
+ 'required' => TRUE,
+ 'description' => ts('The name of the table this rule is about'),
+ 'add' => '1.8',
+ 'input_attrs' => [
+ 'maxlength' => 64,
+ ],
+ ],
+ 'rule_field' => [
+ 'title' => ts('Rule Field'),
+ 'sql_type' => 'varchar(64)',
+ 'input_type' => 'Text',
+ 'required' => TRUE,
+ 'description' => ts('The name of the field of the table referenced in rule_table'),
+ 'add' => '1.8',
+ 'input_attrs' => [
+ 'maxlength' => 64,
+ ],
+ ],
+ 'rule_length' => [
+ 'title' => ts('Rule Length'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Text',
+ 'description' => ts('The length of the matching substring'),
+ 'add' => '1.8',
+ ],
+ 'rule_weight' => [
+ 'title' => ts('Order'),
+ 'sql_type' => 'int',
+ 'input_type' => 'Text',
+ 'required' => TRUE,
+ 'description' => ts('The weight of the rule'),
+ 'add' => '1.8',
+ ],
+ ],
+];
diff --git a/www/modules/civicrm/schema/Dedupe/DedupeRuleGroup.entityType.php b/www/modules/civicrm/schema/Dedupe/DedupeRuleGroup.entityType.php
new file mode 100644
index 000000000..3a6e3c69d
--- /dev/null
+++ b/www/modules/civicrm/schema/Dedupe/DedupeRuleGroup.entityType.php
@@ -0,0 +1,101 @@
+ 'DedupeRuleGroup',
+ 'table' => 'civicrm_dedupe_rule_group',
+ 'class' => 'CRM_Dedupe_DAO_DedupeRuleGroup',
+ 'getInfo' => fn() => [
+ 'title' => ts('Dedupe Rule Group'),
+ 'title_plural' => ts('Dedupe Rule Groups'),
+ 'description' => ts('Dedupe rule groups'),
+ 'add' => '1.8',
+ ],
+ 'getIndices' => fn() => [
+ 'UI_name' => [
+ 'fields' => [
+ 'name' => TRUE,
+ ],
+ 'unique' => TRUE,
+ 'add' => '5.54',
+ ],
+ ],
+ 'getFields' => fn() => [
+ 'id' => [
+ 'title' => ts('Rule Group ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'required' => TRUE,
+ 'description' => ts('Unique dedupe rule group id'),
+ 'add' => '1.8',
+ 'primary_key' => TRUE,
+ 'auto_increment' => TRUE,
+ ],
+ 'contact_type' => [
+ 'title' => ts('Contact Type'),
+ 'sql_type' => 'varchar(12)',
+ 'input_type' => 'Select',
+ 'description' => ts('The type of contacts this group applies to'),
+ 'add' => '1.8',
+ 'input_attrs' => [
+ 'maxlength' => 12,
+ ],
+ 'pseudoconstant' => [
+ 'table' => 'civicrm_contact_type',
+ 'key_column' => 'name',
+ 'label_column' => 'label',
+ 'condition' => 'parent_id IS NULL',
+ ],
+ ],
+ 'threshold' => [
+ 'title' => ts('Threshold'),
+ 'sql_type' => 'int',
+ 'input_type' => 'Text',
+ 'required' => TRUE,
+ 'description' => ts('The weight threshold the sum of the rule weights has to cross to consider two contacts the same'),
+ 'add' => '1.8',
+ ],
+ 'used' => [
+ 'title' => ts('Length'),
+ 'sql_type' => 'varchar(12)',
+ 'input_type' => 'Radio',
+ 'required' => TRUE,
+ 'description' => ts('Whether the rule should be used for cases where usage is Unsupervised, Supervised OR General(programatically)'),
+ 'add' => '4.3',
+ 'input_attrs' => [
+ 'maxlength' => 12,
+ ],
+ 'pseudoconstant' => [
+ 'callback' => 'CRM_Core_SelectValues::getDedupeRuleTypes',
+ ],
+ ],
+ 'name' => [
+ 'title' => ts('Name'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'description' => ts('Unique name of rule group'),
+ 'add' => '2.1',
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'title' => [
+ 'title' => ts('Title'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'description' => ts('Label of the rule group'),
+ 'add' => '4.1',
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'is_reserved' => [
+ 'title' => ts('Reserved?'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('Is this a reserved rule - a rule group that has been optimized and cannot be changed by the admin'),
+ 'add' => '4.1',
+ 'default' => FALSE,
+ ],
+ ],
+];
diff --git a/www/modules/civicrm/schema/Event/Cart.entityType.php b/www/modules/civicrm/schema/Event/Cart.entityType.php
new file mode 100644
index 000000000..b2967ec9c
--- /dev/null
+++ b/www/modules/civicrm/schema/Event/Cart.entityType.php
@@ -0,0 +1,48 @@
+ 'Cart',
+ 'table' => 'civicrm_event_carts',
+ 'class' => 'CRM_Event_Cart_DAO_Cart',
+ 'getInfo' => fn() => [
+ 'title' => ts('Cart'),
+ 'title_plural' => ts('Carts'),
+ 'description' => ts('FIXME'),
+ ],
+ 'getFields' => fn() => [
+ 'id' => [
+ 'title' => ts('Cart ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'required' => TRUE,
+ 'description' => ts('Cart ID'),
+ 'add' => '4.1',
+ 'unique_name' => 'cart_id',
+ 'primary_key' => TRUE,
+ 'auto_increment' => TRUE,
+ ],
+ 'user_id' => [
+ 'title' => ts('Created By Contact ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'description' => ts('FK to civicrm_contact who created this cart'),
+ 'add' => '4.1',
+ 'input_attrs' => [
+ 'label' => ts('Created By'),
+ ],
+ 'entity_reference' => [
+ 'entity' => 'Contact',
+ 'key' => 'id',
+ 'on_delete' => 'SET NULL',
+ ],
+ ],
+ 'completed' => [
+ 'title' => ts('Complete?'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'add' => '4.1',
+ 'default' => FALSE,
+ ],
+ ],
+];
diff --git a/www/modules/civicrm/schema/Event/Event.entityType.php b/www/modules/civicrm/schema/Event/Event.entityType.php
new file mode 100644
index 000000000..75b58be15
--- /dev/null
+++ b/www/modules/civicrm/schema/Event/Event.entityType.php
@@ -0,0 +1,863 @@
+ 'Event',
+ 'table' => 'civicrm_event',
+ 'class' => 'CRM_Event_DAO_Event',
+ 'getInfo' => fn() => [
+ 'title' => ts('Event'),
+ 'title_plural' => ts('Events'),
+ 'description' => ts('Scheduled in-person or online events which contacts can register for and attend.'),
+ 'log' => TRUE,
+ 'add' => '1.7',
+ 'icon' => 'fa-calendar',
+ 'label_field' => 'title',
+ ],
+ 'getPaths' => fn() => [
+ 'add' => 'civicrm/event/add?reset=1',
+ 'view' => 'civicrm/event/info?reset=1&id=[id]',
+ ],
+ 'getIndices' => fn() => [
+ 'index_event_type_id' => [
+ 'fields' => [
+ 'event_type_id' => TRUE,
+ ],
+ 'add' => '1.8',
+ ],
+ 'index_participant_listing_id' => [
+ 'fields' => [
+ 'participant_listing_id' => TRUE,
+ ],
+ 'add' => '2.0',
+ ],
+ 'index_parent_event_id' => [
+ 'fields' => [
+ 'parent_event_id' => TRUE,
+ ],
+ 'add' => '4.1',
+ ],
+ ],
+ 'getFields' => fn() => [
+ 'id' => [
+ 'title' => ts('Event ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'required' => TRUE,
+ 'description' => ts('Event'),
+ 'add' => '1.7',
+ 'input_attrs' => [
+ 'label' => ts('ID'),
+ ],
+ 'primary_key' => TRUE,
+ 'auto_increment' => TRUE,
+ ],
+ 'title' => [
+ 'title' => ts('Event Title'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'localizable' => TRUE,
+ 'description' => ts('Event Title (e.g. Fall Fundraiser Dinner)'),
+ 'add' => '1.7',
+ 'unique_name' => 'event_title',
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ 'input_attrs' => [
+ 'label' => ts('Title'),
+ 'maxlength' => 255,
+ ],
+ ],
+ 'summary' => [
+ 'title' => ts('Event Summary'),
+ 'sql_type' => 'text',
+ 'input_type' => 'TextArea',
+ 'localizable' => TRUE,
+ 'description' => ts('Brief summary of event. Text and html allowed. Displayed on Event Registration form and can be used on other CMS pages which need an event summary.'),
+ 'add' => '1.7',
+ 'input_attrs' => [
+ 'label' => ts('Summary'),
+ 'rows' => 4,
+ 'cols' => 60,
+ ],
+ ],
+ 'description' => [
+ 'title' => ts('Event Description'),
+ 'sql_type' => 'text',
+ 'input_type' => 'RichTextEditor',
+ 'localizable' => TRUE,
+ 'description' => ts('Full description of event. Text and html allowed. Displayed on built-in Event Information screens.'),
+ 'add' => '1.7',
+ 'unique_name' => 'event_description',
+ 'input_attrs' => [
+ 'label' => ts('Description'),
+ 'rows' => 8,
+ 'cols' => 60,
+ ],
+ ],
+ 'event_type_id' => [
+ 'title' => ts('Event Type'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Select',
+ 'description' => ts('Event Type ID.Implicit FK to civicrm_option_value where option_group = event_type.'),
+ 'add' => '1.7',
+ 'unique_name' => 'event_type_id',
+ 'default' => 0,
+ 'input_attrs' => [
+ 'label' => ts('Type'),
+ ],
+ 'pseudoconstant' => [
+ 'option_group_name' => 'event_type',
+ ],
+ ],
+ 'participant_listing_id' => [
+ 'title' => ts('Participant Listing'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Select',
+ 'description' => ts('Should we expose the participant list? Implicit FK to civicrm_option_value where option_group = participant_listing.'),
+ 'add' => '2.0',
+ 'unique_name' => 'participant_listing_id',
+ 'default' => NULL,
+ 'pseudoconstant' => [
+ 'option_group_name' => 'participant_listing',
+ ],
+ ],
+ 'is_public' => [
+ 'title' => ts('Is Event Public'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('Public events will be included in the iCal feeds. Access to private event information may be limited using ACLs.'),
+ 'add' => '1.7',
+ 'default' => TRUE,
+ 'input_attrs' => [
+ 'label' => ts('Public'),
+ ],
+ ],
+ 'start_date' => [
+ 'title' => ts('Event Start Date'),
+ 'sql_type' => 'datetime',
+ 'input_type' => 'Select Date',
+ 'description' => ts('Date and time that event starts.'),
+ 'add' => '1.7',
+ 'unique_name' => 'event_start_date',
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ 'input_attrs' => [
+ 'label' => ts('Start Date'),
+ 'format_type' => 'activityDateTime',
+ ],
+ ],
+ 'end_date' => [
+ 'title' => ts('Event End Date'),
+ 'sql_type' => 'datetime',
+ 'input_type' => 'Select Date',
+ 'description' => ts('Date and time that event ends. May be NULL if no defined end date/time'),
+ 'add' => '1.7',
+ 'unique_name' => 'event_end_date',
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ 'input_attrs' => [
+ 'label' => ts('End Date'),
+ 'format_type' => 'activityDateTime',
+ ],
+ ],
+ 'is_online_registration' => [
+ 'title' => ts('Is Online Registration'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('If TRUE, include registration link on Event Info page.'),
+ 'add' => '1.7',
+ 'default' => FALSE,
+ 'input_attrs' => [
+ 'label' => ts('Online Registration'),
+ ],
+ ],
+ 'registration_link_text' => [
+ 'title' => ts('Event Registration Link Text'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'localizable' => TRUE,
+ 'description' => ts('Text for link to Event Registration form which is displayed on Event Information screen when is_online_registration is true.'),
+ 'add' => '1.7',
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'registration_start_date' => [
+ 'title' => ts('Registration Start Date'),
+ 'sql_type' => 'datetime',
+ 'input_type' => 'Select Date',
+ 'description' => ts('Date and time that online registration starts.'),
+ 'add' => '1.8',
+ 'input_attrs' => [
+ 'format_type' => 'activityDateTime',
+ 'label' => ts('Registration Start Date'),
+ ],
+ ],
+ 'registration_end_date' => [
+ 'title' => ts('Registration End Date'),
+ 'sql_type' => 'datetime',
+ 'input_type' => 'Select Date',
+ 'description' => ts('Date and time that online registration ends.'),
+ 'add' => '1.8',
+ 'input_attrs' => [
+ 'format_type' => 'activityDateTime',
+ 'label' => ts('Registration End Date'),
+ ],
+ ],
+ 'max_participants' => [
+ 'title' => ts('Max Participants'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Text',
+ 'description' => ts('Maximum number of registered participants to allow. After max is reached, a custom Event Full message is displayed. If NULL, allow unlimited number of participants.'),
+ 'add' => '1.7',
+ 'default' => NULL,
+ ],
+ 'event_full_text' => [
+ 'title' => ts('Event Information'),
+ 'sql_type' => 'text',
+ 'input_type' => 'TextArea',
+ 'localizable' => TRUE,
+ 'description' => ts('Message to display on Event Information page and INSTEAD OF Event Registration form if maximum participants are signed up. Can include email address/info about getting on a waiting list, etc. Text and html allowed.'),
+ 'add' => '1.7',
+ 'input_attrs' => [
+ 'label' => ts('Event Full Message'),
+ 'rows' => 4,
+ 'cols' => 60,
+ ],
+ ],
+ 'is_monetary' => [
+ 'title' => ts('Is this a PAID event?'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('If TRUE, one or more fee amounts must be set and a Payment Processor must be configured for Online Event Registration.'),
+ 'add' => '1.7',
+ 'default' => FALSE,
+ 'input_attrs' => [
+ 'label' => ts('Paid Event'),
+ ],
+ ],
+ 'financial_type_id' => [
+ 'title' => ts('Financial Type'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Select',
+ 'description' => ts('Financial type assigned to paid event registrations for this event. Required if is_monetary is true.'),
+ 'add' => '4.3',
+ 'default' => NULL,
+ 'pseudoconstant' => [
+ 'table' => 'civicrm_financial_type',
+ 'key_column' => 'id',
+ 'label_column' => 'name',
+ ],
+ ],
+ 'payment_processor' => [
+ 'title' => ts('Payment Processor'),
+ 'sql_type' => 'varchar(128)',
+ 'input_type' => 'Select',
+ 'description' => ts('Payment Processors configured for this Event (if is_monetary is true)'),
+ 'add' => '1.8',
+ 'serialize' => CRM_Core_DAO::SERIALIZE_SEPARATOR_TRIMMED,
+ 'input_attrs' => [
+ 'label' => ts('Payment Processors'),
+ 'maxlength' => 128,
+ ],
+ 'pseudoconstant' => [
+ 'table' => 'civicrm_payment_processor',
+ 'key_column' => 'id',
+ 'label_column' => 'name',
+ ],
+ ],
+ 'is_map' => [
+ 'title' => ts('Map Enabled'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('Include a map block on the Event Information page when geocode info is available and a mapping provider has been specified?'),
+ 'add' => '1.7',
+ 'default' => FALSE,
+ ],
+ 'is_active' => [
+ 'title' => ts('Is Active'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('Is this Event enabled or disabled/cancelled?'),
+ 'add' => '1.7',
+ 'default' => FALSE,
+ 'input_attrs' => [
+ 'label' => [
+ 'Enabled',
+ 'Enabled',
+ ],
+ ],
+ ],
+ 'fee_label' => [
+ 'title' => ts('Fee Label'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'localizable' => TRUE,
+ 'add' => '1.8',
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'is_show_location' => [
+ 'title' => ts('Show Location'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('If TRUE, show event location.'),
+ 'add' => '1.7',
+ 'default' => TRUE,
+ ],
+ 'loc_block_id' => [
+ 'title' => ts('Location Block ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'description' => ts('FK to Location Block ID'),
+ 'add' => '2.0',
+ 'input_attrs' => [
+ 'label' => ts('Location Block'),
+ ],
+ 'entity_reference' => [
+ 'entity' => 'LocBlock',
+ 'key' => 'id',
+ 'on_delete' => 'SET NULL',
+ ],
+ ],
+ 'default_role_id' => [
+ 'title' => ts('Default Role'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Select',
+ 'description' => ts('Participant role ID. Implicit FK to civicrm_option_value where option_group = participant_role.'),
+ 'add' => '2.0',
+ 'unique_name' => 'default_role_id',
+ 'default' => 1,
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ 'pseudoconstant' => [
+ 'option_group_name' => 'participant_role',
+ ],
+ ],
+ 'intro_text' => [
+ 'title' => ts('Introductory Message'),
+ 'sql_type' => 'text',
+ 'input_type' => 'RichTextEditor',
+ 'localizable' => TRUE,
+ 'description' => ts('Introductory message for Event Registration page. Text and html allowed. Displayed at the top of Event Registration form.'),
+ 'add' => '1.7',
+ 'input_attrs' => [
+ 'rows' => 6,
+ 'cols' => 50,
+ ],
+ ],
+ 'footer_text' => [
+ 'title' => ts('Footer Message'),
+ 'sql_type' => 'text',
+ 'input_type' => 'RichTextEditor',
+ 'localizable' => TRUE,
+ 'description' => ts('Footer message for Event Registration page. Text and html allowed. Displayed at the bottom of Event Registration form.'),
+ 'add' => '1.7',
+ 'input_attrs' => [
+ 'rows' => 6,
+ 'cols' => 50,
+ ],
+ ],
+ 'confirm_title' => [
+ 'title' => ts('Confirmation Title'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'localizable' => TRUE,
+ 'description' => ts('Title for Confirmation page.'),
+ 'add' => '1.7',
+ 'default' => NULL,
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'confirm_text' => [
+ 'title' => ts('Confirm Text'),
+ 'sql_type' => 'text',
+ 'input_type' => 'RichTextEditor',
+ 'localizable' => TRUE,
+ 'description' => ts('Introductory message for Event Registration page. Text and html allowed. Displayed at the top of Event Registration form.'),
+ 'add' => '1.7',
+ 'input_attrs' => [
+ 'rows' => 6,
+ 'cols' => 50,
+ ],
+ ],
+ 'confirm_footer_text' => [
+ 'title' => ts('Footer Text'),
+ 'sql_type' => 'text',
+ 'input_type' => 'RichTextEditor',
+ 'localizable' => TRUE,
+ 'description' => ts('Footer message for Event Registration page. Text and html allowed. Displayed at the bottom of Event Registration form.'),
+ 'add' => '1.7',
+ 'input_attrs' => [
+ 'rows' => 6,
+ 'cols' => 50,
+ ],
+ ],
+ 'is_email_confirm' => [
+ 'title' => ts('Is confirm email'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('If TRUE, confirmation is automatically emailed to contact on successful registration.'),
+ 'add' => '1.7',
+ 'default' => FALSE,
+ ],
+ 'confirm_email_text' => [
+ 'title' => ts('Confirmation Email Text'),
+ 'sql_type' => 'text',
+ 'input_type' => 'RichTextEditor',
+ 'localizable' => TRUE,
+ 'description' => ts('text to include above standard event info on confirmation email. emails are text-only, so do not allow html for now'),
+ 'add' => '1.7',
+ 'input_attrs' => [
+ 'rows' => 4,
+ 'cols' => 50,
+ ],
+ ],
+ 'confirm_from_name' => [
+ 'title' => ts('Confirm From Name'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'localizable' => TRUE,
+ 'description' => ts('FROM email name used for confirmation emails.'),
+ 'add' => '1.7',
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'confirm_from_email' => [
+ 'title' => ts('Confirm From Email'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'description' => ts('FROM email address used for confirmation emails.'),
+ 'add' => '1.7',
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'cc_confirm' => [
+ 'title' => ts('Cc Confirm'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'description' => ts('comma-separated list of email addresses to cc each time a confirmation is sent'),
+ 'add' => '1.7',
+ 'input_attrs' => [
+ 'label' => ts('CC Confirm'),
+ 'maxlength' => 255,
+ ],
+ ],
+ 'bcc_confirm' => [
+ 'title' => ts('Bcc Confirm'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'description' => ts('comma-separated list of email addresses to bcc each time a confirmation is sent'),
+ 'add' => '1.7',
+ 'input_attrs' => [
+ 'label' => ts('BCC Confirm'),
+ 'maxlength' => 255,
+ ],
+ ],
+ 'default_fee_id' => [
+ 'title' => ts('Default Fee ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'description' => ts('FK to civicrm_option_value.'),
+ 'add' => '1.7',
+ ],
+ 'default_discount_fee_id' => [
+ 'title' => ts('Default Discount Fee ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'description' => ts('FK to civicrm_option_value.'),
+ 'add' => '1.7',
+ ],
+ 'thankyou_title' => [
+ 'title' => ts('ThankYou Title'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'localizable' => TRUE,
+ 'description' => ts('Title for ThankYou page.'),
+ 'add' => '1.7',
+ 'default' => NULL,
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'thankyou_text' => [
+ 'title' => ts('ThankYou Text'),
+ 'sql_type' => 'text',
+ 'input_type' => 'RichTextEditor',
+ 'localizable' => TRUE,
+ 'description' => ts('ThankYou Text.'),
+ 'add' => '1.7',
+ 'input_attrs' => [
+ 'rows' => 6,
+ 'cols' => 50,
+ ],
+ ],
+ 'thankyou_footer_text' => [
+ 'title' => ts('Footer Text'),
+ 'sql_type' => 'text',
+ 'input_type' => 'RichTextEditor',
+ 'localizable' => TRUE,
+ 'description' => ts('Footer message.'),
+ 'add' => '1.7',
+ 'input_attrs' => [
+ 'rows' => 6,
+ 'cols' => 50,
+ ],
+ ],
+ 'is_pay_later' => [
+ 'title' => ts('Pay Later Allowed'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('if true - allows the user to send payment directly to the org later'),
+ 'add' => '2.0',
+ 'default' => FALSE,
+ ],
+ 'pay_later_text' => [
+ 'title' => ts('Pay Later Text'),
+ 'sql_type' => 'text',
+ 'input_type' => 'RichTextEditor',
+ 'localizable' => TRUE,
+ 'description' => ts('The text displayed to the user in the main form'),
+ 'add' => '2.0',
+ ],
+ 'pay_later_receipt' => [
+ 'title' => ts('Pay Later Receipt Text'),
+ 'sql_type' => 'text',
+ 'input_type' => 'RichTextEditor',
+ 'localizable' => TRUE,
+ 'description' => ts('The receipt sent to the user instead of the normal receipt text'),
+ 'add' => '2.0',
+ ],
+ 'is_partial_payment' => [
+ 'title' => ts('Partial Payments Enabled'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('is partial payment enabled for this event'),
+ 'add' => '4.3',
+ 'default' => FALSE,
+ ],
+ 'initial_amount_label' => [
+ 'title' => ts('Initial Amount Label'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'localizable' => TRUE,
+ 'description' => ts('Initial amount label for partial payment'),
+ 'add' => '4.3',
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'initial_amount_help_text' => [
+ 'title' => ts('Initial Amount Help Text'),
+ 'sql_type' => 'text',
+ 'input_type' => 'Text',
+ 'localizable' => TRUE,
+ 'description' => ts('Initial amount help text for partial payment'),
+ 'add' => '4.3',
+ ],
+ 'min_initial_amount' => [
+ 'title' => ts('Minimum Initial Amount'),
+ 'sql_type' => 'decimal(20,2)',
+ 'input_type' => 'Text',
+ 'description' => ts('Minimum initial amount for partial payment'),
+ 'add' => '4.3',
+ ],
+ 'is_multiple_registrations' => [
+ 'title' => ts('Allow Multiple Registrations'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('if true - allows the user to register multiple participants for event'),
+ 'add' => '2.1',
+ 'default' => FALSE,
+ ],
+ 'max_additional_participants' => [
+ 'title' => ts('Maximum number of additional participants per registration'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'description' => ts('Maximum number of additional participants that can be registered on a single booking'),
+ 'add' => '4.7',
+ 'default' => 0,
+ ],
+ 'allow_same_participant_emails' => [
+ 'title' => ts('Does Event allow multiple registrations from same email address?'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('if true - allows the user to register multiple registrations from same email address.'),
+ 'add' => '2.2',
+ 'default' => FALSE,
+ ],
+ 'has_waitlist' => [
+ 'title' => ts('Waitlist Enabled'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('Whether the event has waitlist support.'),
+ 'add' => '3.0',
+ 'default' => FALSE,
+ ],
+ 'requires_approval' => [
+ 'title' => ts('Requires Approval'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('Whether participants require approval before they can finish registering.'),
+ 'add' => '3.0',
+ 'default' => FALSE,
+ 'input_attrs' => [
+ 'label' => ts('Requires Approval'),
+ ],
+ ],
+ 'expiration_time' => [
+ 'title' => ts('Expiration Time'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Text',
+ 'description' => ts('Expire pending but unconfirmed registrations after this many hours.'),
+ 'add' => '3.0',
+ 'input_attrs' => [
+ 'label' => ts('Expiration Time'),
+ ],
+ ],
+ 'allow_selfcancelxfer' => [
+ 'title' => ts('Allow Self-service Cancellation or Transfer'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('Allow self service cancellation or transfer for event?'),
+ 'add' => '4.7',
+ 'default' => FALSE,
+ ],
+ 'selfcancelxfer_time' => [
+ 'title' => ts('Self-service Cancellation or Transfer Time'),
+ 'sql_type' => 'int',
+ 'input_type' => 'Text',
+ 'required' => TRUE,
+ 'description' => ts('Number of hours prior to event start date to allow self-service cancellation or transfer.'),
+ 'add' => '4.7',
+ 'default' => 0,
+ ],
+ 'waitlist_text' => [
+ 'title' => ts('Waitlist Text'),
+ 'sql_type' => 'text',
+ 'input_type' => 'TextArea',
+ 'localizable' => TRUE,
+ 'description' => ts('Text to display when the event is full, but participants can signup for a waitlist.'),
+ 'add' => '3.0',
+ 'input_attrs' => [
+ 'rows' => 4,
+ 'cols' => 60,
+ 'label' => ts('Waitlist Text'),
+ ],
+ ],
+ 'approval_req_text' => [
+ 'title' => ts('Approval Req Text'),
+ 'sql_type' => 'text',
+ 'input_type' => 'TextArea',
+ 'localizable' => TRUE,
+ 'description' => ts('Text to display when the approval is required to complete registration for an event.'),
+ 'add' => '3.0',
+ 'input_attrs' => [
+ 'rows' => 4,
+ 'cols' => 60,
+ 'label' => ts('Approval Required Text'),
+ ],
+ ],
+ 'is_template' => [
+ 'title' => ts('Is an Event Template'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('whether the event has template'),
+ 'add' => '3.0',
+ 'default' => FALSE,
+ ],
+ 'template_title' => [
+ 'title' => ts('Event Template Title'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'localizable' => TRUE,
+ 'description' => ts('Event Template Title'),
+ 'add' => '3.0',
+ 'unique_name' => 'template_title',
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'created_id' => [
+ 'title' => ts('Created By Contact ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'description' => ts('FK to civicrm_contact, who created this event'),
+ 'add' => '3.0',
+ 'input_attrs' => [
+ 'label' => ts('Created By'),
+ ],
+ 'entity_reference' => [
+ 'entity' => 'Contact',
+ 'key' => 'id',
+ 'on_delete' => 'SET NULL',
+ ],
+ ],
+ 'created_date' => [
+ 'title' => ts('Event Created Date'),
+ 'sql_type' => 'datetime',
+ 'input_type' => 'Select Date',
+ 'description' => ts('Date and time that event was created.'),
+ 'add' => '3.0',
+ ],
+ 'currency' => [
+ 'title' => ts('Currency'),
+ 'sql_type' => 'varchar(3)',
+ 'input_type' => 'Select',
+ 'description' => ts('3 character string, value from config setting or input via user.'),
+ 'add' => '3.3',
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ 'input_attrs' => [
+ 'label' => ts('Currency'),
+ 'maxlength' => 3,
+ ],
+ 'pseudoconstant' => [
+ 'table' => 'civicrm_currency',
+ 'key_column' => 'name',
+ 'label_column' => 'full_name',
+ 'name_column' => 'name',
+ 'abbr_column' => 'symbol',
+ ],
+ ],
+ 'campaign_id' => [
+ 'title' => ts('Campaign ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'description' => ts('The campaign for which this event has been created.'),
+ 'add' => '3.4',
+ 'component' => 'CiviCampaign',
+ 'input_attrs' => [
+ 'label' => ts('Campaign'),
+ ],
+ 'pseudoconstant' => [
+ 'table' => 'civicrm_campaign',
+ 'key_column' => 'id',
+ 'label_column' => 'title',
+ 'prefetch' => 'disabled',
+ ],
+ 'entity_reference' => [
+ 'entity' => 'Campaign',
+ 'key' => 'id',
+ 'on_delete' => 'SET NULL',
+ ],
+ ],
+ 'is_share' => [
+ 'title' => ts('Is shared through social media'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('Can people share the event through social media?'),
+ 'add' => '4.1',
+ 'default' => TRUE,
+ ],
+ 'is_confirm_enabled' => [
+ 'title' => ts('Is the booking confirmation screen enabled?'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('If FALSE, the event booking confirmation screen gets skipped'),
+ 'add' => '4.5',
+ 'default' => TRUE,
+ ],
+ 'parent_event_id' => [
+ 'title' => ts('Parent Event ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'description' => ts('Implicit FK to civicrm_event: parent event'),
+ 'add' => '4.1',
+ 'default' => NULL,
+ ],
+ 'slot_label_id' => [
+ 'title' => ts('Subevent Slot Label ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Select',
+ 'deprecated' => TRUE,
+ 'description' => ts('Needs to be moved to Event cart extension. Subevent slot label. Implicit FK to civicrm_option_value where option_group = conference_slot.'),
+ 'add' => '4.1',
+ 'default' => NULL,
+ ],
+ 'dedupe_rule_group_id' => [
+ 'title' => ts('Dedupe Rule ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Select',
+ 'description' => ts('Rule to use when matching registrations for this event'),
+ 'add' => '4.5',
+ 'default' => NULL,
+ 'input_attrs' => [
+ 'label' => ts('Dedupe Rule'),
+ ],
+ 'pseudoconstant' => [
+ 'table' => 'civicrm_dedupe_rule_group',
+ 'key_column' => 'id',
+ 'name_column' => 'name',
+ 'label_column' => 'title',
+ ],
+ 'entity_reference' => [
+ 'entity' => 'DedupeRuleGroup',
+ 'key' => 'id',
+ ],
+ ],
+ 'is_billing_required' => [
+ 'title' => ts('Is billing block required'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('if true than billing block is required this event'),
+ 'add' => '4.6',
+ 'default' => FALSE,
+ ],
+ 'is_show_calendar_links' => [
+ 'title' => ts('Are calendar links shown?'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('If true then calendar links are shown for this event.'),
+ 'add' => '5.68',
+ 'default' => TRUE,
+ ],
+ ],
+];
diff --git a/www/modules/civicrm/schema/Event/EventInCart.entityType.php b/www/modules/civicrm/schema/Event/EventInCart.entityType.php
new file mode 100644
index 000000000..f9cb2c84d
--- /dev/null
+++ b/www/modules/civicrm/schema/Event/EventInCart.entityType.php
@@ -0,0 +1,55 @@
+ 'EventInCart',
+ 'table' => 'civicrm_events_in_carts',
+ 'class' => 'CRM_Event_Cart_DAO_EventInCart',
+ 'getInfo' => fn() => [
+ 'title' => ts('Event In Cart'),
+ 'title_plural' => ts('Event In Carts'),
+ 'description' => ts('FIXME'),
+ ],
+ 'getFields' => fn() => [
+ 'id' => [
+ 'title' => ts('Event In Cart'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'required' => TRUE,
+ 'description' => ts('Event In Cart ID'),
+ 'add' => '4.1',
+ 'unique_name' => 'event_in_cart_id',
+ 'primary_key' => TRUE,
+ 'auto_increment' => TRUE,
+ ],
+ 'event_id' => [
+ 'title' => ts('Event ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'description' => ts('FK to Event ID'),
+ 'add' => '4.1',
+ 'input_attrs' => [
+ 'label' => ts('Event'),
+ ],
+ 'entity_reference' => [
+ 'entity' => 'Event',
+ 'key' => 'id',
+ 'on_delete' => 'CASCADE',
+ ],
+ ],
+ 'event_cart_id' => [
+ 'title' => ts('Event Cart ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'description' => ts('FK to Event Cart ID'),
+ 'add' => '4.1',
+ 'input_attrs' => [
+ 'label' => ts('Event In Cart'),
+ ],
+ 'entity_reference' => [
+ 'entity' => 'Cart',
+ 'key' => 'id',
+ 'on_delete' => 'CASCADE',
+ ],
+ ],
+ ],
+];
diff --git a/www/modules/civicrm/schema/Event/Participant.entityType.php b/www/modules/civicrm/schema/Event/Participant.entityType.php
new file mode 100644
index 000000000..835e8f26a
--- /dev/null
+++ b/www/modules/civicrm/schema/Event/Participant.entityType.php
@@ -0,0 +1,391 @@
+ 'Participant',
+ 'table' => 'civicrm_participant',
+ 'class' => 'CRM_Event_DAO_Participant',
+ 'getInfo' => fn() => [
+ 'title' => ts('Participant'),
+ 'title_plural' => ts('Participants'),
+ 'description' => ts('Records of contacts\' attendance and roles in events.'),
+ 'log' => TRUE,
+ 'add' => '1.7',
+ 'icon' => 'fa-ticket',
+ ],
+ 'getPaths' => fn() => [
+ 'add' => 'civicrm/participant/add?action=add&context=standalone&reset=1',
+ 'view' => 'civicrm/contact/view/participant?id=[id]&cid=[contact_id]&action=view&reset=1',
+ 'update' => 'civicrm/contact/view/participant?id=[id]&cid=[contact_id]&action=update&reset=1',
+ 'detach' => 'civicrm/event/selfsvcupdate?reset=1&pid=[id]&is_backoffice=1',
+ 'delete' => 'civicrm/participant/delete?id=[id]&reset=1',
+ ],
+ 'getIndices' => fn() => [
+ 'index_status_id' => [
+ 'fields' => [
+ 'status_id' => TRUE,
+ ],
+ 'add' => '1.8',
+ ],
+ 'index_role_id' => [
+ 'fields' => [
+ 'role_id' => TRUE,
+ ],
+ 'add' => '1.8',
+ ],
+ ],
+ 'getFields' => fn() => [
+ 'id' => [
+ 'title' => ts('Participant ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'required' => TRUE,
+ 'description' => ts('Participant ID'),
+ 'add' => '1.7',
+ 'unique_name' => 'participant_id',
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ 'primary_key' => TRUE,
+ 'auto_increment' => TRUE,
+ ],
+ 'contact_id' => [
+ 'title' => ts('Contact ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'required' => TRUE,
+ 'description' => ts('FK to Contact ID'),
+ 'add' => '1.7',
+ 'unique_name' => 'participant_contact_id',
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ 'input_attrs' => [
+ 'label' => ts('Contact'),
+ ],
+ 'entity_reference' => [
+ 'entity' => 'Contact',
+ 'key' => 'id',
+ 'on_delete' => 'CASCADE',
+ ],
+ ],
+ 'event_id' => [
+ 'title' => ts('Event ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'required' => TRUE,
+ 'description' => ts('FK to Event ID'),
+ 'add' => '1.7',
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ 'input_attrs' => [
+ 'label' => ts('Event'),
+ ],
+ 'entity_reference' => [
+ 'entity' => 'Event',
+ 'key' => 'id',
+ 'on_delete' => 'CASCADE',
+ ],
+ ],
+ 'status_id' => [
+ 'title' => ts('Status ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Select',
+ 'required' => TRUE,
+ 'description' => ts('Participant status ID. FK to civicrm_participant_status_type. Default of 1 should map to status = Registered.'),
+ 'add' => '1.7',
+ 'unique_name' => 'participant_status_id',
+ 'default' => 1,
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ 'input_attrs' => [
+ 'label' => ts('Status'),
+ ],
+ 'pseudoconstant' => [
+ 'table' => 'civicrm_participant_status_type',
+ 'key_column' => 'id',
+ 'label_column' => 'label',
+ ],
+ 'entity_reference' => [
+ 'entity' => 'ParticipantStatusType',
+ 'key' => 'id',
+ ],
+ ],
+ 'role_id' => [
+ 'title' => ts('Participant Role ID'),
+ 'sql_type' => 'varchar(128)',
+ 'input_type' => 'Select',
+ 'description' => ts('Participant role ID. Implicit FK to civicrm_option_value where option_group = participant_role.'),
+ 'add' => '1.7',
+ 'unique_name' => 'participant_role_id',
+ 'default' => NULL,
+ 'serialize' => CRM_Core_DAO::SERIALIZE_SEPARATOR_TRIMMED,
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ 'input_attrs' => [
+ 'multiple' => '1',
+ 'label' => ts('Participant Role'),
+ 'maxlength' => 128,
+ ],
+ 'pseudoconstant' => [
+ 'option_group_name' => 'participant_role',
+ ],
+ ],
+ 'register_date' => [
+ 'title' => ts('Register date'),
+ 'sql_type' => 'datetime',
+ 'input_type' => 'Select Date',
+ 'description' => ts('When did contact register for event?'),
+ 'add' => '1.7',
+ 'unique_name' => 'participant_register_date',
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ 'input_attrs' => [
+ 'format_type' => 'activityDateTime',
+ ],
+ ],
+ 'source' => [
+ 'title' => ts('Participant Source'),
+ 'sql_type' => 'varchar(128)',
+ 'input_type' => 'Text',
+ 'description' => ts('Source of this event registration.'),
+ 'add' => '1.7',
+ 'unique_name' => 'participant_source',
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ 'input_attrs' => [
+ 'maxlength' => 128,
+ ],
+ ],
+ 'fee_level' => [
+ 'title' => ts('Fee level'),
+ 'sql_type' => 'text',
+ 'input_type' => 'TextArea',
+ 'description' => ts('Populate with the label (text) associated with a fee level for paid events with multiple levels. Note that we store the label value and not the key'),
+ 'add' => '1.7',
+ 'unique_name' => 'participant_fee_level',
+ 'serialize' => CRM_Core_DAO::SERIALIZE_SEPARATOR_BOOKEND,
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ ],
+ 'is_test' => [
+ 'title' => ts('Test'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'Radio',
+ 'required' => TRUE,
+ 'add' => '1.7',
+ 'unique_name' => 'participant_is_test',
+ 'default' => FALSE,
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ ],
+ 'is_pay_later' => [
+ 'title' => ts('Is Pay Later'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'Radio',
+ 'required' => TRUE,
+ 'add' => '2.1',
+ 'unique_name' => 'participant_is_pay_later',
+ 'default' => FALSE,
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ ],
+ 'fee_amount' => [
+ 'title' => ts('Fee Amount'),
+ 'sql_type' => 'decimal(20,2)',
+ 'input_type' => 'Text',
+ 'description' => ts('actual processor fee if known - may be 0.'),
+ 'add' => '2.1',
+ 'unique_name' => 'participant_fee_amount',
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ ],
+ 'registered_by_id' => [
+ 'title' => ts('Registered By Participant ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'description' => ts('FK to Participant ID'),
+ 'add' => '2.1',
+ 'unique_name' => 'participant_registered_by_id',
+ 'default' => NULL,
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ 'input_attrs' => [
+ 'label' => ts('Registered By Participant'),
+ ],
+ 'entity_reference' => [
+ 'entity' => 'Participant',
+ 'key' => 'id',
+ 'on_delete' => 'SET NULL',
+ ],
+ ],
+ 'discount_id' => [
+ 'title' => ts('Discount ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'description' => ts('FK to Discount ID'),
+ 'add' => '2.1',
+ 'unique_name' => 'participant_discount_id',
+ 'default' => NULL,
+ 'input_attrs' => [
+ 'label' => ts('Discount'),
+ ],
+ 'entity_reference' => [
+ 'entity' => 'Discount',
+ 'key' => 'id',
+ 'on_delete' => 'SET NULL',
+ ],
+ ],
+ 'fee_currency' => [
+ 'title' => ts('Fee Currency'),
+ 'sql_type' => 'varchar(3)',
+ 'input_type' => 'Select',
+ 'description' => ts('3 character string, value derived from config setting.'),
+ 'add' => '3.0',
+ 'unique_name' => 'participant_fee_currency',
+ 'default' => NULL,
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ 'input_attrs' => [
+ 'maxlength' => 3,
+ ],
+ 'pseudoconstant' => [
+ 'table' => 'civicrm_currency',
+ 'key_column' => 'name',
+ 'label_column' => 'full_name',
+ 'name_column' => 'name',
+ 'abbr_column' => 'symbol',
+ ],
+ ],
+ 'campaign_id' => [
+ 'title' => ts('Campaign ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'description' => ts('The campaign for which this participant has been registered.'),
+ 'add' => '3.4',
+ 'unique_name' => 'participant_campaign_id',
+ 'component' => 'CiviCampaign',
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ 'input_attrs' => [
+ 'label' => ts('Campaign'),
+ ],
+ 'pseudoconstant' => [
+ 'table' => 'civicrm_campaign',
+ 'key_column' => 'id',
+ 'label_column' => 'title',
+ 'prefetch' => 'disabled',
+ ],
+ 'entity_reference' => [
+ 'entity' => 'Campaign',
+ 'key' => 'id',
+ 'on_delete' => 'SET NULL',
+ ],
+ ],
+ 'discount_amount' => [
+ 'title' => ts('Discount Amount'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'description' => ts('Discount Amount'),
+ 'add' => '4.1',
+ ],
+ 'cart_id' => [
+ 'title' => ts('Event Cart ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'description' => ts('FK to civicrm_event_carts'),
+ 'add' => '4.1',
+ 'input_attrs' => [
+ 'label' => ts('Event Cart'),
+ ],
+ 'entity_reference' => [
+ 'entity' => 'Cart',
+ 'key' => 'id',
+ 'on_delete' => 'SET NULL',
+ ],
+ ],
+ 'must_wait' => [
+ 'title' => ts('Must Wait on List'),
+ 'sql_type' => 'int',
+ 'input_type' => 'Number',
+ 'description' => ts('On Waiting List'),
+ 'add' => '4.1',
+ ],
+ 'transferred_to_contact_id' => [
+ 'title' => ts('Transferred to Contact ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'description' => ts('FK to Contact ID'),
+ 'add' => '4.7',
+ 'unique_name' => 'transferred_to_contact_id',
+ 'default' => NULL,
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ 'input_attrs' => [
+ 'label' => ts('Transferred to'),
+ ],
+ 'entity_reference' => [
+ 'entity' => 'Contact',
+ 'key' => 'id',
+ 'on_delete' => 'SET NULL',
+ ],
+ ],
+ 'created_id' => [
+ 'title' => ts('Created by Contact ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'description' => ts('Contact responsible for registering this participant'),
+ 'add' => '5.54',
+ 'input_attrs' => [
+ 'label' => ts('Created By'),
+ ],
+ 'entity_reference' => [
+ 'entity' => 'Contact',
+ 'key' => 'id',
+ 'on_delete' => 'SET NULL',
+ ],
+ ],
+ ],
+];
diff --git a/www/modules/civicrm/schema/Event/ParticipantPayment.entityType.php b/www/modules/civicrm/schema/Event/ParticipantPayment.entityType.php
new file mode 100644
index 000000000..52af89de3
--- /dev/null
+++ b/www/modules/civicrm/schema/Event/ParticipantPayment.entityType.php
@@ -0,0 +1,68 @@
+ 'ParticipantPayment',
+ 'table' => 'civicrm_participant_payment',
+ 'class' => 'CRM_Event_DAO_ParticipantPayment',
+ 'getInfo' => fn() => [
+ 'title' => ts('Participant Payment'),
+ 'title_plural' => ts('Participant Payments'),
+ 'description' => ts('FIXME'),
+ 'log' => TRUE,
+ 'add' => '1.7',
+ ],
+ 'getIndices' => fn() => [
+ 'UI_contribution_participant' => [
+ 'fields' => [
+ 'contribution_id' => TRUE,
+ 'participant_id' => TRUE,
+ ],
+ 'unique' => TRUE,
+ 'add' => '2.0',
+ ],
+ ],
+ 'getFields' => fn() => [
+ 'id' => [
+ 'title' => ts('Payment ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'required' => TRUE,
+ 'description' => ts('Participant Payment ID'),
+ 'add' => '1.7',
+ 'primary_key' => TRUE,
+ 'auto_increment' => TRUE,
+ ],
+ 'participant_id' => [
+ 'title' => ts('Participant ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'required' => TRUE,
+ 'description' => ts('Participant ID (FK)'),
+ 'add' => '1.7',
+ 'input_attrs' => [
+ 'label' => ts('Participant'),
+ ],
+ 'entity_reference' => [
+ 'entity' => 'Participant',
+ 'key' => 'id',
+ 'on_delete' => 'CASCADE',
+ ],
+ ],
+ 'contribution_id' => [
+ 'title' => ts('Contribution ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'required' => TRUE,
+ 'description' => ts('FK to contribution table.'),
+ 'add' => '2.0',
+ 'input_attrs' => [
+ 'label' => ts('Contribution'),
+ ],
+ 'entity_reference' => [
+ 'entity' => 'Contribution',
+ 'key' => 'id',
+ 'on_delete' => 'CASCADE',
+ ],
+ ],
+ ],
+];
diff --git a/www/modules/civicrm/schema/Event/ParticipantStatusType.entityType.php b/www/modules/civicrm/schema/Event/ParticipantStatusType.entityType.php
new file mode 100644
index 000000000..394173792
--- /dev/null
+++ b/www/modules/civicrm/schema/Event/ParticipantStatusType.entityType.php
@@ -0,0 +1,119 @@
+ 'ParticipantStatusType',
+ 'table' => 'civicrm_participant_status_type',
+ 'class' => 'CRM_Event_DAO_ParticipantStatusType',
+ 'getInfo' => fn() => [
+ 'title' => ts('Participant Status Type'),
+ 'title_plural' => ts('Participant Status Types'),
+ 'description' => ts('various types of CiviEvent participant statuses'),
+ 'log' => TRUE,
+ 'add' => '3.0',
+ ],
+ 'getPaths' => fn() => [
+ 'add' => 'civicrm/admin/participant_status?action=add&reset=1',
+ 'update' => 'civicrm/admin/participant_status?action=update&id=[id]&reset=1',
+ 'delete' => 'civicrm/admin/participant_status?action=delete&id=[id]&reset=1',
+ ],
+ 'getFields' => fn() => [
+ 'id' => [
+ 'title' => ts('Participant Status Type ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'required' => TRUE,
+ 'description' => ts('unique participant status type id'),
+ 'add' => '3.0',
+ 'primary_key' => TRUE,
+ 'auto_increment' => TRUE,
+ ],
+ 'name' => [
+ 'title' => ts('Participant Status'),
+ 'sql_type' => 'varchar(64)',
+ 'input_type' => 'Text',
+ 'description' => ts('non-localized name of the status type'),
+ 'add' => '3.0',
+ 'unique_name' => 'participant_status',
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ 'input_attrs' => [
+ 'maxlength' => 64,
+ ],
+ ],
+ 'label' => [
+ 'title' => ts('Participant Status Label'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'localizable' => TRUE,
+ 'description' => ts('localized label for display of this status type'),
+ 'add' => '3.0',
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'class' => [
+ 'title' => ts('Participant Status Class'),
+ 'sql_type' => 'varchar(8)',
+ 'input_type' => 'Select',
+ 'description' => ts('the general group of status type this one belongs to'),
+ 'add' => '3.0',
+ 'input_attrs' => [
+ 'maxlength' => 8,
+ ],
+ 'pseudoconstant' => [
+ 'callback' => 'CRM_Event_PseudoConstant::participantStatusClassOptions',
+ ],
+ ],
+ 'is_reserved' => [
+ 'title' => ts('Participant Status Is Reserved?>'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('whether this is a status type required by the system'),
+ 'add' => '3.0',
+ 'default' => FALSE,
+ ],
+ 'is_active' => [
+ 'title' => ts('Participant Status is Active'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('whether this status type is active'),
+ 'add' => '3.0',
+ 'default' => TRUE,
+ 'input_attrs' => [
+ 'label' => ts('Enabled'),
+ ],
+ ],
+ 'is_counted' => [
+ 'title' => ts('Participant Status Counts?'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('whether this status type is counted against event size limit'),
+ 'add' => '3.0',
+ 'default' => FALSE,
+ ],
+ 'weight' => [
+ 'title' => ts('Order'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'required' => TRUE,
+ 'description' => ts('controls sort order'),
+ 'add' => '3.0',
+ ],
+ 'visibility_id' => [
+ 'title' => ts('Participant Status Visibility'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Select',
+ 'description' => ts('whether the status type is visible to the public, an implicit foreign key to option_value.value related to the `visibility` option_group'),
+ 'add' => '3.0',
+ 'pseudoconstant' => [
+ 'option_group_name' => 'visibility',
+ ],
+ ],
+ ],
+];
diff --git a/www/modules/civicrm/schema/Financial/Currency.entityType.php b/www/modules/civicrm/schema/Financial/Currency.entityType.php
new file mode 100644
index 000000000..76a766b64
--- /dev/null
+++ b/www/modules/civicrm/schema/Financial/Currency.entityType.php
@@ -0,0 +1,76 @@
+ 'Currency',
+ 'table' => 'civicrm_currency',
+ 'class' => 'CRM_Financial_DAO_Currency',
+ 'getInfo' => fn() => [
+ 'title' => ts('Currency'),
+ 'title_plural' => ts('Currencies'),
+ 'description' => ts('FIXME'),
+ 'log' => TRUE,
+ 'add' => '1.7',
+ ],
+ 'getFields' => fn() => [
+ 'id' => [
+ 'title' => ts('Currency ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'required' => TRUE,
+ 'description' => ts('Currency ID'),
+ 'add' => '1.7',
+ 'primary_key' => TRUE,
+ 'auto_increment' => TRUE,
+ ],
+ 'name' => [
+ 'title' => ts('Currency'),
+ 'sql_type' => 'varchar(64)',
+ 'input_type' => 'Text',
+ 'description' => ts('Currency Name'),
+ 'add' => '1.7',
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ 'input_attrs' => [
+ 'maxlength' => 64,
+ ],
+ ],
+ 'symbol' => [
+ 'title' => ts('Currency Symbol'),
+ 'sql_type' => 'varchar(8)',
+ 'input_type' => 'Text',
+ 'description' => ts('Currency Symbol'),
+ 'add' => '1.7',
+ 'input_attrs' => [
+ 'maxlength' => 8,
+ ],
+ ],
+ 'numeric_code' => [
+ 'title' => ts('Currency Numeric Code'),
+ 'sql_type' => 'varchar(3)',
+ 'input_type' => 'Text',
+ 'description' => ts('Numeric currency code'),
+ 'add' => '1.9',
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ 'input_attrs' => [
+ 'maxlength' => 3,
+ ],
+ ],
+ 'full_name' => [
+ 'title' => ts('Full Currency Name'),
+ 'sql_type' => 'varchar(64)',
+ 'input_type' => 'Text',
+ 'description' => ts('Full currency name'),
+ 'add' => '1.9',
+ 'input_attrs' => [
+ 'maxlength' => 64,
+ ],
+ ],
+ ],
+];
diff --git a/www/modules/civicrm/schema/Financial/EntityFinancialAccount.entityType.php b/www/modules/civicrm/schema/Financial/EntityFinancialAccount.entityType.php
new file mode 100644
index 000000000..77108d2d3
--- /dev/null
+++ b/www/modules/civicrm/schema/Financial/EntityFinancialAccount.entityType.php
@@ -0,0 +1,109 @@
+ 'EntityFinancialAccount',
+ 'table' => 'civicrm_entity_financial_account',
+ 'class' => 'CRM_Financial_DAO_EntityFinancialAccount',
+ 'getInfo' => fn() => [
+ 'title' => ts('Entity Financial Account'),
+ 'title_plural' => ts('Entity Financial Accounts'),
+ 'description' => ts('Map between an entity and a financial account, where there is a specific relationship between the financial account and the entity, e.g. Income Account for or AR Account for'),
+ 'log' => TRUE,
+ 'add' => '4.3',
+ ],
+ 'getPaths' => fn() => [
+ 'add' => 'civicrm/admin/financial/financialType/accounts?action=add&reset=1&aid=[entity_id]',
+ 'update' => 'civicrm/admin/financial/financialType/accounts?action=update&id=[id]&aid=[entity_id]&reset=1',
+ 'delete' => 'civicrm/admin/financial/financialType/accounts?action=delete&id=[id]&aid=[entity_id]&reset=1',
+ ],
+ 'getIndices' => fn() => [
+ 'index_entity_id_entity_table_account_relationship' => [
+ 'fields' => [
+ 'entity_id' => TRUE,
+ 'entity_table' => TRUE,
+ 'account_relationship' => TRUE,
+ ],
+ 'unique' => TRUE,
+ 'add' => '4.7',
+ ],
+ ],
+ 'getFields' => fn() => [
+ 'id' => [
+ 'title' => ts('Entity Financial Account ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'required' => TRUE,
+ 'description' => ts('ID'),
+ 'add' => '4.3',
+ 'primary_key' => TRUE,
+ 'auto_increment' => TRUE,
+ ],
+ 'entity_table' => [
+ 'title' => ts('Entity Table'),
+ 'sql_type' => 'varchar(64)',
+ 'input_type' => 'Select',
+ 'required' => TRUE,
+ 'description' => ts('Links to an entity_table like civicrm_financial_type'),
+ 'add' => '4.3',
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ 'input_attrs' => [
+ 'label' => ts('Entity Type'),
+ 'maxlength' => 64,
+ ],
+ 'pseudoconstant' => [
+ 'callback' => 'CRM_Financial_BAO_EntityFinancialAccount::entityTables',
+ ],
+ ],
+ 'entity_id' => [
+ 'title' => ts('Entity ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'required' => TRUE,
+ 'description' => ts('Links to an id in the entity_table, such as vid in civicrm_financial_type'),
+ 'add' => '4.3',
+ 'input_attrs' => [
+ 'label' => ts('Entity'),
+ ],
+ 'entity_reference' => [
+ 'dynamic_entity' => 'entity_table',
+ 'key' => 'id',
+ ],
+ ],
+ 'account_relationship' => [
+ 'title' => ts('Account Relationship'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Select',
+ 'required' => TRUE,
+ 'description' => ts('FK to a new civicrm_option_value (account_relationship)'),
+ 'add' => '4.3',
+ 'pseudoconstant' => [
+ 'option_group_name' => 'account_relationship',
+ ],
+ ],
+ 'financial_account_id' => [
+ 'title' => ts('Financial Account ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Select',
+ 'required' => TRUE,
+ 'description' => ts('FK to the financial_account_id'),
+ 'add' => '4.3',
+ 'input_attrs' => [
+ 'label' => ts('Financial Account'),
+ ],
+ 'pseudoconstant' => [
+ 'table' => 'civicrm_financial_account',
+ 'key_column' => 'id',
+ 'label_column' => 'name',
+ ],
+ 'entity_reference' => [
+ 'entity' => 'FinancialAccount',
+ 'key' => 'id',
+ 'on_delete' => 'RESTRICT',
+ ],
+ ],
+ ],
+];
diff --git a/www/modules/civicrm/schema/Financial/EntityFinancialTrxn.entityType.php b/www/modules/civicrm/schema/Financial/EntityFinancialTrxn.entityType.php
new file mode 100644
index 000000000..f020f73e6
--- /dev/null
+++ b/www/modules/civicrm/schema/Financial/EntityFinancialTrxn.entityType.php
@@ -0,0 +1,96 @@
+ 'EntityFinancialTrxn',
+ 'table' => 'civicrm_entity_financial_trxn',
+ 'class' => 'CRM_Financial_DAO_EntityFinancialTrxn',
+ 'getInfo' => fn() => [
+ 'title' => ts('Entity Financial Trxn'),
+ 'title_plural' => ts('Entity Financial Trxns'),
+ 'description' => ts('FIXME'),
+ 'add' => '3.2',
+ ],
+ 'getIndices' => fn() => [
+ 'UI_entity_financial_trxn_entity_table' => [
+ 'fields' => [
+ 'entity_table' => TRUE,
+ ],
+ 'add' => '4.3',
+ ],
+ 'UI_entity_financial_trxn_entity_id' => [
+ 'fields' => [
+ 'entity_id' => TRUE,
+ ],
+ 'add' => '4.3',
+ ],
+ ],
+ 'getFields' => fn() => [
+ 'id' => [
+ 'title' => ts('Entity Financial Transaction ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'required' => TRUE,
+ 'description' => ts('ID'),
+ 'add' => '3.2',
+ 'primary_key' => TRUE,
+ 'auto_increment' => TRUE,
+ ],
+ 'entity_table' => [
+ 'title' => ts('Entity Table'),
+ 'sql_type' => 'varchar(64)',
+ 'input_type' => 'Select',
+ 'required' => TRUE,
+ 'description' => ts('May contain civicrm_financial_item, civicrm_contribution, civicrm_financial_trxn, civicrm_grant, etc'),
+ 'add' => '3.2',
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ 'input_attrs' => [
+ 'maxlength' => 64,
+ ],
+ 'pseudoconstant' => [
+ 'callback' => 'CRM_Financial_BAO_EntityFinancialTrxn::entityTables',
+ ],
+ ],
+ 'entity_id' => [
+ 'title' => ts('Entity ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'required' => TRUE,
+ 'add' => '3.2',
+ 'entity_reference' => [
+ 'dynamic_entity' => 'entity_table',
+ 'key' => 'id',
+ ],
+ ],
+ 'financial_trxn_id' => [
+ 'title' => ts('Financial Transaction ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'add' => '3.2',
+ 'input_attrs' => [
+ 'label' => ts('Financial Transaction'),
+ ],
+ 'entity_reference' => [
+ 'entity' => 'FinancialTrxn',
+ 'key' => 'id',
+ 'on_delete' => 'SET NULL',
+ ],
+ ],
+ 'amount' => [
+ 'title' => ts('Amount'),
+ 'sql_type' => 'decimal(20,2)',
+ 'input_type' => NULL,
+ 'required' => TRUE,
+ 'description' => ts('allocated amount of transaction to this entity'),
+ 'add' => '3.2',
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ ],
+ ],
+];
diff --git a/www/modules/civicrm/schema/Financial/FinancialAccount.entityType.php b/www/modules/civicrm/schema/Financial/FinancialAccount.entityType.php
new file mode 100644
index 000000000..5dfed7cd3
--- /dev/null
+++ b/www/modules/civicrm/schema/Financial/FinancialAccount.entityType.php
@@ -0,0 +1,200 @@
+ 'FinancialAccount',
+ 'table' => 'civicrm_financial_account',
+ 'class' => 'CRM_Financial_DAO_FinancialAccount',
+ 'getInfo' => fn() => [
+ 'title' => ts('Financial Account'),
+ 'title_plural' => ts('Financial Accounts'),
+ 'description' => ts('FIXME'),
+ 'log' => TRUE,
+ 'add' => '3.2',
+ ],
+ 'getPaths' => fn() => [
+ 'add' => 'civicrm/admin/financial/financialAccount/edit?action=add&reset=1',
+ 'update' => 'civicrm/admin/financial/financialAccount/edit?action=update&id=[id]&reset=1',
+ 'delete' => 'civicrm/admin/financial/financialAccount/edit?action=delete&id=[id]&reset=1',
+ 'browse' => 'civicrm/admin/financial/financialAccount',
+ ],
+ 'getIndices' => fn() => [
+ 'UI_name' => [
+ 'fields' => [
+ 'name' => TRUE,
+ ],
+ 'unique' => TRUE,
+ 'add' => '4.3',
+ ],
+ ],
+ 'getFields' => fn() => [
+ 'id' => [
+ 'title' => ts('Financial Account ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'required' => TRUE,
+ 'description' => ts('ID'),
+ 'add' => '3.2',
+ 'primary_key' => TRUE,
+ 'auto_increment' => TRUE,
+ ],
+ 'name' => [
+ 'title' => ts('Financial Account Name'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'required' => TRUE,
+ 'description' => ts('Financial Account Name.'),
+ 'add' => '3.2',
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'contact_id' => [
+ 'title' => ts('Contact ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'description' => ts('FK to Contact ID that is responsible for the funds in this account'),
+ 'add' => '4.3',
+ 'unique_name' => 'financial_account_contact_id',
+ 'input_attrs' => [
+ 'label' => ts('Contact'),
+ ],
+ 'entity_reference' => [
+ 'entity' => 'Contact',
+ 'key' => 'id',
+ 'on_delete' => 'SET NULL',
+ ],
+ ],
+ 'financial_account_type_id' => [
+ 'title' => ts('Financial Account Type'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Select',
+ 'required' => TRUE,
+ 'description' => ts('pseudo FK into civicrm_option_value.'),
+ 'add' => '4.3',
+ 'default' => 3,
+ 'pseudoconstant' => [
+ 'option_group_name' => 'financial_account_type',
+ ],
+ ],
+ 'accounting_code' => [
+ 'title' => ts('Accounting Code'),
+ 'sql_type' => 'varchar(64)',
+ 'input_type' => 'Text',
+ 'description' => ts('Optional value for mapping monies owed and received to accounting system codes.'),
+ 'add' => '4.3',
+ 'usage' => [
+ 'export',
+ ],
+ 'input_attrs' => [
+ 'maxlength' => 64,
+ ],
+ ],
+ 'account_type_code' => [
+ 'title' => ts('Account Type Code'),
+ 'sql_type' => 'varchar(64)',
+ 'input_type' => 'Text',
+ 'description' => ts('Optional value for mapping account types to accounting system account categories (QuickBooks Account Type Codes for example).'),
+ 'add' => '4.3',
+ 'usage' => [
+ 'export',
+ ],
+ 'input_attrs' => [
+ 'maxlength' => 64,
+ ],
+ ],
+ 'description' => [
+ 'title' => ts('Financial Account Description'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'description' => ts('Financial Type Description.'),
+ 'add' => '4.3',
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'parent_id' => [
+ 'title' => ts('Parent ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'description' => ts('Parent ID in account hierarchy'),
+ 'add' => '4.3',
+ 'input_attrs' => [
+ 'label' => ts('Parent'),
+ ],
+ 'entity_reference' => [
+ 'entity' => 'FinancialAccount',
+ 'key' => 'id',
+ ],
+ ],
+ 'is_header_account' => [
+ 'title' => ts('Header Financial Account?'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('Is this a header account which does not allow transactions to be posted against it directly, but only to its sub-accounts?'),
+ 'add' => '4.3',
+ 'default' => FALSE,
+ ],
+ 'is_deductible' => [
+ 'title' => ts('Deductible Financial Account?'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('Is this account tax-deductible?'),
+ 'add' => '4.3',
+ 'default' => FALSE,
+ ],
+ 'is_tax' => [
+ 'title' => ts('Tax Financial Account?'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('Is this account for taxes?'),
+ 'add' => '4.3',
+ 'default' => FALSE,
+ ],
+ 'tax_rate' => [
+ 'title' => ts('Financial Account Tax Rate'),
+ 'sql_type' => 'decimal(10,8)',
+ 'input_type' => NULL,
+ 'description' => ts('The percentage of the total_amount that is due for this tax.'),
+ 'add' => '4.3',
+ 'input_attrs' => [
+ 'maxlength' => 10,
+ ],
+ ],
+ 'is_reserved' => [
+ 'title' => ts('Reserved Financial Account?'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('Is this a predefined system object?'),
+ 'add' => '4.3',
+ 'default' => FALSE,
+ ],
+ 'is_active' => [
+ 'title' => ts('Financial Account is Active'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('Is this property active?'),
+ 'add' => '4.3',
+ 'default' => TRUE,
+ 'input_attrs' => [
+ 'label' => ts('Enabled'),
+ ],
+ ],
+ 'is_default' => [
+ 'title' => ts('Default Financial Account'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('Is this account the default one (or default tax one) for its financial_account_type?'),
+ 'add' => '4.3',
+ 'default' => FALSE,
+ 'input_attrs' => [
+ 'label' => ts('Default'),
+ ],
+ ],
+ ],
+];
diff --git a/www/modules/civicrm/schema/Financial/FinancialItem.entityType.php b/www/modules/civicrm/schema/Financial/FinancialItem.entityType.php
new file mode 100644
index 000000000..d69f11249
--- /dev/null
+++ b/www/modules/civicrm/schema/Financial/FinancialItem.entityType.php
@@ -0,0 +1,180 @@
+ 'FinancialItem',
+ 'table' => 'civicrm_financial_item',
+ 'class' => 'CRM_Financial_DAO_FinancialItem',
+ 'getInfo' => fn() => [
+ 'title' => ts('Financial Item'),
+ 'title_plural' => ts('Financial Items'),
+ 'description' => ts('Financial data for civicrm_line_item, etc.'),
+ 'log' => TRUE,
+ 'add' => '4.3',
+ ],
+ 'getIndices' => fn() => [
+ 'IX_created_date' => [
+ 'fields' => [
+ 'created_date' => TRUE,
+ ],
+ 'add' => '4.3',
+ ],
+ 'IX_transaction_date' => [
+ 'fields' => [
+ 'transaction_date' => TRUE,
+ ],
+ 'add' => '4.3',
+ ],
+ 'index_entity_id_entity_table' => [
+ 'fields' => [
+ 'entity_id' => TRUE,
+ 'entity_table' => TRUE,
+ ],
+ 'add' => '4.7',
+ ],
+ ],
+ 'getFields' => fn() => [
+ 'id' => [
+ 'title' => ts('Financial Item ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'required' => TRUE,
+ 'add' => '4.3',
+ 'input_attrs' => [
+ 'maxlength' => 10,
+ ],
+ 'primary_key' => TRUE,
+ 'auto_increment' => TRUE,
+ ],
+ 'created_date' => [
+ 'title' => ts('Financial Item Created Date'),
+ 'sql_type' => 'timestamp',
+ 'input_type' => NULL,
+ 'required' => TRUE,
+ 'description' => ts('Date and time the item was created'),
+ 'add' => '4.3',
+ 'default' => 'CURRENT_TIMESTAMP',
+ ],
+ 'transaction_date' => [
+ 'title' => ts('Financial Item Transaction Date'),
+ 'sql_type' => 'datetime',
+ 'input_type' => 'Select Date',
+ 'required' => TRUE,
+ 'description' => ts('Date and time of the source transaction'),
+ 'add' => '4.3',
+ ],
+ 'contact_id' => [
+ 'title' => ts('Contact ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'required' => TRUE,
+ 'description' => ts('FK to Contact ID of contact the item is from'),
+ 'add' => '4.3',
+ 'usage' => [
+ 'export',
+ ],
+ 'input_attrs' => [
+ 'label' => ts('Contact'),
+ ],
+ 'entity_reference' => [
+ 'entity' => 'Contact',
+ 'key' => 'id',
+ 'on_delete' => 'CASCADE',
+ ],
+ ],
+ 'description' => [
+ 'title' => ts('Financial Item Description'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'description' => ts('Human readable description of this item, to ease display without lookup of source item.'),
+ 'add' => '4.3',
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'amount' => [
+ 'title' => ts('Amount'),
+ 'sql_type' => 'decimal(20,2)',
+ 'input_type' => NULL,
+ 'required' => TRUE,
+ 'description' => ts('Total amount of this item'),
+ 'add' => '4.3',
+ 'default' => '0',
+ ],
+ 'currency' => [
+ 'title' => ts('Financial Item Currency'),
+ 'sql_type' => 'varchar(3)',
+ 'input_type' => 'Select',
+ 'description' => ts('Currency for the amount'),
+ 'add' => '4.3',
+ 'usage' => [
+ 'export',
+ ],
+ 'input_attrs' => [
+ 'maxlength' => 3,
+ ],
+ 'pseudoconstant' => [
+ 'table' => 'civicrm_currency',
+ 'key_column' => 'name',
+ 'label_column' => 'full_name',
+ 'name_column' => 'name',
+ 'abbr_column' => 'symbol',
+ ],
+ ],
+ 'financial_account_id' => [
+ 'title' => ts('Financial Account ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Select',
+ 'description' => ts('FK to civicrm_financial_account'),
+ 'add' => '4.3',
+ 'input_attrs' => [
+ 'label' => ts('Financial Account'),
+ ],
+ 'pseudoconstant' => [
+ 'table' => 'civicrm_financial_account',
+ 'key_column' => 'id',
+ 'label_column' => 'name',
+ ],
+ 'entity_reference' => [
+ 'entity' => 'FinancialAccount',
+ 'key' => 'id',
+ ],
+ ],
+ 'status_id' => [
+ 'title' => ts('Financial Item Status ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Select',
+ 'description' => ts('Payment status: test, paid, part_paid, unpaid (if empty assume unpaid)'),
+ 'add' => '4.3',
+ 'usage' => [
+ 'export',
+ ],
+ 'pseudoconstant' => [
+ 'option_group_name' => 'financial_item_status',
+ ],
+ ],
+ 'entity_table' => [
+ 'title' => ts('Entity Table'),
+ 'sql_type' => 'varchar(64)',
+ 'input_type' => 'Select',
+ 'description' => ts('May contain civicrm_line_item, civicrm_financial_trxn etc'),
+ 'add' => '4.3',
+ 'input_attrs' => [
+ 'maxlength' => 64,
+ ],
+ 'pseudoconstant' => [
+ 'callback' => 'CRM_Financial_BAO_FinancialItem::entityTables',
+ ],
+ ],
+ 'entity_id' => [
+ 'title' => ts('Entity ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'description' => ts('The specific source item that is responsible for the creation of this financial_item'),
+ 'add' => '4.3',
+ 'entity_reference' => [
+ 'dynamic_entity' => 'entity_table',
+ 'key' => 'id',
+ ],
+ ],
+ ],
+];
diff --git a/www/modules/civicrm/schema/Financial/FinancialTrxn.entityType.php b/www/modules/civicrm/schema/Financial/FinancialTrxn.entityType.php
new file mode 100644
index 000000000..a6ceabbb8
--- /dev/null
+++ b/www/modules/civicrm/schema/Financial/FinancialTrxn.entityType.php
@@ -0,0 +1,267 @@
+ 'FinancialTrxn',
+ 'table' => 'civicrm_financial_trxn',
+ 'class' => 'CRM_Financial_DAO_FinancialTrxn',
+ 'getInfo' => fn() => [
+ 'title' => ts('Financial Trxn'),
+ 'title_plural' => ts('Financial Trxns'),
+ 'description' => ts('FIXME'),
+ 'log' => TRUE,
+ 'add' => '1.3',
+ ],
+ 'getIndices' => fn() => [
+ 'UI_ftrxn_trxn_id' => [
+ 'fields' => [
+ 'trxn_id' => TRUE,
+ ],
+ 'add' => '4.7',
+ ],
+ 'UI_ftrxn_payment_instrument_id' => [
+ 'fields' => [
+ 'payment_instrument_id' => TRUE,
+ ],
+ 'add' => '4.3',
+ ],
+ 'UI_ftrxn_check_number' => [
+ 'fields' => [
+ 'check_number' => TRUE,
+ ],
+ 'add' => '4.3',
+ ],
+ ],
+ 'getFields' => fn() => [
+ 'id' => [
+ 'title' => ts('Financial Transaction ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'required' => TRUE,
+ 'add' => '1.3',
+ 'primary_key' => TRUE,
+ 'auto_increment' => TRUE,
+ ],
+ 'from_financial_account_id' => [
+ 'title' => ts('From Account ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Select',
+ 'description' => ts('FK to financial_account table.'),
+ 'add' => '4.3',
+ 'input_attrs' => [
+ 'label' => ts('From Account'),
+ ],
+ 'pseudoconstant' => [
+ 'table' => 'civicrm_financial_account',
+ 'key_column' => 'id',
+ 'label_column' => 'name',
+ ],
+ 'entity_reference' => [
+ 'entity' => 'FinancialAccount',
+ 'key' => 'id',
+ ],
+ ],
+ 'to_financial_account_id' => [
+ 'title' => ts('To Account ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Select',
+ 'description' => ts('FK to financial_financial_account table.'),
+ 'add' => '4.3',
+ 'input_attrs' => [
+ 'label' => ts('To Account'),
+ ],
+ 'pseudoconstant' => [
+ 'table' => 'civicrm_financial_account',
+ 'key_column' => 'id',
+ 'label_column' => 'name',
+ ],
+ 'entity_reference' => [
+ 'entity' => 'FinancialAccount',
+ 'key' => 'id',
+ ],
+ ],
+ 'trxn_date' => [
+ 'title' => ts('Financial Transaction Date'),
+ 'sql_type' => 'datetime',
+ 'input_type' => 'Select Date',
+ 'description' => ts('date transaction occurred'),
+ 'add' => '1.3',
+ 'default' => NULL,
+ 'input_attrs' => [
+ 'format_type' => 'activityDateTime',
+ ],
+ ],
+ 'total_amount' => [
+ 'title' => ts('Financial Total Amount'),
+ 'sql_type' => 'decimal(20,2)',
+ 'input_type' => NULL,
+ 'required' => TRUE,
+ 'description' => ts('amount of transaction'),
+ 'add' => '1.3',
+ ],
+ 'fee_amount' => [
+ 'title' => ts('Financial Fee Amount'),
+ 'sql_type' => 'decimal(20,2)',
+ 'input_type' => NULL,
+ 'description' => ts('actual processor fee if known - may be 0.'),
+ 'add' => '1.3',
+ ],
+ 'net_amount' => [
+ 'title' => ts('Financial Net Amount'),
+ 'sql_type' => 'decimal(20,2)',
+ 'input_type' => NULL,
+ 'description' => ts('actual funds transfer amount. total less fees. if processor does not report actual fee during transaction, this is set to total_amount.'),
+ 'add' => '1.3',
+ ],
+ 'currency' => [
+ 'title' => ts('Financial Currency'),
+ 'sql_type' => 'varchar(3)',
+ 'input_type' => 'Select',
+ 'description' => ts('3 character string, value from config setting or input via user.'),
+ 'add' => '1.3',
+ 'default' => NULL,
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ 'input_attrs' => [
+ 'maxlength' => 3,
+ ],
+ 'pseudoconstant' => [
+ 'table' => 'civicrm_currency',
+ 'key_column' => 'name',
+ 'label_column' => 'full_name',
+ 'name_column' => 'name',
+ 'abbr_column' => 'symbol',
+ ],
+ ],
+ 'is_payment' => [
+ 'title' => ts('Is Payment?'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('Is this entry either a payment or a reversal of a payment?'),
+ 'add' => '4.7',
+ 'default' => FALSE,
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ ],
+ 'trxn_id' => [
+ 'title' => ts('Transaction ID'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'description' => ts('Transaction id supplied by external processor. This may not be unique.'),
+ 'add' => '1.3',
+ 'input_attrs' => [
+ 'size' => '10',
+ 'maxlength' => 255,
+ ],
+ ],
+ 'trxn_result_code' => [
+ 'title' => ts('Transaction Result Code'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'description' => ts('processor result code'),
+ 'add' => '1.3',
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'status_id' => [
+ 'title' => ts('Financial Transaction Status ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Select',
+ 'description' => ts('pseudo FK to civicrm_option_value of contribution_status_id option_group'),
+ 'add' => '4.3',
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ 'pseudoconstant' => [
+ 'option_group_name' => 'contribution_status',
+ ],
+ ],
+ 'payment_processor_id' => [
+ 'title' => ts('Payment Processor ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Select',
+ 'description' => ts('Payment Processor for this financial transaction'),
+ 'add' => '4.3',
+ 'input_attrs' => [
+ 'label' => ts('Payment Processor'),
+ ],
+ 'pseudoconstant' => [
+ 'table' => 'civicrm_payment_processor',
+ 'key_column' => 'id',
+ 'label_column' => 'name',
+ ],
+ 'entity_reference' => [
+ 'entity' => 'PaymentProcessor',
+ 'key' => 'id',
+ 'on_delete' => 'SET NULL',
+ ],
+ ],
+ 'payment_instrument_id' => [
+ 'title' => ts('Payment Method'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Select',
+ 'description' => ts('FK to payment_instrument option group values'),
+ 'add' => '4.3',
+ 'unique_name' => 'financial_trxn_payment_instrument_id',
+ 'pseudoconstant' => [
+ 'option_group_name' => 'payment_instrument',
+ ],
+ ],
+ 'card_type_id' => [
+ 'title' => ts('Card Type ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Select',
+ 'description' => ts('FK to accept_creditcard option group values'),
+ 'add' => '4.7',
+ 'unique_name' => 'financial_trxn_card_type_id',
+ 'pseudoconstant' => [
+ 'option_group_name' => 'accept_creditcard',
+ ],
+ ],
+ 'check_number' => [
+ 'title' => ts('Check Number'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'description' => ts('Check number'),
+ 'add' => '4.3',
+ 'unique_name' => 'financial_trxn_check_number',
+ 'input_attrs' => [
+ 'size' => '6',
+ 'maxlength' => 255,
+ ],
+ ],
+ 'pan_truncation' => [
+ 'title' => ts('PAN Truncation'),
+ 'sql_type' => 'varchar(4)',
+ 'input_type' => 'Text',
+ 'description' => ts('Last 4 digits of credit card'),
+ 'add' => '4.7',
+ 'unique_name' => 'financial_trxn_pan_truncation',
+ 'input_attrs' => [
+ 'size' => '4',
+ 'maxlength' => 4,
+ ],
+ ],
+ 'order_reference' => [
+ 'title' => ts('Order Reference'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'description' => ts('Payment Processor external order reference'),
+ 'add' => '5.20',
+ 'unique_name' => 'financial_trxn_order_reference',
+ 'input_attrs' => [
+ 'size' => '25',
+ 'maxlength' => 255,
+ ],
+ ],
+ ],
+];
diff --git a/www/modules/civicrm/schema/Financial/FinancialType.entityType.php b/www/modules/civicrm/schema/Financial/FinancialType.entityType.php
new file mode 100644
index 000000000..a0ae6493c
--- /dev/null
+++ b/www/modules/civicrm/schema/Financial/FinancialType.entityType.php
@@ -0,0 +1,106 @@
+ 'FinancialType',
+ 'table' => 'civicrm_financial_type',
+ 'class' => 'CRM_Financial_DAO_FinancialType',
+ 'getInfo' => fn() => [
+ 'title' => ts('Financial Type'),
+ 'title_plural' => ts('Financial Types'),
+ 'description' => ts('Formerly civicrm_contribution_type merged into this table in 4.3'),
+ 'log' => TRUE,
+ 'add' => '1.3',
+ 'label_field' => 'name',
+ ],
+ 'getPaths' => fn() => [
+ 'add' => 'civicrm/admin/financial/financialType/edit?action=add&reset=1',
+ 'update' => 'civicrm/admin/financial/financialType/edit?action=update&id=[id]&reset=1',
+ 'delete' => 'civicrm/admin/financial/financialType/edit?action=delete&id=[id]&reset=1',
+ 'browse' => 'civicrm/admin/financial/financialType',
+ ],
+ 'getFields' => fn() => [
+ 'id' => [
+ 'title' => ts('Financial Type ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'required' => TRUE,
+ 'description' => ts('ID of original financial_type so you can search this table by the financial_type.id and then select the relevant version based on the timestamp'),
+ 'add' => '1.3',
+ 'input_attrs' => [
+ 'maxlength' => 10,
+ ],
+ 'primary_key' => TRUE,
+ 'auto_increment' => TRUE,
+ ],
+ 'name' => [
+ 'title' => ts('Financial Type'),
+ 'sql_type' => 'varchar(64)',
+ 'input_type' => 'Text',
+ 'required' => TRUE,
+ 'description' => ts('Financial Type Name.'),
+ 'add' => '1.3',
+ 'unique_name' => 'financial_type',
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ 'input_attrs' => [
+ 'label' => ts('Name'),
+ 'maxlength' => 64,
+ ],
+ ],
+ 'description' => [
+ 'title' => ts('Description'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'TextArea',
+ 'description' => ts('Financial Type Description.'),
+ 'add' => '1.3',
+ 'input_attrs' => [
+ 'rows' => 6,
+ 'cols' => 50,
+ 'label' => ts('Description'),
+ 'maxlength' => 255,
+ ],
+ ],
+ 'is_deductible' => [
+ 'title' => ts('Is Tax Deductible?'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('Is this financial type tax-deductible? If TRUE, contributions of this type may be fully OR partially deductible - non-deductible amount is stored in the Contribution record.'),
+ 'add' => '1.3',
+ 'default' => FALSE,
+ 'input_attrs' => [
+ 'label' => ts('Tax-Deductible?'),
+ 'maxlength' => 4,
+ ],
+ ],
+ 'is_reserved' => [
+ 'title' => ts('Financial Type is Reserved?'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('Is this a predefined system object?'),
+ 'add' => '1.3',
+ 'default' => FALSE,
+ 'input_attrs' => [
+ 'label' => ts('Reserved?'),
+ 'maxlength' => 4,
+ ],
+ ],
+ 'is_active' => [
+ 'title' => ts('Financial Type Is Active?'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('Is this property active?'),
+ 'add' => '1.3',
+ 'default' => TRUE,
+ 'input_attrs' => [
+ 'label' => ts('Enabled'),
+ 'maxlength' => 4,
+ ],
+ ],
+ ],
+];
diff --git a/www/modules/civicrm/schema/Financial/PaymentProcessor.entityType.php b/www/modules/civicrm/schema/Financial/PaymentProcessor.entityType.php
new file mode 100644
index 000000000..511068ef6
--- /dev/null
+++ b/www/modules/civicrm/schema/Financial/PaymentProcessor.entityType.php
@@ -0,0 +1,291 @@
+ 'PaymentProcessor',
+ 'table' => 'civicrm_payment_processor',
+ 'class' => 'CRM_Financial_DAO_PaymentProcessor',
+ 'getInfo' => fn() => [
+ 'title' => ts('Payment Processor'),
+ 'title_plural' => ts('Payment Processors'),
+ 'description' => ts('FIXME'),
+ 'add' => '1.8',
+ ],
+ 'getPaths' => fn() => [
+ 'add' => 'civicrm/admin/paymentProcessor/edit?action=add&reset=1',
+ 'update' => 'civicrm/admin/paymentProcessor/edit?action=update&id=[id]&reset=1',
+ 'delete' => 'civicrm/admin/paymentProcessor/edit?action=delete&id=[id]&reset=1',
+ 'browse' => 'civicrm/admin/paymentProcessor',
+ ],
+ 'getIndices' => fn() => [
+ 'UI_name_test_domain_id' => [
+ 'fields' => [
+ 'name' => TRUE,
+ 'is_test' => TRUE,
+ 'domain_id' => TRUE,
+ ],
+ 'unique' => TRUE,
+ 'add' => '1.8',
+ ],
+ ],
+ 'getFields' => fn() => [
+ 'id' => [
+ 'title' => ts('Payment Processor ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'required' => TRUE,
+ 'description' => ts('Payment Processor ID'),
+ 'add' => '1.8',
+ 'primary_key' => TRUE,
+ 'auto_increment' => TRUE,
+ ],
+ 'domain_id' => [
+ 'title' => ts('Domain ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'required' => TRUE,
+ 'description' => ts('Which Domain is this match entry for'),
+ 'add' => '3.0',
+ 'input_attrs' => [
+ 'label' => ts('Domain'),
+ ],
+ 'pseudoconstant' => [
+ 'table' => 'civicrm_domain',
+ 'key_column' => 'id',
+ 'label_column' => 'name',
+ ],
+ 'entity_reference' => [
+ 'entity' => 'Domain',
+ 'key' => 'id',
+ ],
+ ],
+ 'name' => [
+ 'title' => ts('Payment Processor Name'),
+ 'sql_type' => 'varchar(64)',
+ 'input_type' => 'Text',
+ 'required' => TRUE,
+ 'description' => ts('Payment Processor Name.'),
+ 'add' => '1.8',
+ 'input_attrs' => [
+ 'label' => ts('Machine Name'),
+ 'maxlength' => 64,
+ ],
+ ],
+ 'title' => [
+ 'title' => ts('Payment Processor Title'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'required' => TRUE,
+ 'localizable' => TRUE,
+ 'description' => ts('Name of processor when shown to CiviCRM administrators.'),
+ 'add' => '5.13',
+ 'input_attrs' => [
+ 'label' => ts('Backend Title'),
+ 'maxlength' => 255,
+ ],
+ ],
+ 'frontend_title' => [
+ 'title' => ts('Payment Processor Frontend Title'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'required' => TRUE,
+ 'localizable' => TRUE,
+ 'description' => ts('Name of processor when shown to users making a payment.'),
+ 'add' => '5.61',
+ 'input_attrs' => [
+ 'label' => ts('Frontend Title'),
+ 'maxlength' => 255,
+ ],
+ ],
+ 'description' => [
+ 'title' => ts('Processor Description'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'description' => ts('Additional processor information shown to administrators.'),
+ 'add' => '1.8',
+ 'input_attrs' => [
+ 'label' => ts('Description'),
+ 'maxlength' => 255,
+ ],
+ ],
+ 'payment_processor_type_id' => [
+ 'title' => ts('Type ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'required' => TRUE,
+ 'add' => '4.3',
+ 'input_attrs' => [
+ 'label' => ts('Type'),
+ 'maxlength' => 10,
+ ],
+ 'pseudoconstant' => [
+ 'table' => 'civicrm_payment_processor_type',
+ 'key_column' => 'id',
+ 'label_column' => 'title',
+ ],
+ 'entity_reference' => [
+ 'entity' => 'PaymentProcessorType',
+ 'key' => 'id',
+ ],
+ ],
+ 'is_active' => [
+ 'title' => ts('Processor is Active?'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('Is this processor active?'),
+ 'add' => '1.8',
+ 'default' => TRUE,
+ 'input_attrs' => [
+ 'label' => ts('Enabled'),
+ ],
+ ],
+ 'is_default' => [
+ 'title' => ts('Processor Is Default?'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('Is this processor the default?'),
+ 'add' => '1.8',
+ 'default' => FALSE,
+ 'input_attrs' => [
+ 'label' => ts('Default'),
+ ],
+ ],
+ 'is_test' => [
+ 'title' => ts('Is Test Processor?'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('Is this processor for a test site?'),
+ 'add' => '1.8',
+ 'default' => FALSE,
+ ],
+ 'user_name' => [
+ 'title' => ts('User Name'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'add' => '1.8',
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'password' => [
+ 'title' => ts('Password'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Password',
+ 'add' => '1.8',
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'signature' => [
+ 'title' => ts('Signature'),
+ 'sql_type' => 'text',
+ 'input_type' => 'TextArea',
+ 'add' => '1.8',
+ 'input_attrs' => [
+ 'rows' => 4,
+ 'cols' => 40,
+ ],
+ ],
+ 'url_site' => [
+ 'title' => ts('Site URL'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'add' => '1.8',
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'url_api' => [
+ 'title' => ts('API URL'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'add' => '1.8',
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'url_recur' => [
+ 'title' => ts('Recurring Payments URL'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'add' => '1.8',
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'url_button' => [
+ 'title' => ts('Button URL'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'add' => '1.8',
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'subject' => [
+ 'title' => ts('Subject'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'add' => '1.8',
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'class_name' => [
+ 'title' => ts('Suffix for PHP class name implementation'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'add' => '1.8',
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'billing_mode' => [
+ 'title' => ts('Processor Billing Mode'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'required' => TRUE,
+ 'description' => ts('Billing Mode (deprecated)'),
+ 'add' => '1.8',
+ ],
+ 'is_recur' => [
+ 'title' => ts('Processor Supports Recurring?'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('Can process recurring contributions'),
+ 'add' => '1.8',
+ 'default' => FALSE,
+ ],
+ 'payment_type' => [
+ 'title' => ts('Payment Type'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'description' => ts('Payment Type: Credit or Debit (deprecated)'),
+ 'add' => '3.0',
+ 'default' => 1,
+ ],
+ 'payment_instrument_id' => [
+ 'title' => ts('Payment Method'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Select',
+ 'description' => ts('Payment Instrument ID'),
+ 'add' => '4.7',
+ 'default' => 1,
+ 'pseudoconstant' => [
+ 'option_group_name' => 'payment_instrument',
+ ],
+ ],
+ 'accepted_credit_cards' => [
+ 'title' => ts('Accepted Credit Cards'),
+ 'sql_type' => 'text',
+ 'input_type' => 'TextArea',
+ 'description' => ts('array of accepted credit card types'),
+ 'add' => '4.7',
+ 'default' => NULL,
+ 'serialize' => CRM_Core_DAO::SERIALIZE_JSON,
+ ],
+ ],
+];
diff --git a/www/modules/civicrm/schema/Financial/PaymentProcessorType.entityType.php b/www/modules/civicrm/schema/Financial/PaymentProcessorType.entityType.php
new file mode 100644
index 000000000..896fcf306
--- /dev/null
+++ b/www/modules/civicrm/schema/Financial/PaymentProcessorType.entityType.php
@@ -0,0 +1,255 @@
+ 'PaymentProcessorType',
+ 'table' => 'civicrm_payment_processor_type',
+ 'class' => 'CRM_Financial_DAO_PaymentProcessorType',
+ 'getInfo' => fn() => [
+ 'title' => ts('Payment Processor Type'),
+ 'title_plural' => ts('Payment Processor Types'),
+ 'description' => ts('FIXME'),
+ 'add' => '1.8',
+ ],
+ 'getPaths' => fn() => [
+ 'add' => 'civicrm/admin/paymentProcessorType?reset=1&action=add',
+ 'delete' => 'civicrm/admin/paymentProcessorType?reset=1&action=delete&id=[id]',
+ 'update' => 'civicrm/admin/paymentProcessorType?reset=1&action=update&id=[id]',
+ ],
+ 'getIndices' => fn() => [
+ 'UI_name' => [
+ 'fields' => [
+ 'name' => TRUE,
+ ],
+ 'unique' => TRUE,
+ 'add' => '2.1',
+ ],
+ ],
+ 'getFields' => fn() => [
+ 'id' => [
+ 'title' => ts('Payment Processor Type ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'required' => TRUE,
+ 'description' => ts('Payment Processor Type ID'),
+ 'add' => '1.8',
+ 'primary_key' => TRUE,
+ 'auto_increment' => TRUE,
+ ],
+ 'name' => [
+ 'title' => ts('Payment Processor Type variable name to be used in code'),
+ 'sql_type' => 'varchar(64)',
+ 'input_type' => 'Text',
+ 'required' => TRUE,
+ 'description' => ts('Payment Processor Type Name.'),
+ 'add' => '1.8',
+ 'input_attrs' => [
+ 'maxlength' => 64,
+ ],
+ ],
+ 'title' => [
+ 'title' => ts('Payment Processor Type Title'),
+ 'sql_type' => 'varchar(127)',
+ 'input_type' => 'Text',
+ 'required' => TRUE,
+ 'description' => ts('Payment Processor Type Title.'),
+ 'add' => '1.8',
+ 'input_attrs' => [
+ 'maxlength' => 127,
+ ],
+ ],
+ 'description' => [
+ 'title' => ts('Processor Type Description'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'description' => ts('Payment Processor Description.'),
+ 'add' => '1.8',
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'is_active' => [
+ 'title' => ts('Processor Type Is Active?'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('Is this processor active?'),
+ 'add' => '1.8',
+ 'default' => TRUE,
+ 'input_attrs' => [
+ 'label' => ts('Enabled'),
+ ],
+ ],
+ 'is_default' => [
+ 'title' => ts('Processor Type is Default?'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('Is this processor the default?'),
+ 'add' => '1.8',
+ 'default' => FALSE,
+ 'input_attrs' => [
+ 'label' => ts('Default'),
+ ],
+ ],
+ 'user_name_label' => [
+ 'title' => ts('Label for User Name if used'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'add' => '1.8',
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'password_label' => [
+ 'title' => ts('Label for password'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'add' => '1.8',
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'signature_label' => [
+ 'title' => ts('Label for Signature'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'add' => '1.8',
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'subject_label' => [
+ 'title' => ts('Label for Subject'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'add' => '1.8',
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'class_name' => [
+ 'title' => ts('Suffix for PHP class name implementation'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'required' => TRUE,
+ 'add' => '1.8',
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'url_site_default' => [
+ 'title' => ts('Default Live Site URL'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'add' => '1.8',
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'url_api_default' => [
+ 'title' => ts('Default API Site URL'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'add' => '1.8',
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'url_recur_default' => [
+ 'title' => ts('Default Live Recurring Payments URL'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'add' => '1.8',
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'url_button_default' => [
+ 'title' => ts('Default Live Button URL'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'add' => '1.8',
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'url_site_test_default' => [
+ 'title' => ts('Default Test Site URL'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'add' => '1.8',
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'url_api_test_default' => [
+ 'title' => ts('Default Test API URL'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'add' => '1.8',
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'url_recur_test_default' => [
+ 'title' => ts('Default Test Recurring Payment URL'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'add' => '1.8',
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'url_button_test_default' => [
+ 'title' => ts('Default Test Button URL'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'add' => '1.8',
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'billing_mode' => [
+ 'title' => ts('Billing Mode'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Select',
+ 'required' => TRUE,
+ 'description' => ts('Billing Mode (deprecated)'),
+ 'add' => '1.8',
+ 'input_attrs' => [
+ 'label' => ts('Billing Mode'),
+ ],
+ 'pseudoconstant' => [
+ 'callback' => 'CRM_Core_SelectValues::billingMode',
+ ],
+ ],
+ 'is_recur' => [
+ 'title' => ts('Processor Type Supports Recurring?'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('Can process recurring contributions'),
+ 'add' => '1.8',
+ 'default' => FALSE,
+ ],
+ 'payment_type' => [
+ 'title' => ts('Processor Type Payment Type'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'description' => ts('Payment Type: Credit or Debit (deprecated)'),
+ 'add' => '3.0',
+ 'default' => 1,
+ ],
+ 'payment_instrument_id' => [
+ 'title' => ts('Payment Method'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Select',
+ 'description' => ts('Payment Instrument ID'),
+ 'add' => '4.7',
+ 'default' => 1,
+ 'pseudoconstant' => [
+ 'option_group_name' => 'payment_instrument',
+ ],
+ ],
+ ],
+];
diff --git a/www/modules/civicrm/schema/Financial/PaymentToken.entityType.php b/www/modules/civicrm/schema/Financial/PaymentToken.entityType.php
new file mode 100644
index 000000000..70e611e17
--- /dev/null
+++ b/www/modules/civicrm/schema/Financial/PaymentToken.entityType.php
@@ -0,0 +1,158 @@
+ 'PaymentToken',
+ 'table' => 'civicrm_payment_token',
+ 'class' => 'CRM_Financial_DAO_PaymentToken',
+ 'getInfo' => fn() => [
+ 'title' => ts('Payment Token'),
+ 'title_plural' => ts('Payment Tokens'),
+ 'description' => ts('Payment Token'),
+ 'add' => '4.6',
+ ],
+ 'getFields' => fn() => [
+ 'id' => [
+ 'title' => ts('Payment Token ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'required' => TRUE,
+ 'description' => ts('Payment Token ID'),
+ 'add' => '4.6',
+ 'unique_name' => 'payment_token_id',
+ 'primary_key' => TRUE,
+ 'auto_increment' => TRUE,
+ ],
+ 'contact_id' => [
+ 'title' => ts('Contact ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'required' => TRUE,
+ 'description' => ts('FK to Contact ID for the owner of the token'),
+ 'add' => '4.6',
+ 'input_attrs' => [
+ 'label' => ts('Contact'),
+ ],
+ 'entity_reference' => [
+ 'entity' => 'Contact',
+ 'key' => 'id',
+ 'on_delete' => 'CASCADE',
+ ],
+ ],
+ 'payment_processor_id' => [
+ 'title' => ts('Payment Processor ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'required' => TRUE,
+ 'add' => '4.6',
+ 'input_attrs' => [
+ 'label' => ts('Payment Processor'),
+ ],
+ 'entity_reference' => [
+ 'entity' => 'PaymentProcessor',
+ 'key' => 'id',
+ 'on_delete' => 'RESTRICT',
+ ],
+ ],
+ 'token' => [
+ 'title' => ts('Token'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'required' => TRUE,
+ 'description' => ts('Externally provided token string'),
+ 'add' => '4.6',
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'created_date' => [
+ 'title' => ts('Created Date'),
+ 'sql_type' => 'timestamp',
+ 'input_type' => NULL,
+ 'description' => ts('Date created'),
+ 'add' => '4.6',
+ 'default' => 'CURRENT_TIMESTAMP',
+ ],
+ 'created_id' => [
+ 'title' => ts('Created ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'description' => ts('Contact ID of token creator'),
+ 'add' => '4.6',
+ 'input_attrs' => [
+ 'label' => ts('Created'),
+ ],
+ 'entity_reference' => [
+ 'entity' => 'Contact',
+ 'key' => 'id',
+ 'on_delete' => 'SET NULL',
+ ],
+ ],
+ 'expiry_date' => [
+ 'title' => ts('Expiry Date'),
+ 'sql_type' => 'datetime',
+ 'input_type' => 'Select Date',
+ 'description' => ts('Date this token expires'),
+ 'add' => '4.6',
+ ],
+ 'email' => [
+ 'title' => ts('Email'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'description' => ts('Email at the time of token creation. Useful for fraud forensics'),
+ 'add' => '4.6',
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'billing_first_name' => [
+ 'title' => ts('Billing First Name'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'description' => ts('Billing first name at the time of token creation. Useful for fraud forensics'),
+ 'add' => '4.6',
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'billing_middle_name' => [
+ 'title' => ts('Billing Middle Name'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'description' => ts('Billing middle name at the time of token creation. Useful for fraud forensics'),
+ 'add' => '4.6',
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'billing_last_name' => [
+ 'title' => ts('Billing Last Name'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'description' => ts('Billing last name at the time of token creation. Useful for fraud forensics'),
+ 'add' => '4.6',
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'masked_account_number' => [
+ 'title' => ts('Masked Account Number'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'description' => ts('Holds the part of the card number or account details that may be retained or displayed'),
+ 'add' => '4.6',
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'ip_address' => [
+ 'title' => ts('IP Address'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'description' => ts('IP used when creating the token. Useful for fraud forensics'),
+ 'add' => '4.6',
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ ],
+];
diff --git a/www/modules/civicrm/schema/Friend/Friend.entityType.php b/www/modules/civicrm/schema/Friend/Friend.entityType.php
new file mode 100644
index 000000000..08380e530
--- /dev/null
+++ b/www/modules/civicrm/schema/Friend/Friend.entityType.php
@@ -0,0 +1,119 @@
+ 'Friend',
+ 'table' => 'civicrm_tell_friend',
+ 'class' => 'CRM_Friend_DAO_Friend',
+ 'getInfo' => fn() => [
+ 'title' => ts('Friend'),
+ 'title_plural' => ts('Friends'),
+ 'description' => ts('FIXME'),
+ 'add' => '2.0',
+ ],
+ 'getFields' => fn() => [
+ 'id' => [
+ 'title' => ts('Friend ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'required' => TRUE,
+ 'description' => ts('Friend ID'),
+ 'add' => '2.0',
+ 'primary_key' => TRUE,
+ 'auto_increment' => TRUE,
+ ],
+ 'entity_table' => [
+ 'title' => ts('Entity Table'),
+ 'sql_type' => 'varchar(64)',
+ 'input_type' => 'Text',
+ 'required' => TRUE,
+ 'description' => ts('Name of table where item being referenced is stored.'),
+ 'add' => '2.0',
+ 'input_attrs' => [
+ 'maxlength' => 64,
+ ],
+ ],
+ 'entity_id' => [
+ 'title' => ts('Entity ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'required' => TRUE,
+ 'description' => ts('Foreign key to the referenced item.'),
+ 'add' => '2.0',
+ 'entity_reference' => [
+ 'dynamic_entity' => 'entity_table',
+ 'key' => 'id',
+ ],
+ ],
+ 'title' => [
+ 'title' => ts('Title'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'localizable' => TRUE,
+ 'add' => '2.0',
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'intro' => [
+ 'title' => ts('Intro'),
+ 'sql_type' => 'text',
+ 'input_type' => 'Text',
+ 'localizable' => TRUE,
+ 'description' => ts('Introductory message to contributor or participant displayed on the Tell a Friend form.'),
+ 'add' => '2.0',
+ ],
+ 'suggested_message' => [
+ 'title' => ts('Suggested Message'),
+ 'sql_type' => 'text',
+ 'input_type' => 'Text',
+ 'localizable' => TRUE,
+ 'description' => ts('Suggested message to friends, provided as default on the Tell A Friend form.'),
+ 'add' => '2.0',
+ ],
+ 'general_link' => [
+ 'title' => ts('General Link'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'description' => ts('URL for general info about the organization - included in the email sent to friends.'),
+ 'add' => '2.0',
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'thankyou_title' => [
+ 'title' => ts('Thank You Title'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'localizable' => TRUE,
+ 'description' => ts('Text for Tell a Friend thank you page header and HTML title.'),
+ 'add' => '2.0',
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'thankyou_text' => [
+ 'title' => ts('Thank You Text'),
+ 'sql_type' => 'text',
+ 'input_type' => 'Text',
+ 'localizable' => TRUE,
+ 'description' => ts('Thank you message displayed on success page.'),
+ 'add' => '2.0',
+ ],
+ 'is_active' => [
+ 'title' => ts('Enabled?'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'add' => '2.0',
+ 'default' => TRUE,
+ 'input_attrs' => [
+ 'label' => ts('Enabled'),
+ ],
+ ],
+ ],
+];
diff --git a/www/modules/civicrm/schema/Mailing/BouncePattern.entityType.php b/www/modules/civicrm/schema/Mailing/BouncePattern.entityType.php
new file mode 100644
index 000000000..05a2a61ed
--- /dev/null
+++ b/www/modules/civicrm/schema/Mailing/BouncePattern.entityType.php
@@ -0,0 +1,51 @@
+ 'BouncePattern',
+ 'table' => 'civicrm_mailing_bounce_pattern',
+ 'class' => 'CRM_Mailing_DAO_BouncePattern',
+ 'getInfo' => fn() => [
+ 'title' => ts('Bounce Pattern'),
+ 'title_plural' => ts('Bounce Patterns'),
+ 'description' => ts('Pseudo-constant table of patterns for bounce classification'),
+ ],
+ 'getFields' => fn() => [
+ 'id' => [
+ 'title' => ts('Bounce Pattern ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'required' => TRUE,
+ 'primary_key' => TRUE,
+ 'auto_increment' => TRUE,
+ ],
+ 'bounce_type_id' => [
+ 'title' => ts('Bounce Type ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'required' => TRUE,
+ 'description' => ts('Type of bounce'),
+ 'input_attrs' => [
+ 'label' => ts('Bounce Type'),
+ ],
+ 'pseudoconstant' => [
+ 'table' => 'civicrm_mailing_bounce_type',
+ 'key_column' => 'id',
+ 'label_column' => 'name',
+ ],
+ 'entity_reference' => [
+ 'entity' => 'BounceType',
+ 'key' => 'id',
+ 'on_delete' => 'CASCADE',
+ ],
+ ],
+ 'pattern' => [
+ 'title' => ts('Pattern'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'description' => ts('A regexp to match a message to a bounce type'),
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ ],
+];
diff --git a/www/modules/civicrm/schema/Mailing/BounceType.entityType.php b/www/modules/civicrm/schema/Mailing/BounceType.entityType.php
new file mode 100644
index 000000000..c325e48f0
--- /dev/null
+++ b/www/modules/civicrm/schema/Mailing/BounceType.entityType.php
@@ -0,0 +1,48 @@
+ 'BounceType',
+ 'table' => 'civicrm_mailing_bounce_type',
+ 'class' => 'CRM_Mailing_DAO_BounceType',
+ 'getInfo' => fn() => [
+ 'title' => ts('Bounce Type'),
+ 'title_plural' => ts('Bounce Types'),
+ 'description' => ts('Table to index the various bounce types and their properties'),
+ ],
+ 'getFields' => fn() => [
+ 'id' => [
+ 'title' => ts('Bounce Type ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'required' => TRUE,
+ 'primary_key' => TRUE,
+ 'auto_increment' => TRUE,
+ ],
+ 'name' => [
+ 'title' => ts('Bounce Type Name'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'required' => TRUE,
+ 'description' => ts('Type of bounce'),
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'description' => [
+ 'title' => ts('Bounce Type Description'),
+ 'sql_type' => 'varchar(2048)',
+ 'input_type' => 'Text',
+ 'description' => ts('A description of this bounce type'),
+ 'input_attrs' => [
+ 'maxlength' => 2048,
+ ],
+ ],
+ 'hold_threshold' => [
+ 'title' => ts('Hold Threshold'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'required' => TRUE,
+ 'description' => ts('Number of bounces of this type required before the email address is put on bounce hold'),
+ ],
+ ],
+];
diff --git a/www/modules/civicrm/schema/Mailing/Mailing.entityType.php b/www/modules/civicrm/schema/Mailing/Mailing.entityType.php
new file mode 100644
index 000000000..9129ca662
--- /dev/null
+++ b/www/modules/civicrm/schema/Mailing/Mailing.entityType.php
@@ -0,0 +1,566 @@
+ 'Mailing',
+ 'table' => 'civicrm_mailing',
+ 'class' => 'CRM_Mailing_DAO_Mailing',
+ 'getInfo' => fn() => [
+ 'title' => ts('Mailing'),
+ 'title_plural' => ts('Mailings'),
+ 'description' => ts('Mass emails sent from CiviMail.'),
+ 'icon' => 'fa-envelope-o',
+ 'label_field' => 'name',
+ ],
+ 'getPaths' => fn() => [
+ 'add' => 'civicrm/mailing/send',
+ 'update' => 'civicrm/mailing/send?mid=[id]&continue=true',
+ 'copy' => 'civicrm/mailing/send?mid=[id]',
+ 'view' => 'civicrm/mailing/report?mid=[id]&reset=1',
+ 'preview' => 'civicrm/mailing/view?id=[id]&reset=1',
+ 'delete' => 'civicrm/mailing/browse?action=delete&mid=[id]&reset=1',
+ ],
+ 'getIndices' => fn() => [
+ 'index_hash' => [
+ 'fields' => [
+ 'hash' => TRUE,
+ ],
+ 'add' => '4.5',
+ ],
+ ],
+ 'getFields' => fn() => [
+ 'id' => [
+ 'title' => ts('Mailing ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'required' => TRUE,
+ 'primary_key' => TRUE,
+ 'auto_increment' => TRUE,
+ ],
+ 'domain_id' => [
+ 'title' => ts('Domain ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'description' => ts('Which site is this mailing for'),
+ 'add' => '3.4',
+ 'input_attrs' => [
+ 'label' => ts('Domain'),
+ ],
+ 'pseudoconstant' => [
+ 'table' => 'civicrm_domain',
+ 'key_column' => 'id',
+ 'label_column' => 'name',
+ ],
+ 'entity_reference' => [
+ 'entity' => 'Domain',
+ 'key' => 'id',
+ 'on_delete' => 'SET NULL',
+ ],
+ ],
+ 'header_id' => [
+ 'title' => ts('Header ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'description' => ts('FK to the header component.'),
+ 'input_attrs' => [
+ 'label' => ts('Header'),
+ ],
+ 'pseudoconstant' => [
+ 'table' => 'civicrm_mailing_component',
+ 'key_column' => 'id',
+ 'label_column' => 'name',
+ 'condition' => 'component_type = "Header"',
+ ],
+ 'entity_reference' => [
+ 'entity' => 'MailingComponent',
+ 'key' => 'id',
+ 'on_delete' => 'SET NULL',
+ ],
+ ],
+ 'footer_id' => [
+ 'title' => ts('Footer ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'description' => ts('FK to the footer component.'),
+ 'input_attrs' => [
+ 'label' => ts('Footer'),
+ ],
+ 'pseudoconstant' => [
+ 'table' => 'civicrm_mailing_component',
+ 'key_column' => 'id',
+ 'label_column' => 'name',
+ 'condition' => 'component_type = "Footer"',
+ ],
+ 'entity_reference' => [
+ 'entity' => 'MailingComponent',
+ 'key' => 'id',
+ 'on_delete' => 'SET NULL',
+ ],
+ ],
+ 'reply_id' => [
+ 'title' => ts('Reply ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'description' => ts('FK to the auto-responder component.'),
+ 'input_attrs' => [
+ 'label' => ts('Reply'),
+ ],
+ 'entity_reference' => [
+ 'entity' => 'MailingComponent',
+ 'key' => 'id',
+ 'on_delete' => 'SET NULL',
+ ],
+ ],
+ 'unsubscribe_id' => [
+ 'title' => ts('Unsubscribe ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'description' => ts('FK to the unsubscribe component.'),
+ 'input_attrs' => [
+ 'label' => ts('Unsubscribe'),
+ ],
+ 'entity_reference' => [
+ 'entity' => 'MailingComponent',
+ 'key' => 'id',
+ 'on_delete' => 'SET NULL',
+ ],
+ ],
+ 'resubscribe_id' => [
+ 'title' => ts('Mailing Resubscribe'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ ],
+ 'optout_id' => [
+ 'title' => ts('Opt Out ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'description' => ts('FK to the opt-out component.'),
+ 'input_attrs' => [
+ 'label' => ts('Opt Out'),
+ ],
+ 'entity_reference' => [
+ 'entity' => 'MailingComponent',
+ 'key' => 'id',
+ 'on_delete' => 'SET NULL',
+ ],
+ ],
+ 'name' => [
+ 'title' => ts('Mailing Name'),
+ 'sql_type' => 'varchar(128)',
+ 'input_type' => 'Text',
+ 'description' => ts('Mailing Name.'),
+ 'unique_name' => 'mailing_name',
+ 'input_attrs' => [
+ 'label' => ts('Name'),
+ 'maxlength' => 128,
+ ],
+ ],
+ 'mailing_type' => [
+ 'title' => ts('Mailing Type'),
+ 'sql_type' => 'varchar(32)',
+ 'input_type' => 'Select',
+ 'description' => ts('differentiate between standalone mailings, A/B tests, and A/B final-winner'),
+ 'add' => '4.6',
+ 'input_attrs' => [
+ 'maxlength' => 32,
+ ],
+ 'pseudoconstant' => [
+ 'callback' => 'CRM_Mailing_PseudoConstant::mailingTypes',
+ ],
+ ],
+ 'from_name' => [
+ 'title' => ts('Mailing From Name'),
+ 'sql_type' => 'varchar(128)',
+ 'input_type' => 'Text',
+ 'description' => ts('From Header of mailing'),
+ 'input_attrs' => [
+ 'label' => ts('From Name'),
+ 'maxlength' => 128,
+ ],
+ ],
+ 'from_email' => [
+ 'title' => ts('Mailing From Email'),
+ 'sql_type' => 'varchar(128)',
+ 'input_type' => 'Text',
+ 'description' => ts('From Email of mailing'),
+ 'input_attrs' => [
+ 'label' => ts('From Email'),
+ 'maxlength' => 128,
+ ],
+ ],
+ 'replyto_email' => [
+ 'title' => ts('Replyto Email'),
+ 'sql_type' => 'varchar(128)',
+ 'input_type' => 'Text',
+ 'description' => ts('Reply-To Email of mailing'),
+ 'input_attrs' => [
+ 'label' => ts('Reply-To Email'),
+ 'maxlength' => 128,
+ ],
+ ],
+ 'template_type' => [
+ 'title' => ts('Template Type'),
+ 'sql_type' => 'varchar(64)',
+ 'input_type' => 'Select',
+ 'required' => TRUE,
+ 'description' => ts('The language/processing system used for email templates.'),
+ 'add' => '4.7',
+ 'default' => 'traditional',
+ 'input_attrs' => [
+ 'maxlength' => 64,
+ ],
+ 'pseudoconstant' => [
+ 'callback' => 'CRM_Mailing_BAO_Mailing::getTemplateTypeNames',
+ ],
+ ],
+ 'template_options' => [
+ 'title' => ts('Template Options (JSON)'),
+ 'sql_type' => 'longtext',
+ 'input_type' => 'TextArea',
+ 'description' => ts('Advanced options used by the email templating system. (JSON encoded)'),
+ 'add' => '4.7',
+ 'serialize' => CRM_Core_DAO::SERIALIZE_JSON,
+ ],
+ 'subject' => [
+ 'title' => ts('Subject'),
+ 'sql_type' => 'varchar(128)',
+ 'input_type' => 'Text',
+ 'description' => ts('Subject of mailing'),
+ 'input_attrs' => [
+ 'label' => ts('Subject'),
+ 'maxlength' => 128,
+ ],
+ ],
+ 'body_text' => [
+ 'title' => ts('Body Text'),
+ 'sql_type' => 'longtext',
+ 'input_type' => 'TextArea',
+ 'description' => ts('Body of the mailing in text format.'),
+ 'input_attrs' => [
+ 'label' => ts('Body Text'),
+ ],
+ ],
+ 'body_html' => [
+ 'title' => ts('Body Html'),
+ 'sql_type' => 'longtext',
+ 'input_type' => 'TextArea',
+ 'description' => ts('Body of the mailing in html format.'),
+ 'input_attrs' => [
+ 'label' => ts('Body HTML'),
+ ],
+ ],
+ 'url_tracking' => [
+ 'title' => ts('Url Tracking'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('Should we track URL click-throughs for this mailing?'),
+ 'default' => FALSE,
+ 'input_attrs' => [
+ 'label' => ts('Url Tracking'),
+ ],
+ ],
+ 'forward_replies' => [
+ 'title' => ts('Forward Replies'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('Should we forward replies back to the author?'),
+ 'default' => FALSE,
+ 'input_attrs' => [
+ 'label' => ts('Forward Replies'),
+ ],
+ ],
+ 'auto_responder' => [
+ 'title' => ts('Auto Responder'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('Should we enable the auto-responder?'),
+ 'default' => FALSE,
+ 'input_attrs' => [
+ 'label' => ts('Auto Responder'),
+ ],
+ ],
+ 'open_tracking' => [
+ 'title' => ts('Track Mailing?'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('Should we track when recipients open/read this mailing?'),
+ 'default' => FALSE,
+ ],
+ 'is_completed' => [
+ 'title' => ts('Mailing Completed'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('Has at least one job associated with this mailing finished?'),
+ 'default' => FALSE,
+ ],
+ 'msg_template_id' => [
+ 'title' => ts('Message Template ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'description' => ts('FK to the message template.'),
+ 'input_attrs' => [
+ 'label' => ts('Message Template'),
+ ],
+ 'entity_reference' => [
+ 'entity' => 'MessageTemplate',
+ 'key' => 'id',
+ 'on_delete' => 'SET NULL',
+ ],
+ ],
+ 'override_verp' => [
+ 'title' => ts('Override Verp'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('Overwrite the VERP address in Reply-To'),
+ 'add' => '2.2',
+ 'default' => FALSE,
+ 'input_attrs' => [
+ 'label' => ts('Overwrite VERP'),
+ ],
+ ],
+ 'created_id' => [
+ 'title' => ts('Created By Contact ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'description' => ts('FK to Contact ID who first created this mailing'),
+ 'input_attrs' => [
+ 'label' => ts('Creator'),
+ ],
+ 'entity_reference' => [
+ 'entity' => 'Contact',
+ 'key' => 'id',
+ 'on_delete' => 'SET NULL',
+ ],
+ ],
+ 'created_date' => [
+ 'title' => ts('Mailing Created Date'),
+ 'sql_type' => 'timestamp',
+ 'input_type' => 'Select Date',
+ 'description' => ts('Date and time this mailing was created.'),
+ 'add' => '3.0',
+ 'default' => 'CURRENT_TIMESTAMP',
+ 'input_attrs' => [
+ 'label' => ts('Created Date'),
+ 'format_type' => 'activityDateTime',
+ ],
+ ],
+ 'modified_date' => [
+ 'title' => ts('Modified Date'),
+ 'sql_type' => 'timestamp',
+ 'input_type' => 'Select Date',
+ 'readonly' => TRUE,
+ 'description' => ts('When the mailing (or closely related entity) was created or modified or deleted.'),
+ 'add' => '4.7',
+ 'unique_name' => 'mailing_modified_date',
+ 'default' => 'CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP',
+ 'usage' => [
+ 'export',
+ ],
+ 'input_attrs' => [
+ 'label' => ts('Modified Date'),
+ ],
+ ],
+ 'scheduled_id' => [
+ 'title' => ts('Scheduled By Contact ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'description' => ts('FK to Contact ID who scheduled this mailing'),
+ 'input_attrs' => [
+ 'label' => ts('Scheduled By'),
+ ],
+ 'entity_reference' => [
+ 'entity' => 'Contact',
+ 'key' => 'id',
+ 'on_delete' => 'SET NULL',
+ ],
+ ],
+ 'scheduled_date' => [
+ 'title' => ts('Mailing Scheduled Date'),
+ 'sql_type' => 'timestamp',
+ 'input_type' => 'Select Date',
+ 'description' => ts('Date and time this mailing was scheduled.'),
+ 'add' => '3.3',
+ 'default' => NULL,
+ 'input_attrs' => [
+ 'label' => ts('Scheduled Date'),
+ 'format_type' => 'activityDateTime',
+ ],
+ ],
+ 'approver_id' => [
+ 'title' => ts('Approved By Contact ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'description' => ts('FK to Contact ID who approved this mailing'),
+ 'input_attrs' => [
+ 'label' => ts('Approved By'),
+ ],
+ 'entity_reference' => [
+ 'entity' => 'Contact',
+ 'key' => 'id',
+ 'on_delete' => 'SET NULL',
+ ],
+ ],
+ 'approval_date' => [
+ 'title' => ts('Mailing Approved Date'),
+ 'sql_type' => 'timestamp',
+ 'input_type' => 'Select Date',
+ 'description' => ts('Date and time this mailing was approved.'),
+ 'add' => '3.3',
+ 'default' => NULL,
+ 'input_attrs' => [
+ 'format_type' => 'activityDateTime',
+ ],
+ ],
+ 'approval_status_id' => [
+ 'title' => ts('Approval Status'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Select',
+ 'description' => ts('The status of this mailing. Values: none, approved, rejected'),
+ 'add' => '3.3',
+ 'pseudoconstant' => [
+ 'option_group_name' => 'mail_approval_status',
+ ],
+ ],
+ 'approval_note' => [
+ 'title' => ts('Approval Note'),
+ 'sql_type' => 'longtext',
+ 'input_type' => 'TextArea',
+ 'description' => ts('Note behind the decision.'),
+ 'add' => '3.3',
+ ],
+ 'is_archived' => [
+ 'title' => ts('Is Mailing Archived?'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('Is this mailing archived?'),
+ 'add' => '2.2',
+ 'default' => FALSE,
+ ],
+ 'visibility' => [
+ 'title' => ts('Mailing Visibility'),
+ 'sql_type' => 'varchar(40)',
+ 'input_type' => 'Select',
+ 'description' => ts('In what context(s) is the mailing contents visible (online viewing)'),
+ 'add' => '3.3',
+ 'default' => 'Public Pages',
+ 'input_attrs' => [
+ 'label' => ts('Visibility'),
+ 'maxlength' => 40,
+ ],
+ 'pseudoconstant' => [
+ 'callback' => 'CRM_Core_SelectValues::groupVisibility',
+ ],
+ ],
+ 'campaign_id' => [
+ 'title' => ts('Campaign ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'description' => ts('The campaign for which this mailing has been initiated.'),
+ 'add' => '3.4',
+ 'component' => 'CiviCampaign',
+ 'input_attrs' => [
+ 'label' => ts('Campaign'),
+ ],
+ 'pseudoconstant' => [
+ 'table' => 'civicrm_campaign',
+ 'key_column' => 'id',
+ 'label_column' => 'title',
+ 'prefetch' => 'disabled',
+ ],
+ 'entity_reference' => [
+ 'entity' => 'Campaign',
+ 'key' => 'id',
+ 'on_delete' => 'SET NULL',
+ ],
+ ],
+ 'dedupe_email' => [
+ 'title' => ts('No Duplicate emails?'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('Remove duplicate emails?'),
+ 'add' => '4.1',
+ 'default' => FALSE,
+ ],
+ 'sms_provider_id' => [
+ 'title' => ts('SMS Provider ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Select',
+ 'add' => '4.2',
+ 'input_attrs' => [
+ 'label' => ts('SMS Provider'),
+ ],
+ 'entity_reference' => [
+ 'entity' => 'SmsProvider',
+ 'key' => 'id',
+ 'on_delete' => 'SET NULL',
+ ],
+ ],
+ 'hash' => [
+ 'title' => ts('Mailing Hash'),
+ 'sql_type' => 'varchar(16)',
+ 'input_type' => NULL,
+ 'readonly' => TRUE,
+ 'description' => ts('Key for validating requests related to this mailing.'),
+ 'add' => '4.5',
+ 'input_attrs' => [
+ 'maxlength' => 16,
+ ],
+ ],
+ 'location_type_id' => [
+ 'title' => ts('Location Type ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'description' => ts('With email_selection_method, determines which email address to use'),
+ 'add' => '4.6',
+ 'input_attrs' => [
+ 'label' => ts('Location Type'),
+ ],
+ 'pseudoconstant' => [
+ 'table' => 'civicrm_location_type',
+ 'key_column' => 'id',
+ 'label_column' => 'display_name',
+ ],
+ 'entity_reference' => [
+ 'entity' => 'LocationType',
+ 'key' => 'id',
+ 'on_delete' => 'SET NULL',
+ ],
+ ],
+ 'email_selection_method' => [
+ 'title' => ts('Email Selection Method'),
+ 'sql_type' => 'varchar(20)',
+ 'input_type' => 'Select',
+ 'description' => ts('With location_type_id, determine how to choose the email address to use.'),
+ 'add' => '4.6',
+ 'default' => 'automatic',
+ 'input_attrs' => [
+ 'label' => ts('Email Selection Method'),
+ 'maxlength' => 20,
+ ],
+ 'pseudoconstant' => [
+ 'callback' => 'CRM_Core_SelectValues::emailSelectMethods',
+ ],
+ ],
+ 'language' => [
+ 'title' => ts('Mailing Language'),
+ 'sql_type' => 'varchar(5)',
+ 'input_type' => 'Select',
+ 'description' => ts('Language of the content of the mailing. Useful for tokens.'),
+ 'add' => '4.6',
+ 'input_attrs' => [
+ 'maxlength' => 5,
+ ],
+ 'pseudoconstant' => [
+ 'option_group_name' => 'languages',
+ 'key_column' => 'name',
+ ],
+ ],
+ ],
+];
diff --git a/www/modules/civicrm/schema/Mailing/MailingAB.entityType.php b/www/modules/civicrm/schema/Mailing/MailingAB.entityType.php
new file mode 100644
index 000000000..baf5b5de7
--- /dev/null
+++ b/www/modules/civicrm/schema/Mailing/MailingAB.entityType.php
@@ -0,0 +1,147 @@
+ 'MailingAB',
+ 'table' => 'civicrm_mailing_abtest',
+ 'class' => 'CRM_Mailing_DAO_MailingAB',
+ 'getInfo' => fn() => [
+ 'title' => ts('Mailing AB'),
+ 'title_plural' => ts('Mailing ABs'),
+ 'description' => ts('Stores information about abtesting'),
+ ],
+ 'getFields' => fn() => [
+ 'id' => [
+ 'title' => ts('MailingAB ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'required' => TRUE,
+ 'primary_key' => TRUE,
+ 'auto_increment' => TRUE,
+ ],
+ 'name' => [
+ 'title' => ts('Name'),
+ 'sql_type' => 'varchar(128)',
+ 'input_type' => 'Text',
+ 'description' => ts('Name of the A/B test'),
+ 'add' => '4.6',
+ 'input_attrs' => [
+ 'maxlength' => 128,
+ ],
+ ],
+ 'status' => [
+ 'title' => ts('Status'),
+ 'sql_type' => 'varchar(32)',
+ 'input_type' => 'Select',
+ 'description' => ts('Status'),
+ 'add' => '4.6',
+ 'input_attrs' => [
+ 'maxlength' => 32,
+ ],
+ 'pseudoconstant' => [
+ 'callback' => 'CRM_Mailing_PseudoConstant::abStatus',
+ ],
+ ],
+ 'mailing_id_a' => [
+ 'title' => ts('Mailing ID (A)'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'description' => ts('The first experimental mailing ("A" condition)'),
+ 'add' => '4.6',
+ ],
+ 'mailing_id_b' => [
+ 'title' => ts('Mailing ID (B)'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'description' => ts('The second experimental mailing ("B" condition)'),
+ 'add' => '4.6',
+ ],
+ 'mailing_id_c' => [
+ 'title' => ts('Mailing ID (C)'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'description' => ts('The final, general mailing (derived from A or B)'),
+ 'add' => '4.6',
+ ],
+ 'domain_id' => [
+ 'title' => ts('Domain ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'required' => TRUE,
+ 'description' => ts('Which site is this mailing for'),
+ 'add' => '4.6',
+ ],
+ 'testing_criteria' => [
+ 'title' => ts('Testing Criteria'),
+ 'sql_type' => 'varchar(32)',
+ 'input_type' => 'Select',
+ 'add' => '4.6',
+ 'input_attrs' => [
+ 'maxlength' => 32,
+ ],
+ 'pseudoconstant' => [
+ 'callback' => 'CRM_Mailing_PseudoConstant::abTestCriteria',
+ ],
+ ],
+ 'winner_criteria' => [
+ 'title' => ts('Winner Criteria'),
+ 'sql_type' => 'varchar(32)',
+ 'input_type' => 'Select',
+ 'add' => '4.6',
+ 'input_attrs' => [
+ 'maxlength' => 32,
+ ],
+ 'pseudoconstant' => [
+ 'callback' => 'CRM_Mailing_PseudoConstant::abWinnerCriteria',
+ ],
+ ],
+ 'specific_url' => [
+ 'title' => ts('URL for Winner Criteria'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'description' => ts('What specific url to track'),
+ 'add' => '4.6',
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'declare_winning_time' => [
+ 'title' => ts('Declaration Time'),
+ 'sql_type' => 'datetime',
+ 'input_type' => 'Select Date',
+ 'description' => ts('In how much time to declare winner'),
+ 'add' => '4.6',
+ ],
+ 'group_percentage' => [
+ 'title' => ts('Group Percentage'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'add' => '4.6',
+ ],
+ 'created_id' => [
+ 'title' => ts('Created By Contact ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'description' => ts('FK to Contact ID'),
+ 'add' => '4.6',
+ 'input_attrs' => [
+ 'label' => ts('Created By'),
+ ],
+ 'entity_reference' => [
+ 'entity' => 'Contact',
+ 'key' => 'id',
+ 'on_delete' => 'SET NULL',
+ ],
+ ],
+ 'created_date' => [
+ 'title' => ts('AB Test Created Date'),
+ 'sql_type' => 'timestamp',
+ 'input_type' => 'Select Date',
+ 'description' => ts('When was this item created'),
+ 'add' => '4.6',
+ 'default' => 'CURRENT_TIMESTAMP',
+ 'input_attrs' => [
+ 'format_type' => 'mailing',
+ ],
+ ],
+ ],
+];
diff --git a/www/modules/civicrm/schema/Mailing/MailingComponent.entityType.php b/www/modules/civicrm/schema/Mailing/MailingComponent.entityType.php
new file mode 100644
index 000000000..50e72d62f
--- /dev/null
+++ b/www/modules/civicrm/schema/Mailing/MailingComponent.entityType.php
@@ -0,0 +1,100 @@
+ 'MailingComponent',
+ 'table' => 'civicrm_mailing_component',
+ 'class' => 'CRM_Mailing_DAO_MailingComponent',
+ 'getInfo' => fn() => [
+ 'title' => ts('Mailing Component'),
+ 'title_plural' => ts('Mailing Components'),
+ 'description' => ts('Stores information about the mailing components (header/footer).'),
+ ],
+ 'getPaths' => fn() => [
+ 'add' => 'civicrm/admin/component/edit?action=add&reset=1',
+ 'update' => 'civicrm/admin/component/edit?action=update&id=[id]&reset=1',
+ 'browse' => 'civicrm/admin/component?action=browse&id=[id]&reset=1',
+ ],
+ 'getFields' => fn() => [
+ 'id' => [
+ 'title' => ts('Mailing Component ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'required' => TRUE,
+ 'primary_key' => TRUE,
+ 'auto_increment' => TRUE,
+ ],
+ 'name' => [
+ 'title' => ts('Component Name'),
+ 'sql_type' => 'varchar(64)',
+ 'input_type' => 'Text',
+ 'description' => ts('The name of this component'),
+ 'input_attrs' => [
+ 'maxlength' => 64,
+ ],
+ ],
+ 'component_type' => [
+ 'title' => ts('Mailing Component Type'),
+ 'sql_type' => 'varchar(12)',
+ 'input_type' => 'Select',
+ 'description' => ts('Type of Component.'),
+ 'input_attrs' => [
+ 'maxlength' => 12,
+ ],
+ 'pseudoconstant' => [
+ 'callback' => 'CRM_Core_SelectValues::mailingComponents',
+ ],
+ ],
+ 'subject' => [
+ 'title' => ts('Subject'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'input_attrs' => [
+ 'label' => ts('Subject'),
+ 'maxlength' => 255,
+ ],
+ ],
+ 'body_html' => [
+ 'title' => ts('Mailing Component Body HTML'),
+ 'sql_type' => 'text',
+ 'input_type' => 'TextArea',
+ 'description' => ts('Body of the component in html format.'),
+ 'input_attrs' => [
+ 'rows' => 8,
+ 'cols' => 80,
+ ],
+ ],
+ 'body_text' => [
+ 'title' => ts('Body Text'),
+ 'sql_type' => 'text',
+ 'input_type' => 'TextArea',
+ 'description' => ts('Body of the component in text format.'),
+ 'input_attrs' => [
+ 'rows' => 8,
+ 'cols' => 80,
+ 'label' => ts('Body in Text Format'),
+ ],
+ ],
+ 'is_default' => [
+ 'title' => ts('Mailing Component is Default?'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('Is this the default component for this component_type?'),
+ 'default' => FALSE,
+ 'input_attrs' => [
+ 'label' => ts('Default'),
+ ],
+ ],
+ 'is_active' => [
+ 'title' => ts('Mailing Component Is Active?'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('Is this property active?'),
+ 'default' => TRUE,
+ 'input_attrs' => [
+ 'label' => ts('Enabled'),
+ ],
+ ],
+ ],
+];
diff --git a/www/modules/civicrm/schema/Mailing/MailingEventBounce.entityType.php b/www/modules/civicrm/schema/Mailing/MailingEventBounce.entityType.php
new file mode 100644
index 000000000..b0a781233
--- /dev/null
+++ b/www/modules/civicrm/schema/Mailing/MailingEventBounce.entityType.php
@@ -0,0 +1,71 @@
+ 'MailingEventBounce',
+ 'table' => 'civicrm_mailing_event_bounce',
+ 'class' => 'CRM_Mailing_Event_DAO_MailingEventBounce',
+ 'getInfo' => fn() => [
+ 'title' => ts('Mailing Bounce'),
+ 'title_plural' => ts('Mailing Bounces'),
+ 'description' => ts('Mailings that failed to reach the inbox of the recipient.'),
+ ],
+ 'getFields' => fn() => [
+ 'id' => [
+ 'title' => ts('Bounce ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'required' => TRUE,
+ 'input_attrs' => [
+ 'label' => ts('ID'),
+ ],
+ 'primary_key' => TRUE,
+ 'auto_increment' => TRUE,
+ ],
+ 'event_queue_id' => [
+ 'title' => ts('Event Queue ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'required' => TRUE,
+ 'description' => ts('FK to EventQueue'),
+ 'input_attrs' => [
+ 'label' => ts('Recipient'),
+ ],
+ 'entity_reference' => [
+ 'entity' => 'MailingEventQueue',
+ 'key' => 'id',
+ 'on_delete' => 'CASCADE',
+ ],
+ ],
+ 'bounce_type_id' => [
+ 'title' => ts('Bounce Type ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Select',
+ 'description' => ts('What type of bounce was it?'),
+ 'input_attrs' => [
+ 'label' => ts('Bounce Type'),
+ ],
+ 'pseudoconstant' => [
+ 'table' => 'civicrm_mailing_bounce_type',
+ 'key_column' => 'id',
+ 'label_column' => 'name',
+ ],
+ ],
+ 'bounce_reason' => [
+ 'title' => ts('Bounce Reason'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'description' => ts('The reason the email bounced.'),
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'time_stamp' => [
+ 'title' => ts('Timestamp'),
+ 'sql_type' => 'timestamp',
+ 'input_type' => NULL,
+ 'required' => TRUE,
+ 'description' => ts('When this bounce event occurred.'),
+ 'default' => 'CURRENT_TIMESTAMP',
+ ],
+ ],
+];
diff --git a/www/modules/civicrm/schema/Mailing/MailingEventConfirm.entityType.php b/www/modules/civicrm/schema/Mailing/MailingEventConfirm.entityType.php
new file mode 100644
index 000000000..7cbf7e495
--- /dev/null
+++ b/www/modules/civicrm/schema/Mailing/MailingEventConfirm.entityType.php
@@ -0,0 +1,48 @@
+ 'MailingEventConfirm',
+ 'table' => 'civicrm_mailing_event_confirm',
+ 'class' => 'CRM_Mailing_Event_DAO_MailingEventConfirm',
+ 'getInfo' => fn() => [
+ 'title' => ts('Mailing Opt-In Confirmation'),
+ 'title_plural' => ts('Mailing Opt-In Confirmations'),
+ 'description' => ts('Tracks when a subscription event is confirmed by email'),
+ ],
+ 'getFields' => fn() => [
+ 'id' => [
+ 'title' => ts('Mailing Confirmation ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'required' => TRUE,
+ 'input_attrs' => [
+ 'label' => ts('ID'),
+ ],
+ 'primary_key' => TRUE,
+ 'auto_increment' => TRUE,
+ ],
+ 'event_subscribe_id' => [
+ 'title' => ts('Mailing Subscribe ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'required' => TRUE,
+ 'description' => ts('FK to civicrm_mailing_event_subscribe'),
+ 'input_attrs' => [
+ 'label' => ts('Mailing Subscribe'),
+ ],
+ 'entity_reference' => [
+ 'entity' => 'MailingEventSubscribe',
+ 'key' => 'id',
+ 'on_delete' => 'CASCADE',
+ ],
+ ],
+ 'time_stamp' => [
+ 'title' => ts('Confirm Timestamp'),
+ 'sql_type' => 'timestamp',
+ 'input_type' => NULL,
+ 'required' => TRUE,
+ 'description' => ts('When this confirmation event occurred.'),
+ 'default' => 'CURRENT_TIMESTAMP',
+ ],
+ ],
+];
diff --git a/www/modules/civicrm/schema/Mailing/MailingEventDelivered.entityType.php b/www/modules/civicrm/schema/Mailing/MailingEventDelivered.entityType.php
new file mode 100644
index 000000000..0efa7fbc9
--- /dev/null
+++ b/www/modules/civicrm/schema/Mailing/MailingEventDelivered.entityType.php
@@ -0,0 +1,48 @@
+ 'MailingEventDelivered',
+ 'table' => 'civicrm_mailing_event_delivered',
+ 'class' => 'CRM_Mailing_Event_DAO_MailingEventDelivered',
+ 'getInfo' => fn() => [
+ 'title' => ts('Mailing Delivery'),
+ 'title_plural' => ts('Mailing Deliveries'),
+ 'description' => ts('Tracks when a queued email is actually delivered to the MTA'),
+ ],
+ 'getFields' => fn() => [
+ 'id' => [
+ 'title' => ts('Delivered ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'required' => TRUE,
+ 'input_attrs' => [
+ 'label' => ts('ID'),
+ ],
+ 'primary_key' => TRUE,
+ 'auto_increment' => TRUE,
+ ],
+ 'event_queue_id' => [
+ 'title' => ts('Event Queue ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'required' => TRUE,
+ 'description' => ts('FK to EventQueue'),
+ 'input_attrs' => [
+ 'label' => ts('Recipient'),
+ ],
+ 'entity_reference' => [
+ 'entity' => 'MailingEventQueue',
+ 'key' => 'id',
+ 'on_delete' => 'CASCADE',
+ ],
+ ],
+ 'time_stamp' => [
+ 'title' => ts('Timestamp'),
+ 'sql_type' => 'timestamp',
+ 'input_type' => NULL,
+ 'required' => TRUE,
+ 'description' => ts('When this delivery event occurred.'),
+ 'default' => 'CURRENT_TIMESTAMP',
+ ],
+ ],
+];
diff --git a/www/modules/civicrm/schema/Mailing/MailingEventForward.entityType.php b/www/modules/civicrm/schema/Mailing/MailingEventForward.entityType.php
new file mode 100644
index 000000000..4835dfd0e
--- /dev/null
+++ b/www/modules/civicrm/schema/Mailing/MailingEventForward.entityType.php
@@ -0,0 +1,62 @@
+ 'MailingEventForward',
+ 'table' => 'civicrm_mailing_event_forward',
+ 'class' => 'CRM_Mailing_Event_DAO_MailingEventForward',
+ 'getInfo' => fn() => [
+ 'title' => ts('Mailing Forward'),
+ 'title_plural' => ts('Mailing Forwards'),
+ 'description' => ts('Tracks when a contact forwards a mailing to a (new) contact'),
+ ],
+ 'getFields' => fn() => [
+ 'id' => [
+ 'title' => ts('Forward ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'required' => TRUE,
+ 'input_attrs' => [
+ 'label' => ts('ID'),
+ ],
+ 'primary_key' => TRUE,
+ 'auto_increment' => TRUE,
+ ],
+ 'event_queue_id' => [
+ 'title' => ts('Event Queue ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'required' => TRUE,
+ 'description' => ts('FK to EventQueue'),
+ 'input_attrs' => [
+ 'label' => ts('Recipient'),
+ ],
+ 'entity_reference' => [
+ 'entity' => 'MailingEventQueue',
+ 'key' => 'id',
+ 'on_delete' => 'CASCADE',
+ ],
+ ],
+ 'dest_queue_id' => [
+ 'title' => ts('Destination Queue ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'description' => ts('FK to EventQueue for destination'),
+ 'input_attrs' => [
+ 'label' => ts('Destination Queue'),
+ ],
+ 'entity_reference' => [
+ 'entity' => 'MailingEventQueue',
+ 'key' => 'id',
+ 'on_delete' => 'SET NULL',
+ ],
+ ],
+ 'time_stamp' => [
+ 'title' => ts('Timestamp'),
+ 'sql_type' => 'timestamp',
+ 'input_type' => NULL,
+ 'required' => TRUE,
+ 'description' => ts('When this forward event occurred.'),
+ 'default' => 'CURRENT_TIMESTAMP',
+ ],
+ ],
+];
diff --git a/www/modules/civicrm/schema/Mailing/MailingEventOpened.entityType.php b/www/modules/civicrm/schema/Mailing/MailingEventOpened.entityType.php
new file mode 100644
index 000000000..00dc3a777
--- /dev/null
+++ b/www/modules/civicrm/schema/Mailing/MailingEventOpened.entityType.php
@@ -0,0 +1,48 @@
+ 'MailingEventOpened',
+ 'table' => 'civicrm_mailing_event_opened',
+ 'class' => 'CRM_Mailing_Event_DAO_MailingEventOpened',
+ 'getInfo' => fn() => [
+ 'title' => ts('Mailing Opened'),
+ 'title_plural' => ts('Mailings Opened'),
+ 'description' => ts('Tracks when a delivered email is opened by the recipient'),
+ ],
+ 'getFields' => fn() => [
+ 'id' => [
+ 'title' => ts('Mailing Opened ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'required' => TRUE,
+ 'input_attrs' => [
+ 'label' => ts('ID'),
+ ],
+ 'primary_key' => TRUE,
+ 'auto_increment' => TRUE,
+ ],
+ 'event_queue_id' => [
+ 'title' => ts('Event Queue ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'required' => TRUE,
+ 'description' => ts('FK to EventQueue'),
+ 'input_attrs' => [
+ 'label' => ts('Recipient'),
+ ],
+ 'entity_reference' => [
+ 'entity' => 'MailingEventQueue',
+ 'key' => 'id',
+ 'on_delete' => 'CASCADE',
+ ],
+ ],
+ 'time_stamp' => [
+ 'title' => ts('Timestamp'),
+ 'sql_type' => 'timestamp',
+ 'input_type' => NULL,
+ 'required' => TRUE,
+ 'description' => ts('When this open event occurred.'),
+ 'default' => 'CURRENT_TIMESTAMP',
+ ],
+ ],
+];
diff --git a/www/modules/civicrm/schema/Mailing/MailingEventQueue.entityType.php b/www/modules/civicrm/schema/Mailing/MailingEventQueue.entityType.php
new file mode 100644
index 000000000..fcd4edfc2
--- /dev/null
+++ b/www/modules/civicrm/schema/Mailing/MailingEventQueue.entityType.php
@@ -0,0 +1,126 @@
+ 'MailingEventQueue',
+ 'table' => 'civicrm_mailing_event_queue',
+ 'class' => 'CRM_Mailing_Event_DAO_MailingEventQueue',
+ 'getInfo' => fn() => [
+ 'title' => ts('Mailing Recipient'),
+ 'title_plural' => ts('Mailing Recipients'),
+ 'description' => ts('Intended recipients of a mailing.'),
+ ],
+ 'getIndices' => fn() => [
+ 'index_hash' => [
+ 'fields' => [
+ 'hash' => TRUE,
+ ],
+ 'add' => '4.7',
+ ],
+ ],
+ 'getFields' => fn() => [
+ 'id' => [
+ 'title' => ts('Mailing Event Queue ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'required' => TRUE,
+ 'input_attrs' => [
+ 'label' => ts('ID'),
+ ],
+ 'primary_key' => TRUE,
+ 'auto_increment' => TRUE,
+ ],
+ 'job_id' => [
+ 'title' => ts('Job ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'description' => ts('Mailing Job'),
+ 'input_attrs' => [
+ 'label' => ts('Outbound Mailing'),
+ ],
+ 'entity_reference' => [
+ 'entity' => 'MailingJob',
+ 'key' => 'id',
+ 'on_delete' => 'SET NULL',
+ ],
+ ],
+ 'mailing_id' => [
+ 'title' => ts('Mailing ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'description' => ts('Related mailing. Used for reporting on mailing success, if present.'),
+ 'add' => '5.67',
+ 'input_attrs' => [
+ 'label' => ts('Mailing'),
+ ],
+ 'entity_reference' => [
+ 'entity' => 'Mailing',
+ 'key' => 'id',
+ 'on_delete' => 'SET NULL',
+ ],
+ ],
+ 'is_test' => [
+ 'title' => ts('Test'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'readonly' => TRUE,
+ 'add' => '5.67',
+ 'default' => FALSE,
+ ],
+ 'email_id' => [
+ 'title' => ts('Email ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'description' => ts('FK to Email'),
+ 'default' => NULL,
+ 'input_attrs' => [
+ 'label' => ts('Email'),
+ ],
+ 'entity_reference' => [
+ 'entity' => 'Email',
+ 'key' => 'id',
+ 'on_delete' => 'SET NULL',
+ ],
+ ],
+ 'contact_id' => [
+ 'title' => ts('Contact ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'required' => TRUE,
+ 'description' => ts('FK to Contact'),
+ 'input_attrs' => [
+ 'label' => ts('Contact'),
+ ],
+ 'entity_reference' => [
+ 'entity' => 'Contact',
+ 'key' => 'id',
+ 'on_delete' => 'CASCADE',
+ ],
+ ],
+ 'hash' => [
+ 'title' => ts('Security Hash'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'required' => TRUE,
+ 'description' => ts('Security hash'),
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'phone_id' => [
+ 'title' => ts('Phone ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'description' => ts('FK to Phone'),
+ 'default' => NULL,
+ 'input_attrs' => [
+ 'label' => ts('Phone'),
+ ],
+ 'entity_reference' => [
+ 'entity' => 'Phone',
+ 'key' => 'id',
+ 'on_delete' => 'SET NULL',
+ ],
+ ],
+ ],
+];
diff --git a/www/modules/civicrm/schema/Mailing/MailingEventReply.entityType.php b/www/modules/civicrm/schema/Mailing/MailingEventReply.entityType.php
new file mode 100644
index 000000000..52605cc06
--- /dev/null
+++ b/www/modules/civicrm/schema/Mailing/MailingEventReply.entityType.php
@@ -0,0 +1,48 @@
+ 'MailingEventReply',
+ 'table' => 'civicrm_mailing_event_reply',
+ 'class' => 'CRM_Mailing_Event_DAO_MailingEventReply',
+ 'getInfo' => fn() => [
+ 'title' => ts('Mailing Reply'),
+ 'title_plural' => ts('Mailing Replies'),
+ 'description' => ts('Tracks when a contact replies to a mailing'),
+ ],
+ 'getFields' => fn() => [
+ 'id' => [
+ 'title' => ts('Reply ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'required' => TRUE,
+ 'input_attrs' => [
+ 'label' => ts('ID'),
+ ],
+ 'primary_key' => TRUE,
+ 'auto_increment' => TRUE,
+ ],
+ 'event_queue_id' => [
+ 'title' => ts('Event Queue ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'required' => TRUE,
+ 'description' => ts('FK to EventQueue'),
+ 'input_attrs' => [
+ 'label' => ts('Recipient'),
+ ],
+ 'entity_reference' => [
+ 'entity' => 'MailingEventQueue',
+ 'key' => 'id',
+ 'on_delete' => 'CASCADE',
+ ],
+ ],
+ 'time_stamp' => [
+ 'title' => ts('Reply Timestamp'),
+ 'sql_type' => 'timestamp',
+ 'input_type' => NULL,
+ 'required' => TRUE,
+ 'description' => ts('When this reply event occurred.'),
+ 'default' => 'CURRENT_TIMESTAMP',
+ ],
+ ],
+];
diff --git a/www/modules/civicrm/schema/Mailing/MailingEventSubscribe.entityType.php b/www/modules/civicrm/schema/Mailing/MailingEventSubscribe.entityType.php
new file mode 100644
index 000000000..407a87cfd
--- /dev/null
+++ b/www/modules/civicrm/schema/Mailing/MailingEventSubscribe.entityType.php
@@ -0,0 +1,78 @@
+ 'MailingEventSubscribe',
+ 'table' => 'civicrm_mailing_event_subscribe',
+ 'class' => 'CRM_Mailing_Event_DAO_MailingEventSubscribe',
+ 'getInfo' => fn() => [
+ 'title' => ts('Mailing Opt-In'),
+ 'title_plural' => ts('Mailing Opt-Ins'),
+ 'description' => ts('Tracks when a (new) contact subscribes to a group by email'),
+ ],
+ 'getFields' => fn() => [
+ 'id' => [
+ 'title' => ts('Mailing Subscribe ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'required' => TRUE,
+ 'input_attrs' => [
+ 'label' => ts('ID'),
+ ],
+ 'primary_key' => TRUE,
+ 'auto_increment' => TRUE,
+ ],
+ 'group_id' => [
+ 'title' => ts('Group ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Select',
+ 'required' => TRUE,
+ 'description' => ts('FK to Group'),
+ 'input_attrs' => [
+ 'label' => ts('Group'),
+ ],
+ 'pseudoconstant' => [
+ 'table' => 'civicrm_group',
+ 'key_column' => 'id',
+ 'label_column' => 'title',
+ ],
+ 'entity_reference' => [
+ 'entity' => 'Group',
+ 'key' => 'id',
+ 'on_delete' => 'CASCADE',
+ ],
+ ],
+ 'contact_id' => [
+ 'title' => ts('Contact ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'required' => TRUE,
+ 'description' => ts('FK to Contact'),
+ 'input_attrs' => [
+ 'label' => ts('Contact'),
+ ],
+ 'entity_reference' => [
+ 'entity' => 'Contact',
+ 'key' => 'id',
+ 'on_delete' => 'CASCADE',
+ ],
+ ],
+ 'hash' => [
+ 'title' => ts('Mailing Subscribe Hash'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'required' => TRUE,
+ 'description' => ts('Security hash'),
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'time_stamp' => [
+ 'title' => ts('Mailing Subscribe Timestamp'),
+ 'sql_type' => 'timestamp',
+ 'input_type' => NULL,
+ 'required' => TRUE,
+ 'description' => ts('When this subscription event occurred.'),
+ 'default' => 'CURRENT_TIMESTAMP',
+ ],
+ ],
+];
diff --git a/www/modules/civicrm/schema/Mailing/MailingEventTrackableURLOpen.entityType.php b/www/modules/civicrm/schema/Mailing/MailingEventTrackableURLOpen.entityType.php
new file mode 100644
index 000000000..c8b28022e
--- /dev/null
+++ b/www/modules/civicrm/schema/Mailing/MailingEventTrackableURLOpen.entityType.php
@@ -0,0 +1,66 @@
+ 'MailingEventTrackableURLOpen',
+ 'table' => 'civicrm_mailing_event_trackable_url_open',
+ 'class' => 'CRM_Mailing_Event_DAO_MailingEventTrackableURLOpen',
+ 'getInfo' => fn() => [
+ 'title' => ts('Mailing Link Clickthrough'),
+ 'title_plural' => ts('Mailing Link Clickthroughs'),
+ 'description' => ts('Tracks when a TrackableURL is clicked by a recipient.'),
+ ],
+ 'getFields' => fn() => [
+ 'id' => [
+ 'title' => ts('Trackable URL Open ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'required' => TRUE,
+ 'input_attrs' => [
+ 'label' => ts('ID'),
+ ],
+ 'primary_key' => TRUE,
+ 'auto_increment' => TRUE,
+ ],
+ 'event_queue_id' => [
+ 'title' => ts('Event Queue ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'required' => TRUE,
+ 'description' => ts('FK to EventQueue'),
+ 'input_attrs' => [
+ 'label' => ts('Recipient'),
+ ],
+ 'entity_reference' => [
+ 'entity' => 'MailingEventQueue',
+ 'key' => 'id',
+ 'on_delete' => 'CASCADE',
+ ],
+ ],
+ 'trackable_url_id' => [
+ 'title' => ts('Trackable Url ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'required' => TRUE,
+ 'description' => ts('FK to TrackableURL'),
+ 'input_attrs' => [
+ 'label' => ts('Mailing Link'),
+ ],
+ 'entity_reference' => [
+ 'entity' => 'MailingTrackableURL',
+ 'key' => 'id',
+ 'on_delete' => 'CASCADE',
+ ],
+ ],
+ 'time_stamp' => [
+ 'title' => ts('Timestamp'),
+ 'sql_type' => 'timestamp',
+ 'input_type' => 'Date',
+ 'required' => TRUE,
+ 'description' => ts('When this trackable URL open occurred.'),
+ 'default' => 'CURRENT_TIMESTAMP',
+ 'input_attrs' => [
+ 'label' => ts('Opened Date'),
+ ],
+ ],
+ ],
+];
diff --git a/www/modules/civicrm/schema/Mailing/MailingEventUnsubscribe.entityType.php b/www/modules/civicrm/schema/Mailing/MailingEventUnsubscribe.entityType.php
new file mode 100644
index 000000000..b43a4018b
--- /dev/null
+++ b/www/modules/civicrm/schema/Mailing/MailingEventUnsubscribe.entityType.php
@@ -0,0 +1,55 @@
+ 'MailingEventUnsubscribe',
+ 'table' => 'civicrm_mailing_event_unsubscribe',
+ 'class' => 'CRM_Mailing_Event_DAO_MailingEventUnsubscribe',
+ 'getInfo' => fn() => [
+ 'title' => ts('Mailing Unsubscribe'),
+ 'title_plural' => ts('Mailing Unsubscribes'),
+ 'description' => ts('Tracks when a recipient unsubscribes from a group/domain'),
+ ],
+ 'getFields' => fn() => [
+ 'id' => [
+ 'title' => ts('Unsubscribe ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'required' => TRUE,
+ 'input_attrs' => [
+ 'label' => ts('ID'),
+ ],
+ 'primary_key' => TRUE,
+ 'auto_increment' => TRUE,
+ ],
+ 'event_queue_id' => [
+ 'title' => ts('Event Queue ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'required' => TRUE,
+ 'description' => ts('FK to EventQueue'),
+ 'input_attrs' => [
+ 'label' => ts('Recipient'),
+ ],
+ 'entity_reference' => [
+ 'entity' => 'MailingEventQueue',
+ 'key' => 'id',
+ 'on_delete' => 'CASCADE',
+ ],
+ ],
+ 'org_unsubscribe' => [
+ 'title' => ts('Unsubscribe is for Organization?'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('Unsubscribe at org- or group-level'),
+ ],
+ 'time_stamp' => [
+ 'title' => ts('Unsubscribe Timestamp'),
+ 'sql_type' => 'timestamp',
+ 'input_type' => NULL,
+ 'required' => TRUE,
+ 'description' => ts('When this delivery event occurred.'),
+ 'default' => 'CURRENT_TIMESTAMP',
+ ],
+ ],
+];
diff --git a/www/modules/civicrm/schema/Mailing/MailingGroup.entityType.php b/www/modules/civicrm/schema/Mailing/MailingGroup.entityType.php
new file mode 100644
index 000000000..a1b3fb046
--- /dev/null
+++ b/www/modules/civicrm/schema/Mailing/MailingGroup.entityType.php
@@ -0,0 +1,85 @@
+ 'MailingGroup',
+ 'table' => 'civicrm_mailing_group',
+ 'class' => 'CRM_Mailing_DAO_MailingGroup',
+ 'getInfo' => fn() => [
+ 'title' => ts('Mailing Group'),
+ 'title_plural' => ts('Mailing Groups'),
+ 'description' => ts('Stores information about the groups that participate in this mailing..'),
+ ],
+ 'getFields' => fn() => [
+ 'id' => [
+ 'title' => ts('Mailing Group ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'required' => TRUE,
+ 'primary_key' => TRUE,
+ 'auto_increment' => TRUE,
+ ],
+ 'mailing_id' => [
+ 'title' => ts('Mailing ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'required' => TRUE,
+ 'description' => ts('The ID of a previous mailing to include/exclude recipients.'),
+ 'input_attrs' => [
+ 'label' => ts('Mailing'),
+ ],
+ 'entity_reference' => [
+ 'entity' => 'Mailing',
+ 'key' => 'id',
+ 'on_delete' => 'CASCADE',
+ ],
+ ],
+ 'group_type' => [
+ 'title' => ts('Mailing Group Type'),
+ 'sql_type' => 'varchar(8)',
+ 'input_type' => 'Select',
+ 'description' => ts('Are the members of the group included or excluded?.'),
+ 'input_attrs' => [
+ 'maxlength' => 8,
+ ],
+ 'pseudoconstant' => [
+ 'callback' => 'CRM_Core_SelectValues::getMailingGroupTypes',
+ ],
+ ],
+ 'entity_table' => [
+ 'title' => ts('Mailing Group Entity Table'),
+ 'sql_type' => 'varchar(64)',
+ 'input_type' => 'Select',
+ 'required' => TRUE,
+ 'description' => ts('Name of table where item being referenced is stored.'),
+ 'input_attrs' => [
+ 'maxlength' => 64,
+ ],
+ 'pseudoconstant' => [
+ 'callback' => 'CRM_Mailing_BAO_Mailing::mailingGroupEntityTables',
+ ],
+ ],
+ 'entity_id' => [
+ 'title' => ts('Mailing Group Entity'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'required' => TRUE,
+ 'description' => ts('Foreign key to the referenced item.'),
+ 'entity_reference' => [
+ 'dynamic_entity' => 'entity_table',
+ 'key' => 'id',
+ ],
+ ],
+ 'search_id' => [
+ 'title' => ts('Mailing Group Search'),
+ 'sql_type' => 'int',
+ 'input_type' => 'Number',
+ 'description' => ts('The filtering search. custom search id or -1 for civicrm api search'),
+ ],
+ 'search_args' => [
+ 'title' => ts('Mailing Group Search Arguments'),
+ 'sql_type' => 'text',
+ 'input_type' => 'TextArea',
+ 'description' => ts('The arguments to be sent to the search function'),
+ ],
+ ],
+];
diff --git a/www/modules/civicrm/schema/Mailing/MailingJob.entityType.php b/www/modules/civicrm/schema/Mailing/MailingJob.entityType.php
new file mode 100644
index 000000000..2d2cf0bb4
--- /dev/null
+++ b/www/modules/civicrm/schema/Mailing/MailingJob.entityType.php
@@ -0,0 +1,143 @@
+ 'MailingJob',
+ 'table' => 'civicrm_mailing_job',
+ 'class' => 'CRM_Mailing_DAO_MailingJob',
+ 'getInfo' => fn() => [
+ 'title' => ts('Outbound Mailing'),
+ 'title_plural' => ts('Outbound Mailings'),
+ 'description' => ts('Attempted delivery of a mailing.'),
+ ],
+ 'getFields' => fn() => [
+ 'id' => [
+ 'title' => ts('Mailing Job ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'required' => TRUE,
+ 'input_attrs' => [
+ 'label' => ts('ID'),
+ ],
+ 'primary_key' => TRUE,
+ 'auto_increment' => TRUE,
+ ],
+ 'mailing_id' => [
+ 'title' => ts('Mailing ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'required' => TRUE,
+ 'description' => ts('The ID of the mailing this Job will send.'),
+ 'input_attrs' => [
+ 'label' => ts('Mailing'),
+ ],
+ 'entity_reference' => [
+ 'entity' => 'Mailing',
+ 'key' => 'id',
+ 'on_delete' => 'CASCADE',
+ ],
+ ],
+ 'scheduled_date' => [
+ 'title' => ts('Mailing Scheduled Date'),
+ 'sql_type' => 'timestamp',
+ 'input_type' => 'Select Date',
+ 'description' => ts('date on which this job was scheduled.'),
+ 'default' => NULL,
+ 'input_attrs' => [
+ 'format_type' => 'activityDateTime',
+ ],
+ ],
+ 'start_date' => [
+ 'title' => ts('Mailing Job Start Date'),
+ 'sql_type' => 'timestamp',
+ 'input_type' => 'Select Date',
+ 'description' => ts('date on which this job was started.'),
+ 'unique_name' => 'mailing_job_start_date',
+ 'unique_title' => 'Mailing Start Date',
+ 'default' => NULL,
+ 'input_attrs' => [
+ 'format_type' => 'activityDateTime',
+ ],
+ ],
+ 'end_date' => [
+ 'title' => ts('Mailing Job End Date'),
+ 'sql_type' => 'timestamp',
+ 'input_type' => 'Select Date',
+ 'description' => ts('date on which this job ended.'),
+ 'default' => NULL,
+ 'input_attrs' => [
+ 'format_type' => 'activityDateTime',
+ ],
+ ],
+ 'status' => [
+ 'title' => ts('Mailing Job Status'),
+ 'sql_type' => 'varchar(12)',
+ 'input_type' => 'Select',
+ 'description' => ts('The state of this job'),
+ 'unique_name' => 'mailing_job_status',
+ 'input_attrs' => [
+ 'label' => ts('Status'),
+ 'maxlength' => 12,
+ ],
+ 'pseudoconstant' => [
+ 'callback' => 'CRM_Core_SelectValues::getMailingJobStatus',
+ ],
+ ],
+ 'is_test' => [
+ 'title' => ts('Mailing Job Is Test?'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('Is this job for a test mail?'),
+ 'add' => '1.9',
+ 'default' => FALSE,
+ 'input_attrs' => [
+ 'label' => ts('Test Mailing'),
+ ],
+ ],
+ 'job_type' => [
+ 'title' => ts('Mailing Job Type'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'description' => ts('Type of mailling job: null | child'),
+ 'add' => '3.3',
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'parent_id' => [
+ 'title' => ts('Parent ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'description' => ts('Parent job id'),
+ 'add' => '3.3',
+ 'default' => NULL,
+ 'input_attrs' => [
+ 'label' => ts('Parent'),
+ ],
+ 'entity_reference' => [
+ 'entity' => 'MailingJob',
+ 'key' => 'id',
+ 'on_delete' => 'CASCADE',
+ ],
+ ],
+ 'job_offset' => [
+ 'title' => ts('Mailing Job Offset'),
+ 'sql_type' => 'int',
+ 'input_type' => 'Number',
+ 'description' => ts('Offset of the child job'),
+ 'add' => '3.3',
+ 'default' => 0,
+ ],
+ 'job_limit' => [
+ 'title' => ts('Mailing Job Limit'),
+ 'sql_type' => 'int',
+ 'input_type' => 'Number',
+ 'description' => ts('Queue size limit for each child job'),
+ 'add' => '3.3',
+ 'default' => 0,
+ 'input_attrs' => [
+ 'label' => ts('Batch Limit'),
+ ],
+ ],
+ ],
+];
diff --git a/www/modules/civicrm/schema/Mailing/MailingRecipients.entityType.php b/www/modules/civicrm/schema/Mailing/MailingRecipients.entityType.php
new file mode 100644
index 000000000..5f9cd4c65
--- /dev/null
+++ b/www/modules/civicrm/schema/Mailing/MailingRecipients.entityType.php
@@ -0,0 +1,82 @@
+ 'MailingRecipients',
+ 'table' => 'civicrm_mailing_recipients',
+ 'class' => 'CRM_Mailing_DAO_MailingRecipients',
+ 'getInfo' => fn() => [
+ 'title' => ts('Mailing Recipient'),
+ 'title_plural' => ts('Mailing Recipients'),
+ 'description' => ts('Stores information about the recipients of a mailing.'),
+ ],
+ 'getFields' => fn() => [
+ 'id' => [
+ 'title' => ts('Mailing Recipients ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'required' => TRUE,
+ 'primary_key' => TRUE,
+ 'auto_increment' => TRUE,
+ ],
+ 'mailing_id' => [
+ 'title' => ts('Mailing ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'required' => TRUE,
+ 'description' => ts('The ID of the mailing this Job will send.'),
+ 'input_attrs' => [
+ 'label' => ts('Mailing'),
+ ],
+ 'entity_reference' => [
+ 'entity' => 'Mailing',
+ 'key' => 'id',
+ 'on_delete' => 'CASCADE',
+ ],
+ ],
+ 'contact_id' => [
+ 'title' => ts('Recipient ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'required' => TRUE,
+ 'description' => ts('FK to Contact'),
+ 'input_attrs' => [
+ 'label' => ts('Recipient'),
+ ],
+ 'entity_reference' => [
+ 'entity' => 'Contact',
+ 'key' => 'id',
+ 'on_delete' => 'CASCADE',
+ ],
+ ],
+ 'email_id' => [
+ 'title' => ts('Email ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'description' => ts('FK to Email'),
+ 'default' => NULL,
+ 'input_attrs' => [
+ 'label' => ts('Email'),
+ ],
+ 'entity_reference' => [
+ 'entity' => 'Email',
+ 'key' => 'id',
+ 'on_delete' => 'SET NULL',
+ ],
+ ],
+ 'phone_id' => [
+ 'title' => ts('Phone ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'description' => ts('FK to Phone'),
+ 'default' => NULL,
+ 'input_attrs' => [
+ 'label' => ts('Phone'),
+ ],
+ 'entity_reference' => [
+ 'entity' => 'Phone',
+ 'key' => 'id',
+ 'on_delete' => 'SET NULL',
+ ],
+ ],
+ ],
+];
diff --git a/www/modules/civicrm/schema/Mailing/MailingTrackableURL.entityType.php b/www/modules/civicrm/schema/Mailing/MailingTrackableURL.entityType.php
new file mode 100644
index 000000000..71cf7b15d
--- /dev/null
+++ b/www/modules/civicrm/schema/Mailing/MailingTrackableURL.entityType.php
@@ -0,0 +1,44 @@
+ 'MailingTrackableURL',
+ 'table' => 'civicrm_mailing_trackable_url',
+ 'class' => 'CRM_Mailing_DAO_MailingTrackableURL',
+ 'getInfo' => fn() => [
+ 'title' => ts('Mailing Link'),
+ 'title_plural' => ts('Mailing Links'),
+ 'description' => ts('Stores URLs for which we should track click-throughs from mailings'),
+ ],
+ 'getFields' => fn() => [
+ 'id' => [
+ 'title' => ts('Trackable URL ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'required' => TRUE,
+ 'primary_key' => TRUE,
+ 'auto_increment' => TRUE,
+ ],
+ 'url' => [
+ 'title' => ts('Url'),
+ 'sql_type' => 'text',
+ 'input_type' => 'Text',
+ 'required' => TRUE,
+ 'description' => ts('The URL to be tracked.'),
+ ],
+ 'mailing_id' => [
+ 'title' => ts('Mailing ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'required' => TRUE,
+ 'description' => ts('FK to the mailing'),
+ 'input_attrs' => [
+ 'label' => ts('Mailing'),
+ ],
+ 'entity_reference' => [
+ 'entity' => 'Mailing',
+ 'key' => 'id',
+ 'on_delete' => 'CASCADE',
+ ],
+ ],
+ ],
+];
diff --git a/www/modules/civicrm/schema/Mailing/Spool.entityType.php b/www/modules/civicrm/schema/Mailing/Spool.entityType.php
new file mode 100644
index 000000000..51dcda757
--- /dev/null
+++ b/www/modules/civicrm/schema/Mailing/Spool.entityType.php
@@ -0,0 +1,69 @@
+ 'Spool',
+ 'table' => 'civicrm_mailing_spool',
+ 'class' => 'CRM_Mailing_DAO_Spool',
+ 'getInfo' => fn() => [
+ 'title' => ts('Spool'),
+ 'title_plural' => ts('Spools'),
+ 'description' => ts('Stores the outbond mails'),
+ ],
+ 'getFields' => fn() => [
+ 'id' => [
+ 'title' => ts('Spool ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'required' => TRUE,
+ 'primary_key' => TRUE,
+ 'auto_increment' => TRUE,
+ ],
+ 'job_id' => [
+ 'title' => ts('Job ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'required' => TRUE,
+ 'description' => ts('The ID of the Job .'),
+ 'input_attrs' => [
+ 'label' => ts('Job'),
+ ],
+ 'entity_reference' => [
+ 'entity' => 'MailingJob',
+ 'key' => 'id',
+ 'on_delete' => 'CASCADE',
+ ],
+ ],
+ 'recipient_email' => [
+ 'title' => ts('Recipient Email'),
+ 'sql_type' => 'text',
+ 'input_type' => 'TextArea',
+ 'description' => ts('The email of the recipients this mail is to be sent.'),
+ ],
+ 'headers' => [
+ 'title' => ts('Headers'),
+ 'sql_type' => 'text',
+ 'input_type' => 'TextArea',
+ 'description' => ts('The header information of this mailing .'),
+ ],
+ 'body' => [
+ 'title' => ts('Body'),
+ 'sql_type' => 'text',
+ 'input_type' => 'TextArea',
+ 'description' => ts('The body of this mailing.'),
+ ],
+ 'added_at' => [
+ 'title' => ts('Added'),
+ 'sql_type' => 'timestamp',
+ 'input_type' => NULL,
+ 'description' => ts('date on which this job was added.'),
+ 'default' => NULL,
+ ],
+ 'removed_at' => [
+ 'title' => ts('Removed'),
+ 'sql_type' => 'timestamp',
+ 'input_type' => NULL,
+ 'description' => ts('date on which this job was removed.'),
+ 'default' => NULL,
+ ],
+ ],
+];
diff --git a/www/modules/civicrm/schema/Member/Membership.entityType.php b/www/modules/civicrm/schema/Member/Membership.entityType.php
new file mode 100644
index 000000000..8476d37c1
--- /dev/null
+++ b/www/modules/civicrm/schema/Member/Membership.entityType.php
@@ -0,0 +1,318 @@
+ 'Membership',
+ 'table' => 'civicrm_membership',
+ 'class' => 'CRM_Member_DAO_Membership',
+ 'getInfo' => fn() => [
+ 'title' => ts('Membership'),
+ 'title_plural' => ts('Memberships'),
+ 'description' => ts('Records of contacts belonging to an organization\'s membership program.'),
+ 'log' => TRUE,
+ 'add' => '1.5',
+ 'icon' => 'fa-id-badge',
+ ],
+ 'getPaths' => fn() => [
+ 'add' => 'civicrm/member/add?reset=1&action=add&context=standalone',
+ 'view' => 'civicrm/contact/view/membership?reset=1&action=view&id=[id]&cid=[contact_id]',
+ 'update' => 'civicrm/contact/view/membership?reset=1&action=update&id=[id]&cid=[contact_id]',
+ 'delete' => 'civicrm/contact/view/membership?reset=1&action=delete&id=[id]&cid=[contact_id]',
+ ],
+ 'getIndices' => fn() => [
+ 'index_owner_membership_id' => [
+ 'fields' => [
+ 'owner_membership_id' => TRUE,
+ ],
+ 'add' => '1.7',
+ ],
+ ],
+ 'getFields' => fn() => [
+ 'id' => [
+ 'title' => ts('Membership ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'required' => TRUE,
+ 'description' => ts('Membership ID'),
+ 'add' => '1.5',
+ 'unique_name' => 'membership_id',
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ 'primary_key' => TRUE,
+ 'auto_increment' => TRUE,
+ ],
+ 'contact_id' => [
+ 'title' => ts('Contact ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'required' => TRUE,
+ 'description' => ts('FK to Contact ID'),
+ 'add' => '1.5',
+ 'unique_name' => 'membership_contact_id',
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ 'input_attrs' => [
+ 'label' => ts('Contact'),
+ ],
+ 'entity_reference' => [
+ 'entity' => 'Contact',
+ 'key' => 'id',
+ 'on_delete' => 'CASCADE',
+ ],
+ ],
+ 'membership_type_id' => [
+ 'title' => ts('Membership Type ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Select',
+ 'required' => TRUE,
+ 'description' => ts('FK to Membership Type'),
+ 'add' => '1.5',
+ 'usage' => [
+ 'import',
+ 'duplicate_matching',
+ ],
+ 'input_attrs' => [
+ 'label' => ts('Membership Type'),
+ ],
+ 'pseudoconstant' => [
+ 'table' => 'civicrm_membership_type',
+ 'key_column' => 'id',
+ 'label_column' => 'name',
+ ],
+ 'entity_reference' => [
+ 'entity' => 'MembershipType',
+ 'key' => 'id',
+ 'on_delete' => 'CASCADE',
+ ],
+ ],
+ 'join_date' => [
+ 'title' => ts('Member Since'),
+ 'sql_type' => 'date',
+ 'input_type' => 'Select Date',
+ 'description' => ts('Beginning of initial membership period (member since...).'),
+ 'add' => '1.5',
+ 'unique_name' => 'membership_join_date',
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ 'input_attrs' => [
+ 'format_type' => 'activityDate',
+ ],
+ ],
+ 'start_date' => [
+ 'title' => ts('Membership Start Date'),
+ 'sql_type' => 'date',
+ 'input_type' => 'Select Date',
+ 'description' => ts('Beginning of current uninterrupted membership period.'),
+ 'add' => '1.5',
+ 'unique_name' => 'membership_start_date',
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ 'input_attrs' => [
+ 'format_type' => 'activityDate',
+ ],
+ ],
+ 'end_date' => [
+ 'title' => ts('Membership Expiration Date'),
+ 'sql_type' => 'date',
+ 'input_type' => 'Select Date',
+ 'description' => ts('Current membership period expire date.'),
+ 'add' => '1.5',
+ 'unique_name' => 'membership_end_date',
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ 'input_attrs' => [
+ 'format_type' => 'activityDate',
+ ],
+ ],
+ 'source' => [
+ 'title' => ts('Membership Source'),
+ 'sql_type' => 'varchar(128)',
+ 'input_type' => 'Text',
+ 'add' => '1.5',
+ 'unique_name' => 'membership_source',
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ 'input_attrs' => [
+ 'maxlength' => 128,
+ ],
+ ],
+ 'status_id' => [
+ 'title' => ts('Status ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Select',
+ 'required' => TRUE,
+ 'description' => ts('FK to Membership Status'),
+ 'add' => '1.5',
+ 'usage' => [
+ 'import',
+ 'duplicate_matching',
+ ],
+ 'input_attrs' => [
+ 'label' => ts('Status'),
+ ],
+ 'pseudoconstant' => [
+ 'table' => 'civicrm_membership_status',
+ 'key_column' => 'id',
+ 'label_column' => 'label',
+ ],
+ 'entity_reference' => [
+ 'entity' => 'MembershipStatus',
+ 'key' => 'id',
+ 'on_delete' => 'CASCADE',
+ ],
+ ],
+ 'is_override' => [
+ 'title' => ts('Status Override'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('Admin users may set a manual status which overrides the calculated status. When this flag is TRUE, automated status update scripts should NOT modify status for the record.'),
+ 'add' => '1.5',
+ 'unique_name' => 'member_is_override',
+ 'default' => FALSE,
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ ],
+ 'status_override_end_date' => [
+ 'title' => ts('Status Override End Date'),
+ 'sql_type' => 'date',
+ 'input_type' => 'Select Date',
+ 'description' => ts('Then end date of membership status override if \'Override until selected date\' override type is selected.'),
+ 'add' => '4.7',
+ 'default' => NULL,
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ 'input_attrs' => [
+ 'format_type' => 'activityDate',
+ ],
+ ],
+ 'owner_membership_id' => [
+ 'title' => ts('Primary Member ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'description' => ts('Optional FK to Parent Membership.'),
+ 'add' => '1.7',
+ 'usage' => [
+ 'export',
+ ],
+ 'input_attrs' => [
+ 'label' => ts('Primary Member'),
+ ],
+ 'entity_reference' => [
+ 'entity' => 'Membership',
+ 'key' => 'id',
+ 'on_delete' => 'SET NULL',
+ ],
+ ],
+ 'max_related' => [
+ 'title' => ts('Max Related'),
+ 'sql_type' => 'int',
+ 'input_type' => 'Text',
+ 'description' => ts('Maximum number of related memberships (membership_type override).'),
+ 'add' => '4.3',
+ 'usage' => [
+ 'export',
+ ],
+ 'input_attrs' => [
+ 'label' => ts('Maximum number of related memberships'),
+ ],
+ ],
+ 'is_test' => [
+ 'title' => ts('Test'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'unique_name' => 'member_is_test',
+ 'default' => FALSE,
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ ],
+ 'is_pay_later' => [
+ 'title' => ts('Is Pay Later'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'add' => '2.1',
+ 'unique_name' => 'member_is_pay_later',
+ 'default' => FALSE,
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ ],
+ 'contribution_recur_id' => [
+ 'title' => ts('Recurring Contribution ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'description' => ts('Conditional foreign key to civicrm_contribution_recur id. Each membership in connection with a recurring contribution carries a foreign key to the recurring contribution record. This assumes we can track these processor initiated events.'),
+ 'add' => '3.3',
+ 'unique_name' => 'membership_recur_id',
+ 'usage' => [
+ 'export',
+ ],
+ 'input_attrs' => [
+ 'label' => ts('Recurring Contribution'),
+ ],
+ 'entity_reference' => [
+ 'entity' => 'ContributionRecur',
+ 'key' => 'id',
+ 'on_delete' => 'SET NULL',
+ ],
+ ],
+ 'campaign_id' => [
+ 'title' => ts('Campaign ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'description' => ts('The campaign for which this membership is attached.'),
+ 'add' => '3.4',
+ 'unique_name' => 'member_campaign_id',
+ 'component' => 'CiviCampaign',
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ 'input_attrs' => [
+ 'label' => ts('Campaign'),
+ ],
+ 'pseudoconstant' => [
+ 'table' => 'civicrm_campaign',
+ 'key_column' => 'id',
+ 'label_column' => 'title',
+ 'prefetch' => 'disabled',
+ ],
+ 'entity_reference' => [
+ 'entity' => 'Campaign',
+ 'key' => 'id',
+ 'on_delete' => 'SET NULL',
+ ],
+ ],
+ ],
+];
diff --git a/www/modules/civicrm/schema/Member/MembershipBlock.entityType.php b/www/modules/civicrm/schema/Member/MembershipBlock.entityType.php
new file mode 100644
index 000000000..49bdfe07b
--- /dev/null
+++ b/www/modules/civicrm/schema/Member/MembershipBlock.entityType.php
@@ -0,0 +1,153 @@
+ 'MembershipBlock',
+ 'table' => 'civicrm_membership_block',
+ 'class' => 'CRM_Member_DAO_MembershipBlock',
+ 'getInfo' => fn() => [
+ 'title' => ts('Membership Block'),
+ 'title_plural' => ts('Membership Blocks'),
+ 'description' => ts('A Membership Block stores admin configurable status options and rules'),
+ 'log' => TRUE,
+ 'add' => '1.5',
+ ],
+ 'getFields' => fn() => [
+ 'id' => [
+ 'title' => ts('Membership Block ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'required' => TRUE,
+ 'description' => ts('Membership ID'),
+ 'add' => '1.5',
+ 'primary_key' => TRUE,
+ 'auto_increment' => TRUE,
+ ],
+ 'entity_table' => [
+ 'title' => ts('Membership Block Entity Table'),
+ 'sql_type' => 'varchar(64)',
+ 'input_type' => 'Text',
+ 'description' => ts('Name for Membership Status'),
+ 'add' => '1.5',
+ 'input_attrs' => [
+ 'maxlength' => 64,
+ ],
+ ],
+ 'entity_id' => [
+ 'title' => ts('Entity ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'required' => TRUE,
+ 'description' => ts('FK to civicrm_contribution_page.id'),
+ 'add' => '1.5',
+ 'input_attrs' => [
+ 'label' => ts('Entity'),
+ ],
+ 'entity_reference' => [
+ 'entity' => 'ContributionPage',
+ 'key' => 'id',
+ ],
+ ],
+ 'membership_types' => [
+ 'title' => ts('Membership Block Membership Types'),
+ 'sql_type' => 'varchar(1024)',
+ 'input_type' => 'Text',
+ 'description' => ts('Membership types to be exposed by this block'),
+ 'add' => '1.5',
+ 'serialize' => CRM_Core_DAO::SERIALIZE_PHP,
+ 'input_attrs' => [
+ 'maxlength' => 1024,
+ ],
+ ],
+ 'membership_type_default' => [
+ 'title' => ts('Default Type ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'description' => ts('Optional foreign key to membership_type'),
+ 'add' => '1.5',
+ 'input_attrs' => [
+ 'label' => ts('Default Type'),
+ ],
+ 'entity_reference' => [
+ 'entity' => 'MembershipType',
+ 'key' => 'id',
+ ],
+ ],
+ 'display_min_fee' => [
+ 'title' => ts('Membership Block Display Minimum Fee'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('Display minimum membership fee'),
+ 'add' => '1.5',
+ 'default' => TRUE,
+ ],
+ 'is_separate_payment' => [
+ 'title' => ts('Membership Block Is Separate Payment'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('Should membership transactions be processed separately'),
+ 'add' => '1.5',
+ 'default' => TRUE,
+ ],
+ 'new_title' => [
+ 'title' => ts('Membership Block New Title'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'localizable' => TRUE,
+ 'description' => ts('Title to display at top of block'),
+ 'add' => '1.5',
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'new_text' => [
+ 'title' => ts('Membership Block New Text'),
+ 'sql_type' => 'text',
+ 'input_type' => 'TextArea',
+ 'localizable' => TRUE,
+ 'description' => ts('Text to display below title'),
+ 'add' => '1.5',
+ ],
+ 'renewal_title' => [
+ 'title' => ts('Membership Block Renewal Title'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'localizable' => TRUE,
+ 'description' => ts('Title for renewal'),
+ 'add' => '1.5',
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'renewal_text' => [
+ 'title' => ts('Membership Block Renewal Text'),
+ 'sql_type' => 'text',
+ 'input_type' => 'TextArea',
+ 'localizable' => TRUE,
+ 'description' => ts('Text to display for member renewal'),
+ 'add' => '1.5',
+ ],
+ 'is_required' => [
+ 'title' => ts('Is Required'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('Is membership sign up optional'),
+ 'add' => '1.5',
+ 'default' => FALSE,
+ ],
+ 'is_active' => [
+ 'title' => ts('Is Active'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('Is this membership_block enabled'),
+ 'add' => '1.5',
+ 'default' => TRUE,
+ 'input_attrs' => [
+ 'label' => ts('Enabled'),
+ ],
+ ],
+ ],
+];
diff --git a/www/modules/civicrm/schema/Member/MembershipLog.entityType.php b/www/modules/civicrm/schema/Member/MembershipLog.entityType.php
new file mode 100644
index 000000000..633c2c982
--- /dev/null
+++ b/www/modules/civicrm/schema/Member/MembershipLog.entityType.php
@@ -0,0 +1,116 @@
+ 'MembershipLog',
+ 'table' => 'civicrm_membership_log',
+ 'class' => 'CRM_Member_DAO_MembershipLog',
+ 'getInfo' => fn() => [
+ 'title' => ts('Membership Log'),
+ 'title_plural' => ts('Membership Logs'),
+ 'description' => ts('Logs actions which affect a Membership record (signup, status override, renewal, etc.)'),
+ 'log' => TRUE,
+ 'add' => '1.5',
+ ],
+ 'getFields' => fn() => [
+ 'id' => [
+ 'title' => ts('Membership Log ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'required' => TRUE,
+ 'add' => '1.5',
+ 'primary_key' => TRUE,
+ 'auto_increment' => TRUE,
+ ],
+ 'membership_id' => [
+ 'title' => ts('Membership ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'required' => TRUE,
+ 'description' => ts('FK to Membership table'),
+ 'add' => '1.5',
+ 'input_attrs' => [
+ 'label' => ts('Membership'),
+ ],
+ 'entity_reference' => [
+ 'entity' => 'Membership',
+ 'key' => 'id',
+ 'on_delete' => 'CASCADE',
+ ],
+ ],
+ 'status_id' => [
+ 'title' => ts('Membership Status ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'required' => TRUE,
+ 'description' => ts('New status assigned to membership by this action. FK to Membership Status'),
+ 'add' => '1.5',
+ 'input_attrs' => [
+ 'label' => ts('Membership Status'),
+ ],
+ 'entity_reference' => [
+ 'entity' => 'MembershipStatus',
+ 'key' => 'id',
+ 'on_delete' => 'CASCADE',
+ ],
+ ],
+ 'start_date' => [
+ 'title' => ts('Membership Log Start Date'),
+ 'sql_type' => 'date',
+ 'input_type' => 'Select Date',
+ 'description' => ts('New membership period start date'),
+ 'add' => '1.5',
+ ],
+ 'end_date' => [
+ 'title' => ts('Membership Log End Date'),
+ 'sql_type' => 'date',
+ 'input_type' => 'Select Date',
+ 'description' => ts('New membership period expiration date.'),
+ 'add' => '1.5',
+ ],
+ 'modified_id' => [
+ 'title' => ts('Modified By Contact ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => NULL,
+ 'readonly' => TRUE,
+ 'description' => ts('FK to Contact ID of person under whose credentials this data modification was made.'),
+ 'add' => '1.5',
+ 'input_attrs' => [
+ 'label' => ts('Modified By'),
+ ],
+ 'entity_reference' => [
+ 'entity' => 'Contact',
+ 'key' => 'id',
+ 'on_delete' => 'SET NULL',
+ ],
+ ],
+ 'modified_date' => [
+ 'title' => ts('Membership Change Date'),
+ 'sql_type' => 'date',
+ 'input_type' => 'Select Date',
+ 'description' => ts('Date this membership modification action was logged.'),
+ 'add' => '1.5',
+ ],
+ 'membership_type_id' => [
+ 'title' => ts('Membership Type ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'description' => ts('FK to Membership Type.'),
+ 'add' => '3.4',
+ 'input_attrs' => [
+ 'label' => ts('Membership Type'),
+ ],
+ 'entity_reference' => [
+ 'entity' => 'MembershipType',
+ 'key' => 'id',
+ 'on_delete' => 'SET NULL',
+ ],
+ ],
+ 'max_related' => [
+ 'title' => ts('Maximum Related Memberships'),
+ 'sql_type' => 'int',
+ 'input_type' => 'Number',
+ 'description' => ts('Maximum number of related memberships.'),
+ 'add' => '4.3',
+ ],
+ ],
+];
diff --git a/www/modules/civicrm/schema/Member/MembershipPayment.entityType.php b/www/modules/civicrm/schema/Member/MembershipPayment.entityType.php
new file mode 100644
index 000000000..add6be48a
--- /dev/null
+++ b/www/modules/civicrm/schema/Member/MembershipPayment.entityType.php
@@ -0,0 +1,66 @@
+ 'MembershipPayment',
+ 'table' => 'civicrm_membership_payment',
+ 'class' => 'CRM_Member_DAO_MembershipPayment',
+ 'getInfo' => fn() => [
+ 'title' => ts('Membership Payment'),
+ 'title_plural' => ts('Membership Payments'),
+ 'description' => ts('Membership Payment'),
+ 'log' => TRUE,
+ 'add' => '1.5',
+ ],
+ 'getIndices' => fn() => [
+ 'UI_contribution_membership' => [
+ 'fields' => [
+ 'contribution_id' => TRUE,
+ 'membership_id' => TRUE,
+ ],
+ 'unique' => TRUE,
+ 'add' => '2.0',
+ ],
+ ],
+ 'getFields' => fn() => [
+ 'id' => [
+ 'title' => ts('Membership Payment ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'required' => TRUE,
+ 'add' => '1.5',
+ 'primary_key' => TRUE,
+ 'auto_increment' => TRUE,
+ ],
+ 'membership_id' => [
+ 'title' => ts('Membership ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'required' => TRUE,
+ 'description' => ts('FK to Membership table'),
+ 'add' => '1.5',
+ 'input_attrs' => [
+ 'label' => ts('Membership'),
+ ],
+ 'entity_reference' => [
+ 'entity' => 'Membership',
+ 'key' => 'id',
+ 'on_delete' => 'CASCADE',
+ ],
+ ],
+ 'contribution_id' => [
+ 'title' => ts('Contribution ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'description' => ts('FK to contribution table.'),
+ 'add' => '2.0',
+ 'input_attrs' => [
+ 'label' => ts('Contribution'),
+ ],
+ 'entity_reference' => [
+ 'entity' => 'Contribution',
+ 'key' => 'id',
+ 'on_delete' => 'CASCADE',
+ ],
+ ],
+ ],
+];
diff --git a/www/modules/civicrm/schema/Member/MembershipStatus.entityType.php b/www/modules/civicrm/schema/Member/MembershipStatus.entityType.php
new file mode 100644
index 000000000..2204f56df
--- /dev/null
+++ b/www/modules/civicrm/schema/Member/MembershipStatus.entityType.php
@@ -0,0 +1,193 @@
+ 'MembershipStatus',
+ 'table' => 'civicrm_membership_status',
+ 'class' => 'CRM_Member_DAO_MembershipStatus',
+ 'getInfo' => fn() => [
+ 'title' => ts('Membership Status'),
+ 'title_plural' => ts('Membership Statuses'),
+ 'description' => ts('Membership Status stores admin configurable rules for assigning status to memberships.'),
+ 'log' => TRUE,
+ 'add' => '1.5',
+ 'label_field' => 'label',
+ ],
+ 'getPaths' => fn() => [
+ 'add' => 'civicrm/admin/member/membershipStatus?action=add&reset=1',
+ 'update' => 'civicrm/admin/member/membershipStatus?action=update&id=[id]&reset=1',
+ 'delete' => 'civicrm/admin/member/membershipStatus?action=delete&id=[id]&reset=1',
+ ],
+ 'getFields' => fn() => [
+ 'id' => [
+ 'title' => ts('Membership Status ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'required' => TRUE,
+ 'description' => ts('Membership ID'),
+ 'add' => '1.5',
+ 'primary_key' => TRUE,
+ 'auto_increment' => TRUE,
+ ],
+ 'name' => [
+ 'title' => ts('Membership Status'),
+ 'sql_type' => 'varchar(128)',
+ 'input_type' => 'Text',
+ 'required' => TRUE,
+ 'description' => ts('Name for Membership Status'),
+ 'add' => '1.5',
+ 'unique_name' => 'membership_status',
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ 'input_attrs' => [
+ 'maxlength' => 128,
+ ],
+ ],
+ 'label' => [
+ 'title' => ts('Label'),
+ 'sql_type' => 'varchar(128)',
+ 'input_type' => 'Text',
+ 'localizable' => TRUE,
+ 'description' => ts('Label for Membership Status'),
+ 'add' => '3.2',
+ 'input_attrs' => [
+ 'maxlength' => 128,
+ ],
+ ],
+ 'start_event' => [
+ 'title' => ts('Start Event'),
+ 'sql_type' => 'varchar(12)',
+ 'input_type' => 'Select',
+ 'description' => ts('Event when this status starts.'),
+ 'add' => '1.5',
+ 'input_attrs' => [
+ 'label' => ts('Start Event'),
+ 'maxlength' => 12,
+ ],
+ 'pseudoconstant' => [
+ 'callback' => 'CRM_Core_SelectValues::eventDate',
+ ],
+ ],
+ 'start_event_adjust_unit' => [
+ 'title' => ts('Start Event Adjust Unit'),
+ 'sql_type' => 'varchar(8)',
+ 'input_type' => 'Select',
+ 'description' => ts('Unit used for adjusting from start_event.'),
+ 'add' => '1.5',
+ 'input_attrs' => [
+ 'label' => ts('Start Event Adjust Unit'),
+ 'maxlength' => 8,
+ ],
+ 'pseudoconstant' => [
+ 'callback' => 'CRM_Core_SelectValues::unitList',
+ ],
+ ],
+ 'start_event_adjust_interval' => [
+ 'title' => ts('Start Event Adjust Interval'),
+ 'sql_type' => 'int',
+ 'input_type' => 'Number',
+ 'description' => ts('Status range begins this many units from start_event.'),
+ 'add' => '1.5',
+ 'input_attrs' => [
+ 'label' => ts('Start Event Adjust Interval'),
+ ],
+ ],
+ 'end_event' => [
+ 'title' => ts('End Event'),
+ 'sql_type' => 'varchar(12)',
+ 'input_type' => 'Select',
+ 'description' => ts('Event after which this status ends.'),
+ 'add' => '1.5',
+ 'input_attrs' => [
+ 'label' => ts('End Event'),
+ 'maxlength' => 12,
+ ],
+ 'pseudoconstant' => [
+ 'callback' => 'CRM_Core_SelectValues::eventDate',
+ ],
+ ],
+ 'end_event_adjust_unit' => [
+ 'title' => ts('End Event Adjust Unit'),
+ 'sql_type' => 'varchar(8)',
+ 'input_type' => 'Select',
+ 'description' => ts('Unit used for adjusting from the ending event.'),
+ 'add' => '1.5',
+ 'input_attrs' => [
+ 'label' => ts('End Event Adjust Unit'),
+ 'maxlength' => 8,
+ ],
+ 'pseudoconstant' => [
+ 'callback' => 'CRM_Core_SelectValues::unitList',
+ ],
+ ],
+ 'end_event_adjust_interval' => [
+ 'title' => ts('End Event Adjust Interval'),
+ 'sql_type' => 'int',
+ 'input_type' => 'Number',
+ 'description' => ts('Status range ends this many units from end_event.'),
+ 'add' => '1.5',
+ 'input_attrs' => [
+ 'label' => ts('End Event Adjust Interval'),
+ ],
+ ],
+ 'is_current_member' => [
+ 'title' => ts('Current Membership?'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('Does this status aggregate to current members (e.g. New, Renewed, Grace might all be TRUE... while Unrenewed, Lapsed, Inactive would be FALSE).'),
+ 'add' => '1.5',
+ 'default' => FALSE,
+ ],
+ 'is_admin' => [
+ 'title' => ts('Administrator Only?'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('Is this status for admin/manual assignment only.'),
+ 'add' => '1.5',
+ 'default' => FALSE,
+ ],
+ 'weight' => [
+ 'title' => ts('Order'),
+ 'sql_type' => 'int',
+ 'input_type' => 'Number',
+ 'add' => '1.5',
+ ],
+ 'is_default' => [
+ 'title' => ts('Default Status?'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('Assign this status to a membership record if no other status match is found.'),
+ 'add' => '1.5',
+ 'default' => FALSE,
+ 'input_attrs' => [
+ 'label' => ts('Default'),
+ ],
+ ],
+ 'is_active' => [
+ 'title' => ts('Is Active'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('Is this membership_status enabled.'),
+ 'add' => '1.5',
+ 'default' => TRUE,
+ 'input_attrs' => [
+ 'label' => ts('Enabled'),
+ ],
+ ],
+ 'is_reserved' => [
+ 'title' => ts('Is Reserved'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('Is this membership_status reserved.'),
+ 'add' => '2.1',
+ 'default' => FALSE,
+ ],
+ ],
+];
diff --git a/www/modules/civicrm/schema/Member/MembershipType.entityType.php b/www/modules/civicrm/schema/Member/MembershipType.entityType.php
new file mode 100644
index 000000000..061354fc9
--- /dev/null
+++ b/www/modules/civicrm/schema/Member/MembershipType.entityType.php
@@ -0,0 +1,289 @@
+ 'MembershipType',
+ 'table' => 'civicrm_membership_type',
+ 'class' => 'CRM_Member_DAO_MembershipType',
+ 'getInfo' => fn() => [
+ 'title' => ts('Membership Type'),
+ 'title_plural' => ts('Membership Types'),
+ 'description' => ts('Sites can configure multiple types of memberships. They encode the owner organization, fee, and the rules needed to set start and end (expire) dates when a member signs up for that type.'),
+ 'log' => TRUE,
+ 'add' => '1.5',
+ 'label_field' => 'name',
+ ],
+ 'getPaths' => fn() => [
+ 'add' => 'civicrm/admin/member/membershipType/add?action=add&reset=1',
+ 'update' => 'civicrm/admin/member/membershipType/add?action=update&id=[id]&reset=1',
+ 'delete' => 'civicrm/admin/member/membershipType/add?action=delete&id=[id]&reset=1',
+ ],
+ 'getIndices' => fn() => [
+ 'index_relationship_type_id' => [
+ 'fields' => [
+ 'relationship_type_id' => TRUE,
+ ],
+ 'add' => '3.3',
+ ],
+ ],
+ 'getFields' => fn() => [
+ 'id' => [
+ 'title' => ts('Membership Type ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'required' => TRUE,
+ 'description' => ts('Membership ID'),
+ 'add' => '1.5',
+ 'primary_key' => TRUE,
+ 'auto_increment' => TRUE,
+ ],
+ 'domain_id' => [
+ 'title' => ts('Domain ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'required' => TRUE,
+ 'description' => ts('Which Domain is this match entry for'),
+ 'add' => '3.0',
+ 'input_attrs' => [
+ 'label' => ts('Domain'),
+ ],
+ 'pseudoconstant' => [
+ 'table' => 'civicrm_domain',
+ 'key_column' => 'id',
+ 'label_column' => 'name',
+ ],
+ 'entity_reference' => [
+ 'entity' => 'Domain',
+ 'key' => 'id',
+ ],
+ ],
+ 'name' => [
+ 'title' => ts('Membership Type'),
+ 'sql_type' => 'varchar(128)',
+ 'input_type' => 'Text',
+ 'required' => TRUE,
+ 'localizable' => TRUE,
+ 'description' => ts('Name of Membership Type'),
+ 'add' => '1.5',
+ 'unique_name' => 'membership_type',
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ 'input_attrs' => [
+ 'label' => ts('Name'),
+ 'maxlength' => 128,
+ ],
+ ],
+ 'description' => [
+ 'title' => ts('Description'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'TextArea',
+ 'localizable' => TRUE,
+ 'description' => ts('Description of Membership Type'),
+ 'add' => '1.5',
+ 'input_attrs' => [
+ 'rows' => 6,
+ 'cols' => 50,
+ 'label' => ts('Description'),
+ 'maxlength' => 255,
+ ],
+ ],
+ 'member_of_contact_id' => [
+ 'title' => ts('Organization ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'required' => TRUE,
+ 'description' => ts('Owner organization for this membership type. FK to Contact ID'),
+ 'add' => '1.5',
+ 'input_attrs' => [
+ 'label' => ts('Organization'),
+ ],
+ 'entity_reference' => [
+ 'entity' => 'Contact',
+ 'key' => 'id',
+ 'on_delete' => 'RESTRICT',
+ ],
+ ],
+ 'financial_type_id' => [
+ 'title' => ts('Financial Type ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'required' => TRUE,
+ 'description' => ts('If membership is paid by a contribution - what financial type should be used. FK to civicrm_financial_type.id'),
+ 'add' => '4.3',
+ 'input_attrs' => [
+ 'label' => ts('Financial Type'),
+ ],
+ 'pseudoconstant' => [
+ 'table' => 'civicrm_financial_type',
+ 'key_column' => 'id',
+ 'label_column' => 'name',
+ ],
+ 'entity_reference' => [
+ 'entity' => 'FinancialType',
+ 'key' => 'id',
+ ],
+ ],
+ 'minimum_fee' => [
+ 'title' => ts('Minimum Fee'),
+ 'sql_type' => 'decimal(18,9)',
+ 'input_type' => 'Text',
+ 'description' => ts('Minimum fee for this membership (0 for free/complimentary memberships).'),
+ 'add' => '1.5',
+ 'default' => '0',
+ 'input_attrs' => [
+ 'label' => ts('Minimum Fee'),
+ 'maxlength' => 18,
+ ],
+ ],
+ 'duration_unit' => [
+ 'title' => ts('Membership Type Duration Unit'),
+ 'sql_type' => 'varchar(8)',
+ 'input_type' => 'Select',
+ 'required' => TRUE,
+ 'description' => ts('Unit in which membership period is expressed.'),
+ 'add' => '1.5',
+ 'input_attrs' => [
+ 'maxlength' => 8,
+ ],
+ 'pseudoconstant' => [
+ 'callback' => 'CRM_Core_SelectValues::membershipTypeUnitList',
+ ],
+ ],
+ 'duration_interval' => [
+ 'title' => ts('Membership Type Duration Interval'),
+ 'sql_type' => 'int',
+ 'input_type' => 'Text',
+ 'description' => ts('Number of duration units in membership period (e.g. 1 year, 12 months).'),
+ 'add' => '1.5',
+ ],
+ 'period_type' => [
+ 'title' => ts('Membership Type Plan'),
+ 'sql_type' => 'varchar(8)',
+ 'input_type' => 'Select',
+ 'required' => TRUE,
+ 'description' => ts('Rolling membership period starts on signup date. Fixed membership periods start on fixed_period_start_day.'),
+ 'add' => '1.5',
+ 'input_attrs' => [
+ 'maxlength' => 8,
+ ],
+ 'pseudoconstant' => [
+ 'callback' => 'CRM_Core_SelectValues::periodType',
+ ],
+ ],
+ 'fixed_period_start_day' => [
+ 'title' => ts('Fixed Period Start Day'),
+ 'sql_type' => 'int',
+ 'input_type' => 'Number',
+ 'description' => ts('For fixed period memberships, month and day (mmdd) on which subscription/membership will start. Period start is back-dated unless after rollover day.'),
+ 'add' => '1.5',
+ ],
+ 'fixed_period_rollover_day' => [
+ 'title' => ts('Fixed Period Rollover Day'),
+ 'sql_type' => 'int',
+ 'input_type' => 'Number',
+ 'description' => ts('For fixed period memberships, signups after this day (mmdd) rollover to next period.'),
+ 'add' => '1.5',
+ ],
+ 'relationship_type_id' => [
+ 'title' => ts('Membership Type Relationship'),
+ 'sql_type' => 'varchar(64)',
+ 'input_type' => 'Text',
+ 'description' => ts('FK to Relationship Type ID'),
+ 'add' => '1.5',
+ 'serialize' => CRM_Core_DAO::SERIALIZE_SEPARATOR_TRIMMED,
+ 'input_attrs' => [
+ 'maxlength' => 64,
+ ],
+ ],
+ 'relationship_direction' => [
+ 'title' => ts('Relationship Direction'),
+ 'sql_type' => 'varchar(128)',
+ 'input_type' => 'Text',
+ 'add' => '1.7',
+ 'serialize' => CRM_Core_DAO::SERIALIZE_SEPARATOR_TRIMMED,
+ 'input_attrs' => [
+ 'label' => ts('Relationship Direction'),
+ 'maxlength' => 128,
+ ],
+ ],
+ 'max_related' => [
+ 'title' => ts('Max Related Members for Type'),
+ 'sql_type' => 'int',
+ 'input_type' => 'Text',
+ 'description' => ts('Maximum number of related memberships.'),
+ 'add' => '4.3',
+ 'input_attrs' => [
+ 'label' => ts('Max Related'),
+ ],
+ ],
+ 'visibility' => [
+ 'title' => ts('Visible'),
+ 'sql_type' => 'varchar(64)',
+ 'input_type' => 'Select',
+ 'add' => '1.5',
+ 'input_attrs' => [
+ 'maxlength' => 64,
+ ],
+ 'pseudoconstant' => [
+ 'callback' => 'CRM_Core_SelectValues::memberVisibility',
+ ],
+ ],
+ 'weight' => [
+ 'title' => ts('Order'),
+ 'sql_type' => 'int',
+ 'input_type' => 'Text',
+ 'add' => '1.5',
+ ],
+ 'receipt_text_signup' => [
+ 'title' => ts('Membership Type Receipt Text'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'TextArea',
+ 'description' => ts('Receipt Text for membership signup'),
+ 'add' => '2.0',
+ 'input_attrs' => [
+ 'rows' => 6,
+ 'cols' => 50,
+ 'maxlength' => 255,
+ ],
+ ],
+ 'receipt_text_renewal' => [
+ 'title' => ts('Membership Type Renewal Text'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'TextArea',
+ 'description' => ts('Receipt Text for membership renewal'),
+ 'add' => '2.0',
+ 'input_attrs' => [
+ 'rows' => 6,
+ 'cols' => 50,
+ 'maxlength' => 255,
+ ],
+ ],
+ 'auto_renew' => [
+ 'title' => ts('Auto Renew'),
+ 'sql_type' => 'tinyint',
+ 'input_type' => 'Radio',
+ 'description' => ts('0 = No auto-renew option; 1 = Give option, but not required; 2 = Auto-renew required;'),
+ 'add' => '3.3',
+ 'default' => 0,
+ 'input_attrs' => [
+ 'label' => ts('Auto-Renew'),
+ ],
+ 'pseudoconstant' => [
+ 'callback' => 'CRM_Core_SelectValues::memberAutoRenew',
+ ],
+ ],
+ 'is_active' => [
+ 'title' => ts('Is Active'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'description' => ts('Is this membership_type enabled'),
+ 'add' => '1.5',
+ 'default' => TRUE,
+ 'input_attrs' => [
+ 'label' => ts('Enabled'),
+ ],
+ ],
+ ],
+];
diff --git a/www/modules/civicrm/schema/PCP/PCP.entityType.php b/www/modules/civicrm/schema/PCP/PCP.entityType.php
new file mode 100644
index 000000000..49f7e5b3d
--- /dev/null
+++ b/www/modules/civicrm/schema/PCP/PCP.entityType.php
@@ -0,0 +1,189 @@
+ 'PCP',
+ 'table' => 'civicrm_pcp',
+ 'class' => 'CRM_PCP_DAO_PCP',
+ 'getInfo' => fn() => [
+ 'title' => ts('Personal Campaign Page'),
+ 'title_plural' => ts('Personal Campaign Pages'),
+ 'description' => ts('FIXME'),
+ 'log' => TRUE,
+ 'add' => '2.2',
+ 'label_field' => 'title',
+ ],
+ 'getFields' => fn() => [
+ 'id' => [
+ 'title' => ts('Personal Campaign Page ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'required' => TRUE,
+ 'description' => ts('Personal Campaign Page ID'),
+ 'add' => '2.2',
+ 'unique_name' => 'pcp_id',
+ 'primary_key' => TRUE,
+ 'auto_increment' => TRUE,
+ ],
+ 'contact_id' => [
+ 'title' => ts('Contact ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'required' => TRUE,
+ 'description' => ts('FK to Contact ID'),
+ 'add' => '2.2',
+ 'unique_name' => 'pcp_contact_id',
+ 'input_attrs' => [
+ 'label' => ts('Contact'),
+ ],
+ 'entity_reference' => [
+ 'entity' => 'Contact',
+ 'key' => 'id',
+ 'on_delete' => 'CASCADE',
+ ],
+ ],
+ 'status_id' => [
+ 'title' => ts('Personal Campaign Page Status'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Select',
+ 'required' => TRUE,
+ 'add' => '2.2',
+ 'pseudoconstant' => [
+ 'option_group_name' => 'pcp_status',
+ ],
+ ],
+ 'title' => [
+ 'title' => ts('Personal Campaign Page Title'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'add' => '2.2',
+ 'default' => NULL,
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'intro_text' => [
+ 'title' => ts('Intro Text'),
+ 'sql_type' => 'text',
+ 'input_type' => 'TextArea',
+ 'add' => '2.2',
+ 'default' => NULL,
+ 'input_attrs' => [
+ 'label' => ts('Intro Text'),
+ ],
+ ],
+ 'page_text' => [
+ 'title' => ts('Page Text'),
+ 'sql_type' => 'text',
+ 'input_type' => 'TextArea',
+ 'add' => '2.2',
+ 'default' => NULL,
+ 'input_attrs' => [
+ 'label' => ts('Page Text'),
+ ],
+ ],
+ 'donate_link_text' => [
+ 'title' => ts('Donate Link Text'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'add' => '2.2',
+ 'default' => NULL,
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'page_id' => [
+ 'title' => ts('Contribution Page'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'required' => TRUE,
+ 'description' => ts('The Contribution or Event Page which triggered this pcp'),
+ 'add' => '4.1',
+ 'entity_reference' => [
+ 'dynamic_entity' => 'page_type',
+ 'key' => 'id',
+ ],
+ ],
+ 'page_type' => [
+ 'title' => ts('PCP Page Type'),
+ 'sql_type' => 'varchar(64)',
+ 'input_type' => 'Select',
+ 'description' => ts('The type of PCP this is: contribute or event'),
+ 'add' => '2.2',
+ 'default' => 'contribute',
+ 'input_attrs' => [
+ 'maxlength' => 64,
+ ],
+ 'pseudoconstant' => [
+ 'callback' => 'CRM_PCP_BAO_PCP::pageTypeOptions',
+ ],
+ ],
+ 'pcp_block_id' => [
+ 'title' => ts('PCP Block'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'required' => TRUE,
+ 'description' => ts('The pcp block that this pcp page was created from'),
+ 'add' => '4.1',
+ ],
+ 'is_thermometer' => [
+ 'title' => ts('Use Thermometer?'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'CheckBox',
+ 'add' => '2.2',
+ 'default' => 0,
+ ],
+ 'is_honor_roll' => [
+ 'title' => ts('Show Honor Roll?'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'CheckBox',
+ 'add' => '2.2',
+ 'default' => 0,
+ ],
+ 'goal_amount' => [
+ 'title' => ts('Goal Amount'),
+ 'sql_type' => 'decimal(20,2)',
+ 'input_type' => 'Text',
+ 'description' => ts('Goal amount of this Personal Campaign Page.'),
+ 'add' => '2.2',
+ ],
+ 'currency' => [
+ 'title' => ts('Currency'),
+ 'sql_type' => 'varchar(3)',
+ 'input_type' => 'Select',
+ 'description' => ts('3 character string, value from config setting or input via user.'),
+ 'add' => '3.2',
+ 'default' => NULL,
+ 'input_attrs' => [
+ 'maxlength' => 3,
+ ],
+ 'pseudoconstant' => [
+ 'table' => 'civicrm_currency',
+ 'key_column' => 'name',
+ 'label_column' => 'full_name',
+ 'name_column' => 'name',
+ 'abbr_column' => 'symbol',
+ ],
+ ],
+ 'is_active' => [
+ 'title' => ts('Enabled?'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('Is Personal Campaign Page enabled/active?'),
+ 'add' => '2.2',
+ 'default' => TRUE,
+ 'input_attrs' => [
+ 'label' => ts('Enabled'),
+ ],
+ ],
+ 'is_notify' => [
+ 'title' => ts('Notify Owner?'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('Notify owner via email when someone donates to page?'),
+ 'add' => '4.6',
+ 'default' => FALSE,
+ ],
+ ],
+];
diff --git a/www/modules/civicrm/schema/PCP/PCPBlock.entityType.php b/www/modules/civicrm/schema/PCP/PCPBlock.entityType.php
new file mode 100644
index 000000000..94ad42641
--- /dev/null
+++ b/www/modules/civicrm/schema/PCP/PCPBlock.entityType.php
@@ -0,0 +1,159 @@
+ 'PCPBlock',
+ 'table' => 'civicrm_pcp_block',
+ 'class' => 'CRM_PCP_DAO_PCPBlock',
+ 'getInfo' => fn() => [
+ 'title' => ts('Personal Campaign Block'),
+ 'title_plural' => ts('Personal Campaign Blocks'),
+ 'description' => ts('A Personal Campaign Page Block stores admin configurable status options and rules'),
+ 'log' => TRUE,
+ 'add' => '2.2',
+ ],
+ 'getFields' => fn() => [
+ 'id' => [
+ 'title' => ts('PCP Block ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'required' => TRUE,
+ 'description' => ts('PCP block ID'),
+ 'add' => '2.2',
+ 'primary_key' => TRUE,
+ 'auto_increment' => TRUE,
+ ],
+ 'entity_table' => [
+ 'title' => ts('Entity Table'),
+ 'sql_type' => 'varchar(64)',
+ 'input_type' => 'Text',
+ 'add' => '2.2',
+ 'input_attrs' => [
+ 'maxlength' => 64,
+ ],
+ ],
+ 'entity_id' => [
+ 'title' => ts('Entity'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'required' => TRUE,
+ 'description' => ts('FK to civicrm_contribution_page.id OR civicrm_event.id'),
+ 'add' => '2.2',
+ 'entity_reference' => [
+ 'dynamic_entity' => 'entity_table',
+ 'key' => 'id',
+ ],
+ ],
+ 'target_entity_type' => [
+ 'title' => ts('Target Entity'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'required' => TRUE,
+ 'description' => ts('The type of entity that this pcp targets'),
+ 'add' => '4.1',
+ 'default' => 'contribute',
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'target_entity_id' => [
+ 'title' => ts('Target Entity ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'required' => TRUE,
+ 'description' => ts('The entity that this pcp targets'),
+ 'add' => '4.1',
+ 'entity_reference' => [
+ 'dynamic_entity' => 'target_entity_type',
+ 'key' => 'id',
+ ],
+ ],
+ 'supporter_profile_id' => [
+ 'title' => ts('Supporter Profile ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'description' => ts('FK to civicrm_uf_group.id. Does Personal Campaign Page require manual activation by administrator? (is inactive by default after setup)?'),
+ 'add' => '2.2',
+ 'default' => NULL,
+ 'input_attrs' => [
+ 'label' => ts('Supporter Profile'),
+ ],
+ 'entity_reference' => [
+ 'entity' => 'UFGroup',
+ 'key' => 'id',
+ 'on_delete' => 'SET NULL',
+ ],
+ ],
+ 'owner_notify_id' => [
+ 'title' => ts('Owner Notification'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Radio',
+ 'description' => ts('FK to civicrm_option_group with name = PCP owner notifications'),
+ 'add' => '4.6',
+ 'default' => 0,
+ 'pseudoconstant' => [
+ 'option_group_name' => 'pcp_owner_notify',
+ ],
+ ],
+ 'is_approval_needed' => [
+ 'title' => ts('Approval Required?'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('Does Personal Campaign Page require manual activation by administrator? (is inactive by default after setup)?'),
+ 'add' => '2.2',
+ 'default' => FALSE,
+ ],
+ 'is_tellfriend_enabled' => [
+ 'title' => ts('Tell a Friend Enabled?'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('Does Personal Campaign Page allow using tell a friend?'),
+ 'add' => '2.2',
+ 'default' => FALSE,
+ ],
+ 'tellfriend_limit' => [
+ 'title' => ts('Tell A Friend Limit'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'description' => ts('Maximum recipient fields allowed in tell a friend'),
+ 'add' => '2.2',
+ 'default' => NULL,
+ ],
+ 'link_text' => [
+ 'title' => ts('Link Text'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'localizable' => TRUE,
+ 'description' => ts('Link text for PCP.'),
+ 'add' => '2.2',
+ 'default' => NULL,
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'is_active' => [
+ 'title' => ts('Enabled?'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('Is Personal Campaign Page Block enabled/active?'),
+ 'add' => '2.2',
+ 'default' => TRUE,
+ 'input_attrs' => [
+ 'label' => ts('Enabled'),
+ ],
+ ],
+ 'notify_email' => [
+ 'title' => ts('Notification Email'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'description' => ts('If set, notification is automatically emailed to this email-address on create/update Personal Campaign Page'),
+ 'add' => '2.2',
+ 'default' => NULL,
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ ],
+];
diff --git a/www/modules/civicrm/schema/Pledge/Pledge.entityType.php b/www/modules/civicrm/schema/Pledge/Pledge.entityType.php
new file mode 100644
index 000000000..e4efd8e5f
--- /dev/null
+++ b/www/modules/civicrm/schema/Pledge/Pledge.entityType.php
@@ -0,0 +1,357 @@
+ 'Pledge',
+ 'table' => 'civicrm_pledge',
+ 'class' => 'CRM_Pledge_DAO_Pledge',
+ 'getInfo' => fn() => [
+ 'title' => ts('Pledge'),
+ 'title_plural' => ts('Pledges'),
+ 'description' => ts('Promises to contribute at a future time, either in full, or at regular intervals until a total goal is reached.'),
+ 'log' => TRUE,
+ 'add' => '2.1',
+ 'icon' => 'fa-paper-plane',
+ ],
+ 'getPaths' => fn() => [
+ 'add' => 'civicrm/pledge/add?action=add&context=standalone&reset=1',
+ 'view' => 'civicrm/contact/view/pledge?id=[id]&cid=[contact_id]&action=view&reset=1',
+ 'update' => 'civicrm/contact/view/pledge?id=[id]&cid=[contact_id]&action=update&reset=1',
+ 'delete' => 'civicrm/contact/view/pledge?id=[id]&cid=[contact_id]&action=delete&reset=1',
+ ],
+ 'getIndices' => fn() => [
+ 'index_status' => [
+ 'fields' => [
+ 'status_id' => TRUE,
+ ],
+ 'add' => '2.1',
+ ],
+ ],
+ 'getFields' => fn() => [
+ 'id' => [
+ 'title' => ts('Pledge ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'required' => TRUE,
+ 'description' => ts('Pledge ID'),
+ 'add' => '2.1',
+ 'unique_name' => 'pledge_id',
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ 'primary_key' => TRUE,
+ 'auto_increment' => TRUE,
+ ],
+ 'contact_id' => [
+ 'title' => ts('Contact ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'required' => TRUE,
+ 'description' => ts('Foreign key to civicrm_contact.id .'),
+ 'add' => '2.1',
+ 'unique_name' => 'pledge_contact_id',
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ 'input_attrs' => [
+ 'label' => ts('Contact'),
+ ],
+ 'entity_reference' => [
+ 'entity' => 'Contact',
+ 'key' => 'id',
+ 'on_delete' => 'CASCADE',
+ ],
+ ],
+ 'financial_type_id' => [
+ 'title' => ts('Financial Type ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Select',
+ 'description' => ts('FK to Financial Type'),
+ 'add' => '4.3',
+ 'unique_name' => 'pledge_financial_type_id',
+ 'input_attrs' => [
+ 'label' => ts('Financial Type'),
+ ],
+ 'pseudoconstant' => [
+ 'table' => 'civicrm_financial_type',
+ 'key_column' => 'id',
+ 'label_column' => 'name',
+ ],
+ 'entity_reference' => [
+ 'entity' => 'FinancialType',
+ 'key' => 'id',
+ ],
+ ],
+ 'contribution_page_id' => [
+ 'title' => ts('Contribution Page ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'description' => ts('The Contribution Page which triggered this contribution'),
+ 'add' => '2.1',
+ 'unique_name' => 'pledge_contribution_page_id',
+ 'input_attrs' => [
+ 'label' => ts('Contribution Page'),
+ ],
+ 'entity_reference' => [
+ 'entity' => 'ContributionPage',
+ 'key' => 'id',
+ 'on_delete' => 'SET NULL',
+ ],
+ ],
+ 'amount' => [
+ 'title' => ts('Total Pledged'),
+ 'sql_type' => 'decimal(20,2)',
+ 'input_type' => 'Text',
+ 'required' => TRUE,
+ 'description' => ts('Total pledged amount.'),
+ 'add' => '2.1',
+ 'unique_name' => 'pledge_amount',
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ ],
+ 'original_installment_amount' => [
+ 'title' => ts('Original Installment Amount'),
+ 'sql_type' => 'decimal(20,2)',
+ 'input_type' => 'Text',
+ 'required' => TRUE,
+ 'description' => ts('Original amount for each of the installments.'),
+ 'add' => '3.2',
+ 'unique_name' => 'pledge_original_installment_amount',
+ 'usage' => [
+ 'export',
+ ],
+ ],
+ 'currency' => [
+ 'title' => ts('Pledge Currency'),
+ 'sql_type' => 'varchar(3)',
+ 'input_type' => 'Select',
+ 'description' => ts('3 character string, value from config setting or input via user.'),
+ 'add' => '3.2',
+ 'default' => NULL,
+ 'input_attrs' => [
+ 'maxlength' => 3,
+ ],
+ 'pseudoconstant' => [
+ 'table' => 'civicrm_currency',
+ 'key_column' => 'name',
+ 'label_column' => 'full_name',
+ 'name_column' => 'name',
+ 'abbr_column' => 'symbol',
+ ],
+ ],
+ 'frequency_unit' => [
+ 'title' => ts('Pledge Frequency Unit'),
+ 'sql_type' => 'varchar(8)',
+ 'input_type' => 'Select',
+ 'required' => TRUE,
+ 'description' => ts('Time units for recurrence of pledge payments.'),
+ 'add' => '2.1',
+ 'unique_name' => 'pledge_frequency_unit',
+ 'default' => 'month',
+ 'input_attrs' => [
+ 'maxlength' => 8,
+ ],
+ 'pseudoconstant' => [
+ 'option_group_name' => 'recur_frequency_units',
+ 'key_column' => 'name',
+ ],
+ ],
+ 'frequency_interval' => [
+ 'title' => ts('Pledge Frequency Interval'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Text',
+ 'required' => TRUE,
+ 'description' => ts('Number of time units for recurrence of pledge payments.'),
+ 'add' => '2.1',
+ 'unique_name' => 'pledge_frequency_interval',
+ 'default' => 1,
+ ],
+ 'frequency_day' => [
+ 'title' => ts('Pledge day'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Select',
+ 'required' => TRUE,
+ 'description' => ts('Day in the period when the pledge payment is due e.g. 1st of month, 15th etc. Use this to set the scheduled dates for pledge payments.'),
+ 'add' => '2.1',
+ 'default' => 3,
+ ],
+ 'installments' => [
+ 'title' => ts('Pledge Number of Installments'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Text',
+ 'required' => TRUE,
+ 'description' => ts('Total number of payments to be made.'),
+ 'add' => '2.1',
+ 'default' => 1,
+ 'usage' => [
+ 'export',
+ ],
+ ],
+ 'start_date' => [
+ 'title' => ts('Pledge Start Date'),
+ 'sql_type' => 'datetime',
+ 'input_type' => 'Select Date',
+ 'required' => TRUE,
+ 'description' => ts('The date the first scheduled pledge occurs.'),
+ 'add' => '2.1',
+ 'unique_name' => 'pledge_start_date',
+ 'unique_title' => 'Payments Start Date',
+ 'usage' => [
+ 'export',
+ ],
+ 'input_attrs' => [
+ 'format_type' => 'activityDate',
+ ],
+ ],
+ 'create_date' => [
+ 'title' => ts('Pledge Made'),
+ 'sql_type' => 'datetime',
+ 'input_type' => 'Select Date',
+ 'required' => TRUE,
+ 'description' => ts('When this pledge record was created.'),
+ 'add' => '2.1',
+ 'unique_name' => 'pledge_create_date',
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ 'input_attrs' => [
+ 'format_type' => 'activityDate',
+ ],
+ ],
+ 'acknowledge_date' => [
+ 'title' => ts('Pledge Acknowledged'),
+ 'sql_type' => 'datetime',
+ 'input_type' => 'Select Date',
+ 'description' => ts('When a pledge acknowledgement message was sent to the contributor.'),
+ 'add' => '2.1',
+ 'input_attrs' => [
+ 'format_type' => 'activityDate',
+ ],
+ ],
+ 'modified_date' => [
+ 'title' => ts('Pledge Modified Date'),
+ 'sql_type' => 'datetime',
+ 'input_type' => NULL,
+ 'readonly' => TRUE,
+ 'description' => ts('Last updated date for this pledge record.'),
+ 'add' => '2.1',
+ ],
+ 'cancel_date' => [
+ 'title' => ts('Pledge Cancelled Date'),
+ 'sql_type' => 'datetime',
+ 'input_type' => 'Select Date',
+ 'description' => ts('Date this pledge was cancelled by contributor.'),
+ 'add' => '2.1',
+ 'input_attrs' => [
+ 'format_type' => 'activityDate',
+ ],
+ ],
+ 'end_date' => [
+ 'title' => ts('Pledge End Date'),
+ 'sql_type' => 'datetime',
+ 'input_type' => 'Select Date',
+ 'description' => ts('Date this pledge finished successfully (total pledge payments equal to or greater than pledged amount).'),
+ 'add' => '2.1',
+ 'unique_name' => 'pledge_end_date',
+ 'unique_title' => 'Payments Ended Date',
+ 'usage' => [
+ 'export',
+ ],
+ 'input_attrs' => [
+ 'format_type' => 'activityDate',
+ ],
+ ],
+ 'max_reminders' => [
+ 'title' => ts('Maximum Number of Reminders'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Text',
+ 'description' => ts('The maximum number of payment reminders to send for any given payment.'),
+ 'add' => '2.1',
+ 'default' => 1,
+ ],
+ 'initial_reminder_day' => [
+ 'title' => ts('Initial Reminder Day'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Select',
+ 'description' => ts('Send initial reminder this many days prior to the payment due date.'),
+ 'add' => '2.1',
+ 'default' => 5,
+ ],
+ 'additional_reminder_day' => [
+ 'title' => ts('Additional Reminder Days'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Text',
+ 'description' => ts('Send additional reminder this many days after last one sent, up to maximum number of reminders.'),
+ 'add' => '2.1',
+ 'default' => 5,
+ ],
+ 'status_id' => [
+ 'title' => ts('Pledge Status ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Select',
+ 'required' => TRUE,
+ 'description' => ts('Implicit foreign key to civicrm_option_values in the pledge_status option group.'),
+ 'add' => '2.1',
+ 'unique_name' => 'pledge_status_id',
+ 'usage' => [
+ 'import',
+ 'duplicate_matching',
+ ],
+ 'input_attrs' => [
+ 'label' => ts('Status'),
+ ],
+ 'pseudoconstant' => [
+ 'option_group_name' => 'pledge_status',
+ ],
+ ],
+ 'is_test' => [
+ 'title' => ts('Test'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'unique_name' => 'pledge_is_test',
+ 'default' => FALSE,
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ ],
+ 'campaign_id' => [
+ 'title' => ts('Campaign ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'description' => ts('The campaign for which this pledge has been initiated.'),
+ 'add' => '3.4',
+ 'unique_name' => 'pledge_campaign_id',
+ 'component' => 'CiviCampaign',
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ 'input_attrs' => [
+ 'label' => ts('Campaign'),
+ ],
+ 'pseudoconstant' => [
+ 'table' => 'civicrm_campaign',
+ 'key_column' => 'id',
+ 'label_column' => 'title',
+ 'prefetch' => 'disabled',
+ ],
+ 'entity_reference' => [
+ 'entity' => 'Campaign',
+ 'key' => 'id',
+ 'on_delete' => 'SET NULL',
+ ],
+ ],
+ ],
+];
diff --git a/www/modules/civicrm/schema/Pledge/PledgeBlock.entityType.php b/www/modules/civicrm/schema/Pledge/PledgeBlock.entityType.php
new file mode 100644
index 000000000..ee7b4317c
--- /dev/null
+++ b/www/modules/civicrm/schema/Pledge/PledgeBlock.entityType.php
@@ -0,0 +1,129 @@
+ 'PledgeBlock',
+ 'table' => 'civicrm_pledge_block',
+ 'class' => 'CRM_Pledge_DAO_PledgeBlock',
+ 'getInfo' => fn() => [
+ 'title' => ts('Pledge Block'),
+ 'title_plural' => ts('Pledge Blocks'),
+ 'description' => ts('FIXME'),
+ 'log' => TRUE,
+ 'add' => '2.1',
+ ],
+ 'getIndices' => fn() => [
+ 'index_entity' => [
+ 'fields' => [
+ 'entity_table' => TRUE,
+ 'entity_id' => TRUE,
+ ],
+ 'add' => '2.1',
+ ],
+ ],
+ 'getFields' => fn() => [
+ 'id' => [
+ 'title' => ts('Pledge Block ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'required' => TRUE,
+ 'description' => ts('Pledge ID'),
+ 'add' => '2.1',
+ 'primary_key' => TRUE,
+ 'auto_increment' => TRUE,
+ ],
+ 'entity_table' => [
+ 'title' => ts('Entity Table'),
+ 'sql_type' => 'varchar(64)',
+ 'input_type' => 'Text',
+ 'description' => ts('physical tablename for entity being joined to pledge, e.g. civicrm_contact'),
+ 'add' => '2.1',
+ 'input_attrs' => [
+ 'maxlength' => 64,
+ ],
+ ],
+ 'entity_id' => [
+ 'title' => ts('Entity ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'required' => TRUE,
+ 'description' => ts('FK to entity table specified in entity_table column.'),
+ 'add' => '2.1',
+ 'entity_reference' => [
+ 'dynamic_entity' => 'entity_table',
+ 'key' => 'id',
+ ],
+ ],
+ 'pledge_frequency_unit' => [
+ 'title' => ts('Pledge Frequency Unit'),
+ 'sql_type' => 'varchar(128)',
+ 'input_type' => 'Text',
+ 'description' => ts('Delimited list of supported frequency units'),
+ 'add' => '2.1',
+ 'serialize' => CRM_Core_DAO::SERIALIZE_SEPARATOR_TRIMMED,
+ 'input_attrs' => [
+ 'maxlength' => 128,
+ ],
+ ],
+ 'is_pledge_interval' => [
+ 'title' => ts('Expose Frequency Interval?'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('Is frequency interval exposed on the contribution form.'),
+ 'add' => '2.1',
+ 'default' => FALSE,
+ ],
+ 'max_reminders' => [
+ 'title' => ts('Maximum Number of Reminders'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'description' => ts('The maximum number of payment reminders to send for any given payment.'),
+ 'add' => '2.1',
+ 'default' => 1,
+ ],
+ 'initial_reminder_day' => [
+ 'title' => ts('Initial Reminder Day'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'description' => ts('Send initial reminder this many days prior to the payment due date.'),
+ 'add' => '2.1',
+ 'default' => 5,
+ ],
+ 'additional_reminder_day' => [
+ 'title' => ts('Additional Reminder Days'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'description' => ts('Send additional reminder this many days after last one sent, up to maximum number of reminders.'),
+ 'add' => '2.1',
+ 'default' => 5,
+ ],
+ 'pledge_start_date' => [
+ 'title' => ts('Pledge Start Date'),
+ 'sql_type' => 'varchar(64)',
+ 'input_type' => 'Text',
+ 'description' => ts('The date the first scheduled pledge occurs.'),
+ 'add' => '4.7',
+ 'input_attrs' => [
+ 'maxlength' => 64,
+ ],
+ ],
+ 'is_pledge_start_date_visible' => [
+ 'title' => ts('Show Recurring Donation Start Date?'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('If true - recurring start date is shown.'),
+ 'add' => '4.7',
+ 'default' => FALSE,
+ ],
+ 'is_pledge_start_date_editable' => [
+ 'title' => ts('Allow Edits to Recurring Donation Start Date?'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('If true - recurring start date is editable.'),
+ 'add' => '4.7',
+ 'default' => FALSE,
+ ],
+ ],
+];
diff --git a/www/modules/civicrm/schema/Pledge/PledgePayment.entityType.php b/www/modules/civicrm/schema/Pledge/PledgePayment.entityType.php
new file mode 100644
index 000000000..3a374dc96
--- /dev/null
+++ b/www/modules/civicrm/schema/Pledge/PledgePayment.entityType.php
@@ -0,0 +1,181 @@
+ 'PledgePayment',
+ 'table' => 'civicrm_pledge_payment',
+ 'class' => 'CRM_Pledge_DAO_PledgePayment',
+ 'getInfo' => fn() => [
+ 'title' => ts('Pledge Payment'),
+ 'title_plural' => ts('Pledge Payments'),
+ 'description' => ts('Pledge Payment'),
+ 'log' => TRUE,
+ 'add' => '2.1',
+ ],
+ 'getIndices' => fn() => [
+ 'index_contribution_pledge' => [
+ 'fields' => [
+ 'contribution_id' => TRUE,
+ 'pledge_id' => TRUE,
+ ],
+ 'add' => '2.1',
+ ],
+ 'index_status' => [
+ 'fields' => [
+ 'status_id' => TRUE,
+ ],
+ 'add' => '2.1',
+ ],
+ ],
+ 'getFields' => fn() => [
+ 'id' => [
+ 'title' => ts('Payment ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'required' => TRUE,
+ 'add' => '2.1',
+ 'unique_name' => 'pledge_payment_id',
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ 'primary_key' => TRUE,
+ 'auto_increment' => TRUE,
+ ],
+ 'pledge_id' => [
+ 'title' => ts('Pledge ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'required' => TRUE,
+ 'description' => ts('FK to Pledge table'),
+ 'add' => '2.1',
+ 'input_attrs' => [
+ 'label' => ts('Pledge'),
+ ],
+ 'entity_reference' => [
+ 'entity' => 'Pledge',
+ 'key' => 'id',
+ 'on_delete' => 'CASCADE',
+ ],
+ ],
+ 'contribution_id' => [
+ 'title' => ts('Contribution ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'description' => ts('FK to contribution table.'),
+ 'add' => '2.1',
+ 'input_attrs' => [
+ 'label' => ts('Contribution'),
+ ],
+ 'entity_reference' => [
+ 'entity' => 'Contribution',
+ 'key' => 'id',
+ 'on_delete' => 'CASCADE',
+ ],
+ ],
+ 'scheduled_amount' => [
+ 'title' => ts('Scheduled Amount'),
+ 'sql_type' => 'decimal(20,2)',
+ 'input_type' => NULL,
+ 'required' => TRUE,
+ 'description' => ts('Pledged amount for this payment (the actual contribution amount might be different).'),
+ 'add' => '2.1',
+ 'unique_name' => 'pledge_payment_scheduled_amount',
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ ],
+ 'actual_amount' => [
+ 'title' => ts('Actual Amount'),
+ 'sql_type' => 'decimal(20,2)',
+ 'input_type' => NULL,
+ 'description' => ts('Actual amount that is paid as the Pledged installment amount.'),
+ 'add' => '3.2',
+ 'unique_name' => 'pledge_payment_actual_amount',
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ ],
+ 'currency' => [
+ 'title' => ts('Currency'),
+ 'sql_type' => 'varchar(3)',
+ 'input_type' => 'Select',
+ 'description' => ts('3 character string, value from config setting or input via user.'),
+ 'add' => '3.2',
+ 'default' => NULL,
+ 'input_attrs' => [
+ 'maxlength' => 3,
+ ],
+ 'pseudoconstant' => [
+ 'table' => 'civicrm_currency',
+ 'key_column' => 'name',
+ 'label_column' => 'full_name',
+ 'name_column' => 'name',
+ 'abbr_column' => 'symbol',
+ ],
+ ],
+ 'scheduled_date' => [
+ 'title' => ts('Scheduled Date'),
+ 'sql_type' => 'datetime',
+ 'input_type' => 'Select Date',
+ 'required' => TRUE,
+ 'description' => ts('The date the pledge payment is supposed to happen.'),
+ 'add' => '2.1',
+ 'unique_name' => 'pledge_payment_scheduled_date',
+ 'unique_title' => 'Payment Scheduled',
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ 'input_attrs' => [
+ 'format_type' => 'activityDate',
+ ],
+ ],
+ 'reminder_date' => [
+ 'title' => ts('Last Reminder'),
+ 'sql_type' => 'datetime',
+ 'input_type' => 'Select Date',
+ 'description' => ts('The date that the most recent payment reminder was sent.'),
+ 'add' => '2.1',
+ 'unique_name' => 'pledge_payment_reminder_date',
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ ],
+ 'reminder_count' => [
+ 'title' => ts('Reminders Sent'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'description' => ts('The number of payment reminders sent.'),
+ 'add' => '2.1',
+ 'unique_name' => 'pledge_payment_reminder_count',
+ 'default' => 0,
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ ],
+ 'status_id' => [
+ 'title' => ts('Payment Status'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Select',
+ 'add' => '2.1',
+ 'unique_name' => 'pledge_payment_status_id',
+ 'usage' => [
+ 'import',
+ 'duplicate_matching',
+ ],
+ 'pseudoconstant' => [
+ 'option_group_name' => 'contribution_status',
+ ],
+ ],
+ ],
+];
diff --git a/www/modules/civicrm/schema/Price/LineItem.entityType.php b/www/modules/civicrm/schema/Price/LineItem.entityType.php
new file mode 100644
index 000000000..367454ab4
--- /dev/null
+++ b/www/modules/civicrm/schema/Price/LineItem.entityType.php
@@ -0,0 +1,222 @@
+ 'LineItem',
+ 'table' => 'civicrm_line_item',
+ 'class' => 'CRM_Price_DAO_LineItem',
+ 'getInfo' => fn() => [
+ 'title' => ts('Line Item'),
+ 'title_plural' => ts('Line Items'),
+ 'description' => ts('FIXME'),
+ 'log' => TRUE,
+ 'add' => '1.7',
+ ],
+ 'getIndices' => fn() => [
+ 'UI_line_item_value' => [
+ 'fields' => [
+ 'entity_id' => TRUE,
+ 'entity_table' => TRUE,
+ 'contribution_id' => TRUE,
+ 'price_field_value_id' => TRUE,
+ 'price_field_id' => TRUE,
+ ],
+ 'unique' => TRUE,
+ 'add' => '3.3',
+ ],
+ ],
+ 'getFields' => fn() => [
+ 'id' => [
+ 'title' => ts('Line Item ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'required' => TRUE,
+ 'description' => ts('Line Item'),
+ 'add' => '1.7',
+ 'primary_key' => TRUE,
+ 'auto_increment' => TRUE,
+ ],
+ 'entity_table' => [
+ 'title' => ts('Line Item Entity Type'),
+ 'sql_type' => 'varchar(64)',
+ 'input_type' => 'Select',
+ 'required' => TRUE,
+ 'description' => ts('May contain civicrm_contribution, civicrm_participant or civicrm_membership'),
+ 'add' => '1.7',
+ 'input_attrs' => [
+ 'maxlength' => 64,
+ ],
+ 'pseudoconstant' => [
+ 'callback' => 'CRM_Price_BAO_LineItem::entityTables',
+ ],
+ ],
+ 'entity_id' => [
+ 'title' => ts('Line Item Entity'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'required' => TRUE,
+ 'description' => ts('entry in table'),
+ 'add' => '1.7',
+ 'entity_reference' => [
+ 'dynamic_entity' => 'entity_table',
+ 'key' => 'id',
+ ],
+ ],
+ 'contribution_id' => [
+ 'title' => ts('Contribution ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'description' => ts('FK to civicrm_contribution'),
+ 'add' => '4.5',
+ 'input_attrs' => [
+ 'label' => ts('Contribution'),
+ ],
+ 'entity_reference' => [
+ 'entity' => 'Contribution',
+ 'key' => 'id',
+ 'on_delete' => 'SET NULL',
+ ],
+ ],
+ 'price_field_id' => [
+ 'title' => ts('Price Field ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Select',
+ 'description' => ts('FK to civicrm_price_field'),
+ 'add' => '1.7',
+ 'input_attrs' => [
+ 'label' => ts('Price Field'),
+ ],
+ 'pseudoconstant' => [
+ 'table' => 'civicrm_price_field',
+ 'key_column' => 'id',
+ 'name_column' => 'name',
+ 'label_column' => 'label',
+ ],
+ 'entity_reference' => [
+ 'entity' => 'PriceField',
+ 'key' => 'id',
+ 'on_delete' => 'SET NULL',
+ ],
+ ],
+ 'label' => [
+ 'title' => ts('Line Item Label'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'description' => ts('descriptive label for item - from price_field_value.label'),
+ 'add' => '1.7',
+ 'default' => NULL,
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'qty' => [
+ 'title' => ts('Line Item Quantity'),
+ 'sql_type' => 'decimal(20,2)',
+ 'input_type' => 'Text',
+ 'data_type' => 'Float',
+ 'required' => TRUE,
+ 'description' => ts('How many items ordered'),
+ 'add' => '1.7',
+ ],
+ 'unit_price' => [
+ 'title' => ts('Unit Price'),
+ 'sql_type' => 'decimal(20,2)',
+ 'input_type' => 'Text',
+ 'required' => TRUE,
+ 'description' => ts('price of each item'),
+ 'add' => '1.7',
+ 'input_attrs' => [
+ 'label' => ts('Unit Price'),
+ ],
+ ],
+ 'line_total' => [
+ 'title' => ts('Line Item Total'),
+ 'sql_type' => 'decimal(20,2)',
+ 'input_type' => NULL,
+ 'required' => TRUE,
+ 'description' => ts('qty * unit_price'),
+ 'add' => '1.7',
+ ],
+ 'participant_count' => [
+ 'title' => ts('Line Item Participant Count'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Text',
+ 'description' => ts('Participant count for field'),
+ 'add' => '3.2',
+ 'default' => NULL,
+ ],
+ 'price_field_value_id' => [
+ 'title' => ts('Option ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'description' => ts('FK to civicrm_price_field_value'),
+ 'add' => '3.3',
+ 'default' => NULL,
+ 'input_attrs' => [
+ 'label' => ts('Option'),
+ ],
+ 'pseudoconstant' => [
+ 'table' => 'civicrm_price_field_value',
+ 'key_column' => 'id',
+ 'name_column' => 'name',
+ 'label_column' => 'label',
+ ],
+ 'entity_reference' => [
+ 'entity' => 'PriceFieldValue',
+ 'key' => 'id',
+ 'on_delete' => 'SET NULL',
+ ],
+ ],
+ 'financial_type_id' => [
+ 'title' => ts('Financial Type ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Select',
+ 'description' => ts('FK to Financial Type.'),
+ 'add' => '4.3',
+ 'default' => NULL,
+ 'input_attrs' => [
+ 'label' => ts('Financial Type'),
+ ],
+ 'pseudoconstant' => [
+ 'table' => 'civicrm_financial_type',
+ 'key_column' => 'id',
+ 'label_column' => 'name',
+ ],
+ 'entity_reference' => [
+ 'entity' => 'FinancialType',
+ 'key' => 'id',
+ 'on_delete' => 'SET NULL',
+ ],
+ ],
+ 'non_deductible_amount' => [
+ 'title' => ts('Non-deductible Amount'),
+ 'sql_type' => 'decimal(20,2)',
+ 'input_type' => 'Text',
+ 'required' => TRUE,
+ 'description' => ts('Portion of total amount which is NOT tax deductible.'),
+ 'add' => '4.7',
+ 'default' => '0.0',
+ ],
+ 'tax_amount' => [
+ 'title' => ts('Tax Amount'),
+ 'sql_type' => 'decimal(20,2)',
+ 'input_type' => 'Text',
+ 'required' => TRUE,
+ 'description' => ts('tax of each item'),
+ 'add' => '4.6',
+ 'default' => '0',
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ ],
+ 'membership_num_terms' => [
+ 'title' => ts('Number of membership terms purchased'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'description' => ts('Number of terms for this membership (only supported in Order->Payment flow). If the field is NULL it means unknown and it will be assumed to be 1 during payment.create if entity_table is civicrm_membership'),
+ 'add' => '5.40',
+ 'default' => NULL,
+ ],
+ ],
+];
diff --git a/www/modules/civicrm/schema/Price/PriceField.entityType.php b/www/modules/civicrm/schema/Price/PriceField.entityType.php
new file mode 100644
index 000000000..d640fe035
--- /dev/null
+++ b/www/modules/civicrm/schema/Price/PriceField.entityType.php
@@ -0,0 +1,220 @@
+ 'PriceField',
+ 'table' => 'civicrm_price_field',
+ 'class' => 'CRM_Price_DAO_PriceField',
+ 'getInfo' => fn() => [
+ 'title' => ts('Price Field'),
+ 'title_plural' => ts('Price Fields'),
+ 'description' => ts('FIXME'),
+ 'log' => TRUE,
+ 'add' => '1.8',
+ ],
+ 'getPaths' => fn() => [
+ 'add' => 'civicrm/admin/price/field/edit?reset=1&action=add&sid=[price_set_id]',
+ 'update' => 'civicrm/admin/price/field/edit?reset=1&action=update&sid=[price_set_id]&fid=[id]',
+ 'delete' => 'civicrm/admin/price/field/edit?reset=1&action=delete&sid=[price_set_id]&fid=[id]',
+ 'preview' => 'civicrm/admin/price/field/edit?reset=1&action=preview&sid=[price_set_id]&fid=[id]',
+ 'browse' => 'civicrm/admin/price/field',
+ ],
+ 'getIndices' => fn() => [
+ 'index_name' => [
+ 'fields' => [
+ 'name' => TRUE,
+ ],
+ 'add' => '1.8',
+ ],
+ ],
+ 'getFields' => fn() => [
+ 'id' => [
+ 'title' => ts('Price Field ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'required' => TRUE,
+ 'description' => ts('Price Field'),
+ 'add' => '1.8',
+ 'primary_key' => TRUE,
+ 'auto_increment' => TRUE,
+ ],
+ 'price_set_id' => [
+ 'title' => ts('Price Set ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'required' => TRUE,
+ 'description' => ts('FK to civicrm_price_set'),
+ 'add' => '1.8',
+ 'input_attrs' => [
+ 'label' => ts('Price Set'),
+ ],
+ 'pseudoconstant' => [
+ 'table' => 'civicrm_price_set',
+ 'key_column' => 'id',
+ 'name_column' => 'name',
+ 'label_column' => 'title',
+ ],
+ 'entity_reference' => [
+ 'entity' => 'PriceSet',
+ 'key' => 'id',
+ ],
+ ],
+ 'name' => [
+ 'title' => ts('Name'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'required' => TRUE,
+ 'description' => ts('Variable name/programmatic handle for this field.'),
+ 'add' => '1.8',
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'label' => [
+ 'title' => ts('Label'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'required' => TRUE,
+ 'localizable' => TRUE,
+ 'description' => ts('Text for form field label (also friendly name for administering this field).'),
+ 'add' => '1.8',
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'html_type' => [
+ 'title' => ts('Html Type'),
+ 'sql_type' => 'varchar(12)',
+ 'input_type' => 'Select',
+ 'required' => TRUE,
+ 'add' => '1.8',
+ 'input_attrs' => [
+ 'label' => ts('Html Type'),
+ 'maxlength' => 12,
+ ],
+ 'pseudoconstant' => [
+ 'callback' => 'CRM_Price_BAO_PriceField::htmlTypes',
+ ],
+ ],
+ 'is_enter_qty' => [
+ 'title' => ts('Price Field Quantity Required?'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('Enter a quantity for this field?'),
+ 'add' => '1.8',
+ 'default' => FALSE,
+ ],
+ 'help_pre' => [
+ 'title' => ts('Price Field Pre Text'),
+ 'sql_type' => 'text',
+ 'input_type' => 'TextArea',
+ 'localizable' => TRUE,
+ 'description' => ts('Description and/or help text to display before this field.'),
+ 'add' => '1.8',
+ 'input_attrs' => [
+ 'rows' => 4,
+ 'cols' => 80,
+ ],
+ ],
+ 'help_post' => [
+ 'title' => ts('Price Field Post Text'),
+ 'sql_type' => 'text',
+ 'input_type' => 'TextArea',
+ 'localizable' => TRUE,
+ 'description' => ts('Description and/or help text to display after this field.'),
+ 'add' => '1.8',
+ 'input_attrs' => [
+ 'rows' => 4,
+ 'cols' => 80,
+ ],
+ ],
+ 'weight' => [
+ 'title' => ts('Order'),
+ 'sql_type' => 'int',
+ 'input_type' => 'Select',
+ 'description' => ts('Order in which the fields should appear'),
+ 'add' => '1.8',
+ 'default' => 1,
+ ],
+ 'is_display_amounts' => [
+ 'title' => ts('Price Field Show Amounts?'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('Should the price be displayed next to the label for each option?'),
+ 'default' => TRUE,
+ ],
+ 'options_per_line' => [
+ 'title' => ts('Price Field Options per Row'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Text',
+ 'description' => ts('number of options per line for checkbox and radio'),
+ 'add' => '1.8',
+ 'default' => 1,
+ ],
+ 'is_active' => [
+ 'title' => ts('Price Field Is Active?'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('Is this price field active'),
+ 'add' => '1.8',
+ 'default' => TRUE,
+ 'input_attrs' => [
+ 'label' => ts('Enabled'),
+ ],
+ ],
+ 'is_required' => [
+ 'title' => ts('Price Field is Required?'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('Is this price field required (value must be > 1)'),
+ 'add' => '1.8',
+ 'default' => TRUE,
+ ],
+ 'active_on' => [
+ 'title' => ts('Price Field Start Date'),
+ 'sql_type' => 'datetime',
+ 'input_type' => 'Select Date',
+ 'description' => ts('If non-zero, do not show this field before the date specified'),
+ 'add' => '1.8',
+ 'default' => NULL,
+ 'input_attrs' => [
+ 'format_type' => 'activityDateTime',
+ ],
+ ],
+ 'expire_on' => [
+ 'title' => ts('Price Field End Date'),
+ 'sql_type' => 'datetime',
+ 'input_type' => 'Select Date',
+ 'description' => ts('If non-zero, do not show this field after the date specified'),
+ 'add' => '1.8',
+ 'default' => NULL,
+ 'input_attrs' => [
+ 'format_type' => 'activityDateTime',
+ ],
+ ],
+ 'javascript' => [
+ 'title' => ts('Price Field Javascript'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'description' => ts('Optional scripting attributes for field'),
+ 'add' => '1.8',
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'visibility_id' => [
+ 'title' => ts('Price Field Visibility'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Select',
+ 'description' => ts('Implicit FK to civicrm_option_group with name = \'visibility\''),
+ 'add' => '3.2',
+ 'default' => 1,
+ 'pseudoconstant' => [
+ 'option_group_name' => 'visibility',
+ ],
+ ],
+ ],
+];
diff --git a/www/modules/civicrm/schema/Price/PriceFieldValue.entityType.php b/www/modules/civicrm/schema/Price/PriceFieldValue.entityType.php
new file mode 100644
index 000000000..74f02f282
--- /dev/null
+++ b/www/modules/civicrm/schema/Price/PriceFieldValue.entityType.php
@@ -0,0 +1,246 @@
+ 'PriceFieldValue',
+ 'table' => 'civicrm_price_field_value',
+ 'class' => 'CRM_Price_DAO_PriceFieldValue',
+ 'getInfo' => fn() => [
+ 'title' => ts('Price Field Value'),
+ 'title_plural' => ts('Price Field Values'),
+ 'description' => ts('FIXME'),
+ 'add' => '3.3',
+ ],
+ 'getPaths' => fn() => [
+ 'add' => 'civicrm/admin/price/field/option/edit?reset=1&action=add&fid=[price_field_id]&sid=[price_field_id.price_set_id]',
+ 'view' => 'civicrm/admin/price/field/option/edit?reset=1&action=view&oid=[id]&fid=[price_field_id]&sid=[price_field_id.price_set_id]',
+ 'update' => 'civicrm/admin/price/field/option/edit?reset=1&action=update&oid=[id]&fid=[price_field_id]&sid=[price_field_id.price_set_id]',
+ 'delete' => 'civicrm/admin/price/field/option/edit?reset=1&action=delete&oid=[id]&fid=[price_field_id]&sid=[price_field_id.price_set_id]',
+ 'browse' => 'civicrm/admin/price/field/option',
+ ],
+ 'getFields' => fn() => [
+ 'id' => [
+ 'title' => ts('Price Field Value ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'required' => TRUE,
+ 'description' => ts('Price Field Value'),
+ 'add' => '3.3',
+ 'primary_key' => TRUE,
+ 'auto_increment' => TRUE,
+ ],
+ 'price_field_id' => [
+ 'title' => ts('Price Field ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'required' => TRUE,
+ 'description' => ts('FK to civicrm_price_field'),
+ 'add' => '3.3',
+ 'input_attrs' => [
+ 'label' => ts('Price Field'),
+ ],
+ 'entity_reference' => [
+ 'entity' => 'PriceField',
+ 'key' => 'id',
+ ],
+ ],
+ 'name' => [
+ 'title' => ts('Name'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'description' => ts('Price field option name'),
+ 'add' => '3.3',
+ 'default' => NULL,
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'label' => [
+ 'title' => ts('Label'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'localizable' => TRUE,
+ 'description' => ts('Price field option label'),
+ 'add' => '3.3',
+ 'default' => NULL,
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'description' => [
+ 'title' => ts('Description'),
+ 'sql_type' => 'text',
+ 'input_type' => 'TextArea',
+ 'localizable' => TRUE,
+ 'description' => ts('Price field option description.'),
+ 'add' => '3.3',
+ 'default' => NULL,
+ 'input_attrs' => [
+ 'rows' => 2,
+ 'cols' => 60,
+ 'label' => ts('Description'),
+ ],
+ ],
+ 'help_pre' => [
+ 'title' => ts('Help Pre'),
+ 'sql_type' => 'text',
+ 'input_type' => 'TextArea',
+ 'localizable' => TRUE,
+ 'description' => ts('Price field option pre help text.'),
+ 'add' => '4.7',
+ 'default' => NULL,
+ 'input_attrs' => [
+ 'rows' => 2,
+ 'cols' => 60,
+ 'label' => ts('Pre Help'),
+ ],
+ ],
+ 'help_post' => [
+ 'title' => ts('Help Post'),
+ 'sql_type' => 'text',
+ 'input_type' => 'TextArea',
+ 'localizable' => TRUE,
+ 'description' => ts('Price field option post field help.'),
+ 'add' => '4.7',
+ 'default' => NULL,
+ 'input_attrs' => [
+ 'rows' => 2,
+ 'cols' => 60,
+ 'label' => ts('Post Help'),
+ ],
+ ],
+ 'amount' => [
+ 'title' => ts('Amount'),
+ 'sql_type' => 'decimal(18,9)',
+ 'input_type' => 'Text',
+ 'required' => TRUE,
+ 'description' => ts('Price field option amount'),
+ 'add' => '3.3',
+ 'input_attrs' => [
+ 'size' => '8',
+ 'maxlength' => 18,
+ ],
+ ],
+ 'count' => [
+ 'title' => ts('Count'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Text',
+ 'description' => ts('Number of participants per field option'),
+ 'add' => '3.3',
+ 'default' => NULL,
+ 'input_attrs' => [
+ 'label' => ts('Count'),
+ ],
+ ],
+ 'max_value' => [
+ 'title' => ts('Max Value'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Text',
+ 'description' => ts('Max number of participants per field options'),
+ 'add' => '3.3',
+ 'default' => NULL,
+ 'input_attrs' => [
+ 'label' => ts('Max Value'),
+ ],
+ ],
+ 'weight' => [
+ 'title' => ts('Order'),
+ 'sql_type' => 'int',
+ 'input_type' => 'Text',
+ 'description' => ts('Order in which the field options should appear'),
+ 'add' => '3.3',
+ 'default' => 1,
+ ],
+ 'membership_type_id' => [
+ 'title' => ts('Membership Type ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'description' => ts('FK to Membership Type'),
+ 'add' => '3.4',
+ 'default' => NULL,
+ 'input_attrs' => [
+ 'label' => ts('Membership Type'),
+ ],
+ 'entity_reference' => [
+ 'entity' => 'MembershipType',
+ 'key' => 'id',
+ 'on_delete' => 'SET NULL',
+ ],
+ ],
+ 'membership_num_terms' => [
+ 'title' => ts('Membership Num Terms'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Text',
+ 'description' => ts('Number of terms for this membership'),
+ 'add' => '4.3',
+ 'default' => NULL,
+ 'input_attrs' => [
+ 'label' => ts('Number of terms'),
+ ],
+ ],
+ 'is_default' => [
+ 'title' => ts('Is Default Price Field Option?'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('Is this default price field option'),
+ 'add' => '3.3',
+ 'default' => FALSE,
+ 'input_attrs' => [
+ 'label' => ts('Default'),
+ ],
+ ],
+ 'is_active' => [
+ 'title' => ts('Price Field Value is Active'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('Is this price field value active'),
+ 'add' => '3.3',
+ 'default' => TRUE,
+ 'input_attrs' => [
+ 'label' => ts('Enabled'),
+ ],
+ ],
+ 'financial_type_id' => [
+ 'title' => ts('Financial Type ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Select',
+ 'description' => ts('FK to Financial Type.'),
+ 'add' => '4.3',
+ 'default' => NULL,
+ 'input_attrs' => [
+ 'label' => ts('Financial Type'),
+ ],
+ 'pseudoconstant' => [
+ 'table' => 'civicrm_financial_type',
+ 'key_column' => 'id',
+ 'label_column' => 'name',
+ ],
+ 'entity_reference' => [
+ 'entity' => 'FinancialType',
+ 'key' => 'id',
+ 'on_delete' => 'SET NULL',
+ ],
+ ],
+ 'non_deductible_amount' => [
+ 'title' => ts('Non-deductible Amount'),
+ 'sql_type' => 'decimal(20,2)',
+ 'input_type' => 'Text',
+ 'required' => TRUE,
+ 'description' => ts('Portion of total amount which is NOT tax deductible.'),
+ 'add' => '4.7',
+ 'default' => '0.0',
+ ],
+ 'visibility_id' => [
+ 'title' => ts('Price Field Option Visibility'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Select',
+ 'description' => ts('Implicit FK to civicrm_option_group with name = \'visibility\''),
+ 'add' => '4.7',
+ 'default' => 1,
+ 'pseudoconstant' => [
+ 'option_group_name' => 'visibility',
+ ],
+ ],
+ ],
+];
diff --git a/www/modules/civicrm/schema/Price/PriceSet.entityType.php b/www/modules/civicrm/schema/Price/PriceSet.entityType.php
new file mode 100644
index 000000000..ea7e85ea8
--- /dev/null
+++ b/www/modules/civicrm/schema/Price/PriceSet.entityType.php
@@ -0,0 +1,196 @@
+ 'PriceSet',
+ 'table' => 'civicrm_price_set',
+ 'class' => 'CRM_Price_DAO_PriceSet',
+ 'getInfo' => fn() => [
+ 'title' => ts('Price Set'),
+ 'title_plural' => ts('Price Sets'),
+ 'description' => ts('FIXME'),
+ 'log' => TRUE,
+ 'add' => '1.8',
+ ],
+ 'getPaths' => fn() => [
+ 'add' => 'civicrm/admin/price/add?reset=1&action=add',
+ 'update' => 'civicrm/admin/price/edit?reset=1&action=update&sid=[id]',
+ 'delete' => 'civicrm/admin/price/edit?reset=1&action=delete&sid=[id]',
+ 'preview' => 'civicrm/admin/price/edit?reset=1&action=preview&sid=[id]',
+ 'browse' => 'civicrm/admin/price',
+ ],
+ 'getIndices' => fn() => [
+ 'UI_name' => [
+ 'fields' => [
+ 'name' => TRUE,
+ ],
+ 'unique' => TRUE,
+ 'add' => '1.8',
+ ],
+ ],
+ 'getFields' => fn() => [
+ 'id' => [
+ 'title' => ts('Price Set'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'required' => TRUE,
+ 'description' => ts('Price Set'),
+ 'add' => '1.8',
+ 'input_attrs' => [
+ 'label' => ts('ID'),
+ ],
+ 'primary_key' => TRUE,
+ 'auto_increment' => TRUE,
+ ],
+ 'domain_id' => [
+ 'title' => ts('Domain ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Text',
+ 'description' => ts('Which Domain is this price-set for'),
+ 'add' => '3.1',
+ 'input_attrs' => [
+ 'label' => ts('Domain'),
+ ],
+ 'pseudoconstant' => [
+ 'table' => 'civicrm_domain',
+ 'key_column' => 'id',
+ 'label_column' => 'name',
+ ],
+ 'entity_reference' => [
+ 'entity' => 'Domain',
+ 'key' => 'id',
+ ],
+ ],
+ 'name' => [
+ 'title' => ts('Name'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'required' => TRUE,
+ 'description' => ts('Variable name/programmatic handle for this set of price fields.'),
+ 'add' => '1.8',
+ 'input_attrs' => [
+ 'label' => ts('Name'),
+ 'maxlength' => 255,
+ ],
+ ],
+ 'title' => [
+ 'title' => ts('Price Set Title'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'required' => TRUE,
+ 'localizable' => TRUE,
+ 'description' => ts('Displayed title for the Price Set.'),
+ 'add' => '1.8',
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'is_active' => [
+ 'title' => ts('Price Set Is Active?'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('Is this price set active'),
+ 'add' => '1.8',
+ 'default' => TRUE,
+ 'input_attrs' => [
+ 'label' => ts('Enabled'),
+ ],
+ ],
+ 'help_pre' => [
+ 'title' => ts('Price Set Pre Help'),
+ 'sql_type' => 'text',
+ 'input_type' => 'TextArea',
+ 'localizable' => TRUE,
+ 'description' => ts('Description and/or help text to display before fields in form.'),
+ 'add' => '1.8',
+ 'input_attrs' => [
+ 'rows' => 4,
+ 'cols' => 80,
+ ],
+ ],
+ 'help_post' => [
+ 'title' => ts('Price Set Post Help'),
+ 'sql_type' => 'text',
+ 'input_type' => 'TextArea',
+ 'localizable' => TRUE,
+ 'description' => ts('Description and/or help text to display after fields in form.'),
+ 'add' => '1.8',
+ 'input_attrs' => [
+ 'rows' => 4,
+ 'cols' => 80,
+ ],
+ ],
+ 'javascript' => [
+ 'title' => ts('Price Set Javascript'),
+ 'sql_type' => 'varchar(64)',
+ 'input_type' => 'Text',
+ 'description' => ts('Optional Javascript script function(s) included on the form with this price_set. Can be used for conditional'),
+ 'add' => '1.8',
+ 'input_attrs' => [
+ 'maxlength' => 64,
+ ],
+ ],
+ 'extends' => [
+ 'title' => ts('Price Set Extends'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'required' => TRUE,
+ 'description' => ts('What components are using this price set?'),
+ 'add' => '3.1',
+ 'serialize' => CRM_Core_DAO::SERIALIZE_SEPARATOR_BOOKEND,
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ 'pseudoconstant' => [
+ 'callback' => 'CRM_Price_BAO_PriceSet::getExtendsOptions',
+ ],
+ ],
+ 'financial_type_id' => [
+ 'title' => ts('Financial Type ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Select',
+ 'description' => ts('FK to Financial Type(for membership price sets only).'),
+ 'add' => '4.3',
+ 'default' => NULL,
+ 'input_attrs' => [
+ 'label' => ts('Financial Type'),
+ ],
+ 'pseudoconstant' => [
+ 'table' => 'civicrm_financial_type',
+ 'key_column' => 'id',
+ 'label_column' => 'name',
+ ],
+ 'entity_reference' => [
+ 'entity' => 'FinancialType',
+ 'key' => 'id',
+ 'on_delete' => 'SET NULL',
+ ],
+ ],
+ 'is_quick_config' => [
+ 'title' => ts('Is Price Set Quick Config?'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('Is set if edited on Contribution or Event Page rather than through Manage Price Sets'),
+ 'add' => '4.1',
+ 'default' => FALSE,
+ ],
+ 'is_reserved' => [
+ 'title' => ts('Price Set Is Reserved'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('Is this a predefined system price set (i.e. it can not be deleted, edited)?'),
+ 'add' => '4.2',
+ 'default' => FALSE,
+ ],
+ 'min_amount' => [
+ 'title' => ts('Minimum Amount'),
+ 'sql_type' => 'decimal(20,2)',
+ 'input_type' => 'Text',
+ 'description' => ts('Minimum Amount required for this set.'),
+ 'add' => '4.7',
+ 'default' => '0.0',
+ ],
+ ],
+];
diff --git a/www/modules/civicrm/schema/Price/PriceSetEntity.entityType.php b/www/modules/civicrm/schema/Price/PriceSetEntity.entityType.php
new file mode 100644
index 000000000..c97117e7d
--- /dev/null
+++ b/www/modules/civicrm/schema/Price/PriceSetEntity.entityType.php
@@ -0,0 +1,79 @@
+ 'PriceSetEntity',
+ 'table' => 'civicrm_price_set_entity',
+ 'class' => 'CRM_Price_DAO_PriceSetEntity',
+ 'getInfo' => fn() => [
+ 'title' => ts('Price Set Entity'),
+ 'title_plural' => ts('Price Set Entities'),
+ 'description' => ts('FIXME'),
+ 'log' => TRUE,
+ 'add' => '1.8',
+ ],
+ 'getIndices' => fn() => [
+ 'UI_entity' => [
+ 'fields' => [
+ 'entity_table' => TRUE,
+ 'entity_id' => TRUE,
+ ],
+ 'unique' => TRUE,
+ 'add' => '1.8',
+ ],
+ ],
+ 'getFields' => fn() => [
+ 'id' => [
+ 'title' => ts('Price Set Entity ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'required' => TRUE,
+ 'description' => ts('Price Set Entity'),
+ 'add' => '1.8',
+ 'primary_key' => TRUE,
+ 'auto_increment' => TRUE,
+ ],
+ 'entity_table' => [
+ 'title' => ts('Entity Table'),
+ 'sql_type' => 'varchar(64)',
+ 'input_type' => 'Text',
+ 'required' => TRUE,
+ 'description' => ts('Table which uses this price set'),
+ 'add' => '1.8',
+ 'input_attrs' => [
+ 'maxlength' => 64,
+ ],
+ ],
+ 'entity_id' => [
+ 'title' => ts('Entity ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'required' => TRUE,
+ 'description' => ts('Item in table'),
+ 'add' => '1.8',
+ 'entity_reference' => [
+ 'dynamic_entity' => 'entity_table',
+ 'key' => 'id',
+ ],
+ ],
+ 'price_set_id' => [
+ 'title' => ts('Price Set ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'required' => TRUE,
+ 'description' => ts('price set being used'),
+ 'add' => '1.8',
+ 'input_attrs' => [
+ 'label' => ts('Price Set'),
+ ],
+ 'pseudoconstant' => [
+ 'table' => 'civicrm_price_set',
+ 'key_column' => 'id',
+ 'label_column' => 'title',
+ ],
+ 'entity_reference' => [
+ 'entity' => 'PriceSet',
+ 'key' => 'id',
+ ],
+ ],
+ ],
+];
diff --git a/www/modules/civicrm/schema/Queue/Queue.entityType.php b/www/modules/civicrm/schema/Queue/Queue.entityType.php
new file mode 100644
index 000000000..255a8f889
--- /dev/null
+++ b/www/modules/civicrm/schema/Queue/Queue.entityType.php
@@ -0,0 +1,141 @@
+ 'Queue',
+ 'table' => 'civicrm_queue',
+ 'class' => 'CRM_Queue_DAO_Queue',
+ 'getInfo' => fn() => [
+ 'title' => ts('Queue'),
+ 'title_plural' => ts('Queues'),
+ 'description' => ts('Stores a list of persistent queues'),
+ 'add' => '5.47',
+ ],
+ 'getIndices' => fn() => [
+ 'UI_name' => [
+ 'fields' => [
+ 'name' => TRUE,
+ ],
+ 'unique' => TRUE,
+ 'add' => '5.47',
+ ],
+ ],
+ 'getFields' => fn() => [
+ 'id' => [
+ 'title' => ts('System Queue ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'required' => TRUE,
+ 'add' => '5.47',
+ 'primary_key' => TRUE,
+ 'auto_increment' => TRUE,
+ ],
+ 'name' => [
+ 'title' => ts('Name'),
+ 'sql_type' => 'varchar(64)',
+ 'input_type' => 'Text',
+ 'required' => TRUE,
+ 'description' => ts('Name of the queue'),
+ 'add' => '5.47',
+ 'input_attrs' => [
+ 'maxlength' => 64,
+ ],
+ ],
+ 'type' => [
+ 'title' => ts('Type'),
+ 'sql_type' => 'varchar(64)',
+ 'input_type' => 'Text',
+ 'required' => TRUE,
+ 'description' => ts('Type of the queue'),
+ 'add' => '5.47',
+ 'input_attrs' => [
+ 'maxlength' => 64,
+ ],
+ 'pseudoconstant' => [
+ 'callback' => 'CRM_Queue_BAO_Queue::getTypes',
+ ],
+ ],
+ 'runner' => [
+ 'title' => ts('Runner'),
+ 'sql_type' => 'varchar(64)',
+ 'input_type' => 'Text',
+ 'description' => ts('Name of the task runner'),
+ 'add' => '5.48',
+ 'input_attrs' => [
+ 'maxlength' => 64,
+ ],
+ ],
+ 'batch_limit' => [
+ 'title' => ts('Batch Limit'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Text',
+ 'required' => TRUE,
+ 'description' => ts('Maximum number of items in a batch.'),
+ 'add' => '5.48',
+ 'default' => 1,
+ ],
+ 'lease_time' => [
+ 'title' => ts('Lease Time'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Text',
+ 'required' => TRUE,
+ 'description' => ts('When claiming an item (or batch of items) for work, how long should the item(s) be reserved. (Seconds)'),
+ 'add' => '5.48',
+ 'default' => 3600,
+ ],
+ 'retry_limit' => [
+ 'title' => ts('Retry Limit'),
+ 'sql_type' => 'int',
+ 'input_type' => 'Text',
+ 'required' => TRUE,
+ 'description' => ts('Number of permitted retries. Set to zero (0) to disable.'),
+ 'add' => '5.48',
+ 'default' => 0,
+ ],
+ 'retry_interval' => [
+ 'title' => ts('Retry Interval'),
+ 'sql_type' => 'int',
+ 'input_type' => 'Text',
+ 'description' => ts('Number of seconds to wait before retrying a failed execution.'),
+ 'add' => '5.48',
+ ],
+ 'status' => [
+ 'title' => ts('Status'),
+ 'sql_type' => 'varchar(16)',
+ 'input_type' => 'Text',
+ 'description' => ts('Execution status'),
+ 'add' => '5.51',
+ 'default' => 'active',
+ 'input_attrs' => [
+ 'maxlength' => 16,
+ ],
+ 'pseudoconstant' => [
+ 'callback' => 'CRM_Queue_BAO_Queue::getStatuses',
+ ],
+ ],
+ 'error' => [
+ 'title' => ts('Error Mode'),
+ 'sql_type' => 'varchar(16)',
+ 'input_type' => 'Text',
+ 'description' => ts('Fallback behavior for unhandled errors'),
+ 'add' => '5.51',
+ 'input_attrs' => [
+ 'maxlength' => 16,
+ ],
+ 'pseudoconstant' => [
+ 'callback' => 'CRM_Queue_BAO_Queue::getErrorModes',
+ ],
+ ],
+ 'is_template' => [
+ 'title' => ts('Is Template'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('Is this a template configuration (for use by other/future queues)?'),
+ 'add' => '5.51',
+ 'default' => FALSE,
+ 'input_attrs' => [
+ 'label' => ts('Is Template'),
+ ],
+ ],
+ ],
+];
diff --git a/www/modules/civicrm/schema/Queue/QueueItem.entityType.php b/www/modules/civicrm/schema/Queue/QueueItem.entityType.php
new file mode 100644
index 000000000..c8a286c22
--- /dev/null
+++ b/www/modules/civicrm/schema/Queue/QueueItem.entityType.php
@@ -0,0 +1,84 @@
+ 'QueueItem',
+ 'table' => 'civicrm_queue_item',
+ 'class' => 'CRM_Queue_DAO_QueueItem',
+ 'getInfo' => fn() => [
+ 'title' => ts('Queue Item'),
+ 'title_plural' => ts('Queue Items'),
+ 'description' => ts('Stores a list of queue items'),
+ 'add' => '4.2',
+ ],
+ 'getIndices' => fn() => [
+ 'index_queueids' => [
+ 'fields' => [
+ 'queue_name' => TRUE,
+ 'weight' => TRUE,
+ 'id' => TRUE,
+ ],
+ ],
+ ],
+ 'getFields' => fn() => [
+ 'id' => [
+ 'title' => ts('Queue Item ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'required' => TRUE,
+ 'primary_key' => TRUE,
+ 'auto_increment' => TRUE,
+ ],
+ 'queue_name' => [
+ 'title' => ts('Queue Name'),
+ 'sql_type' => 'varchar(64)',
+ 'input_type' => 'Text',
+ 'required' => TRUE,
+ 'description' => ts('Name of the queue which includes this item'),
+ 'input_attrs' => [
+ 'maxlength' => 64,
+ ],
+ ],
+ 'weight' => [
+ 'title' => ts('Order'),
+ 'sql_type' => 'int',
+ 'input_type' => 'Text',
+ 'required' => TRUE,
+ ],
+ 'submit_time' => [
+ 'title' => ts('Submit Time'),
+ 'sql_type' => 'timestamp',
+ 'input_type' => 'Select Date',
+ 'required' => TRUE,
+ 'description' => ts('date on which this item was submitted to the queue'),
+ 'input_attrs' => [
+ 'format_type' => 'activityDateTime',
+ ],
+ ],
+ 'release_time' => [
+ 'title' => ts('Release Time'),
+ 'sql_type' => 'timestamp',
+ 'input_type' => 'Select Date',
+ 'description' => ts('date on which this job becomes available; null if ASAP'),
+ 'default' => NULL,
+ 'input_attrs' => [
+ 'format_type' => 'activityDateTime',
+ ],
+ ],
+ 'run_count' => [
+ 'title' => ts('Run Count'),
+ 'sql_type' => 'int',
+ 'input_type' => 'Text',
+ 'required' => TRUE,
+ 'description' => ts('Number of times execution has been attempted.'),
+ 'add' => '5.48',
+ 'default' => 0,
+ ],
+ 'data' => [
+ 'title' => ts('Queue item data'),
+ 'sql_type' => 'longtext',
+ 'input_type' => 'TextArea',
+ 'description' => ts('Serialized queue data'),
+ 'serialize' => CRM_Core_DAO::SERIALIZE_PHP,
+ ],
+ ],
+];
diff --git a/www/modules/civicrm/schema/Report/ReportInstance.entityType.php b/www/modules/civicrm/schema/Report/ReportInstance.entityType.php
new file mode 100644
index 000000000..abc05d18d
--- /dev/null
+++ b/www/modules/civicrm/schema/Report/ReportInstance.entityType.php
@@ -0,0 +1,272 @@
+ 'ReportInstance',
+ 'table' => 'civicrm_report_instance',
+ 'class' => 'CRM_Report_DAO_ReportInstance',
+ 'getInfo' => fn() => [
+ 'title' => ts('Report'),
+ 'title_plural' => ts('Reports'),
+ 'description' => ts('Users can save their report instance and put in a cron tab etc.'),
+ 'add' => '2.2',
+ 'icon' => 'fa-bar-chart',
+ ],
+ 'getFields' => fn() => [
+ 'id' => [
+ 'title' => ts('Report Instance ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'required' => TRUE,
+ 'description' => ts('Report Instance ID'),
+ 'add' => '2.2',
+ 'primary_key' => TRUE,
+ 'auto_increment' => TRUE,
+ ],
+ 'domain_id' => [
+ 'title' => ts('Domain ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'required' => TRUE,
+ 'description' => ts('Which Domain is this instance for'),
+ 'add' => '3.1',
+ 'input_attrs' => [
+ 'label' => ts('Domain'),
+ ],
+ 'pseudoconstant' => [
+ 'table' => 'civicrm_domain',
+ 'key_column' => 'id',
+ 'label_column' => 'name',
+ ],
+ 'entity_reference' => [
+ 'entity' => 'Domain',
+ 'key' => 'id',
+ ],
+ ],
+ 'title' => [
+ 'title' => ts('Report Instance Title'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'description' => ts('Report Instance Title.'),
+ 'add' => '2.2',
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'report_id' => [
+ 'title' => ts('Report template ID'),
+ 'sql_type' => 'varchar(512)',
+ 'input_type' => 'Select',
+ 'required' => TRUE,
+ 'description' => ts('FK to civicrm_option_value for the report template'),
+ 'add' => '2.2',
+ 'input_attrs' => [
+ 'maxlength' => 512,
+ ],
+ ],
+ 'name' => [
+ 'title' => ts('Report instance Name'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'description' => ts('when combined with report_id/template uniquely identifies the instance'),
+ 'add' => '3.2',
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'args' => [
+ 'title' => ts('Report Instance Arguments'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'description' => ts('arguments that are passed in the url when invoking the instance'),
+ 'add' => '3.2',
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'description' => [
+ 'title' => ts('Report Instance description'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'description' => ts('Report Instance description.'),
+ 'add' => '2.2',
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'permission' => [
+ 'title' => ts('Report Instance Permissions'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Select',
+ 'description' => ts('permission required to be able to run this instance'),
+ 'add' => '2.2',
+ 'input_attrs' => [
+ 'label' => ts('Permission'),
+ 'maxlength' => 255,
+ ],
+ ],
+ 'grouprole' => [
+ 'title' => ts('Report Instance Assigned to Roles'),
+ 'sql_type' => 'varchar(1024)',
+ 'input_type' => 'Select',
+ 'description' => ts('role required to be able to run this instance'),
+ 'add' => '4.1',
+ 'serialize' => CRM_Core_DAO::SERIALIZE_SEPARATOR_TRIMMED,
+ 'input_attrs' => [
+ 'title' => ts('ACL Group/Role'),
+ 'multiple' => '1',
+ 'maxlength' => 1024,
+ ],
+ 'pseudoconstant' => [
+ 'callback' => 'CRM_Report_BAO_ReportInstance::getGrouproleOptions',
+ ],
+ ],
+ 'form_values' => [
+ 'title' => ts('Submitted Form Values'),
+ 'sql_type' => 'longtext',
+ 'input_type' => 'TextArea',
+ 'description' => ts('Submitted form values for this report'),
+ 'add' => '2.2',
+ 'serialize' => CRM_Core_DAO::SERIALIZE_PHP,
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ ],
+ 'is_active' => [
+ 'title' => ts('Report Instance is Active'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'description' => ts('Is this entry active?'),
+ 'add' => '2.2',
+ 'default' => TRUE,
+ 'input_attrs' => [
+ 'label' => ts('Enabled'),
+ ],
+ ],
+ 'created_id' => [
+ 'title' => ts('Created By Contact ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'description' => ts('FK to contact table.'),
+ 'add' => '4.6',
+ 'input_attrs' => [
+ 'label' => ts('Created By'),
+ ],
+ 'entity_reference' => [
+ 'entity' => 'Contact',
+ 'key' => 'id',
+ 'on_delete' => 'SET NULL',
+ ],
+ ],
+ 'owner_id' => [
+ 'title' => ts('Owned By Contact ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'description' => ts('FK to contact table.'),
+ 'add' => '4.6',
+ 'input_attrs' => [
+ 'label' => ts('Owned By'),
+ ],
+ 'entity_reference' => [
+ 'entity' => 'Contact',
+ 'key' => 'id',
+ 'on_delete' => 'SET NULL',
+ ],
+ ],
+ 'email_subject' => [
+ 'title' => ts('Report Instance email Subject'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'description' => ts('Subject of email'),
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'email_to' => [
+ 'title' => ts('Email Report Instance To'),
+ 'sql_type' => 'text',
+ 'input_type' => 'Text',
+ 'description' => ts('comma-separated list of email addresses to send the report to'),
+ 'add' => '2.2',
+ ],
+ 'email_cc' => [
+ 'title' => ts('cc Email Report Instance To'),
+ 'sql_type' => 'text',
+ 'input_type' => 'Text',
+ 'description' => ts('comma-separated list of email addresses to send the report to'),
+ 'add' => '2.2',
+ ],
+ 'header' => [
+ 'title' => ts('Report Instance Header'),
+ 'sql_type' => 'text',
+ 'input_type' => 'TextArea',
+ 'description' => ts('comma-separated list of email addresses to send the report to'),
+ 'add' => '2.2',
+ 'input_attrs' => [
+ 'rows' => 4,
+ 'cols' => 60,
+ ],
+ ],
+ 'footer' => [
+ 'title' => ts('Report Instance Footer'),
+ 'sql_type' => 'text',
+ 'input_type' => 'TextArea',
+ 'description' => ts('comma-separated list of email addresses to send the report to'),
+ 'add' => '2.2',
+ 'input_attrs' => [
+ 'rows' => 4,
+ 'cols' => 60,
+ ],
+ ],
+ 'navigation_id' => [
+ 'title' => ts('Navigation ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'description' => ts('FK to navigation ID'),
+ 'add' => '3.0',
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ 'input_attrs' => [
+ 'label' => ts('Navigation'),
+ ],
+ 'entity_reference' => [
+ 'entity' => 'Navigation',
+ 'key' => 'id',
+ 'on_delete' => 'SET NULL',
+ ],
+ ],
+ 'drilldown_id' => [
+ 'title' => ts('Drilldown Report ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'description' => ts('FK to instance ID drilldown to'),
+ 'add' => '4.3',
+ 'usage' => [
+ 'import',
+ 'export',
+ 'duplicate_matching',
+ ],
+ 'input_attrs' => [
+ 'label' => ts('Drilldown Report'),
+ ],
+ 'entity_reference' => [
+ 'entity' => 'ReportInstance',
+ 'key' => 'id',
+ 'on_delete' => 'SET NULL',
+ ],
+ ],
+ 'is_reserved' => [
+ 'title' => ts('Instance is Reserved'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'add' => '4.2',
+ 'default' => FALSE,
+ ],
+ ],
+];
diff --git a/www/modules/civicrm/schema/SMS/SmsProvider.entityType.php b/www/modules/civicrm/schema/SMS/SmsProvider.entityType.php
new file mode 100644
index 000000000..16fc45f80
--- /dev/null
+++ b/www/modules/civicrm/schema/SMS/SmsProvider.entityType.php
@@ -0,0 +1,138 @@
+ 'SmsProvider',
+ 'table' => 'civicrm_sms_provider',
+ 'class' => 'CRM_SMS_DAO_SmsProvider',
+ 'getInfo' => fn() => [
+ 'title' => ts('SMS Provider'),
+ 'title_plural' => ts('SMS Providers'),
+ 'description' => ts('Table to add different sms providers'),
+ 'add' => '4.2',
+ ],
+ 'getPaths' => fn() => [
+ 'add' => 'civicrm/admin/sms/provider/edit?reset=1&action=add',
+ 'delete' => 'civicrm/admin/sms/provider/edit?reset=1&action=delete&id=[id]',
+ 'update' => 'civicrm/admin/sms/provider/edit?reset=1&action=update&id=[id]',
+ 'browse' => 'civicrm/admin/sms/provider?reset=1',
+ ],
+ 'getFields' => fn() => [
+ 'id' => [
+ 'title' => ts('SMS Provider ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Number',
+ 'required' => TRUE,
+ 'description' => ts('SMS Provider ID'),
+ 'add' => '4.2',
+ 'primary_key' => TRUE,
+ 'auto_increment' => TRUE,
+ ],
+ 'name' => [
+ 'title' => ts('SMS Provider Name'),
+ 'sql_type' => 'varchar(64)',
+ 'input_type' => 'Text',
+ 'description' => ts('Provider internal name points to option_value of option_group sms_provider_name'),
+ 'add' => '4.2',
+ 'input_attrs' => [
+ 'maxlength' => 64,
+ ],
+ ],
+ 'title' => [
+ 'title' => ts('SMS Provider Title'),
+ 'sql_type' => 'varchar(64)',
+ 'input_type' => 'Text',
+ 'description' => ts('Provider name visible to user'),
+ 'add' => '4.2',
+ 'input_attrs' => [
+ 'maxlength' => 64,
+ ],
+ ],
+ 'username' => [
+ 'title' => ts('SMS Provider Username'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'add' => '4.2',
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'password' => [
+ 'title' => ts('SMS Provider Password'),
+ 'sql_type' => 'varchar(255)',
+ 'input_type' => 'Text',
+ 'add' => '4.2',
+ 'input_attrs' => [
+ 'maxlength' => 255,
+ ],
+ ],
+ 'api_type' => [
+ 'title' => ts('SMS Provider API'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'Select',
+ 'required' => TRUE,
+ 'description' => ts('points to value in civicrm_option_value for group sms_api_type'),
+ 'add' => '4.2',
+ 'pseudoconstant' => [
+ 'option_group_name' => 'sms_api_type',
+ ],
+ ],
+ 'api_url' => [
+ 'title' => ts('SMS Provider API URL'),
+ 'sql_type' => 'varchar(128)',
+ 'input_type' => 'Text',
+ 'add' => '4.2',
+ 'input_attrs' => [
+ 'maxlength' => 128,
+ ],
+ ],
+ 'api_params' => [
+ 'title' => ts('SMS Provider API Params'),
+ 'sql_type' => 'text',
+ 'input_type' => 'Text',
+ 'description' => ts('the api params in xml, http or smtp format'),
+ 'add' => '4.2',
+ ],
+ 'is_default' => [
+ 'title' => ts('SMS Provider is Default?'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'add' => '4.2',
+ 'default' => FALSE,
+ 'input_attrs' => [
+ 'label' => ts('Default'),
+ ],
+ ],
+ 'is_active' => [
+ 'title' => ts('SMS Provider is Active?'),
+ 'sql_type' => 'boolean',
+ 'input_type' => 'CheckBox',
+ 'required' => TRUE,
+ 'add' => '4.2',
+ 'default' => TRUE,
+ 'input_attrs' => [
+ 'label' => ts('Enabled'),
+ ],
+ ],
+ 'domain_id' => [
+ 'title' => ts('Domain ID'),
+ 'sql_type' => 'int unsigned',
+ 'input_type' => 'EntityRef',
+ 'description' => ts('Which Domain is this sms provider for'),
+ 'add' => '4.7',
+ 'input_attrs' => [
+ 'label' => ts('Domain'),
+ ],
+ 'pseudoconstant' => [
+ 'table' => 'civicrm_domain',
+ 'key_column' => 'id',
+ 'label_column' => 'name',
+ ],
+ 'entity_reference' => [
+ 'entity' => 'Domain',
+ 'key' => 'id',
+ 'on_delete' => 'SET NULL',
+ ],
+ ],
+ ],
+];
diff --git a/www/modules/civicrm/setup/plugins/blocks/admin.civi-setup.php b/www/modules/civicrm/setup/plugins/blocks/admin.civi-setup.php
index 6eb72e0b0..a553d5830 100644
--- a/www/modules/civicrm/setup/plugins/blocks/admin.civi-setup.php
+++ b/www/modules/civicrm/setup/plugins/blocks/admin.civi-setup.php
@@ -27,6 +27,9 @@
$e->getModel()->extras['adminPassWasSpecified'] = TRUE;
$e->getModel()->extras['adminPass'] = $e->getField('adminPass');
}
+ if ($e->getField('adminEmail')) {
+ $e->getModel()->extras['adminEmail'] = $e->getField('adminEmail');
+ }
}
}, \Civi\Setup::PRIORITY_PREPARE);
diff --git a/www/modules/civicrm/setup/plugins/blocks/admin.tpl.php b/www/modules/civicrm/setup/plugins/blocks/admin.tpl.php
index 5b3f33fee..7444b652a 100644
--- a/www/modules/civicrm/setup/plugins/blocks/admin.tpl.php
+++ b/www/modules/civicrm/setup/plugins/blocks/admin.tpl.php
@@ -1,14 +1,29 @@
-
+
-
+getErrors())) : ?>
-
+
+
+
-
-
+
+
-
+
+
+
+
+
+
+
+
-
-
+
-
-
+
+
-
+
-
+
-
+
-
+
+
+
diff --git a/www/modules/civicrm/setup/plugins/init/Drupal.civi-setup.php b/www/modules/civicrm/setup/plugins/init/Drupal.civi-setup.php
index 02bf1bb87..6159f550e 100644
--- a/www/modules/civicrm/setup/plugins/init/Drupal.civi-setup.php
+++ b/www/modules/civicrm/setup/plugins/init/Drupal.civi-setup.php
@@ -17,7 +17,7 @@
}
\Civi\Setup::log()->info(sprintf('[%s] Handle %s', basename(__FILE__), 'checkAuthorized'));
- $e->setAuthorized(user_access('administer modules'));
+ $e->setAuthorized(\Civi\Setup\DrupalUtil::isDrush() || user_access('administer modules'));
});
\Civi\Setup::dispatcher()
diff --git a/www/modules/civicrm/setup/plugins/init/StandaloneUsers.civi-setup.php b/www/modules/civicrm/setup/plugins/init/StandaloneUsers.civi-setup.php
index 8e5dcb32e..956d0f66b 100644
--- a/www/modules/civicrm/setup/plugins/init/StandaloneUsers.civi-setup.php
+++ b/www/modules/civicrm/setup/plugins/init/StandaloneUsers.civi-setup.php
@@ -141,9 +141,10 @@
'view own manual batches',
'access all custom data',
'access contact reference fields',
- // Standalone-defined permissions that have the same name as the cms: prefixed synthetic ones
- 'administer users',
- 'view user account',
+ // standaloneusers provides concrete permissions in place of
+ // the synthetic ones on other UF
+ 'cms:administer users',
+ 'cms:view user account',
// The admninister CiviCRM data implicitly sets other permissions as well.
// Such as, edit message templates and admnister dedupe rules.
'administer CiviCRM Data',
@@ -178,9 +179,9 @@
$userID = \CRM_Core_BAO_CMSUser::create($params, 'email');
// Assign 'admin' role to user
- \Civi\Api4\User::update(FALSE)
- ->addWhere('id', '=', $userID)
- ->addValue('roles:name', ['admin'])
+ \Civi\Api4\UserRole::create(FALSE)
+ ->addValue('user_id', $userID)
+ ->addValue('role_id', $roles['admin']['id'])
->execute();
$message = "Created new user \"{$e->getModel()->extras['adminUser']}\" (user ID #$userID, contact ID #$contactID) with 'admin' role and ";
diff --git a/www/modules/civicrm/setup/plugins/installDatabase/BootstrapCivi.civi-setup.php b/www/modules/civicrm/setup/plugins/installDatabase/BootstrapCivi.civi-setup.php
index aabe7a6d8..8d311375f 100644
--- a/www/modules/civicrm/setup/plugins/installDatabase/BootstrapCivi.civi-setup.php
+++ b/www/modules/civicrm/setup/plugins/installDatabase/BootstrapCivi.civi-setup.php
@@ -21,7 +21,7 @@
->addListener('civi.setup.installDatabase', function (\Civi\Setup\Event\InstallDatabaseEvent $e) {
\Civi\Setup::log()->info(sprintf('[%s] Bootstrap CiviCRM', basename(__FILE__)));
- \CRM_Core_I18n::$SQL_ESCAPER = NULL;
+ unset($GLOBALS['CIVICRM_SQL_ESCAPER']);
unset(\Civi\Test::$statics['testPreInstall']);
CRM_Core_Config::singleton(TRUE, TRUE);
diff --git a/www/modules/civicrm/setup/plugins/installDatabase/InstallSchema.civi-setup.php b/www/modules/civicrm/setup/plugins/installDatabase/InstallSchema.civi-setup.php
index 1455edab0..0be8ffdbe 100644
--- a/www/modules/civicrm/setup/plugins/installDatabase/InstallSchema.civi-setup.php
+++ b/www/modules/civicrm/setup/plugins/installDatabase/InstallSchema.civi-setup.php
@@ -66,10 +66,9 @@ public function installDatabase(\Civi\Setup\Event\InstallDatabaseEvent $e) {
$model = $e->getModel();
$sqlPath = $model->srcPath . DIRECTORY_SEPARATOR . 'sql';
- $spec = $this->loadSpecification($model->srcPath);
\Civi\Setup::log()->info(sprintf('[%s] Load basic tables', basename(__FILE__)));
- \Civi\Setup\DbUtil::sourceSQL($model->db, \Civi\Setup\SchemaGenerator::generateCreateSql($model->srcPath, $spec->database, $spec->tables));
+ \Civi\Setup\DbUtil::sourceSQL($model->db, Civi::schemaHelper()->generateInstallSql());
$seedLanguage = $model->lang;
if (!empty($model->loadGenerated)) {
@@ -86,20 +85,6 @@ public function installDatabase(\Civi\Setup\Event\InstallDatabaseEvent $e) {
}
}
- /**
- * @param string $srcPath
- * @return \CRM_Core_CodeGen_Specification
- */
- protected function loadSpecification($srcPath) {
- $schemaFile = implode(DIRECTORY_SEPARATOR, [$srcPath, 'xml', 'schema', 'Schema.xml']);
- $versionFile = implode(DIRECTORY_SEPARATOR, [$srcPath, 'xml', 'version.xml']);
- $xmlBuilt = \CRM_Core_CodeGen_Util_Xml::parse($versionFile);
- $buildVersion = preg_replace('/^(\d{1,2}\.\d{1,2})\.(\d{1,2}|\w{4,7})$/i', '$1', $xmlBuilt->version_no);
- $specification = new \CRM_Core_CodeGen_Specification();
- $specification->parse($schemaFile, $buildVersion, FALSE);
- return $specification;
- }
-
}
\Civi\Setup::dispatcher()->addSubscriber(new InstallSchemaPlugin());
diff --git a/www/modules/civicrm/setup/plugins/installDatabase/Preboot.civi-setup.php b/www/modules/civicrm/setup/plugins/installDatabase/Preboot.civi-setup.php
index d4851ef6f..462bb4c62 100644
--- a/www/modules/civicrm/setup/plugins/installDatabase/Preboot.civi-setup.php
+++ b/www/modules/civicrm/setup/plugins/installDatabase/Preboot.civi-setup.php
@@ -38,7 +38,7 @@
CRM_Core_ClassLoader::singleton()->register();
$conn = \Civi\Setup\DbUtil::connect($e->getModel()->db);
- \CRM_Core_I18n::$SQL_ESCAPER = function($text) use ($conn) {
+ $GLOBALS['CIVICRM_SQL_ESCAPER'] = function($text) use ($conn) {
return $conn->escape_string($text);
};
diff --git a/www/modules/civicrm/setup/plugins/installFiles/StandaloneCivicrmFilesPath.civi-setup.php b/www/modules/civicrm/setup/plugins/installFiles/StandaloneCivicrmFilesPath.civi-setup.php
new file mode 100644
index 000000000..a73010b18
--- /dev/null
+++ b/www/modules/civicrm/setup/plugins/installFiles/StandaloneCivicrmFilesPath.civi-setup.php
@@ -0,0 +1,54 @@
+addListener('civi.setup.checkRequirements', function (\Civi\Setup\Event\CheckRequirementsEvent $e) {
+ \Civi\Setup::log()->info(sprintf('[%s] Handle %s', basename(__FILE__), 'checkRequirements'));
+ $m = $e->getModel();
+
+ if ($m->cms !== 'Standalone') {
+ // The installers on WP+J don't prepopulate $m->paths['civicrm.files'].
+ // TODO: Maybe they should? It would probably be good for all UF's to follow same codepaths for setting up the folder.
+ return;
+ }
+
+ $civicrmFilesDirectory = $m->paths['civicrm.files']['path'] ?? '';
+
+ if (!$civicrmFilesDirectory) {
+ $e->addError('system', 'civicrmFilesPath', 'The civicrm.files directory path is undefined.');
+ }
+ else {
+ $e->addInfo('system', 'civicrmFilesPath', sprintf('The civicrm.files directory path is defined ("%s").', $civicrmFilesDirectory));
+ }
+
+ if ($civicrmFilesDirectory && !file_exists($civicrmFilesDirectory) && !\Civi\Setup\FileUtil::isCreateable($civicrmFilesDirectory)) {
+ $e->addError('system', 'civicrmFilesPathWritable', sprintf('The civicrm files dir "%s" does not exist and cannot be created. Ensure it exists or the parent folder is writable.', $civicrmFilesDirectory));
+ }
+ elseif ($civicrmFilesDirectory && !file_exists($civicrmFilesDirectory)) {
+ $e->addInfo('system', 'civicrmFilesPathWritable', sprintf('The civicrm files dir "%s" can be created.', $civicrmFilesDirectory));
+ }
+ });
+
+\Civi\Setup::dispatcher()
+ ->addListener('civi.setup.installFiles', function (\Civi\Setup\Event\InstallFilesEvent $e) {
+ \Civi\Setup::log()->info(sprintf('[%s] Handle %s', basename(__FILE__), 'installFiles'));
+ $m = $e->getModel();
+
+ $civicrmFilesDirectory = $m->paths['civicrm.files']['path'] ?? '';
+
+ if ($civicrmFilesDirectory && !file_exists($civicrmFilesDirectory)) {
+ Civi\Setup::log()->info('[StandaloneCivicrmFilesPath.civi-setup.php] mkdir "{path}"', [
+ 'path' => $civicrmFilesDirectory,
+ ]);
+ mkdir($civicrmFilesDirectory, 0777, TRUE);
+ \Civi\Setup\FileUtil::makeWebWriteable($civicrmFilesDirectory);
+ }
+ });
diff --git a/www/modules/civicrm/setup/res/index.php.txt b/www/modules/civicrm/setup/res/index.php.txt
index 42157b5f9..60f036c2f 100644
--- a/www/modules/civicrm/setup/res/index.php.txt
+++ b/www/modules/civicrm/setup/res/index.php.txt
@@ -3,6 +3,9 @@
function invoke() {
$requestUri = $_SERVER['REQUEST_URI'] ?? '';
+ // initialise config and boot container
+ \CRM_Core_Config::singleton();
+
// Add CSS, JS, etc. that is required for this page.
\CRM_Core_Resources::singleton()->addCoreResources();
$parts = explode('?', $requestUri);
diff --git a/www/modules/civicrm/setup/res/template.css b/www/modules/civicrm/setup/res/template.css
index 5f3321d39..4097d750a 100644
--- a/www/modules/civicrm/setup/res/template.css
+++ b/www/modules/civicrm/setup/res/template.css
@@ -34,17 +34,16 @@ body {
100% {
left: 0;
color: #555;
-}
+ }
}
@keyframes slide {
100% {
left: 0;
color: #555;
-}
+ }
}
-
.civicrm-setup-header hr {
border-bottom: 2px solid #fff;
border-top: 2px solid #ddd;
@@ -62,7 +61,6 @@ body {
width: 100%;
}
-
/* Header End */
.civicrm-setup-body #All {
@@ -81,7 +79,6 @@ body {
}
.civicrm-setup-body h2 {
- margin-top: 0;
display: inline-block;
}
@@ -127,7 +124,7 @@ body {
background: #ffb;
padding: 0.5em;
margin: 1em auto;
- width: 50%
+ width: 50%;
}
.civicrm-setup-body .advancedTip {
@@ -139,8 +136,7 @@ body {
display: none;
}
-.civicrm-setup-body .install-validate-bad {
-}
+/* .civicrm-setup-body .install-validate-bad { } */
.civicrm-setup-body .reqTable {
border-collapse: collapse;
@@ -163,7 +159,7 @@ body {
.civicrm-setup-body .settingsTable {
border-collapse: collapse;
- margin: 2em
+ margin: 2em;
}
.civicrm-setup-body th,
@@ -263,7 +259,7 @@ body {
text-align: center;
margin: 2em 0.5em;
}
-.civicrm-setup-body button[type=submit] {
+.civicrm-setup-body button[type="submit"] {
padding: 15px 25px;
background: #82c459;
color: white;
@@ -273,19 +269,33 @@ body {
border-radius: 5px;
font-size: 20px;
}
-.civicrm-setup-body button[type=submit]:hover {
+.civicrm-setup-body button[type="submit"]:hover {
background: #60a237;
}
-.civicrm-setup-body button[type=submit]:disabled {
+.civicrm-setup-body button[type="submit"]:disabled {
background: #888;
cursor: not-allowed;
}
-.civicrm-setup-body .settingsTable input[type=text] {
+.civicrm-setup-body .settingsTable input[type="text"] {
width: 80%;
}
-
+.civicrm-setup-field-wrapper {
+ display: flex;
+ flex-wrap: wrap;
+ margin-bottom: 0.5em;
+ gap: 1em;
+}
+.civicrm-setup-field-wrapper > label {
+ flex: 0 0 25ch;
+}
+.civicrm-setup-field-wrapper > input {
+ flex: 0 0 25ch;
+}
+.civicrm-setup-field-wrapper > div {
+ flex: 0 0 auto;
+}
@media only screen and (max-width: 801px) {
.civicrm-setup-body .comp-box {
@@ -307,7 +317,6 @@ body {
width: 95%;
margin: 10px 2% 10px 2%;
}
-
}
@media only screen and (max-width: 503px) {
diff --git a/www/modules/civicrm/setup/src/Setup/SchemaGenerator.php b/www/modules/civicrm/setup/src/Setup/SchemaGenerator.php
index c27f5fada..14bb06ee4 100644
--- a/www/modules/civicrm/setup/src/Setup/SchemaGenerator.php
+++ b/www/modules/civicrm/setup/src/Setup/SchemaGenerator.php
@@ -3,26 +3,6 @@
class SchemaGenerator {
- /**
- * Return translated SQL content using tpl, mainly contain SQL codes on table CREATE/DROP
- *
- * @param string $srcPath
- * @param array $database
- * @param array $tables
- * @return string
- */
- public static function generateCreateSql($srcPath, $database, $tables) {
- $template = new Template($srcPath, 'sql');
-
- $template->assign('database', $database);
- $template->assign('tables', $tables);
- $dropOrder = array_reverse(array_keys($tables));
- $template->assign('dropOrder', $dropOrder);
- $template->assign('mysql', 'modern');
-
- return $template->getContent('schema.tpl');
- }
-
/**
* Generate an example set of data, including the basic data as well
* as some example records/entities (e.g. case-types, membership types).
diff --git a/www/modules/civicrm/setup/src/Setup/SmartyUtil.php b/www/modules/civicrm/setup/src/Setup/SmartyUtil.php
index a076ddb32..7a2728ad0 100644
--- a/www/modules/civicrm/setup/src/Setup/SmartyUtil.php
+++ b/www/modules/civicrm/setup/src/Setup/SmartyUtil.php
@@ -7,27 +7,33 @@ class SmartyUtil {
* Create a Smarty instance.
*
* @return \Smarty
+ * @throws \SmartyException
*/
public static function createSmarty($srcPath) {
- require_once 'CRM/Core/I18n.php';
-
$packagePath = PackageUtil::getPath($srcPath);
- require_once $packagePath . DIRECTORY_SEPARATOR . 'Smarty' . DIRECTORY_SEPARATOR . 'Smarty.class.php';
+ require_once $packagePath . '/smarty4/vendor/autoload.php';
$smarty = new \Smarty();
- $smarty->template_dir = implode(DIRECTORY_SEPARATOR, [$srcPath, 'xml', 'templates']);
- $smarty->plugins_dir = [
- implode(DIRECTORY_SEPARATOR, [$packagePath, 'Smarty', 'plugins']),
- implode(DIRECTORY_SEPARATOR, [$srcPath, 'CRM', 'Core', 'Smarty', 'plugins']),
- ];
- $smarty->compile_dir = \Civi\Setup\FileUtil::createTempDir('templates_c');
- $smarty->clear_all_cache();
+ $smarty->setTemplateDir(implode(DIRECTORY_SEPARATOR, [$srcPath, 'xml', 'templates']));
+ $pluginsDirectory = $smarty->getPluginsDir();
+ $pluginsDirectory[] = implode(DIRECTORY_SEPARATOR, [$srcPath, 'CRM', 'Core', 'Smarty', 'plugins']);
+ // Doesn't seem to work very well.... since I still need require_once below
+ $smarty->setPluginsDir($pluginsDirectory);
+ $smarty->setCompileDir(\Civi\Setup\FileUtil::createTempDir('templates_c'));
+ $smarty->clearAllCache();
+
+ require_once 'CRM/Core/Smarty/plugins/modifier.crmEscapeSingleQuotes.php';
+ $smarty->registerPlugin('modifier', 'crmEscapeSingleQuotes', 'smarty_modifier_crmEscapeSingleQuotes');
// CRM-5308 / CRM-3507 - we need {localize} to work in the templates
require_once implode(DIRECTORY_SEPARATOR, [$srcPath, 'CRM', 'Core', 'Smarty', 'plugins', 'block.localize.php']);
- $smarty->register_block('localize', 'smarty_block_localize');
- $smarty->assign('gencodeXmlDir', "$srcPath/xml");
+ $smarty->registerPlugin('block', 'localize', 'smarty_block_localize');
+ require_once 'CRM/Core/Smarty/plugins/modifier.crmCountCharacters.php';
+ $smarty->registerPlugin('modifier', 'crmCountCharacters', 'smarty_modifier_crmCountCharacters');
require_once implode(DIRECTORY_SEPARATOR, [$srcPath, 'CRM', 'Core', 'CodeGen', 'Util', 'MessageTemplates.php']);
+ $smarty->registerPlugin('modifier', 'json_encode', 'json_encode');
+ $smarty->registerPlugin('modifier', 'count', 'count');
+ $smarty->registerPlugin('modifier', 'implode', 'implode');
\CRM_Core_CodeGen_Util_MessageTemplates::assignSmartyVariables($smarty);
return $smarty;
}
diff --git a/www/modules/civicrm/setup/src/Setup/UI/SetupController.php b/www/modules/civicrm/setup/src/Setup/UI/SetupController.php
index 022929552..561e686fe 100644
--- a/www/modules/civicrm/setup/src/Setup/UI/SetupController.php
+++ b/www/modules/civicrm/setup/src/Setup/UI/SetupController.php
@@ -140,8 +140,10 @@ protected function boot($method, $fields) {
global $civicrm_paths;
foreach ($model->paths as $pathVar => $pathValues) {
- foreach (['url', 'path'] as $aspectName => $aspectValue) {
- $civicrm_paths[$pathVar][$aspectName] = $aspectValue;
+ foreach ($pathValues as $aspectName => $aspectValue) {
+ if (in_array($aspectName, ['url', 'path'])) {
+ $civicrm_paths[$pathVar][$aspectName] = $aspectValue;
+ }
}
}
diff --git a/www/modules/civicrm/sql/civicrm.mysql b/www/modules/civicrm/sql/civicrm.mysql
index b3586f94c..9763a0e98 100644
--- a/www/modules/civicrm/sql/civicrm.mysql
+++ b/www/modules/civicrm/sql/civicrm.mysql
@@ -1,444 +1,162 @@
--- +--------------------------------------------------------------------+
--- | Copyright CiviCRM LLC. All rights reserved. |
--- | |
--- | This work is published under the GNU AGPLv3 license with some |
--- | permitted exceptions and without any warranty. For full license |
--- | and copyright information, see https://civicrm.org/licensing |
--- +--------------------------------------------------------------------+
---
--- Generated from schema.tpl
--- DO NOT EDIT. Generated by CRM_Core_CodeGen
--- Schema for CiviCRM
--- /*******************************************************
--- *
--- * Clean up the existing tables - this section generated from drop.tpl
--- *
--- *******************************************************/
-
SET FOREIGN_KEY_CHECKS=0;
-
-DROP TABLE IF EXISTS `civicrm_line_item`;
-DROP TABLE IF EXISTS `civicrm_pledge_payment`;
-DROP TABLE IF EXISTS `civicrm_events_in_carts`;
-DROP TABLE IF EXISTS `civicrm_participant_payment`;
-DROP TABLE IF EXISTS `civicrm_participant`;
-DROP TABLE IF EXISTS `civicrm_event`;
-DROP TABLE IF EXISTS `civicrm_membership_payment`;
-DROP TABLE IF EXISTS `civicrm_entity_financial_trxn`;
-DROP TABLE IF EXISTS `civicrm_contribution_soft`;
-DROP TABLE IF EXISTS `civicrm_contribution_product`;
-DROP TABLE IF EXISTS `civicrm_contribution`;
-DROP TABLE IF EXISTS `civicrm_group_contact`;
-DROP TABLE IF EXISTS `civicrm_loc_block`;
-DROP TABLE IF EXISTS `civicrm_address`;
-DROP TABLE IF EXISTS `civicrm_pcp_block`;
-DROP TABLE IF EXISTS `civicrm_price_field_value`;
-DROP TABLE IF EXISTS `civicrm_price_field`;
-DROP TABLE IF EXISTS `civicrm_case_activity`;
-DROP TABLE IF EXISTS `civicrm_activity_contact`;
+DROP TABLE IF EXISTS `civicrm_acl`;
+DROP TABLE IF EXISTS `civicrm_acl_cache`;
+DROP TABLE IF EXISTS `civicrm_acl_entity_role`;
DROP TABLE IF EXISTS `civicrm_activity`;
-DROP TABLE IF EXISTS `civicrm_membership_log`;
-DROP TABLE IF EXISTS `civicrm_membership`;
-DROP TABLE IF EXISTS `civicrm_financial_trxn`;
-DROP TABLE IF EXISTS `civicrm_contribution_recur`;
-DROP TABLE IF EXISTS `civicrm_mailing_event_unsubscribe`;
-DROP TABLE IF EXISTS `civicrm_mailing_event_trackable_url_open`;
-DROP TABLE IF EXISTS `civicrm_mailing_event_reply`;
-DROP TABLE IF EXISTS `civicrm_mailing_event_opened`;
-DROP TABLE IF EXISTS `civicrm_mailing_event_forward`;
-DROP TABLE IF EXISTS `civicrm_mailing_event_delivered`;
-DROP TABLE IF EXISTS `civicrm_mailing_event_bounce`;
-DROP TABLE IF EXISTS `civicrm_mailing_event_queue`;
-DROP TABLE IF EXISTS `civicrm_mailing_spool`;
-DROP TABLE IF EXISTS `civicrm_mailing_recipients`;
-DROP TABLE IF EXISTS `civicrm_mailing_job`;
-DROP TABLE IF EXISTS `civicrm_mailing_trackable_url`;
-DROP TABLE IF EXISTS `civicrm_mailing_group`;
-DROP TABLE IF EXISTS `civicrm_mailing`;
-DROP TABLE IF EXISTS `civicrm_relationship_cache`;
-DROP TABLE IF EXISTS `civicrm_relationship`;
+DROP TABLE IF EXISTS `civicrm_activity_contact`;
+DROP TABLE IF EXISTS `civicrm_batch`;
+DROP TABLE IF EXISTS `civicrm_entity_batch`;
+DROP TABLE IF EXISTS `civicrm_campaign`;
+DROP TABLE IF EXISTS `civicrm_campaign_group`;
+DROP TABLE IF EXISTS `civicrm_survey`;
+DROP TABLE IF EXISTS `civicrm_case`;
+DROP TABLE IF EXISTS `civicrm_case_activity`;
+DROP TABLE IF EXISTS `civicrm_case_contact`;
+DROP TABLE IF EXISTS `civicrm_case_type`;
+DROP TABLE IF EXISTS `civicrm_acl_contact_cache`;
+DROP TABLE IF EXISTS `civicrm_contact`;
+DROP TABLE IF EXISTS `civicrm_contact_type`;
DROP TABLE IF EXISTS `civicrm_dashboard_contact`;
+DROP TABLE IF EXISTS `civicrm_group`;
+DROP TABLE IF EXISTS `civicrm_group_contact`;
+DROP TABLE IF EXISTS `civicrm_group_contact_cache`;
+DROP TABLE IF EXISTS `civicrm_group_nesting`;
+DROP TABLE IF EXISTS `civicrm_group_organization`;
+DROP TABLE IF EXISTS `civicrm_relationship`;
+DROP TABLE IF EXISTS `civicrm_relationship_cache`;
+DROP TABLE IF EXISTS `civicrm_relationship_type`;
+DROP TABLE IF EXISTS `civicrm_saved_search`;
+DROP TABLE IF EXISTS `civicrm_subscription_history`;
+DROP TABLE IF EXISTS `civicrm_contribution`;
+DROP TABLE IF EXISTS `civicrm_contribution_page`;
+DROP TABLE IF EXISTS `civicrm_contribution_product`;
+DROP TABLE IF EXISTS `civicrm_contribution_recur`;
+DROP TABLE IF EXISTS `civicrm_contribution_soft`;
+DROP TABLE IF EXISTS `civicrm_premiums`;
+DROP TABLE IF EXISTS `civicrm_premiums_product`;
+DROP TABLE IF EXISTS `civicrm_product`;
+DROP TABLE IF EXISTS `civicrm_contribution_widget`;
DROP TABLE IF EXISTS `civicrm_action_log`;
DROP TABLE IF EXISTS `civicrm_action_schedule`;
-DROP TABLE IF EXISTS `civicrm_uf_join`;
-DROP TABLE IF EXISTS `civicrm_uf_field`;
-DROP TABLE IF EXISTS `civicrm_uf_group`;
-DROP TABLE IF EXISTS `civicrm_entity_tag`;
-DROP TABLE IF EXISTS `civicrm_entity_file`;
-DROP TABLE IF EXISTS `civicrm_discount`;
-DROP TABLE IF EXISTS `civicrm_dashboard`;
+DROP TABLE IF EXISTS `civicrm_address`;
+DROP TABLE IF EXISTS `civicrm_address_format`;
+DROP TABLE IF EXISTS `civicrm_cache`;
+DROP TABLE IF EXISTS `civicrm_component`;
+DROP TABLE IF EXISTS `civicrm_country`;
DROP TABLE IF EXISTS `civicrm_county`;
-DROP TABLE IF EXISTS `civicrm_price_set_entity`;
-DROP TABLE IF EXISTS `civicrm_price_set`;
-DROP TABLE IF EXISTS `civicrm_report_instance`;
-DROP TABLE IF EXISTS `civicrm_pledge`;
-DROP TABLE IF EXISTS `civicrm_case_contact`;
-DROP TABLE IF EXISTS `civicrm_case`;
-DROP TABLE IF EXISTS `civicrm_membership_block`;
-DROP TABLE IF EXISTS `civicrm_membership_type`;
-DROP TABLE IF EXISTS `civicrm_sms_provider`;
-DROP TABLE IF EXISTS `civicrm_payment_token`;
-DROP TABLE IF EXISTS `civicrm_payment_processor`;
-DROP TABLE IF EXISTS `civicrm_contribution_widget`;
-DROP TABLE IF EXISTS `civicrm_premiums_product`;
-DROP TABLE IF EXISTS `civicrm_product`;
-DROP TABLE IF EXISTS `civicrm_contribution_page`;
-DROP TABLE IF EXISTS `civicrm_mailing_event_confirm`;
-DROP TABLE IF EXISTS `civicrm_mailing_event_subscribe`;
-DROP TABLE IF EXISTS `civicrm_group_organization`;
-DROP TABLE IF EXISTS `civicrm_group_nesting`;
-DROP TABLE IF EXISTS `civicrm_group_contact_cache`;
-DROP TABLE IF EXISTS `civicrm_subscription_history`;
-DROP TABLE IF EXISTS `civicrm_group`;
-DROP TABLE IF EXISTS `civicrm_status_pref`;
-DROP TABLE IF EXISTS `civicrm_word_replacement`;
+DROP TABLE IF EXISTS `civicrm_custom_field`;
+DROP TABLE IF EXISTS `civicrm_custom_group`;
+DROP TABLE IF EXISTS `civicrm_dashboard`;
+DROP TABLE IF EXISTS `civicrm_discount`;
+DROP TABLE IF EXISTS `civicrm_domain`;
+DROP TABLE IF EXISTS `civicrm_email`;
+DROP TABLE IF EXISTS `civicrm_entity_file`;
+DROP TABLE IF EXISTS `civicrm_entity_tag`;
+DROP TABLE IF EXISTS `civicrm_extension`;
+DROP TABLE IF EXISTS `civicrm_file`;
+DROP TABLE IF EXISTS `civicrm_im`;
+DROP TABLE IF EXISTS `civicrm_job`;
+DROP TABLE IF EXISTS `civicrm_job_log`;
+DROP TABLE IF EXISTS `civicrm_loc_block`;
+DROP TABLE IF EXISTS `civicrm_location_type`;
+DROP TABLE IF EXISTS `civicrm_log`;
+DROP TABLE IF EXISTS `civicrm_mail_settings`;
+DROP TABLE IF EXISTS `civicrm_managed`;
+DROP TABLE IF EXISTS `civicrm_mapping`;
+DROP TABLE IF EXISTS `civicrm_mapping_field`;
+DROP TABLE IF EXISTS `civicrm_menu`;
+DROP TABLE IF EXISTS `civicrm_msg_template`;
+DROP TABLE IF EXISTS `civicrm_navigation`;
+DROP TABLE IF EXISTS `civicrm_note`;
+DROP TABLE IF EXISTS `civicrm_openid`;
+DROP TABLE IF EXISTS `civicrm_option_group`;
+DROP TABLE IF EXISTS `civicrm_option_value`;
+DROP TABLE IF EXISTS `civicrm_phone`;
+DROP TABLE IF EXISTS `civicrm_preferences_date`;
+DROP TABLE IF EXISTS `civicrm_prevnext_cache`;
DROP TABLE IF EXISTS `civicrm_print_label`;
+DROP TABLE IF EXISTS `civicrm_recurring_entity`;
DROP TABLE IF EXISTS `civicrm_setting`;
-DROP TABLE IF EXISTS `civicrm_website`;
-DROP TABLE IF EXISTS `civicrm_openid`;
+DROP TABLE IF EXISTS `civicrm_state_province`;
+DROP TABLE IF EXISTS `civicrm_status_pref`;
+DROP TABLE IF EXISTS `civicrm_system_log`;
+DROP TABLE IF EXISTS `civicrm_tag`;
DROP TABLE IF EXISTS `civicrm_timezone`;
-DROP TABLE IF EXISTS `civicrm_user_job`;
+DROP TABLE IF EXISTS `civicrm_translation`;
+DROP TABLE IF EXISTS `civicrm_uf_field`;
+DROP TABLE IF EXISTS `civicrm_uf_group`;
+DROP TABLE IF EXISTS `civicrm_uf_join`;
DROP TABLE IF EXISTS `civicrm_uf_match`;
-DROP TABLE IF EXISTS `civicrm_tag`;
-DROP TABLE IF EXISTS `civicrm_state_province`;
-DROP TABLE IF EXISTS `civicrm_phone`;
-DROP TABLE IF EXISTS `civicrm_option_value`;
-DROP TABLE IF EXISTS `civicrm_note`;
-DROP TABLE IF EXISTS `civicrm_navigation`;
-DROP TABLE IF EXISTS `civicrm_menu`;
-DROP TABLE IF EXISTS `civicrm_mapping_field`;
-DROP TABLE IF EXISTS `civicrm_mail_settings`;
-DROP TABLE IF EXISTS `civicrm_log`;
-DROP TABLE IF EXISTS `civicrm_job_log`;
-DROP TABLE IF EXISTS `civicrm_job`;
-DROP TABLE IF EXISTS `civicrm_im`;
-DROP TABLE IF EXISTS `civicrm_file`;
-DROP TABLE IF EXISTS `civicrm_email`;
-DROP TABLE IF EXISTS `civicrm_domain`;
-DROP TABLE IF EXISTS `civicrm_custom_field`;
-DROP TABLE IF EXISTS `civicrm_custom_group`;
-DROP TABLE IF EXISTS `civicrm_country`;
-DROP TABLE IF EXISTS `civicrm_cache`;
+DROP TABLE IF EXISTS `civicrm_user_job`;
+DROP TABLE IF EXISTS `civicrm_website`;
+DROP TABLE IF EXISTS `civicrm_word_replacement`;
+DROP TABLE IF EXISTS `civicrm_worldregion`;
DROP TABLE IF EXISTS `civicrm_cxn`;
-DROP TABLE IF EXISTS `civicrm_pcp`;
-DROP TABLE IF EXISTS `civicrm_queue_item`;
-DROP TABLE IF EXISTS `civicrm_queue`;
-DROP TABLE IF EXISTS `civicrm_pledge_block`;
-DROP TABLE IF EXISTS `civicrm_tell_friend`;
-DROP TABLE IF EXISTS `civicrm_case_type`;
DROP TABLE IF EXISTS `civicrm_dedupe_exception`;
DROP TABLE IF EXISTS `civicrm_dedupe_rule`;
DROP TABLE IF EXISTS `civicrm_dedupe_rule_group`;
DROP TABLE IF EXISTS `civicrm_event_carts`;
+DROP TABLE IF EXISTS `civicrm_event`;
+DROP TABLE IF EXISTS `civicrm_events_in_carts`;
+DROP TABLE IF EXISTS `civicrm_participant`;
+DROP TABLE IF EXISTS `civicrm_participant_payment`;
DROP TABLE IF EXISTS `civicrm_participant_status_type`;
-DROP TABLE IF EXISTS `civicrm_survey`;
-DROP TABLE IF EXISTS `civicrm_campaign_group`;
-DROP TABLE IF EXISTS `civicrm_campaign`;
-DROP TABLE IF EXISTS `civicrm_membership_status`;
-DROP TABLE IF EXISTS `civicrm_financial_item`;
+DROP TABLE IF EXISTS `civicrm_currency`;
DROP TABLE IF EXISTS `civicrm_entity_financial_account`;
+DROP TABLE IF EXISTS `civicrm_entity_financial_trxn`;
+DROP TABLE IF EXISTS `civicrm_financial_account`;
+DROP TABLE IF EXISTS `civicrm_financial_item`;
+DROP TABLE IF EXISTS `civicrm_financial_trxn`;
DROP TABLE IF EXISTS `civicrm_financial_type`;
+DROP TABLE IF EXISTS `civicrm_payment_processor`;
DROP TABLE IF EXISTS `civicrm_payment_processor_type`;
-DROP TABLE IF EXISTS `civicrm_financial_account`;
-DROP TABLE IF EXISTS `civicrm_currency`;
-DROP TABLE IF EXISTS `civicrm_premiums`;
+DROP TABLE IF EXISTS `civicrm_payment_token`;
+DROP TABLE IF EXISTS `civicrm_tell_friend`;
DROP TABLE IF EXISTS `civicrm_mailing_bounce_pattern`;
DROP TABLE IF EXISTS `civicrm_mailing_bounce_type`;
+DROP TABLE IF EXISTS `civicrm_mailing`;
DROP TABLE IF EXISTS `civicrm_mailing_abtest`;
DROP TABLE IF EXISTS `civicrm_mailing_component`;
-DROP TABLE IF EXISTS `civicrm_entity_batch`;
-DROP TABLE IF EXISTS `civicrm_batch`;
-DROP TABLE IF EXISTS `civicrm_contact_type`;
-DROP TABLE IF EXISTS `civicrm_saved_search`;
-DROP TABLE IF EXISTS `civicrm_relationship_type`;
-DROP TABLE IF EXISTS `civicrm_acl_contact_cache`;
-DROP TABLE IF EXISTS `civicrm_contact`;
-DROP TABLE IF EXISTS `civicrm_acl_entity_role`;
-DROP TABLE IF EXISTS `civicrm_acl_cache`;
-DROP TABLE IF EXISTS `civicrm_acl`;
-DROP TABLE IF EXISTS `civicrm_recurring_entity`;
-DROP TABLE IF EXISTS `civicrm_prevnext_cache`;
-DROP TABLE IF EXISTS `civicrm_component`;
-DROP TABLE IF EXISTS `civicrm_worldregion`;
-DROP TABLE IF EXISTS `civicrm_translation`;
-DROP TABLE IF EXISTS `civicrm_system_log`;
-DROP TABLE IF EXISTS `civicrm_preferences_date`;
-DROP TABLE IF EXISTS `civicrm_option_group`;
-DROP TABLE IF EXISTS `civicrm_msg_template`;
-DROP TABLE IF EXISTS `civicrm_mapping`;
-DROP TABLE IF EXISTS `civicrm_managed`;
-DROP TABLE IF EXISTS `civicrm_location_type`;
-DROP TABLE IF EXISTS `civicrm_extension`;
-DROP TABLE IF EXISTS `civicrm_address_format`;
-
-SET FOREIGN_KEY_CHECKS=1;
--- /*******************************************************
--- *
--- * Create new tables
--- *
--- *******************************************************/
-
--- /*******************************************************
--- *
--- * civicrm_address_format
--- *
--- *******************************************************/
-CREATE TABLE `civicrm_address_format` (
- `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'Address Format ID',
- `format` text COMMENT 'The format of an address',
- PRIMARY KEY (`id`)
-)
-ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
-
--- /*******************************************************
--- *
--- * civicrm_extension
--- *
--- *******************************************************/
-CREATE TABLE `civicrm_extension` (
- `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'Local Extension ID',
- `type` varchar(8) NOT NULL,
- `full_name` varchar(255) NOT NULL COMMENT 'Fully qualified extension name',
- `name` varchar(255) COMMENT 'Short name',
- `label` varchar(255) COMMENT 'Short, printable name',
- `file` varchar(255) COMMENT 'Primary PHP file',
- `schema_version` varchar(63) COMMENT 'Revision code of the database schema; the format is module-defined',
- `is_active` tinyint DEFAULT 1 COMMENT 'Is this extension active?',
- PRIMARY KEY (`id`),
- UNIQUE INDEX `UI_extension_full_name`(full_name),
- INDEX `UI_extension_name`(name)
-)
-ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
-
--- /*******************************************************
--- *
--- * civicrm_location_type
--- *
--- *******************************************************/
-CREATE TABLE `civicrm_location_type` (
- `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'Location Type ID',
- `name` varchar(64) NOT NULL COMMENT 'Location Type Name.',
- `display_name` varchar(64) NOT NULL COMMENT 'Location Type Display Name.',
- `vcard_name` varchar(64) COMMENT 'vCard Location Type Name.',
- `description` varchar(255) COMMENT 'Location Type Description.',
- `is_reserved` tinyint NOT NULL DEFAULT 0 COMMENT 'Is this location type a predefined system location?',
- `is_active` tinyint NOT NULL DEFAULT 1 COMMENT 'Is this property active?',
- `is_default` tinyint NOT NULL DEFAULT 0 COMMENT 'Is this location type the default?',
- PRIMARY KEY (`id`),
- UNIQUE INDEX `UI_name`(name)
-)
-ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
-
--- /*******************************************************
--- *
--- * civicrm_managed
--- *
--- * List of declaratively managed objects
--- *
--- *******************************************************/
-CREATE TABLE `civicrm_managed` (
- `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'Surrogate Key',
- `module` varchar(255) NOT NULL COMMENT 'Name of the module which declared this object (soft FK to civicrm_extension.full_name)',
- `name` varchar(255) NOT NULL COMMENT 'Symbolic name used by the module to identify the object',
- `entity_type` varchar(64) NOT NULL COMMENT 'API entity type',
- `entity_id` int unsigned COMMENT 'Soft foreign key to the referenced item.',
- `cleanup` varchar(16) NOT NULL DEFAULT 'always' COMMENT 'Policy on when to cleanup entity (always, never, unused)',
- `entity_modified_date` timestamp NULL DEFAULT NULL COMMENT 'When the managed entity was changed from its original settings.',
- PRIMARY KEY (`id`),
- INDEX `UI_managed_module_name`(module, name),
- INDEX `UI_managed_entity`(entity_type, entity_id)
-)
-ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
-
--- /*******************************************************
--- *
--- * civicrm_mapping
--- *
--- * Store field mappings in import or export for reuse
--- *
--- *******************************************************/
-CREATE TABLE `civicrm_mapping` (
- `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'Mapping ID',
- `name` varchar(64) NOT NULL COMMENT 'Unique name of Mapping',
- `description` varchar(255) COMMENT 'Description of Mapping.',
- `mapping_type_id` int unsigned COMMENT 'Mapping Type',
- PRIMARY KEY (`id`),
- UNIQUE INDEX `UI_name`(name)
-)
-ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
-
--- /*******************************************************
--- *
--- * civicrm_msg_template
--- *
--- * Users will need a way to save and retrieve templates with tokens for use in recurring email communication tasks
--- *
--- *******************************************************/
-CREATE TABLE `civicrm_msg_template` (
- `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'Message Template ID',
- `msg_title` varchar(255) COMMENT 'Descriptive title of message',
- `msg_subject` text COMMENT 'Subject for email message.',
- `msg_text` longtext COMMENT 'Text formatted message',
- `msg_html` longtext COMMENT 'HTML formatted message',
- `is_active` tinyint NOT NULL DEFAULT 1,
- `workflow_id` int unsigned COMMENT 'a pseudo-FK to civicrm_option_value',
- `workflow_name` varchar(255),
- `is_default` tinyint NOT NULL DEFAULT 1 COMMENT 'is this the default message template for the workflow referenced by workflow_id?',
- `is_reserved` tinyint NOT NULL DEFAULT 0 COMMENT 'is this the reserved message template which we ship for the workflow referenced by workflow_id?',
- `is_sms` tinyint NOT NULL DEFAULT 0 COMMENT 'Is this message template used for sms?',
- `pdf_format_id` int unsigned COMMENT 'a pseudo-FK to civicrm_option_value containing PDF Page Format.',
- PRIMARY KEY (`id`)
-)
-ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
-
--- /*******************************************************
--- *
--- * civicrm_option_group
--- *
--- *******************************************************/
-CREATE TABLE `civicrm_option_group` (
- `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'Option Group ID',
- `name` varchar(64) NOT NULL COMMENT 'Option group name. Used as selection key by class properties which lookup options in civicrm_option_value.',
- `title` varchar(255) COMMENT 'Option Group title.',
- `description` text COMMENT 'Option group description.',
- `data_type` varchar(128) COMMENT 'Type of data stored by this option group.',
- `is_reserved` tinyint NOT NULL DEFAULT 1 COMMENT 'Is this a predefined system option group (i.e. it can not be deleted)?',
- `is_active` tinyint NOT NULL DEFAULT 1 COMMENT 'Is this option group active?',
- `is_locked` tinyint NOT NULL DEFAULT 0 COMMENT 'A lock to remove the ability to add new options via the UI.',
- `option_value_fields` varchar(128) DEFAULT "name,label,description" COMMENT 'Which optional columns from the option_value table are in use by this group.',
- PRIMARY KEY (`id`),
- UNIQUE INDEX `UI_name`(name)
-)
-ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
-
--- /*******************************************************
--- *
--- * civicrm_preferences_date
--- *
--- * Define date preferences for the site
--- *
--- *******************************************************/
-CREATE TABLE `civicrm_preferences_date` (
- `id` int unsigned NOT NULL AUTO_INCREMENT,
- `name` varchar(64) NOT NULL COMMENT 'The meta name for this date (fixed in code)',
- `description` varchar(255) COMMENT 'Description of this date type.',
- `start` int NOT NULL COMMENT 'The start offset relative to current year',
- `end` int NOT NULL COMMENT 'The end offset relative to current year, can be negative',
- `date_format` varchar(64) COMMENT 'The date type',
- `time_format` varchar(64) COMMENT 'time format',
- PRIMARY KEY (`id`),
- INDEX `index_name`(name)
-)
-ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
-
--- /*******************************************************
--- *
--- * civicrm_system_log
--- *
--- *******************************************************/
-CREATE TABLE `civicrm_system_log` (
- `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'Primary key ID',
- `message` varchar(128) NOT NULL COMMENT 'Standardized message',
- `context` longtext COMMENT 'JSON encoded data',
- `level` varchar(9) DEFAULT 'info' COMMENT 'error level per PSR3',
- `timestamp` timestamp DEFAULT CURRENT_TIMESTAMP COMMENT 'Timestamp of when event occurred.',
- `contact_id` int unsigned COMMENT 'Optional Contact ID that created the log. Not an FK as we keep this regardless',
- `hostname` varchar(128) COMMENT 'Optional Name of logging host',
- PRIMARY KEY (`id`)
-)
-ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
-
--- /*******************************************************
--- *
--- * civicrm_translation
--- *
--- * Each string record is an alternate translation of some displayable string in the database.
--- *
--- *******************************************************/
-CREATE TABLE `civicrm_translation` (
- `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'Unique String ID',
- `entity_table` varchar(64) NOT NULL COMMENT 'Table where referenced item is stored',
- `entity_field` varchar(64) NOT NULL COMMENT 'Field where referenced item is stored',
- `entity_id` int NOT NULL COMMENT 'ID of the relevant entity.',
- `language` varchar(5) NOT NULL COMMENT 'Relevant language',
- `status_id` tinyint NOT NULL DEFAULT 1 COMMENT 'Specify whether the string is active, draft, etc',
- `string` longtext NOT NULL COMMENT 'Translated string',
- PRIMARY KEY (`id`),
- INDEX `index_entity_lang`(entity_id, entity_table, language)
-)
-ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
-
--- /*******************************************************
--- *
--- * civicrm_worldregion
--- *
--- *******************************************************/
-CREATE TABLE `civicrm_worldregion` (
- `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'Country ID',
- `name` varchar(128) COMMENT 'Region name to be associated with countries',
- PRIMARY KEY (`id`)
-)
-ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
-
--- /*******************************************************
--- *
--- * civicrm_component
--- *
--- *******************************************************/
-CREATE TABLE `civicrm_component` (
- `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'Component ID',
- `name` varchar(64) NOT NULL COMMENT 'Name of the component.',
- `namespace` varchar(128) COMMENT 'Path to components main directory in a form of a class namespace.',
- PRIMARY KEY (`id`)
-)
-ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
-
--- /*******************************************************
--- *
--- * civicrm_prevnext_cache
--- *
--- * Table to cache items for navigation on civicrm searched results.
--- *
--- *******************************************************/
-CREATE TABLE `civicrm_prevnext_cache` (
- `id` int unsigned NOT NULL AUTO_INCREMENT,
- `entity_table` varchar(64) COMMENT 'physical tablename for entity being joined to discount, e.g. civicrm_event',
- `entity_id1` int unsigned NOT NULL COMMENT 'FK to entity table specified in entity_table column.',
- `entity_id2` int unsigned NULL COMMENT 'FK to entity table specified in entity_table column.',
- `cachekey` varchar(255) COMMENT 'Unique path name for cache element of the searched item',
- `data` longtext COMMENT 'cached snapshot of the serialized data',
- `is_selected` tinyint NOT NULL DEFAULT 0,
- PRIMARY KEY (`id`),
- INDEX `index_all`(cachekey, entity_id1, entity_id2, entity_table, is_selected)
-)
-ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
-
--- /*******************************************************
--- *
--- * civicrm_recurring_entity
--- *
--- *******************************************************/
-CREATE TABLE `civicrm_recurring_entity` (
- `id` int unsigned NOT NULL AUTO_INCREMENT,
- `parent_id` int unsigned NOT NULL COMMENT 'Recurring Entity Parent ID',
- `entity_id` int unsigned COMMENT 'Recurring Entity Child ID',
- `entity_table` varchar(64) NOT NULL COMMENT 'Physical tablename for entity, e.g. civicrm_event',
- `mode` tinyint NOT NULL DEFAULT 1 COMMENT '1-this entity, 2-this and the following entities, 3-all the entities',
- PRIMARY KEY (`id`)
-)
-ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
-
--- /*******************************************************
--- *
--- * civicrm_acl
--- *
--- * Access Control List
--- *
--- *******************************************************/
+DROP TABLE IF EXISTS `civicrm_mailing_event_bounce`;
+DROP TABLE IF EXISTS `civicrm_mailing_event_confirm`;
+DROP TABLE IF EXISTS `civicrm_mailing_event_delivered`;
+DROP TABLE IF EXISTS `civicrm_mailing_event_forward`;
+DROP TABLE IF EXISTS `civicrm_mailing_event_opened`;
+DROP TABLE IF EXISTS `civicrm_mailing_event_queue`;
+DROP TABLE IF EXISTS `civicrm_mailing_event_reply`;
+DROP TABLE IF EXISTS `civicrm_mailing_event_subscribe`;
+DROP TABLE IF EXISTS `civicrm_mailing_event_trackable_url_open`;
+DROP TABLE IF EXISTS `civicrm_mailing_event_unsubscribe`;
+DROP TABLE IF EXISTS `civicrm_mailing_group`;
+DROP TABLE IF EXISTS `civicrm_mailing_job`;
+DROP TABLE IF EXISTS `civicrm_mailing_recipients`;
+DROP TABLE IF EXISTS `civicrm_mailing_trackable_url`;
+DROP TABLE IF EXISTS `civicrm_mailing_spool`;
+DROP TABLE IF EXISTS `civicrm_membership`;
+DROP TABLE IF EXISTS `civicrm_membership_block`;
+DROP TABLE IF EXISTS `civicrm_membership_log`;
+DROP TABLE IF EXISTS `civicrm_membership_payment`;
+DROP TABLE IF EXISTS `civicrm_membership_status`;
+DROP TABLE IF EXISTS `civicrm_membership_type`;
+DROP TABLE IF EXISTS `civicrm_pcp`;
+DROP TABLE IF EXISTS `civicrm_pcp_block`;
+DROP TABLE IF EXISTS `civicrm_pledge`;
+DROP TABLE IF EXISTS `civicrm_pledge_block`;
+DROP TABLE IF EXISTS `civicrm_pledge_payment`;
+DROP TABLE IF EXISTS `civicrm_line_item`;
+DROP TABLE IF EXISTS `civicrm_price_field`;
+DROP TABLE IF EXISTS `civicrm_price_field_value`;
+DROP TABLE IF EXISTS `civicrm_price_set`;
+DROP TABLE IF EXISTS `civicrm_price_set_entity`;
+DROP TABLE IF EXISTS `civicrm_queue`;
+DROP TABLE IF EXISTS `civicrm_queue_item`;
+DROP TABLE IF EXISTS `civicrm_report_instance`;
+DROP TABLE IF EXISTS `civicrm_sms_provider`;
+SET FOREIGN_KEY_CHECKS=1;
CREATE TABLE `civicrm_acl` (
`id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'Unique table ID',
`name` varchar(64) COMMENT 'ACL Name.',
- `deny` tinyint NOT NULL DEFAULT 0 COMMENT 'Is this ACL entry Allow (0) or Deny (1) ?',
+ `deny` boolean NOT NULL DEFAULT FALSE COMMENT 'Is this ACL entry Allow (0) or Deny (1) ?',
`entity_table` varchar(64) NOT NULL COMMENT 'Table of the object possessing this ACL entry (Contact, Group, or ACL Group)',
`entity_id` int unsigned COMMENT 'ID of the object possessing this ACL',
`operation` varchar(8) NOT NULL COMMENT 'What operation does this ACL entry control?',
@@ -446,240 +164,81 @@ CREATE TABLE `civicrm_acl` (
`object_id` int unsigned COMMENT 'The ID of the object controlled by this ACL entry',
`acl_table` varchar(64) COMMENT 'If this is a grant/revoke entry, what table are we granting?',
`acl_id` int unsigned COMMENT 'ID of the ACL or ACL group being granted/revoked',
- `is_active` tinyint NOT NULL DEFAULT 1 COMMENT 'Is this property active?',
+ `is_active` boolean NOT NULL DEFAULT TRUE COMMENT 'Is this property active?',
`priority` int NOT NULL DEFAULT 0,
PRIMARY KEY (`id`),
- INDEX `index_acl_id`(acl_id)
+ INDEX `index_acl_id`(`acl_id`)
)
ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
-
--- /*******************************************************
--- *
--- * civicrm_acl_cache
--- *
--- * Cache for acls and contacts
--- *
--- *******************************************************/
CREATE TABLE `civicrm_acl_cache` (
`id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'Unique table ID',
`contact_id` int unsigned COMMENT 'Foreign Key to Contact',
`acl_id` int unsigned NOT NULL COMMENT 'Foreign Key to ACL',
`modified_date` timestamp NULL COMMENT 'When was this cache entry last modified',
PRIMARY KEY (`id`),
- INDEX `index_contact_id`(contact_id),
- INDEX `index_acl_id`(acl_id),
- INDEX `index_modified_date`(modified_date),
- CONSTRAINT FK_civicrm_acl_cache_acl_id FOREIGN KEY (`acl_id`) REFERENCES `civicrm_acl`(`id`) ON DELETE CASCADE
-)
-ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
-
--- /*******************************************************
--- *
--- * civicrm_acl_entity_role
--- *
--- * Join table for Contacts and Groups to ACL Roles
--- *
--- *******************************************************/
+ INDEX `index_contact_id`(`contact_id`),
+ INDEX `index_acl_id`(`acl_id`),
+ INDEX `index_modified_date`(`modified_date`)
+)
+ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
CREATE TABLE `civicrm_acl_entity_role` (
`id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'Unique table ID',
`acl_role_id` int unsigned NOT NULL COMMENT 'Foreign Key to ACL Role (which is an option value pair and hence an implicit FK)',
`entity_table` varchar(64) NOT NULL COMMENT 'Table of the object joined to the ACL Role (Contact or Group)',
`entity_id` int unsigned NOT NULL COMMENT 'ID of the group/contact object being joined',
- `is_active` tinyint NOT NULL DEFAULT 1 COMMENT 'Is this property active?',
- PRIMARY KEY (`id`),
- INDEX `index_role`(acl_role_id),
- INDEX `index_entity`(entity_table, entity_id)
-)
-ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
-
--- /*******************************************************
--- *
--- * civicrm_contact
--- *
--- * Contact objects are defined by a civicrm_contact record plus a related civicrm_contact_type record.
--- *
--- *******************************************************/
-CREATE TABLE `civicrm_contact` (
- `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'Unique Contact ID',
- `contact_type` varchar(64) COMMENT 'Type of Contact.',
- `external_identifier` varchar(64) COMMENT 'Unique trusted external ID (generally from a legacy app/datasource). Particularly useful for deduping operations.',
- `display_name` varchar(128) COMMENT 'Formatted name representing preferred format for display/print/other output.',
- `organization_name` varchar(128) COMMENT 'Organization Name.',
- `contact_sub_type` varchar(255) COMMENT 'May be used to over-ride contact view and edit templates.',
- `first_name` varchar(64) COMMENT 'First Name.',
- `middle_name` varchar(64) COMMENT 'Middle Name.',
- `last_name` varchar(64) COMMENT 'Last Name.',
- `do_not_email` tinyint NOT NULL DEFAULT 0,
- `do_not_phone` tinyint NOT NULL DEFAULT 0,
- `do_not_mail` tinyint NOT NULL DEFAULT 0,
- `do_not_sms` tinyint NOT NULL DEFAULT 0,
- `do_not_trade` tinyint NOT NULL DEFAULT 0,
- `is_opt_out` tinyint NOT NULL DEFAULT 0 COMMENT 'Has the contact opted out from receiving all bulk email from the organization or site domain?',
- `legal_identifier` varchar(32) COMMENT 'May be used for SSN, EIN/TIN, Household ID (census) or other applicable unique legal/government ID.',
- `sort_name` varchar(128) COMMENT 'Name used for sorting different contact types',
- `nick_name` varchar(128) COMMENT 'Nickname.',
- `legal_name` varchar(128) COMMENT 'Legal Name.',
- `image_URL` text COMMENT 'optional URL for preferred image (photo, logo, etc.) to display for this contact.',
- `preferred_communication_method` varchar(255) COMMENT 'What is the preferred mode of communication.',
- `preferred_language` varchar(5) COMMENT 'Which language is preferred for communication. FK to languages in civicrm_option_value.',
- `hash` varchar(32) COMMENT 'Key for validating requests related to this contact.',
- `api_key` varchar(32) COMMENT 'API Key for validating requests related to this contact.',
- `source` varchar(255) COMMENT 'where contact come from, e.g. import, donate module insert...',
- `prefix_id` int unsigned COMMENT 'Prefix or Title for name (Ms, Mr...). FK to prefix ID',
- `suffix_id` int unsigned COMMENT 'Suffix for name (Jr, Sr...). FK to suffix ID',
- `formal_title` varchar(64) COMMENT 'Formal (academic or similar) title in front of name. (Prof., Dr. etc.)',
- `communication_style_id` int unsigned COMMENT 'Communication style (e.g. formal vs. familiar) to use with this contact. FK to communication styles in civicrm_option_value.',
- `email_greeting_id` int unsigned COMMENT 'FK to civicrm_option_value.id, that has to be valid registered Email Greeting.',
- `email_greeting_custom` varchar(128) COMMENT 'Custom Email Greeting.',
- `email_greeting_display` varchar(255) COMMENT 'Cache Email Greeting.',
- `postal_greeting_id` int unsigned COMMENT 'FK to civicrm_option_value.id, that has to be valid registered Postal Greeting.',
- `postal_greeting_custom` varchar(128) COMMENT 'Custom Postal greeting.',
- `postal_greeting_display` varchar(255) COMMENT 'Cache Postal greeting.',
- `addressee_id` int unsigned COMMENT 'FK to civicrm_option_value.id, that has to be valid registered Addressee.',
- `addressee_custom` varchar(128) COMMENT 'Custom Addressee.',
- `addressee_display` varchar(255) COMMENT 'Cache Addressee.',
- `job_title` varchar(255) COMMENT 'Job Title',
- `gender_id` int unsigned COMMENT 'FK to gender ID',
- `birth_date` date COMMENT 'Date of birth',
- `is_deceased` tinyint NOT NULL DEFAULT 0,
- `deceased_date` date COMMENT 'Date of deceased',
- `household_name` varchar(128) COMMENT 'Household Name.',
- `primary_contact_id` int unsigned COMMENT 'Optional FK to Primary Contact for this household.',
- `sic_code` varchar(8) COMMENT 'Standard Industry Classification Code.',
- `user_unique_id` varchar(255) COMMENT 'the OpenID (or OpenID-style http://username.domain/) unique identifier for this contact mainly used for logging in to CiviCRM',
- `employer_id` int unsigned COMMENT 'OPTIONAL FK to civicrm_contact record.',
- `is_deleted` tinyint NOT NULL DEFAULT 0,
- `created_date` timestamp NULL DEFAULT NULL COMMENT 'When was the contact was created.',
- `modified_date` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT 'When was the contact (or closely related entity) was created or modified or deleted.',
- `preferred_mail_format` varchar(8) DEFAULT "Both" COMMENT 'Deprecated setting for text vs html mailings',
- PRIMARY KEY (`id`),
- INDEX `index_contact_type`(contact_type),
- UNIQUE INDEX `UI_external_identifier`(external_identifier),
- INDEX `index_organization_name`(organization_name),
- INDEX `index_contact_sub_type`(contact_sub_type),
- INDEX `index_first_name`(first_name),
- INDEX `index_last_name`(last_name),
- INDEX `index_sort_name`(sort_name),
- INDEX `index_preferred_communication_method`(preferred_communication_method),
- INDEX `index_hash`(hash),
- INDEX `index_api_key`(api_key),
- INDEX `UI_prefix`(prefix_id),
- INDEX `UI_suffix`(suffix_id),
- INDEX `index_communication_style_id`(communication_style_id),
- INDEX `UI_gender`(gender_id),
- INDEX `index_is_deceased`(is_deceased),
- INDEX `index_household_name`(household_name),
- INDEX `index_is_deleted_sort_name`(is_deleted, sort_name, id),
- INDEX `index_created_date`(created_date),
- INDEX `index_modified_date`(modified_date),
- CONSTRAINT FK_civicrm_contact_primary_contact_id FOREIGN KEY (`primary_contact_id`) REFERENCES `civicrm_contact`(`id`) ON DELETE SET NULL,
- CONSTRAINT FK_civicrm_contact_employer_id FOREIGN KEY (`employer_id`) REFERENCES `civicrm_contact`(`id`) ON DELETE SET NULL
-)
-ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
-
--- /*******************************************************
--- *
--- * civicrm_acl_contact_cache
--- *
--- * Join table cache for contacts that a user has permission on.
--- *
--- *******************************************************/
-CREATE TABLE `civicrm_acl_contact_cache` (
- `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'primary key',
- `user_id` int unsigned COMMENT 'FK to civicrm_contact (could be null for anon user)',
- `contact_id` int unsigned NOT NULL COMMENT 'FK to civicrm_contact',
- `operation` varchar(8) NOT NULL COMMENT 'What operation does this user have permission on?',
+ `is_active` boolean NOT NULL DEFAULT TRUE COMMENT 'Is this property active?',
PRIMARY KEY (`id`),
- UNIQUE INDEX `UI_user_contact_operation`(user_id, contact_id, operation)
+ INDEX `index_role`(`acl_role_id`),
+ INDEX `index_entity`(`entity_table`, `entity_id`)
)
ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
-
--- /*******************************************************
--- *
--- * civicrm_relationship_type
--- *
--- * Relationship types s/b structured with contact_a as the 'subject/child' contact and contact_b as the 'object/parent' contact (e.g. Individual A is Employee of Org B).
--- *
--- *******************************************************/
-CREATE TABLE `civicrm_relationship_type` (
- `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'Primary key',
- `name_a_b` varchar(64) COMMENT 'name for relationship of contact_a to contact_b.',
- `label_a_b` varchar(64) COMMENT 'label for relationship of contact_a to contact_b.',
- `name_b_a` varchar(64) COMMENT 'Optional name for relationship of contact_b to contact_a.',
- `label_b_a` varchar(64) COMMENT 'Optional label for relationship of contact_b to contact_a.',
- `description` varchar(255) COMMENT 'Optional verbose description of the relationship type.',
- `contact_type_a` varchar(12) COMMENT 'If defined, contact_a in a relationship of this type must be a specific contact_type.',
- `contact_type_b` varchar(12) COMMENT 'If defined, contact_b in a relationship of this type must be a specific contact_type.',
- `contact_sub_type_a` varchar(64) COMMENT 'If defined, contact_sub_type_a in a relationship of this type must be a specific contact_sub_type.',
- `contact_sub_type_b` varchar(64) COMMENT 'If defined, contact_sub_type_b in a relationship of this type must be a specific contact_sub_type.',
- `is_reserved` tinyint NOT NULL DEFAULT 0 COMMENT 'Is this relationship type a predefined system type (can not be changed or de-activated)?',
- `is_active` tinyint NOT NULL DEFAULT 1 COMMENT 'Is this relationship type currently active (i.e. can be used when creating or editing relationships)?',
- PRIMARY KEY (`id`),
- UNIQUE INDEX `UI_name_a_b`(name_a_b),
- UNIQUE INDEX `UI_name_b_a`(name_b_a)
-)
-ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
-
--- /*******************************************************
--- *
--- * civicrm_saved_search
--- *
--- * Users can save their complex SQL queries and use them later.
--- *
--- *******************************************************/
-CREATE TABLE `civicrm_saved_search` (
- `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'Saved Search ID',
- `name` varchar(255) DEFAULT NULL COMMENT 'Unique name of saved search',
- `label` varchar(255) DEFAULT NULL COMMENT 'Administrative label for search',
- `form_values` text COMMENT 'Submitted form values for this search',
- `mapping_id` int unsigned COMMENT 'Foreign key to civicrm_mapping used for saved search-builder searches.',
- `search_custom_id` int unsigned COMMENT 'Foreign key to civicrm_option value table used for saved custom searches.',
- `api_entity` varchar(255) COMMENT 'Entity name for API based search',
- `api_params` text COMMENT 'Parameters for API based search',
- `created_id` int unsigned COMMENT 'FK to contact table.',
- `modified_id` int unsigned COMMENT 'FK to contact table.',
- `expires_date` timestamp NULL COMMENT 'Optional date after which the search is not needed',
- `created_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'When the search was created.',
- `modified_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT 'When the search was last modified.',
- `description` text,
+CREATE TABLE `civicrm_activity` (
+ `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'Unique Other Activity ID',
+ `source_record_id` int unsigned COMMENT 'Artificial FK to original transaction (e.g. contribution) IF it is not an Activity. Entity table is discovered by filtering by the appropriate activity_type_id.',
+ `activity_type_id` int unsigned NOT NULL DEFAULT 1 COMMENT 'FK to civicrm_option_value.id, that has to be valid, registered activity type.',
+ `subject` varchar(255) COMMENT 'The subject/purpose/short description of the activity.',
+ `activity_date_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT 'Date and time this activity is scheduled to occur. Formerly named scheduled_date_time.',
+ `duration` int unsigned COMMENT 'Planned or actual duration of activity expressed in minutes. Conglomerate of former duration_hours and duration_minutes.',
+ `location` varchar(255) COMMENT 'Location of the activity (optional, open text).',
+ `phone_id` int unsigned COMMENT 'Phone ID of the number called (optional - used if an existing phone number is selected).',
+ `phone_number` varchar(64) COMMENT 'Phone number in case the number does not exist in the civicrm_phone table.',
+ `details` longtext COMMENT 'Details about the activity (agenda, notes, etc).',
+ `status_id` int unsigned COMMENT 'ID of the status this activity is currently in. Foreign key to civicrm_option_value.',
+ `priority_id` int unsigned COMMENT 'ID of the priority given to this activity. Foreign key to civicrm_option_value.',
+ `parent_id` int unsigned COMMENT 'Parent meeting ID (if this is a follow-up item).',
+ `is_test` boolean NOT NULL DEFAULT FALSE,
+ `medium_id` int unsigned DEFAULT NULL COMMENT 'Activity Medium, Implicit FK to civicrm_option_value where option_group = encounter_medium.',
+ `is_auto` boolean NOT NULL DEFAULT FALSE,
+ `relationship_id` int unsigned DEFAULT NULL COMMENT 'FK to Relationship ID',
+ `is_current_revision` boolean NOT NULL DEFAULT TRUE COMMENT 'Unused deprecated column.',
+ `original_id` int unsigned COMMENT 'Unused deprecated column.',
+ `result` varchar(255) COMMENT 'Currently being used to store result id for survey activity, FK to option value.',
+ `is_deleted` boolean NOT NULL DEFAULT FALSE,
+ `campaign_id` int unsigned COMMENT 'The campaign for which this activity has been triggered.',
+ `engagement_level` int unsigned COMMENT 'Assign a specific level of engagement to this activity. Used for tracking constituents in ladder of engagement.',
+ `weight` int,
+ `is_star` boolean NOT NULL DEFAULT FALSE COMMENT 'Activity marked as favorite.',
+ `created_date` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'When was the activity was created.',
+ `modified_date` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT 'When was the activity (or closely related entity) was created or modified or deleted.',
PRIMARY KEY (`id`),
- UNIQUE INDEX `UI_name`(name),
- CONSTRAINT FK_civicrm_saved_search_mapping_id FOREIGN KEY (`mapping_id`) REFERENCES `civicrm_mapping`(`id`) ON DELETE SET NULL,
- CONSTRAINT FK_civicrm_saved_search_created_id FOREIGN KEY (`created_id`) REFERENCES `civicrm_contact`(`id`) ON DELETE SET NULL,
- CONSTRAINT FK_civicrm_saved_search_modified_id FOREIGN KEY (`modified_id`) REFERENCES `civicrm_contact`(`id`) ON DELETE SET NULL
-)
-ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
-
--- /*******************************************************
--- *
--- * civicrm_contact_type
--- *
--- * Provide type information for contacts
--- *
--- *******************************************************/
-CREATE TABLE `civicrm_contact_type` (
- `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'Contact Type ID',
- `name` varchar(64) NOT NULL COMMENT 'Internal name of Contact Type (or Subtype).',
- `label` varchar(64) COMMENT 'localized Name of Contact Type.',
- `description` text COMMENT 'localized Optional verbose description of the type.',
- `image_URL` varchar(255) COMMENT 'URL of image if any.',
- `icon` varchar(255) DEFAULT NULL COMMENT 'crm-i icon class representing this contact type',
- `parent_id` int unsigned COMMENT 'Optional FK to parent contact type.',
- `is_active` tinyint NOT NULL DEFAULT 1 COMMENT 'Is this entry active?',
- `is_reserved` tinyint NOT NULL DEFAULT 0 COMMENT 'Is this contact type a predefined system type',
+ INDEX `UI_source_record_id`(`source_record_id`),
+ INDEX `UI_activity_type_id`(`activity_type_id`),
+ INDEX `index_activity_date_time`(`activity_date_time`),
+ INDEX `index_status_id`(`status_id`),
+ INDEX `index_is_current_revision`(`is_current_revision`),
+ INDEX `index_is_deleted`(`is_deleted`)
+)
+ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
+CREATE TABLE `civicrm_activity_contact` (
+ `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'Activity contact id',
+ `activity_id` int unsigned NOT NULL COMMENT 'Foreign key to the activity for this record.',
+ `contact_id` int unsigned NOT NULL COMMENT 'Foreign key to the contact for this record.',
+ `record_type_id` int unsigned COMMENT 'Determines the contact\'s role in the activity (source, target, or assignee).',
PRIMARY KEY (`id`),
- UNIQUE INDEX `contact_type`(name),
- CONSTRAINT FK_civicrm_contact_type_parent_id FOREIGN KEY (`parent_id`) REFERENCES `civicrm_contact_type`(`id`)
-)
-ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
-
--- /*******************************************************
--- *
--- * civicrm_batch
--- *
--- * Stores the details of a batch operation Used primarily when doing batch operations with an external system.
--- *
--- *******************************************************/
+ UNIQUE INDEX `UI_activity_contact`(`contact_id`, `activity_id`, `record_type_id`),
+ INDEX `index_record_type`(`activity_id`, `record_type_id`)
+)
+ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
CREATE TABLE `civicrm_batch` (
`id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'Unique Address ID',
`name` varchar(64) COMMENT 'Variable name/programmatic handle for this batch.',
@@ -699,310 +258,19 @@ CREATE TABLE `civicrm_batch` (
`exported_date` datetime,
`data` longtext COMMENT 'cache entered data',
PRIMARY KEY (`id`),
- UNIQUE INDEX `UI_name`(name),
- CONSTRAINT FK_civicrm_batch_created_id FOREIGN KEY (`created_id`) REFERENCES `civicrm_contact`(`id`) ON DELETE SET NULL,
- CONSTRAINT FK_civicrm_batch_modified_id FOREIGN KEY (`modified_id`) REFERENCES `civicrm_contact`(`id`) ON DELETE SET NULL,
- CONSTRAINT FK_civicrm_batch_saved_search_id FOREIGN KEY (`saved_search_id`) REFERENCES `civicrm_saved_search`(`id`) ON DELETE SET NULL
-)
-ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
-
--- /*******************************************************
--- *
--- * civicrm_entity_batch
--- *
--- * Batch entities (Contributions, Participants, Contacts) to a batch.
--- *
--- *******************************************************/
+ UNIQUE INDEX `UI_name`(`name`)
+)
+ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
CREATE TABLE `civicrm_entity_batch` (
`id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'primary key',
`entity_table` varchar(64) COMMENT 'physical tablename for entity being joined to file, e.g. civicrm_contact',
`entity_id` int unsigned NOT NULL COMMENT 'FK to entity table specified in entity_table column.',
`batch_id` int unsigned NOT NULL COMMENT 'FK to civicrm_batch',
PRIMARY KEY (`id`),
- INDEX `index_entity`(entity_table, entity_id),
- UNIQUE INDEX `UI_batch_entity`(batch_id, entity_id, entity_table),
- CONSTRAINT FK_civicrm_entity_batch_batch_id FOREIGN KEY (`batch_id`) REFERENCES `civicrm_batch`(`id`) ON DELETE CASCADE
-)
-ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
-
--- /*******************************************************
--- *
--- * civicrm_mailing_component
--- *
--- * Stores information about the mailing components (header/footer).
--- *
--- *******************************************************/
-CREATE TABLE `civicrm_mailing_component` (
- `id` int unsigned NOT NULL AUTO_INCREMENT,
- `name` varchar(64) COMMENT 'The name of this component',
- `component_type` varchar(12) COMMENT 'Type of Component.',
- `subject` varchar(255),
- `body_html` text COMMENT 'Body of the component in html format.',
- `body_text` text COMMENT 'Body of the component in text format.',
- `is_default` tinyint NOT NULL DEFAULT 0 COMMENT 'Is this the default component for this component_type?',
- `is_active` tinyint NOT NULL DEFAULT 1 COMMENT 'Is this property active?',
- PRIMARY KEY (`id`)
-)
-ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
-
--- /*******************************************************
--- *
--- * civicrm_mailing_abtest
--- *
--- * Stores information about abtesting
--- *
--- *******************************************************/
-CREATE TABLE `civicrm_mailing_abtest` (
- `id` int unsigned NOT NULL AUTO_INCREMENT,
- `name` varchar(128) COMMENT 'Name of the A/B test',
- `status` varchar(32) COMMENT 'Status',
- `mailing_id_a` int unsigned COMMENT 'The first experimental mailing (\"A\" condition)',
- `mailing_id_b` int unsigned COMMENT 'The second experimental mailing (\"B\" condition)',
- `mailing_id_c` int unsigned COMMENT 'The final, general mailing (derived from A or B)',
- `domain_id` int unsigned NOT NULL COMMENT 'Which site is this mailing for',
- `testing_criteria` varchar(32),
- `winner_criteria` varchar(32),
- `specific_url` varchar(255) COMMENT 'What specific url to track',
- `declare_winning_time` datetime COMMENT 'In how much time to declare winner',
- `group_percentage` int unsigned,
- `created_id` int unsigned COMMENT 'FK to Contact ID',
- `created_date` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'When was this item created',
- PRIMARY KEY (`id`),
- CONSTRAINT FK_civicrm_mailing_abtest_created_id FOREIGN KEY (`created_id`) REFERENCES `civicrm_contact`(`id`) ON DELETE SET NULL
-)
-ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
-
--- /*******************************************************
--- *
--- * civicrm_mailing_bounce_type
--- *
--- * Table to index the various bounce types and their properties
--- *
--- *******************************************************/
-CREATE TABLE `civicrm_mailing_bounce_type` (
- `id` int unsigned NOT NULL AUTO_INCREMENT,
- `name` varchar(255) NOT NULL COMMENT 'Type of bounce',
- `description` varchar(2048) COMMENT 'A description of this bounce type',
- `hold_threshold` int unsigned NOT NULL COMMENT 'Number of bounces of this type required before the email address is put on bounce hold',
- PRIMARY KEY (`id`)
-)
-ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
-
--- /*******************************************************
--- *
--- * civicrm_mailing_bounce_pattern
--- *
--- * Pseudo-constant table of patterns for bounce classification
--- *
--- *******************************************************/
-CREATE TABLE `civicrm_mailing_bounce_pattern` (
- `id` int unsigned NOT NULL AUTO_INCREMENT,
- `bounce_type_id` int unsigned NOT NULL COMMENT 'Type of bounce',
- `pattern` varchar(255) COMMENT 'A regexp to match a message to a bounce type',
- PRIMARY KEY (`id`),
- CONSTRAINT FK_civicrm_mailing_bounce_pattern_bounce_type_id FOREIGN KEY (`bounce_type_id`) REFERENCES `civicrm_mailing_bounce_type`(`id`) ON DELETE CASCADE
-)
-ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
-
--- /*******************************************************
--- *
--- * civicrm_premiums
--- *
--- * table - settings for the Premiums features for a given contribution page
--- *
--- *******************************************************/
-CREATE TABLE `civicrm_premiums` (
- `id` int unsigned NOT NULL AUTO_INCREMENT,
- `entity_table` varchar(64) NOT NULL COMMENT 'Joins these premium settings to another object. Always civicrm_contribution_page for now.',
- `entity_id` int unsigned NOT NULL,
- `premiums_active` tinyint NOT NULL DEFAULT 0 COMMENT 'Is the Premiums feature enabled for this page?',
- `premiums_intro_title` varchar(255) COMMENT 'Title for Premiums section.',
- `premiums_intro_text` text COMMENT 'Displayed in
at top of Premiums section of page. Text and HTML allowed.',
- `premiums_contact_email` varchar(100) COMMENT 'This email address is included in receipts if it is populated and a premium has been selected.',
- `premiums_contact_phone` varchar(50) COMMENT 'This phone number is included in receipts if it is populated and a premium has been selected.',
- `premiums_display_min_contribution` tinyint NOT NULL DEFAULT 0 COMMENT 'Boolean. Should we automatically display minimum contribution amount text after the premium descriptions.',
- `premiums_nothankyou_label` varchar(255) COMMENT 'Label displayed for No Thank-you option in premiums block (e.g. No thank you)',
- `premiums_nothankyou_position` int unsigned DEFAULT 1,
- PRIMARY KEY (`id`)
-)
-ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
-
--- /*******************************************************
--- *
--- * civicrm_currency
--- *
--- *******************************************************/
-CREATE TABLE `civicrm_currency` (
- `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'Currency ID',
- `name` varchar(64) COMMENT 'Currency Name',
- `symbol` varchar(8) COMMENT 'Currency Symbol',
- `numeric_code` varchar(3) COMMENT 'Numeric currency code',
- `full_name` varchar(64) COMMENT 'Full currency name',
- PRIMARY KEY (`id`)
-)
-ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
-
--- /*******************************************************
--- *
--- * civicrm_financial_account
--- *
--- *******************************************************/
-CREATE TABLE `civicrm_financial_account` (
- `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'ID',
- `name` varchar(255) NOT NULL COMMENT 'Financial Account Name.',
- `contact_id` int unsigned COMMENT 'FK to Contact ID that is responsible for the funds in this account',
- `financial_account_type_id` int unsigned NOT NULL DEFAULT 3 COMMENT 'pseudo FK into civicrm_option_value.',
- `accounting_code` varchar(64) COMMENT 'Optional value for mapping monies owed and received to accounting system codes.',
- `account_type_code` varchar(64) COMMENT 'Optional value for mapping account types to accounting system account categories (QuickBooks Account Type Codes for example).',
- `description` varchar(255) COMMENT 'Financial Type Description.',
- `parent_id` int unsigned COMMENT 'Parent ID in account hierarchy',
- `is_header_account` tinyint NOT NULL DEFAULT 0 COMMENT 'Is this a header account which does not allow transactions to be posted against it directly, but only to its sub-accounts?',
- `is_deductible` tinyint NOT NULL DEFAULT 0 COMMENT 'Is this account tax-deductible?',
- `is_tax` tinyint NOT NULL DEFAULT 0 COMMENT 'Is this account for taxes?',
- `tax_rate` decimal(10,8) COMMENT 'The percentage of the total_amount that is due for this tax.',
- `is_reserved` tinyint NOT NULL DEFAULT 0 COMMENT 'Is this a predefined system object?',
- `is_active` tinyint NOT NULL DEFAULT 1 COMMENT 'Is this property active?',
- `is_default` tinyint NOT NULL DEFAULT 0 COMMENT 'Is this account the default one (or default tax one) for its financial_account_type?',
- PRIMARY KEY (`id`),
- UNIQUE INDEX `UI_name`(name),
- CONSTRAINT FK_civicrm_financial_account_contact_id FOREIGN KEY (`contact_id`) REFERENCES `civicrm_contact`(`id`) ON DELETE SET NULL,
- CONSTRAINT FK_civicrm_financial_account_parent_id FOREIGN KEY (`parent_id`) REFERENCES `civicrm_financial_account`(`id`)
-)
-ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
-
--- /*******************************************************
--- *
--- * civicrm_payment_processor_type
--- *
--- *******************************************************/
-CREATE TABLE `civicrm_payment_processor_type` (
- `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'Payment Processor Type ID',
- `name` varchar(64) NOT NULL COMMENT 'Payment Processor Type Name.',
- `title` varchar(127) NOT NULL COMMENT 'Payment Processor Type Title.',
- `description` varchar(255) COMMENT 'Payment Processor Description.',
- `is_active` tinyint NOT NULL DEFAULT 1 COMMENT 'Is this processor active?',
- `is_default` tinyint NOT NULL DEFAULT 0 COMMENT 'Is this processor the default?',
- `user_name_label` varchar(255),
- `password_label` varchar(255),
- `signature_label` varchar(255),
- `subject_label` varchar(255),
- `class_name` varchar(255) NOT NULL,
- `url_site_default` varchar(255),
- `url_api_default` varchar(255),
- `url_recur_default` varchar(255),
- `url_button_default` varchar(255),
- `url_site_test_default` varchar(255),
- `url_api_test_default` varchar(255),
- `url_recur_test_default` varchar(255),
- `url_button_test_default` varchar(255),
- `billing_mode` int unsigned NOT NULL COMMENT 'Billing Mode (deprecated)',
- `is_recur` tinyint NOT NULL DEFAULT 0 COMMENT 'Can process recurring contributions',
- `payment_type` int unsigned DEFAULT 1 COMMENT 'Payment Type: Credit or Debit (deprecated)',
- `payment_instrument_id` int unsigned DEFAULT 1 COMMENT 'Payment Instrument ID',
- PRIMARY KEY (`id`),
- UNIQUE INDEX `UI_name`(name)
-)
-ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
-
--- /*******************************************************
--- *
--- * civicrm_financial_type
--- *
--- * Formerly civicrm_contribution_type merged into this table in 4.3
--- *
--- *******************************************************/
-CREATE TABLE `civicrm_financial_type` (
- `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'ID of original financial_type so you can search this table by the financial_type.id and then select the relevant version based on the timestamp',
- `name` varchar(64) NOT NULL COMMENT 'Financial Type Name.',
- `description` varchar(255) COMMENT 'Financial Type Description.',
- `is_deductible` tinyint NOT NULL DEFAULT 0 COMMENT 'Is this financial type tax-deductible? If true, contributions of this type may be fully OR partially deductible - non-deductible amount is stored in the Contribution record.',
- `is_reserved` tinyint NOT NULL DEFAULT 0 COMMENT 'Is this a predefined system object?',
- `is_active` tinyint NOT NULL DEFAULT 1 COMMENT 'Is this property active?',
- PRIMARY KEY (`id`)
-)
-ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
-
--- /*******************************************************
--- *
--- * civicrm_entity_financial_account
--- *
--- * Map between an entity and a financial account, where there is a specific relationship between the financial account and the entity, e.g. Income Account for or AR Account for
--- *
--- *******************************************************/
-CREATE TABLE `civicrm_entity_financial_account` (
- `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'ID',
- `entity_table` varchar(64) NOT NULL COMMENT 'Links to an entity_table like civicrm_financial_type',
- `entity_id` int unsigned NOT NULL COMMENT 'Links to an id in the entity_table, such as vid in civicrm_financial_type',
- `account_relationship` int unsigned NOT NULL COMMENT 'FK to a new civicrm_option_value (account_relationship)',
- `financial_account_id` int unsigned NOT NULL COMMENT 'FK to the financial_account_id',
- PRIMARY KEY (`id`),
- UNIQUE INDEX `index_entity_id_entity_table_account_relationship`(entity_id, entity_table, account_relationship),
- CONSTRAINT FK_civicrm_entity_financial_account_financial_account_id FOREIGN KEY (`financial_account_id`) REFERENCES `civicrm_financial_account`(`id`) ON DELETE RESTRICT
-)
-ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
-
--- /*******************************************************
--- *
--- * civicrm_financial_item
--- *
--- * Financial data for civicrm_line_item, etc.
--- *
--- *******************************************************/
-CREATE TABLE `civicrm_financial_item` (
- `id` int unsigned NOT NULL AUTO_INCREMENT,
- `created_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'Date and time the item was created',
- `transaction_date` datetime NOT NULL COMMENT 'Date and time of the source transaction',
- `contact_id` int unsigned NOT NULL COMMENT 'FK to Contact ID of contact the item is from',
- `description` varchar(255) COMMENT 'Human readable description of this item, to ease display without lookup of source item.',
- `amount` decimal(20,2) NOT NULL DEFAULT 0 COMMENT 'Total amount of this item',
- `currency` varchar(3) COMMENT 'Currency for the amount',
- `financial_account_id` int unsigned COMMENT 'FK to civicrm_financial_account',
- `status_id` int unsigned COMMENT 'Payment status: test, paid, part_paid, unpaid (if empty assume unpaid)',
- `entity_table` varchar(64) COMMENT 'May contain civicrm_line_item, civicrm_financial_trxn etc',
- `entity_id` int unsigned COMMENT 'The specific source item that is responsible for the creation of this financial_item',
- PRIMARY KEY (`id`),
- INDEX `IX_created_date`(created_date),
- INDEX `IX_transaction_date`(transaction_date),
- INDEX `index_entity_id_entity_table`(entity_id, entity_table),
- CONSTRAINT FK_civicrm_financial_item_contact_id FOREIGN KEY (`contact_id`) REFERENCES `civicrm_contact`(`id`) ON DELETE CASCADE,
- CONSTRAINT FK_civicrm_financial_item_financial_account_id FOREIGN KEY (`financial_account_id`) REFERENCES `civicrm_financial_account`(`id`)
-)
-ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
-
--- /*******************************************************
--- *
--- * civicrm_membership_status
--- *
--- * Membership Status stores admin configurable rules for assigning status to memberships.
--- *
--- *******************************************************/
-CREATE TABLE `civicrm_membership_status` (
- `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'Membership ID',
- `name` varchar(128) NOT NULL COMMENT 'Name for Membership Status',
- `label` varchar(128) COMMENT 'Label for Membership Status',
- `start_event` varchar(12) COMMENT 'Event when this status starts.',
- `start_event_adjust_unit` varchar(8) COMMENT 'Unit used for adjusting from start_event.',
- `start_event_adjust_interval` int COMMENT 'Status range begins this many units from start_event.',
- `end_event` varchar(12) COMMENT 'Event after which this status ends.',
- `end_event_adjust_unit` varchar(8) COMMENT 'Unit used for adjusting from the ending event.',
- `end_event_adjust_interval` int COMMENT 'Status range ends this many units from end_event.',
- `is_current_member` tinyint NOT NULL DEFAULT 0 COMMENT 'Does this status aggregate to current members (e.g. New, Renewed, Grace might all be TRUE... while Unrenewed, Lapsed, Inactive would be FALSE).',
- `is_admin` tinyint NOT NULL DEFAULT 0 COMMENT 'Is this status for admin/manual assignment only.',
- `weight` int,
- `is_default` tinyint NOT NULL DEFAULT 0 COMMENT 'Assign this status to a membership record if no other status match is found.',
- `is_active` tinyint NOT NULL DEFAULT 1 COMMENT 'Is this membership_status enabled.',
- `is_reserved` tinyint NOT NULL DEFAULT 0 COMMENT 'Is this membership_status reserved.',
- PRIMARY KEY (`id`)
+ INDEX `index_entity`(`entity_table`, `entity_id`),
+ UNIQUE INDEX `UI_batch_entity`(`batch_id`, `entity_id`, `entity_table`)
)
ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
-
--- /*******************************************************
--- *
--- * civicrm_campaign
--- *
--- * Campaign Details.
--- *
--- *******************************************************/
CREATE TABLE `civicrm_campaign` (
`id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'Unique Campaign ID.',
`name` varchar(255) NOT NULL COMMENT 'Name of the Campaign.',
@@ -1014,7 +282,7 @@ CREATE TABLE `civicrm_campaign` (
`status_id` int unsigned DEFAULT NULL COMMENT 'Campaign status ID.Implicit FK to civicrm_option_value where option_group = campaign_status',
`external_identifier` varchar(32) COMMENT 'Unique trusted external ID (generally from a legacy app/datasource). Particularly useful for deduping operations.',
`parent_id` int unsigned DEFAULT NULL COMMENT 'Optional parent id for this Campaign.',
- `is_active` tinyint NOT NULL DEFAULT 1 COMMENT 'Is this Campaign enabled or disabled/cancelled?',
+ `is_active` boolean NOT NULL DEFAULT TRUE COMMENT 'Is this Campaign enabled or disabled/cancelled?',
`created_id` int unsigned COMMENT 'FK to civicrm_contact, who created this Campaign.',
`created_date` datetime DEFAULT CURRENT_TIMESTAMP COMMENT 'Date and time that Campaign was created.',
`last_modified_id` int unsigned COMMENT 'FK to civicrm_contact, who recently edited this Campaign.',
@@ -1022,41 +290,21 @@ CREATE TABLE `civicrm_campaign` (
`goal_general` text COMMENT 'General goals for Campaign.',
`goal_revenue` decimal(20,2) COMMENT 'The target revenue for this campaign.',
PRIMARY KEY (`id`),
- UNIQUE INDEX `UI_name`(name),
- INDEX `index_campaign_type_id`(campaign_type_id),
- INDEX `index_status_id`(status_id),
- UNIQUE INDEX `UI_external_identifier`(external_identifier),
- CONSTRAINT FK_civicrm_campaign_parent_id FOREIGN KEY (`parent_id`) REFERENCES `civicrm_campaign`(`id`) ON DELETE SET NULL,
- CONSTRAINT FK_civicrm_campaign_created_id FOREIGN KEY (`created_id`) REFERENCES `civicrm_contact`(`id`) ON DELETE SET NULL,
- CONSTRAINT FK_civicrm_campaign_last_modified_id FOREIGN KEY (`last_modified_id`) REFERENCES `civicrm_contact`(`id`) ON DELETE SET NULL
-)
-ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
-
--- /*******************************************************
--- *
--- * civicrm_campaign_group
--- *
--- * Campaign Group Details.
--- *
--- *******************************************************/
+ UNIQUE INDEX `UI_name`(`name`),
+ INDEX `index_campaign_type_id`(`campaign_type_id`),
+ INDEX `index_status_id`(`status_id`),
+ UNIQUE INDEX `UI_external_identifier`(`external_identifier`)
+)
+ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
CREATE TABLE `civicrm_campaign_group` (
`id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'Campaign Group id.',
`campaign_id` int unsigned NOT NULL COMMENT 'Foreign key to the activity Campaign.',
`group_type` varchar(8) DEFAULT NULL COMMENT 'Type of Group.',
`entity_table` varchar(64) DEFAULT NULL COMMENT 'Name of table where item being referenced is stored.',
`entity_id` int unsigned DEFAULT NULL COMMENT 'Entity id of referenced table.',
- PRIMARY KEY (`id`),
- CONSTRAINT FK_civicrm_campaign_group_campaign_id FOREIGN KEY (`campaign_id`) REFERENCES `civicrm_campaign`(`id`) ON DELETE CASCADE
+ PRIMARY KEY (`id`)
)
ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
-
--- /*******************************************************
--- *
--- * civicrm_survey
--- *
--- * Campaign Survey Details.
--- *
--- *******************************************************/
CREATE TABLE `civicrm_survey` (
`id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'Survey id.',
`title` varchar(255) NOT NULL COMMENT 'Title of the Survey.',
@@ -1066,301 +314,681 @@ CREATE TABLE `civicrm_survey` (
`release_frequency` int unsigned DEFAULT NULL COMMENT 'Number of days for recurrence of release.',
`max_number_of_contacts` int unsigned DEFAULT NULL COMMENT 'Maximum number of contacts to allow for survey.',
`default_number_of_contacts` int unsigned DEFAULT NULL COMMENT 'Default number of contacts to allow for survey.',
- `is_active` tinyint NOT NULL DEFAULT 1 COMMENT 'Is this survey enabled or disabled/cancelled?',
- `is_default` tinyint NOT NULL DEFAULT 0 COMMENT 'Is this default survey?',
+ `is_active` boolean NOT NULL DEFAULT TRUE COMMENT 'Is this survey enabled or disabled/cancelled?',
+ `is_default` boolean NOT NULL DEFAULT FALSE COMMENT 'Is this default survey?',
`created_id` int unsigned COMMENT 'FK to civicrm_contact, who created this Survey.',
`created_date` datetime COMMENT 'Date and time that Survey was created.',
`last_modified_id` int unsigned COMMENT 'FK to civicrm_contact, who recently edited this Survey.',
`last_modified_date` datetime COMMENT 'Date and time that Survey was edited last time.',
`result_id` int unsigned DEFAULT NULL COMMENT 'Used to store option group id.',
- `bypass_confirm` tinyint NOT NULL DEFAULT 0 COMMENT 'Bypass the email verification.',
+ `bypass_confirm` boolean NOT NULL DEFAULT FALSE COMMENT 'Bypass the email verification.',
`thankyou_title` varchar(255) COMMENT 'Title for Thank-you page (header title tag, and display at the top of the page).',
`thankyou_text` text COMMENT 'text and html allowed. displayed above result on success page',
- `is_share` tinyint NOT NULL DEFAULT 1 COMMENT 'Can people share the petition through social media?',
+ `is_share` boolean NOT NULL DEFAULT TRUE COMMENT 'Can people share the petition through social media?',
PRIMARY KEY (`id`),
- INDEX `UI_activity_type_id`(activity_type_id),
- CONSTRAINT FK_civicrm_survey_campaign_id FOREIGN KEY (`campaign_id`) REFERENCES `civicrm_campaign`(`id`) ON DELETE SET NULL,
- CONSTRAINT FK_civicrm_survey_created_id FOREIGN KEY (`created_id`) REFERENCES `civicrm_contact`(`id`) ON DELETE SET NULL,
- CONSTRAINT FK_civicrm_survey_last_modified_id FOREIGN KEY (`last_modified_id`) REFERENCES `civicrm_contact`(`id`) ON DELETE SET NULL
-)
-ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
-
--- /*******************************************************
--- *
--- * civicrm_participant_status_type
--- *
--- * various types of CiviEvent participant statuses
--- *
--- *******************************************************/
-CREATE TABLE `civicrm_participant_status_type` (
- `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'unique participant status type id',
- `name` varchar(64) COMMENT 'non-localized name of the status type',
- `label` varchar(255) COMMENT 'localized label for display of this status type',
- `class` varchar(8) COMMENT 'the general group of status type this one belongs to',
- `is_reserved` tinyint NOT NULL DEFAULT 0 COMMENT 'whether this is a status type required by the system',
- `is_active` tinyint NOT NULL DEFAULT 1 COMMENT 'whether this status type is active',
- `is_counted` tinyint NOT NULL DEFAULT 0 COMMENT 'whether this status type is counted against event size limit',
- `weight` int unsigned NOT NULL COMMENT 'controls sort order',
- `visibility_id` int unsigned COMMENT 'whether the status type is visible to the public, an implicit foreign key to option_value.value related to the `visibility` option_group',
- PRIMARY KEY (`id`)
+ INDEX `UI_activity_type_id`(`activity_type_id`)
)
ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
-
--- /*******************************************************
--- *
--- * civicrm_event_carts
--- *
--- *******************************************************/
-CREATE TABLE `civicrm_event_carts` (
- `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'Cart ID',
- `user_id` int unsigned COMMENT 'FK to civicrm_contact who created this cart',
- `completed` tinyint NOT NULL DEFAULT 0,
+CREATE TABLE `civicrm_case` (
+ `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'Unique Case ID',
+ `case_type_id` int unsigned NOT NULL COMMENT 'FK to civicrm_case_type.id',
+ `subject` varchar(128) COMMENT 'Short name of the case.',
+ `start_date` date COMMENT 'Date on which given case starts.',
+ `end_date` date COMMENT 'Date on which given case ends.',
+ `details` text COMMENT 'Details populated from Open Case. Only used in the CiviCase extension.',
+ `status_id` int unsigned NOT NULL COMMENT 'ID of case status.',
+ `is_deleted` boolean NOT NULL DEFAULT FALSE,
+ `created_date` timestamp NULL DEFAULT NULL COMMENT 'When was the case was created.',
+ `modified_date` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT 'When was the case (or closely related entity) was created or modified or deleted.',
PRIMARY KEY (`id`),
- CONSTRAINT FK_civicrm_event_carts_user_id FOREIGN KEY (`user_id`) REFERENCES `civicrm_contact`(`id`) ON DELETE SET NULL
+ INDEX `index_case_type_id`(`case_type_id`),
+ INDEX `index_is_deleted`(`is_deleted`)
)
ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
-
--- /*******************************************************
--- *
--- * civicrm_dedupe_rule_group
--- *
--- * Dedupe rule groups
--- *
--- *******************************************************/
-CREATE TABLE `civicrm_dedupe_rule_group` (
- `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'Unique dedupe rule group id',
- `contact_type` varchar(12) COMMENT 'The type of contacts this group applies to',
- `threshold` int NOT NULL COMMENT 'The weight threshold the sum of the rule weights has to cross to consider two contacts the same',
- `used` varchar(12) NOT NULL COMMENT 'Whether the rule should be used for cases where usage is Unsupervised, Supervised OR General(programatically)',
- `name` varchar(255) COMMENT 'Unique name of rule group',
- `title` varchar(255) COMMENT 'Label of the rule group',
- `is_reserved` tinyint NOT NULL DEFAULT 0 COMMENT 'Is this a reserved rule - a rule group that has been optimized and cannot be changed by the admin',
+CREATE TABLE `civicrm_case_activity` (
+ `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'Unique case-activity association id',
+ `case_id` int unsigned NOT NULL COMMENT 'Case ID of case-activity association.',
+ `activity_id` int unsigned NOT NULL COMMENT 'Activity ID of case-activity association.',
PRIMARY KEY (`id`),
- UNIQUE INDEX `UI_name`(name)
+ INDEX `UI_case_activity_id`(`case_id`, `activity_id`)
)
ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
-
--- /*******************************************************
--- *
--- * civicrm_dedupe_rule
--- *
--- * Dedupe rules for use by rule groups
--- *
--- *******************************************************/
-CREATE TABLE `civicrm_dedupe_rule` (
- `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'Unique dedupe rule id',
- `dedupe_rule_group_id` int unsigned NOT NULL COMMENT 'The id of the rule group this rule belongs to',
- `rule_table` varchar(64) NOT NULL COMMENT 'The name of the table this rule is about',
- `rule_field` varchar(64) NOT NULL COMMENT 'The name of the field of the table referenced in rule_table',
- `rule_length` int unsigned COMMENT 'The length of the matching substring',
- `rule_weight` int NOT NULL COMMENT 'The weight of the rule',
+CREATE TABLE `civicrm_case_contact` (
+ `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'Unique case-contact association id',
+ `case_id` int unsigned NOT NULL COMMENT 'Case ID of case-contact association.',
+ `contact_id` int unsigned NOT NULL COMMENT 'Contact ID of contact record given case belongs to.',
PRIMARY KEY (`id`),
- CONSTRAINT FK_civicrm_dedupe_rule_dedupe_rule_group_id FOREIGN KEY (`dedupe_rule_group_id`) REFERENCES `civicrm_dedupe_rule_group`(`id`)
+ UNIQUE INDEX `UI_case_contact_id`(`case_id`, `contact_id`)
)
ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
-
--- /*******************************************************
--- *
--- * civicrm_dedupe_exception
--- *
--- * Dedupe exceptions
--- *
--- *******************************************************/
-CREATE TABLE `civicrm_dedupe_exception` (
- `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'Unique dedupe exception id',
- `contact_id1` int unsigned NOT NULL COMMENT 'FK to Contact ID',
- `contact_id2` int unsigned NOT NULL COMMENT 'FK to Contact ID',
- PRIMARY KEY (`id`),
- UNIQUE INDEX `UI_contact_id1_contact_id2`(contact_id1, contact_id2),
- CONSTRAINT FK_civicrm_dedupe_exception_contact_id1 FOREIGN KEY (`contact_id1`) REFERENCES `civicrm_contact`(`id`) ON DELETE CASCADE,
- CONSTRAINT FK_civicrm_dedupe_exception_contact_id2 FOREIGN KEY (`contact_id2`) REFERENCES `civicrm_contact`(`id`) ON DELETE CASCADE
-)
-ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
-
--- /*******************************************************
--- *
--- * civicrm_case_type
--- *
--- * Case type definition
--- *
--- *******************************************************/
CREATE TABLE `civicrm_case_type` (
`id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'Autoincremented type id',
`name` varchar(64) NOT NULL COMMENT 'Machine name for Case Type',
`title` varchar(64) NOT NULL COMMENT 'Natural language name for Case Type',
`description` varchar(255) COMMENT 'Description of the Case Type',
- `is_active` tinyint NOT NULL DEFAULT 1 COMMENT 'Is this case type enabled?',
- `is_reserved` tinyint NOT NULL DEFAULT 0 COMMENT 'Is this case type a predefined system type?',
+ `is_active` boolean NOT NULL DEFAULT TRUE COMMENT 'Is this case type enabled?',
+ `is_reserved` boolean NOT NULL DEFAULT FALSE COMMENT 'Is this case type a predefined system type?',
`weight` int NOT NULL DEFAULT 1 COMMENT 'Ordering of the case types',
`definition` blob COMMENT 'xml definition of case type',
PRIMARY KEY (`id`),
- UNIQUE INDEX `case_type_name`(name)
-)
-ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
-
--- /*******************************************************
--- *
--- * civicrm_tell_friend
--- *
--- *******************************************************/
-CREATE TABLE `civicrm_tell_friend` (
- `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'Friend ID',
- `entity_table` varchar(64) NOT NULL COMMENT 'Name of table where item being referenced is stored.',
- `entity_id` int unsigned NOT NULL COMMENT 'Foreign key to the referenced item.',
- `title` varchar(255),
- `intro` text COMMENT 'Introductory message to contributor or participant displayed on the Tell a Friend form.',
- `suggested_message` text COMMENT 'Suggested message to friends, provided as default on the Tell A Friend form.',
- `general_link` varchar(255) COMMENT 'URL for general info about the organization - included in the email sent to friends.',
- `thankyou_title` varchar(255) COMMENT 'Text for Tell a Friend thank you page header and HTML title.',
- `thankyou_text` text COMMENT 'Thank you message displayed on success page.',
- `is_active` tinyint NOT NULL DEFAULT 1,
- PRIMARY KEY (`id`)
-)
-ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
-
--- /*******************************************************
--- *
--- * civicrm_pledge_block
--- *
--- *******************************************************/
-CREATE TABLE `civicrm_pledge_block` (
- `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'Pledge ID',
- `entity_table` varchar(64) COMMENT 'physical tablename for entity being joined to pledge, e.g. civicrm_contact',
- `entity_id` int unsigned NOT NULL COMMENT 'FK to entity table specified in entity_table column.',
- `pledge_frequency_unit` varchar(128) COMMENT 'Delimited list of supported frequency units',
- `is_pledge_interval` tinyint NOT NULL DEFAULT 0 COMMENT 'Is frequency interval exposed on the contribution form.',
- `max_reminders` int unsigned DEFAULT 1 COMMENT 'The maximum number of payment reminders to send for any given payment.',
- `initial_reminder_day` int unsigned DEFAULT 5 COMMENT 'Send initial reminder this many days prior to the payment due date.',
- `additional_reminder_day` int unsigned DEFAULT 5 COMMENT 'Send additional reminder this many days after last one sent, up to maximum number of reminders.',
- `pledge_start_date` varchar(64) COMMENT 'The date the first scheduled pledge occurs.',
- `is_pledge_start_date_visible` tinyint NOT NULL DEFAULT 0 COMMENT 'If true - recurring start date is shown.',
- `is_pledge_start_date_editable` tinyint NOT NULL DEFAULT 0 COMMENT 'If true - recurring start date is editable.',
- PRIMARY KEY (`id`),
- INDEX `index_entity`(entity_table, entity_id)
-)
-ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
-
--- /*******************************************************
--- *
--- * civicrm_queue
--- *
--- * Stores a list of persistent queues
--- *
--- *******************************************************/
-CREATE TABLE `civicrm_queue` (
- `id` int unsigned NOT NULL AUTO_INCREMENT,
- `name` varchar(64) NOT NULL COMMENT 'Name of the queue',
- `type` varchar(64) NOT NULL COMMENT 'Type of the queue',
- `runner` varchar(64) NULL COMMENT 'Name of the task runner',
- `batch_limit` int unsigned NOT NULL DEFAULT 1 COMMENT 'Maximum number of items in a batch.',
- `lease_time` int unsigned NOT NULL DEFAULT 3600 COMMENT 'When claiming an item (or batch of items) for work, how long should the item(s) be reserved. (Seconds)',
- `retry_limit` int NOT NULL DEFAULT 0 COMMENT 'Number of permitted retries. Set to zero (0) to disable.',
- `retry_interval` int NULL COMMENT 'Number of seconds to wait before retrying a failed execution.',
- `status` varchar(16) NULL DEFAULT 'active' COMMENT 'Execution status',
- `error` varchar(16) NULL COMMENT 'Fallback behavior for unhandled errors',
- `is_template` tinyint NOT NULL DEFAULT 0 COMMENT 'Is this a template configuration (for use by other/future queues)?',
- PRIMARY KEY (`id`),
- UNIQUE INDEX `UI_name`(name)
-)
-ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
-
--- /*******************************************************
--- *
--- * civicrm_queue_item
--- *
--- * Stores a list of queue items
--- *
--- *******************************************************/
-CREATE TABLE `civicrm_queue_item` (
- `id` int unsigned NOT NULL AUTO_INCREMENT,
- `queue_name` varchar(64) NOT NULL COMMENT 'Name of the queue which includes this item',
- `weight` int NOT NULL,
- `submit_time` timestamp NOT NULL COMMENT 'date on which this item was submitted to the queue',
- `release_time` timestamp NULL DEFAULT NULL COMMENT 'date on which this job becomes available; null if ASAP',
- `run_count` int NOT NULL DEFAULT 0 COMMENT 'Number of times execution has been attempted.',
- `data` longtext COMMENT 'Serialized queue data',
- PRIMARY KEY (`id`),
- INDEX `index_queueids`(queue_name, weight, id)
+ UNIQUE INDEX `case_type_name`(`name`)
)
ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
-
--- /*******************************************************
--- *
--- * civicrm_pcp
--- *
--- *******************************************************/
-CREATE TABLE `civicrm_pcp` (
- `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'Personal Campaign Page ID',
- `contact_id` int unsigned NOT NULL COMMENT 'FK to Contact ID',
- `status_id` int unsigned NOT NULL,
- `title` varchar(255) DEFAULT NULL,
- `intro_text` text DEFAULT NULL,
- `page_text` text DEFAULT NULL,
- `donate_link_text` varchar(255) DEFAULT NULL,
- `page_id` int unsigned NOT NULL COMMENT 'The Contribution or Event Page which triggered this pcp',
- `page_type` varchar(64) DEFAULT 'contribute' COMMENT 'The type of PCP this is: contribute or event',
- `pcp_block_id` int unsigned NOT NULL COMMENT 'The pcp block that this pcp page was created from',
- `is_thermometer` int unsigned DEFAULT 0,
- `is_honor_roll` int unsigned DEFAULT 0,
- `goal_amount` decimal(20,2) COMMENT 'Goal amount of this Personal Campaign Page.',
- `currency` varchar(3) DEFAULT NULL COMMENT '3 character string, value from config setting or input via user.',
- `is_active` tinyint NOT NULL DEFAULT 1 COMMENT 'Is Personal Campaign Page enabled/active?',
- `is_notify` tinyint NOT NULL DEFAULT 0 COMMENT 'Notify owner via email when someone donates to page?',
+CREATE TABLE `civicrm_acl_contact_cache` (
+ `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'primary key',
+ `user_id` int unsigned COMMENT 'FK to civicrm_contact (could be null for anon user)',
+ `contact_id` int unsigned NOT NULL COMMENT 'FK to civicrm_contact',
+ `operation` varchar(8) NOT NULL COMMENT 'What operation does this user have permission on?',
PRIMARY KEY (`id`),
- CONSTRAINT FK_civicrm_pcp_contact_id FOREIGN KEY (`contact_id`) REFERENCES `civicrm_contact`(`id`) ON DELETE CASCADE
+ UNIQUE INDEX `UI_user_contact_operation`(`user_id`, `contact_id`, `operation`)
)
ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
-
--- /*******************************************************
--- *
--- * civicrm_cxn
--- *
--- *******************************************************/
-CREATE TABLE `civicrm_cxn` (
- `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'Connection ID',
- `app_guid` varchar(128) COMMENT 'Application GUID',
- `app_meta` text COMMENT 'Application Metadata (JSON)',
- `cxn_guid` varchar(128) COMMENT 'Connection GUID',
- `secret` text COMMENT 'Shared secret',
- `perm` text COMMENT 'Permissions approved for the service (JSON)',
- `options` text COMMENT 'Options for the service (JSON)',
- `is_active` tinyint NOT NULL DEFAULT 1 COMMENT 'Is connection currently enabled?',
- `created_date` timestamp NULL DEFAULT NULL COMMENT 'When was the connection was created.',
- `modified_date` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT 'When the connection was created or modified.',
- `fetched_date` timestamp NULL DEFAULT NULL COMMENT 'The last time the application metadata was fetched.',
+CREATE TABLE `civicrm_contact` (
+ `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'Unique Contact ID',
+ `contact_type` varchar(64) COMMENT 'Type of Contact.',
+ `external_identifier` varchar(64) COMMENT 'Unique trusted external ID (generally from a legacy app/datasource). Particularly useful for deduping operations.',
+ `display_name` varchar(128) COMMENT 'Formatted name representing preferred format for display/print/other output.',
+ `organization_name` varchar(128) COMMENT 'Organization Name.',
+ `contact_sub_type` varchar(255) COMMENT 'May be used to over-ride contact view and edit templates.',
+ `first_name` varchar(64) COMMENT 'First Name.',
+ `middle_name` varchar(64) COMMENT 'Middle Name.',
+ `last_name` varchar(64) COMMENT 'Last Name.',
+ `do_not_email` boolean NOT NULL DEFAULT FALSE,
+ `do_not_phone` boolean NOT NULL DEFAULT FALSE,
+ `do_not_mail` boolean NOT NULL DEFAULT FALSE,
+ `do_not_sms` boolean NOT NULL DEFAULT FALSE,
+ `do_not_trade` boolean NOT NULL DEFAULT FALSE,
+ `is_opt_out` boolean NOT NULL DEFAULT FALSE COMMENT 'Has the contact opted out from receiving all bulk email from the organization or site domain?',
+ `legal_identifier` varchar(32) COMMENT 'May be used for SSN, EIN/TIN, Household ID (census) or other applicable unique legal/government ID.',
+ `sort_name` varchar(128) COMMENT 'Name used for sorting different contact types',
+ `nick_name` varchar(128) COMMENT 'Nickname.',
+ `legal_name` varchar(128) COMMENT 'Legal Name.',
+ `image_URL` text COMMENT 'optional URL for preferred image (photo, logo, etc.) to display for this contact.',
+ `preferred_communication_method` varchar(255) COMMENT 'What is the preferred mode of communication.',
+ `preferred_language` varchar(5) COMMENT 'Which language is preferred for communication. FK to languages in civicrm_option_value.',
+ `hash` varchar(32) COMMENT 'Key for validating requests related to this contact.',
+ `api_key` varchar(32) COMMENT 'API Key for validating requests related to this contact.',
+ `source` varchar(255) COMMENT 'where contact come from, e.g. import, donate module insert...',
+ `prefix_id` int unsigned COMMENT 'Prefix or Title for name (Ms, Mr...). FK to prefix ID',
+ `suffix_id` int unsigned COMMENT 'Suffix for name (Jr, Sr...). FK to suffix ID',
+ `formal_title` varchar(64) COMMENT 'Formal (academic or similar) title in front of name. (Prof., Dr. etc.)',
+ `communication_style_id` int unsigned COMMENT 'Communication style (e.g. formal vs. familiar) to use with this contact. FK to communication styles in civicrm_option_value.',
+ `email_greeting_id` int unsigned COMMENT 'FK to civicrm_option_value.id, that has to be valid registered Email Greeting.',
+ `email_greeting_custom` varchar(128) COMMENT 'Custom Email Greeting.',
+ `email_greeting_display` varchar(255) COMMENT 'Cache Email Greeting.',
+ `postal_greeting_id` int unsigned COMMENT 'FK to civicrm_option_value.id, that has to be valid registered Postal Greeting.',
+ `postal_greeting_custom` varchar(128) COMMENT 'Custom Postal greeting.',
+ `postal_greeting_display` varchar(255) COMMENT 'Cache Postal greeting.',
+ `addressee_id` int unsigned COMMENT 'FK to civicrm_option_value.id, that has to be valid registered Addressee.',
+ `addressee_custom` varchar(128) COMMENT 'Custom Addressee.',
+ `addressee_display` varchar(255) COMMENT 'Cache Addressee.',
+ `job_title` varchar(255) COMMENT 'Job Title',
+ `gender_id` int unsigned COMMENT 'FK to gender ID',
+ `birth_date` date COMMENT 'Date of birth',
+ `is_deceased` boolean NOT NULL DEFAULT FALSE,
+ `deceased_date` date COMMENT 'Date of deceased',
+ `household_name` varchar(128) COMMENT 'Household Name.',
+ `primary_contact_id` int unsigned COMMENT 'Optional FK to Primary Contact for this household.',
+ `sic_code` varchar(8) COMMENT 'Standard Industry Classification Code.',
+ `user_unique_id` varchar(255) COMMENT 'the OpenID (or OpenID-style http://username.domain/) unique identifier for this contact mainly used for logging in to CiviCRM',
+ `employer_id` int unsigned COMMENT 'OPTIONAL FK to civicrm_contact record.',
+ `is_deleted` boolean NOT NULL DEFAULT FALSE,
+ `created_date` timestamp NULL DEFAULT NULL COMMENT 'When was the contact was created.',
+ `modified_date` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT 'When was the contact (or closely related entity) was created or modified or deleted.',
+ `preferred_mail_format` varchar(8) DEFAULT 'Both' COMMENT 'Deprecated setting for text vs html mailings',
+ PRIMARY KEY (`id`),
+ INDEX `index_contact_type`(`contact_type`),
+ UNIQUE INDEX `UI_external_identifier`(`external_identifier`),
+ INDEX `index_organization_name`(`organization_name`),
+ INDEX `index_contact_sub_type`(`contact_sub_type`),
+ INDEX `index_first_name`(`first_name`),
+ INDEX `index_last_name`(`last_name`),
+ INDEX `index_sort_name`(`sort_name`),
+ INDEX `index_preferred_communication_method`(`preferred_communication_method`),
+ INDEX `index_hash`(`hash`),
+ INDEX `index_api_key`(`api_key`),
+ INDEX `UI_prefix`(`prefix_id`),
+ INDEX `UI_suffix`(`suffix_id`),
+ INDEX `index_communication_style_id`(`communication_style_id`),
+ INDEX `UI_gender`(`gender_id`),
+ INDEX `index_is_deceased`(`is_deceased`),
+ INDEX `index_household_name`(`household_name`),
+ INDEX `index_is_deleted_sort_name`(`is_deleted`, `sort_name`, `id`),
+ INDEX `index_created_date`(`created_date`),
+ INDEX `index_modified_date`(`modified_date`)
+)
+ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
+CREATE TABLE `civicrm_contact_type` (
+ `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'Contact Type ID',
+ `name` varchar(64) NOT NULL COMMENT 'Internal name of Contact Type (or Subtype).',
+ `label` varchar(64) COMMENT 'localized Name of Contact Type.',
+ `description` text COMMENT 'localized Optional verbose description of the type.',
+ `image_URL` varchar(255) COMMENT 'URL of image if any.',
+ `icon` varchar(255) DEFAULT NULL COMMENT 'crm-i icon class representing this contact type',
+ `parent_id` int unsigned COMMENT 'Optional FK to parent contact type.',
+ `is_active` boolean NOT NULL DEFAULT TRUE COMMENT 'Is this entry active?',
+ `is_reserved` boolean NOT NULL DEFAULT FALSE COMMENT 'Is this contact type a predefined system type',
+ PRIMARY KEY (`id`),
+ UNIQUE INDEX `contact_type`(`name`)
+)
+ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
+CREATE TABLE `civicrm_dashboard_contact` (
+ `id` int unsigned NOT NULL AUTO_INCREMENT,
+ `dashboard_id` int unsigned NOT NULL COMMENT 'Dashboard ID',
+ `contact_id` int unsigned NOT NULL COMMENT 'Contact ID',
+ `column_no` int DEFAULT 0 COMMENT 'column no for this widget',
+ `is_active` boolean NOT NULL DEFAULT FALSE COMMENT 'Is this widget active?',
+ `weight` int DEFAULT 0 COMMENT 'Ordering of the widgets.',
+ PRIMARY KEY (`id`),
+ UNIQUE INDEX `index_dashboard_id_contact_id`(`dashboard_id`, `contact_id`)
+)
+ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
+CREATE TABLE `civicrm_group` (
+ `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'Group ID',
+ `name` varchar(64) NOT NULL COMMENT 'Internal name of Group.',
+ `title` varchar(255) NOT NULL COMMENT 'Name of Group.',
+ `description` text COMMENT 'Optional verbose description of the group.',
+ `source` varchar(64) COMMENT 'Module or process which created this group.',
+ `saved_search_id` int unsigned COMMENT 'FK to saved search table.',
+ `is_active` boolean NOT NULL DEFAULT TRUE COMMENT 'Is this group active?',
+ `visibility` varchar(24) DEFAULT 'User and User Admin Only' COMMENT 'In what context(s) is this field visible.',
+ `where_clause` text COMMENT 'the sql where clause if a saved search acl',
+ `select_tables` text COMMENT 'the tables to be included in a select data',
+ `where_tables` text COMMENT 'the tables to be included in the count statement',
+ `group_type` varchar(128) COMMENT 'FK to group type',
+ `cache_date` timestamp NULL COMMENT 'Date when we created the cache for a smart group',
+ `cache_fill_took` double COMMENT 'Seconds taken to fill smart group cache',
+ `refresh_date` timestamp NULL COMMENT 'Unused deprecated column.',
+ `parents` text COMMENT 'List of parent groups',
+ `children` text COMMENT 'List of child groups (calculated)',
+ `is_hidden` boolean NOT NULL DEFAULT FALSE COMMENT 'Is this group hidden?',
+ `is_reserved` boolean NOT NULL DEFAULT FALSE,
+ `created_id` int unsigned COMMENT 'FK to contact table.',
+ `modified_id` int unsigned COMMENT 'FK to contact table.',
+ `frontend_title` varchar(255) NOT NULL COMMENT 'Alternative public title for this Group.',
+ `frontend_description` text DEFAULT NULL COMMENT 'Alternative public description of the group.',
+ PRIMARY KEY (`id`),
+ INDEX `UI_cache_date`(`cache_date`),
+ INDEX `index_group_type`(`group_type`),
+ UNIQUE INDEX `UI_title`(`title`),
+ UNIQUE INDEX `UI_name`(`name`)
+)
+ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
+CREATE TABLE `civicrm_group_contact` (
+ `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'primary key',
+ `group_id` int unsigned NOT NULL COMMENT 'FK to civicrm_group',
+ `contact_id` int unsigned NOT NULL COMMENT 'FK to civicrm_contact',
+ `status` varchar(8) COMMENT 'status of contact relative to membership in group',
+ `location_id` int unsigned COMMENT 'Optional location to associate with this membership',
+ `email_id` int unsigned COMMENT 'Optional email to associate with this membership',
+ PRIMARY KEY (`id`),
+ UNIQUE INDEX `UI_contact_group`(`contact_id`, `group_id`)
+)
+ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
+CREATE TABLE `civicrm_group_contact_cache` (
+ `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'primary key',
+ `group_id` int unsigned NOT NULL COMMENT 'FK to civicrm_group',
+ `contact_id` int unsigned NOT NULL COMMENT 'FK to civicrm_contact',
+ PRIMARY KEY (`id`),
+ UNIQUE INDEX `UI_contact_group`(`contact_id`, `group_id`)
+)
+ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
+CREATE TABLE `civicrm_group_nesting` (
+ `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'Relationship ID',
+ `child_group_id` int unsigned NOT NULL COMMENT 'ID of the child group',
+ `parent_group_id` int unsigned NOT NULL COMMENT 'ID of the parent group',
+ PRIMARY KEY (`id`)
+)
+ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
+CREATE TABLE `civicrm_group_organization` (
+ `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'Relationship ID',
+ `group_id` int unsigned NOT NULL COMMENT 'ID of the group',
+ `organization_id` int unsigned NOT NULL COMMENT 'ID of the Organization Contact',
+ PRIMARY KEY (`id`),
+ UNIQUE INDEX `UI_group_organization`(`group_id`, `organization_id`)
+)
+ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
+CREATE TABLE `civicrm_relationship` (
+ `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'Relationship ID',
+ `contact_id_a` int unsigned NOT NULL COMMENT 'id of the first contact',
+ `contact_id_b` int unsigned NOT NULL COMMENT 'id of the second contact',
+ `relationship_type_id` int unsigned NOT NULL COMMENT 'Type of relationship',
+ `start_date` date COMMENT 'date when the relationship started',
+ `end_date` date COMMENT 'date when the relationship ended',
+ `is_active` boolean NOT NULL DEFAULT TRUE COMMENT 'is the relationship active ?',
+ `description` varchar(255) COMMENT 'Optional verbose description for the relationship.',
+ `is_permission_a_b` int unsigned NOT NULL DEFAULT 0 COMMENT 'Permission that Contact A has to view/update Contact B',
+ `is_permission_b_a` int unsigned NOT NULL DEFAULT 0 COMMENT 'Permission that Contact B has to view/update Contact A',
+ `case_id` int unsigned DEFAULT NULL COMMENT 'FK to civicrm_case',
+ `created_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'Relationship created date.',
+ `modified_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT 'Relationship last modified.',
+ PRIMARY KEY (`id`)
+)
+ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
+CREATE TABLE `civicrm_relationship_cache` (
+ `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'Relationship Cache ID',
+ `relationship_id` int unsigned NOT NULL COMMENT 'id of the relationship (FK to civicrm_relationship.id)',
+ `relationship_type_id` int unsigned NOT NULL COMMENT 'id of the relationship type',
+ `orientation` char(3) NOT NULL COMMENT 'The cache record is a permutation of the original relationship record. The orientation indicates whether it is forward (a_b) or reverse (b_a) relationship.',
+ `near_contact_id` int unsigned NOT NULL COMMENT 'id of the first contact',
+ `near_relation` varchar(64) COMMENT 'name for relationship of near_contact to far_contact.',
+ `far_contact_id` int unsigned NOT NULL COMMENT 'id of the second contact',
+ `far_relation` varchar(64) COMMENT 'name for relationship of far_contact to near_contact.',
+ `is_active` boolean NOT NULL DEFAULT TRUE COMMENT 'is the relationship active ?',
+ `start_date` date COMMENT 'date when the relationship started',
+ `end_date` date COMMENT 'date when the relationship ended',
+ `case_id` int unsigned DEFAULT NULL COMMENT 'FK to civicrm_case',
+ PRIMARY KEY (`id`),
+ UNIQUE INDEX `UI_relationship`(`relationship_id`, `orientation`),
+ INDEX `index_nearid_nearrelation`(`near_contact_id`, `near_relation`),
+ INDEX `index_nearid_farrelation`(`near_contact_id`, `far_relation`),
+ INDEX `index_near_relation`(`near_relation`)
+)
+ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
+CREATE TABLE `civicrm_relationship_type` (
+ `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'Primary key',
+ `name_a_b` varchar(64) COMMENT 'name for relationship of contact_a to contact_b.',
+ `label_a_b` varchar(64) COMMENT 'label for relationship of contact_a to contact_b.',
+ `name_b_a` varchar(64) COMMENT 'Optional name for relationship of contact_b to contact_a.',
+ `label_b_a` varchar(64) COMMENT 'Optional label for relationship of contact_b to contact_a.',
+ `description` varchar(255) COMMENT 'Optional verbose description of the relationship type.',
+ `contact_type_a` varchar(12) COMMENT 'If defined, contact_a in a relationship of this type must be a specific contact_type.',
+ `contact_type_b` varchar(12) COMMENT 'If defined, contact_b in a relationship of this type must be a specific contact_type.',
+ `contact_sub_type_a` varchar(64) COMMENT 'If defined, contact_sub_type_a in a relationship of this type must be a specific contact_sub_type.',
+ `contact_sub_type_b` varchar(64) COMMENT 'If defined, contact_sub_type_b in a relationship of this type must be a specific contact_sub_type.',
+ `is_reserved` boolean NOT NULL DEFAULT FALSE COMMENT 'Is this relationship type a predefined system type (can not be changed or de-activated)?',
+ `is_active` boolean NOT NULL DEFAULT TRUE COMMENT 'Is this relationship type currently active (i.e. can be used when creating or editing relationships)?',
+ PRIMARY KEY (`id`),
+ UNIQUE INDEX `UI_name_a_b`(`name_a_b`),
+ UNIQUE INDEX `UI_name_b_a`(`name_b_a`)
+)
+ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
+CREATE TABLE `civicrm_saved_search` (
+ `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'Saved Search ID',
+ `name` varchar(255) DEFAULT NULL COMMENT 'Unique name of saved search',
+ `label` varchar(255) DEFAULT NULL COMMENT 'Administrative label for search',
+ `form_values` text COMMENT 'Submitted form values for this search',
+ `mapping_id` int unsigned COMMENT 'Foreign key to civicrm_mapping used for saved search-builder searches.',
+ `search_custom_id` int unsigned COMMENT 'Foreign key to civicrm_option value table used for saved custom searches.',
+ `api_entity` varchar(255) COMMENT 'Entity name for API based search',
+ `api_params` text COMMENT 'Parameters for API based search',
+ `created_id` int unsigned COMMENT 'FK to contact table.',
+ `modified_id` int unsigned COMMENT 'FK to contact table.',
+ `expires_date` timestamp NULL COMMENT 'Optional date after which the search is not needed',
+ `created_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'When the search was created.',
+ `modified_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT 'When the search was last modified.',
+ `description` text,
+ PRIMARY KEY (`id`),
+ UNIQUE INDEX `UI_name`(`name`)
+)
+ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
+CREATE TABLE `civicrm_subscription_history` (
+ `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'Internal ID',
+ `contact_id` int unsigned NOT NULL COMMENT 'Contact ID',
+ `group_id` int unsigned COMMENT 'Group ID',
+ `date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'Date of the (un)subscription',
+ `method` varchar(8) COMMENT 'How the (un)subscription was triggered',
+ `status` varchar(8) COMMENT 'The state of the contact within the group',
+ `tracking` varchar(255) COMMENT 'IP address or other tracking info',
+ PRIMARY KEY (`id`)
+)
+ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
+CREATE TABLE `civicrm_contribution` (
+ `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'Contribution ID',
+ `contact_id` int unsigned NOT NULL COMMENT 'FK to Contact ID',
+ `financial_type_id` int unsigned COMMENT 'FK to Financial Type for (total_amount - non_deductible_amount).',
+ `contribution_page_id` int unsigned COMMENT 'The Contribution Page which triggered this contribution',
+ `payment_instrument_id` int unsigned COMMENT 'FK to Payment Instrument',
+ `receive_date` datetime,
+ `non_deductible_amount` decimal(20,2) DEFAULT '0' COMMENT 'Portion of total amount which is NOT tax deductible. Equal to total_amount for non-deductible financial types.',
+ `total_amount` decimal(20,2) NOT NULL COMMENT 'Total amount of this contribution. Use market value for non-monetary gifts.',
+ `fee_amount` decimal(20,2) COMMENT 'actual processor fee if known - may be 0.',
+ `net_amount` decimal(20,2) COMMENT 'actual funds transfer amount. total less fees. if processor does not report actual fee during transaction, this is set to total_amount.',
+ `trxn_id` varchar(255) COMMENT 'unique transaction id. may be processor id, bank id + trans id, or account number + check number... depending on payment_method',
+ `invoice_id` varchar(255) COMMENT 'unique invoice id, system generated or passed in',
+ `invoice_number` varchar(255) COMMENT 'Human readable invoice number',
+ `currency` varchar(3) DEFAULT NULL COMMENT '3 character string, value from config setting or input via user.',
+ `cancel_date` datetime COMMENT 'when was gift cancelled',
+ `cancel_reason` text,
+ `receipt_date` datetime COMMENT 'when (if) receipt was sent. populated automatically for online donations w/ automatic receipting',
+ `thankyou_date` datetime COMMENT 'when (if) was donor thanked',
+ `source` varchar(255) COMMENT 'Origin of this Contribution.',
+ `amount_level` text,
+ `contribution_recur_id` int unsigned COMMENT 'Conditional foreign key to civicrm_contribution_recur id. Each contribution made in connection with a recurring contribution carries a foreign key to the recurring contribution record. This assumes we can track these processor initiated events.',
+ `is_test` boolean NOT NULL DEFAULT FALSE,
+ `is_pay_later` boolean NOT NULL DEFAULT FALSE,
+ `contribution_status_id` int unsigned DEFAULT 1,
+ `address_id` int unsigned COMMENT 'Conditional foreign key to civicrm_address.id. We insert an address record for each contribution when we have associated billing name and address data.',
+ `check_number` varchar(255),
+ `campaign_id` int unsigned COMMENT 'The campaign for which this contribution has been triggered.',
+ `creditnote_id` varchar(255) COMMENT 'unique credit note id, system generated or passed in',
+ `tax_amount` decimal(20,2) NOT NULL DEFAULT '0' COMMENT 'Total tax amount of this contribution.',
+ `revenue_recognition_date` datetime COMMENT 'Stores the date when revenue should be recognized.',
+ `is_template` boolean NOT NULL DEFAULT FALSE COMMENT 'Shows this is a template for recurring contributions.',
+ PRIMARY KEY (`id`),
+ INDEX `UI_contrib_payment_instrument_id`(`payment_instrument_id`),
+ INDEX `index_total_amount_receive_date`(`total_amount`, `receive_date`),
+ INDEX `index_source`(`source`),
+ UNIQUE INDEX `UI_contrib_trxn_id`(`trxn_id`),
+ UNIQUE INDEX `UI_contrib_invoice_id`(`invoice_id`),
+ INDEX `index_contribution_status`(`contribution_status_id`),
+ INDEX `received_date`(`receive_date`),
+ INDEX `check_number`(`check_number`),
+ INDEX `index_creditnote_id`(`creditnote_id`)
+)
+ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
+CREATE TABLE `civicrm_contribution_page` (
+ `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'Contribution ID',
+ `title` varchar(255) NOT NULL COMMENT 'Contribution Page title. For top of page display',
+ `frontend_title` varchar(255) NOT NULL COMMENT 'Contribution Page Public title',
+ `name` varchar(255) NOT NULL COMMENT 'Unique name for identifying contribution page',
+ `intro_text` text COMMENT 'Text and html allowed. Displayed below title.',
+ `financial_type_id` int unsigned COMMENT 'default financial type assigned to contributions submitted via this page, e.g. Contribution, Campaign Contribution',
+ `payment_processor` varchar(128) COMMENT 'Payment Processors configured for this contribution Page',
+ `is_credit_card_only` boolean NOT NULL DEFAULT FALSE COMMENT 'if true - processing logic must reject transaction at confirmation stage if pay method != credit card',
+ `is_monetary` boolean NOT NULL DEFAULT TRUE COMMENT 'if true - allows real-time monetary transactions otherwise non-monetary transactions',
+ `is_recur` boolean NOT NULL DEFAULT FALSE COMMENT 'if true - allows recurring contributions, valid only for PayPal_Standard',
+ `is_confirm_enabled` boolean NOT NULL DEFAULT TRUE COMMENT 'if FALSE, the confirm page in contribution pages gets skipped',
+ `recur_frequency_unit` varchar(128) COMMENT 'Supported recurring frequency units.',
+ `is_recur_interval` boolean NOT NULL DEFAULT FALSE COMMENT 'if true - supports recurring intervals',
+ `is_recur_installments` boolean NOT NULL DEFAULT FALSE COMMENT 'if true - asks user for recurring installments',
+ `adjust_recur_start_date` boolean NOT NULL DEFAULT FALSE COMMENT 'if true - user is able to adjust payment start date',
+ `is_pay_later` boolean NOT NULL DEFAULT FALSE COMMENT 'if true - allows the user to send payment directly to the org later',
+ `pay_later_text` text COMMENT 'The text displayed to the user in the main form',
+ `pay_later_receipt` text COMMENT 'The receipt sent to the user instead of the normal receipt text',
+ `is_partial_payment` boolean DEFAULT FALSE COMMENT 'is partial payment enabled for this online contribution page',
+ `initial_amount_label` varchar(255) COMMENT 'Initial amount label for partial payment',
+ `initial_amount_help_text` text COMMENT 'Initial amount help text for partial payment',
+ `min_initial_amount` decimal(20,2) COMMENT 'Minimum initial amount for partial payment',
+ `is_allow_other_amount` boolean NOT NULL DEFAULT FALSE COMMENT 'if TRUE, page will include an input text field where user can enter their own amount',
+ `default_amount_id` int unsigned COMMENT 'FK to civicrm_option_value.',
+ `min_amount` decimal(20,2) COMMENT 'if other amounts allowed, user can configure minimum allowed.',
+ `max_amount` decimal(20,2) COMMENT 'if other amounts allowed, user can configure maximum allowed.',
+ `goal_amount` decimal(20,2) COMMENT 'The target goal for this page, allows people to build a goal meter',
+ `thankyou_title` varchar(255) COMMENT 'Title for Thank-you page (header title tag, and display at the top of the page).',
+ `thankyou_text` text COMMENT 'text and html allowed. displayed above result on success page',
+ `thankyou_footer` text COMMENT 'Text and html allowed. displayed at the bottom of the success page. Common usage is to include link(s) to other pages such as tell-a-friend, etc.',
+ `is_email_receipt` boolean NOT NULL DEFAULT FALSE COMMENT 'if TRUE, receipt is automatically emailed to contact on success',
+ `receipt_from_name` varchar(255) COMMENT 'FROM email name used for receipts generated by contributions to this contribution page.',
+ `receipt_from_email` varchar(255) COMMENT 'FROM email address used for receipts generated by contributions to this contribution page.',
+ `cc_receipt` varchar(255) COMMENT 'comma-separated list of email addresses to cc each time a receipt is sent',
+ `bcc_receipt` varchar(255) COMMENT 'comma-separated list of email addresses to bcc each time a receipt is sent',
+ `receipt_text` text COMMENT 'text to include above standard receipt info on receipt email. emails are text-only, so do not allow html for now',
+ `is_active` boolean NOT NULL DEFAULT TRUE COMMENT 'Is this page active?',
+ `footer_text` text COMMENT 'Text and html allowed. Displayed at the bottom of the first page of the contribution wizard.',
+ `amount_block_is_active` boolean NOT NULL DEFAULT TRUE COMMENT 'Is this property active?',
+ `start_date` datetime COMMENT 'Date and time that this page starts.',
+ `end_date` datetime COMMENT 'Date and time that this page ends. May be NULL if no defined end date/time',
+ `created_id` int unsigned COMMENT 'FK to civicrm_contact, who created this contribution page',
+ `created_date` datetime COMMENT 'Date and time that contribution page was created.',
+ `currency` varchar(3) DEFAULT NULL COMMENT '3 character string, value from config setting or input via user.',
+ `campaign_id` int unsigned COMMENT 'The campaign for which we are collecting contributions with this page.',
+ `is_share` boolean NOT NULL DEFAULT TRUE COMMENT 'Can people share the contribution page through social media?',
+ `is_billing_required` boolean NOT NULL DEFAULT FALSE COMMENT 'if true - billing block is required for online contribution page',
+ PRIMARY KEY (`id`),
+ UNIQUE INDEX `UI_name`(`name`)
+)
+ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
+CREATE TABLE `civicrm_contribution_product` (
+ `id` int unsigned NOT NULL AUTO_INCREMENT,
+ `product_id` int unsigned NOT NULL,
+ `contribution_id` int unsigned NOT NULL,
+ `product_option` varchar(255) COMMENT 'Option value selected if applicable - e.g. color, size etc.',
+ `quantity` int,
+ `fulfilled_date` date COMMENT 'Optional. Can be used to record the date this product was fulfilled or shipped.',
+ `start_date` date COMMENT 'Actual start date for a time-delimited premium (subscription, service or membership)',
+ `end_date` date COMMENT 'Actual end date for a time-delimited premium (subscription, service or membership)',
+ `comment` text,
+ `financial_type_id` int unsigned DEFAULT NULL COMMENT 'FK to Financial Type(for membership price sets only).',
+ PRIMARY KEY (`id`)
+)
+ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
+CREATE TABLE `civicrm_contribution_recur` (
+ `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'Contribution Recur ID',
+ `contact_id` int unsigned NOT NULL COMMENT 'Foreign key to civicrm_contact.id.',
+ `amount` decimal(20,2) NOT NULL COMMENT 'Amount to be collected (including any sales tax) by payment processor each recurrence.',
+ `currency` varchar(3) DEFAULT NULL COMMENT '3 character string, value from config setting or input via user.',
+ `frequency_unit` varchar(8) DEFAULT 'month' COMMENT 'Time units for recurrence of payment.',
+ `frequency_interval` int unsigned NOT NULL DEFAULT 1 COMMENT 'Number of time units for recurrence of payment.',
+ `installments` int unsigned COMMENT 'Total number of payments to be made. Set this to 0 if this is an open-ended commitment i.e. no set end date.',
+ `start_date` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'The date the first scheduled recurring contribution occurs.',
+ `create_date` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'When this recurring contribution record was created.',
+ `modified_date` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT 'Last updated date for this record. mostly the last time a payment was received',
+ `cancel_date` datetime COMMENT 'Date this recurring contribution was cancelled by contributor- if we can get access to it',
+ `cancel_reason` text COMMENT 'Free text field for a reason for cancelling',
+ `end_date` datetime COMMENT 'Date this recurring contribution finished successfully',
+ `processor_id` varchar(255) COMMENT 'Possibly needed to store a unique identifier for this recurring payment order - if this is available from the processor??',
+ `payment_token_id` int unsigned COMMENT 'Optionally used to store a link to a payment token used for this recurring contribution.',
+ `trxn_id` varchar(255) COMMENT 'unique transaction id (deprecated - use processor_id)',
+ `invoice_id` varchar(255) COMMENT 'unique invoice id, system generated or passed in',
+ `contribution_status_id` int unsigned DEFAULT 2,
+ `is_test` boolean NOT NULL DEFAULT FALSE,
+ `cycle_day` int unsigned NOT NULL DEFAULT 1 COMMENT 'Day in the period when the payment should be charged e.g. 1st of month, 15th etc.',
+ `next_sched_contribution_date` datetime COMMENT 'Next scheduled date',
+ `failure_count` int unsigned DEFAULT 0 COMMENT 'Number of failed charge attempts since last success. Business rule could be set to deactivate on more than x failures.',
+ `failure_retry_date` datetime COMMENT 'Date to retry failed attempt',
+ `auto_renew` boolean NOT NULL DEFAULT FALSE COMMENT 'Some systems allow contributor to set a number of installments - but then auto-renew the subscription or commitment if they do not cancel.',
+ `payment_processor_id` int unsigned COMMENT 'Foreign key to civicrm_payment_processor.id',
+ `financial_type_id` int unsigned COMMENT 'FK to Financial Type',
+ `payment_instrument_id` int unsigned COMMENT 'FK to Payment Instrument',
+ `campaign_id` int unsigned COMMENT 'The campaign for which this contribution has been triggered.',
+ `is_email_receipt` boolean NOT NULL DEFAULT TRUE COMMENT 'if TRUE, receipt is automatically emailed to contact on each successful payment',
+ PRIMARY KEY (`id`),
+ UNIQUE INDEX `UI_contrib_trxn_id`(`trxn_id`),
+ UNIQUE INDEX `UI_contrib_invoice_id`(`invoice_id`),
+ INDEX `index_contribution_status`(`contribution_status_id`),
+ INDEX `UI_contribution_recur_payment_instrument_id`(`payment_instrument_id`)
+)
+ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
+CREATE TABLE `civicrm_contribution_soft` (
+ `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'Soft Credit ID',
+ `contribution_id` int unsigned NOT NULL COMMENT 'FK to contribution table.',
+ `contact_id` int unsigned NOT NULL COMMENT 'FK to Contact ID',
+ `amount` decimal(20,2) NOT NULL COMMENT 'Amount of this soft credit.',
+ `currency` varchar(3) DEFAULT NULL COMMENT '3 character string, value from config setting or input via user.',
+ `pcp_id` int unsigned DEFAULT NULL COMMENT 'FK to civicrm_pcp.id',
+ `pcp_display_in_roll` boolean NOT NULL DEFAULT FALSE,
+ `pcp_roll_nickname` varchar(255) DEFAULT NULL,
+ `pcp_personal_note` varchar(255) DEFAULT NULL,
+ `soft_credit_type_id` int unsigned DEFAULT NULL COMMENT 'Soft Credit Type ID.Implicit FK to civicrm_option_value where option_group = soft_credit_type.',
+ PRIMARY KEY (`id`),
+ INDEX `index_id`(`pcp_id`)
+)
+ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
+CREATE TABLE `civicrm_premiums` (
+ `id` int unsigned NOT NULL AUTO_INCREMENT,
+ `entity_table` varchar(64) NOT NULL COMMENT 'Joins these premium settings to another object. Always civicrm_contribution_page for now.',
+ `entity_id` int unsigned NOT NULL,
+ `premiums_active` boolean NOT NULL DEFAULT FALSE COMMENT 'Is the Premiums feature enabled for this page?',
+ `premiums_intro_title` varchar(255) COMMENT 'Title for Premiums section.',
+ `premiums_intro_text` text COMMENT 'Displayed in
at top of Premiums section of page. Text and HTML allowed.',
+ `premiums_contact_email` varchar(100) COMMENT 'This email address is included in receipts if it is populated and a premium has been selected.',
+ `premiums_contact_phone` varchar(50) COMMENT 'This phone number is included in receipts if it is populated and a premium has been selected.',
+ `premiums_display_min_contribution` boolean NOT NULL DEFAULT FALSE COMMENT 'Boolean. Should we automatically display minimum contribution amount text after the premium descriptions.',
+ `premiums_nothankyou_label` varchar(255) COMMENT 'Label displayed for No Thank-you option in premiums block (e.g. No thank you)',
+ `premiums_nothankyou_position` int unsigned DEFAULT 1,
+ PRIMARY KEY (`id`)
+)
+ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
+CREATE TABLE `civicrm_premiums_product` (
+ `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'Contribution ID',
+ `premiums_id` int unsigned NOT NULL COMMENT 'Foreign key to premiums settings record.',
+ `product_id` int unsigned NOT NULL COMMENT 'Foreign key to each product object.',
+ `weight` int unsigned NOT NULL,
+ `financial_type_id` int unsigned DEFAULT NULL COMMENT 'FK to Financial Type.',
+ PRIMARY KEY (`id`)
+)
+ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
+CREATE TABLE `civicrm_product` (
+ `id` int unsigned NOT NULL AUTO_INCREMENT,
+ `name` varchar(255) NOT NULL COMMENT 'Required product/premium name',
+ `description` text COMMENT 'Optional description of the product/premium.',
+ `sku` varchar(50) COMMENT 'Optional product sku or code.',
+ `options` text COMMENT 'Store comma-delimited list of color, size, etc. options for the product.',
+ `image` varchar(255) COMMENT 'Full or relative URL to uploaded image - fullsize.',
+ `thumbnail` varchar(255) COMMENT 'Full or relative URL to image thumbnail.',
+ `price` decimal(20,2) COMMENT 'Sell price or market value for premiums. For tax-deductible contributions, this will be stored as non_deductible_amount in the contribution record.',
+ `currency` varchar(3) DEFAULT NULL COMMENT '3 character string, value from config setting or input via user.',
+ `financial_type_id` int unsigned DEFAULT NULL COMMENT 'FK to Financial Type.',
+ `min_contribution` decimal(20,2) COMMENT 'Minimum contribution required to be eligible to select this premium.',
+ `cost` decimal(20,2) COMMENT 'Actual cost of this product. Useful to determine net return from sale or using this as an incentive.',
+ `is_active` boolean NOT NULL DEFAULT TRUE COMMENT 'Disabling premium removes it from the premiums_premium join table below.',
+ `period_type` varchar(8) DEFAULT 'rolling' COMMENT 'Rolling means we set start/end based on current day, fixed means we set start/end for current year or month (e.g. 1 year + fixed -> we would set start/end for 1/1/06 thru 12/31/06 for any premium chosen in 2006)',
+ `fixed_period_start_day` int DEFAULT 101 COMMENT 'Month and day (MMDD) that fixed period type subscription or membership starts.',
+ `duration_unit` varchar(8) DEFAULT 'year',
+ `duration_interval` int COMMENT 'Number of units for total duration of subscription, service, membership (e.g. 12 Months).',
+ `frequency_unit` varchar(8) DEFAULT 'month' COMMENT 'Frequency unit and interval allow option to store actual delivery frequency for a subscription or service.',
+ `frequency_interval` int COMMENT 'Number of units for delivery frequency of subscription, service, membership (e.g. every 3 Months).',
+ PRIMARY KEY (`id`)
+)
+ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
+CREATE TABLE `civicrm_contribution_widget` (
+ `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'Contribution ID',
+ `contribution_page_id` int unsigned COMMENT 'The Contribution Page which triggered this contribution',
+ `is_active` boolean NOT NULL DEFAULT TRUE COMMENT 'Is this property active?',
+ `title` varchar(255) COMMENT 'Widget title.',
+ `url_logo` varchar(255) COMMENT 'URL to Widget logo',
+ `button_title` varchar(255) COMMENT 'Button title.',
+ `about` text COMMENT 'About description.',
+ `url_homepage` varchar(255) COMMENT 'URL to Homepage.',
+ `color_title` varchar(10),
+ `color_button` varchar(10),
+ `color_bar` varchar(10),
+ `color_main_text` varchar(10),
+ `color_main` varchar(10),
+ `color_main_bg` varchar(10),
+ `color_bg` varchar(10),
+ `color_about_link` varchar(10),
+ `color_homepage_link` varchar(10),
+ PRIMARY KEY (`id`)
+)
+ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
+CREATE TABLE `civicrm_action_log` (
+ `id` int unsigned NOT NULL AUTO_INCREMENT,
+ `contact_id` int unsigned COMMENT 'FK to Contact ID',
+ `entity_id` int unsigned NOT NULL COMMENT 'FK to id of the entity that the action was performed on. Pseudo - FK.',
+ `entity_table` varchar(255) COMMENT 'name of the entity table for the above id, e.g. civicrm_activity, civicrm_participant',
+ `action_schedule_id` int unsigned NOT NULL COMMENT 'FK to the action schedule that this action originated from.',
+ `action_date_time` datetime COMMENT 'date time that the action was performed on.',
+ `is_error` boolean NOT NULL DEFAULT FALSE COMMENT 'Was there any error sending the reminder?',
+ `message` text COMMENT 'Description / text in case there was an error encountered.',
+ `repetition_number` int unsigned COMMENT 'Keeps track of the sequence number of this repetition.',
+ `reference_date` datetime DEFAULT NULL COMMENT 'Stores the date from the entity which triggered this reminder action (e.g. membership.end_date for most membership renewal reminders)',
+ PRIMARY KEY (`id`)
+)
+ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
+CREATE TABLE `civicrm_action_schedule` (
+ `id` int unsigned NOT NULL AUTO_INCREMENT,
+ `name` varchar(128) NOT NULL COMMENT 'Name of the scheduled action',
+ `title` varchar(64) COMMENT 'Title of the action(reminder)',
+ `recipient` varchar(64) COMMENT 'Recipient',
+ `limit_to` int COMMENT 'Is this the recipient criteria limited to OR in addition to?',
+ `entity_value` varchar(255) COMMENT 'Entity value',
+ `entity_status` varchar(64) COMMENT 'Entity status',
+ `start_action_offset` int unsigned DEFAULT 0 COMMENT 'Reminder Interval.',
+ `start_action_unit` varchar(8) COMMENT 'Time units for reminder.',
+ `start_action_condition` varchar(64) COMMENT 'Reminder Action',
+ `start_action_date` varchar(64) COMMENT 'Entity date',
+ `is_repeat` boolean NOT NULL DEFAULT FALSE,
+ `repetition_frequency_unit` varchar(8) COMMENT 'Time units for repetition of reminder.',
+ `repetition_frequency_interval` int unsigned DEFAULT 0 COMMENT 'Time interval for repeating the reminder.',
+ `end_frequency_unit` varchar(8) COMMENT 'Time units till repetition of reminder.',
+ `end_frequency_interval` int unsigned DEFAULT 0 COMMENT 'Time interval till repeating the reminder.',
+ `end_action` varchar(32) COMMENT 'Reminder Action till repeating the reminder.',
+ `end_date` varchar(64) COMMENT 'Entity end date',
+ `is_active` boolean NOT NULL DEFAULT TRUE COMMENT 'Is this option active?',
+ `recipient_manual` varchar(128) COMMENT 'Contact IDs to which reminder should be sent.',
+ `recipient_listing` varchar(128) COMMENT 'listing based on recipient field.',
+ `body_text` longtext COMMENT 'Body of the mailing in text format.',
+ `body_html` longtext COMMENT 'Body of the mailing in html format.',
+ `sms_body_text` longtext COMMENT 'Content of the SMS text.',
+ `subject` varchar(128) COMMENT 'Subject of mailing',
+ `record_activity` boolean NOT NULL DEFAULT FALSE COMMENT 'Record Activity for this reminder?',
+ `mapping_id` varchar(64) COMMENT 'Name/ID of the mapping to use on this table',
+ `group_id` int unsigned COMMENT 'FK to Group',
+ `msg_template_id` int unsigned COMMENT 'FK to the message template.',
+ `sms_template_id` int unsigned COMMENT 'FK to the message template.',
+ `absolute_date` date COMMENT 'Date on which the reminder be sent.',
+ `from_name` varchar(255) COMMENT 'Name in \"from\" field',
+ `from_email` varchar(255) COMMENT 'Email address in \"from\" field',
+ `mode` varchar(128) DEFAULT 'Email' COMMENT 'Send the message as email or sms or both.',
+ `sms_provider_id` int unsigned,
+ `used_for` varchar(64) COMMENT 'Used for repeating entity',
+ `filter_contact_language` varchar(128) COMMENT 'Used for multilingual installation',
+ `communication_language` varchar(8) COMMENT 'Used for multilingual installation',
+ `created_date` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'When was the scheduled reminder created.',
+ `modified_date` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT 'When the reminder was created or modified.',
+ `effective_start_date` timestamp NULL COMMENT 'Earliest date to consider start events from.',
+ `effective_end_date` timestamp NULL COMMENT 'Latest date to consider end events from.',
+ PRIMARY KEY (`id`),
+ UNIQUE INDEX `UI_name`(`name`)
+)
+ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
+CREATE TABLE `civicrm_address` (
+ `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'Unique Address ID',
+ `contact_id` int unsigned COMMENT 'FK to Contact ID',
+ `location_type_id` int unsigned COMMENT 'Which Location does this address belong to.',
+ `is_primary` boolean NOT NULL DEFAULT FALSE COMMENT 'Is this the primary address.',
+ `is_billing` boolean NOT NULL DEFAULT FALSE COMMENT 'Is this the billing address.',
+ `street_address` varchar(96) COMMENT 'Concatenation of all routable street address components (prefix, street number, street name, suffix, unit number OR P.O. Box). Apps should be able to determine physical location with this data (for mapping, mail delivery, etc.).',
+ `street_number` int COMMENT 'Numeric portion of address number on the street, e.g. For 112A Main St, the street_number = 112.',
+ `street_number_suffix` varchar(8) COMMENT 'Non-numeric portion of address number on the street, e.g. For 112A Main St, the street_number_suffix = A',
+ `street_number_predirectional` varchar(8) COMMENT 'Directional prefix, e.g. SE Main St, SE is the prefix.',
+ `street_name` varchar(64) COMMENT 'Actual street name, excluding St, Dr, Rd, Ave, e.g. For 112 Main St, the street_name = Main.',
+ `street_type` varchar(8) COMMENT 'St, Rd, Dr, etc.',
+ `street_number_postdirectional` varchar(8) COMMENT 'Directional prefix, e.g. Main St S, S is the suffix.',
+ `street_unit` varchar(16) COMMENT 'Secondary unit designator, e.g. Apt 3 or Unit # 14, or Bldg 1200',
+ `supplemental_address_1` varchar(96) COMMENT 'Supplemental Address Information, Line 1',
+ `supplemental_address_2` varchar(96) COMMENT 'Supplemental Address Information, Line 2',
+ `supplemental_address_3` varchar(96) COMMENT 'Supplemental Address Information, Line 3',
+ `city` varchar(64) COMMENT 'City, Town or Village Name.',
+ `county_id` int unsigned COMMENT 'Which County does this address belong to.',
+ `state_province_id` int unsigned COMMENT 'Which State_Province does this address belong to.',
+ `postal_code_suffix` varchar(12) COMMENT 'Store the suffix, like the +4 part in the USPS system.',
+ `postal_code` varchar(64) COMMENT 'Store both US (zip5) AND international postal codes. App is responsible for country/region appropriate validation.',
+ `usps_adc` varchar(32) COMMENT 'USPS Bulk mailing code.',
+ `country_id` int unsigned COMMENT 'Which Country does this address belong to.',
+ `geo_code_1` double COMMENT 'Latitude',
+ `geo_code_2` double COMMENT 'Longitude',
+ `manual_geo_code` boolean NOT NULL DEFAULT FALSE COMMENT 'Is this a manually entered geo code',
+ `timezone` varchar(8) COMMENT 'Timezone expressed as a UTC offset - e.g. United States CST would be written as \"UTC-6\".',
+ `name` varchar(255),
+ `master_id` int unsigned COMMENT 'FK to Address ID',
PRIMARY KEY (`id`),
- UNIQUE INDEX `UI_appid`(app_guid),
- UNIQUE INDEX `UI_keypair_cxnid`(cxn_guid)
-)
-ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
-
--- /*******************************************************
--- *
--- * civicrm_cache
--- *
--- * Table to cache items for civicrm components.
--- *
--- *******************************************************/
+ INDEX `index_location_type`(`location_type_id`),
+ INDEX `index_is_primary`(`is_primary`),
+ INDEX `index_is_billing`(`is_billing`),
+ INDEX `index_street_name`(`street_name`),
+ INDEX `index_city`(`city`),
+ INDEX `index_geo_code_1_geo_code_2`(`geo_code_1`, `geo_code_2`)
+)
+ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
+CREATE TABLE `civicrm_address_format` (
+ `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'Address Format ID',
+ `format` text COMMENT 'The format of an address',
+ PRIMARY KEY (`id`)
+)
+ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
CREATE TABLE `civicrm_cache` (
`id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'Unique table ID',
`group_name` varchar(32) NOT NULL COMMENT 'group name for cache element, useful in cleaning cache elements',
`path` varchar(255) COMMENT 'Unique path name for cache element',
`data` longtext COMMENT 'data associated with this path',
`component_id` int unsigned COMMENT 'Component that this menu item belongs to',
- `created_date` timestamp DEFAULT CURRENT_TIMESTAMP COMMENT 'When was the cache item created',
+ `created_date` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'When was the cache item created',
`expired_date` timestamp NULL DEFAULT NULL COMMENT 'When should the cache item expire',
PRIMARY KEY (`id`),
- UNIQUE INDEX `UI_group_name_path`(group_name, path),
- INDEX `index_expired_date`(expired_date),
- CONSTRAINT FK_civicrm_cache_component_id FOREIGN KEY (`component_id`) REFERENCES `civicrm_component`(`id`)
+ UNIQUE INDEX `UI_group_name_path`(`group_name`, `path`),
+ INDEX `index_expired_date`(`expired_date`)
+)
+ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
+CREATE TABLE `civicrm_component` (
+ `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'Component ID',
+ `name` varchar(64) NOT NULL COMMENT 'Name of the component.',
+ `namespace` varchar(128) COMMENT 'Path to components main directory in a form of a class namespace.',
+ PRIMARY KEY (`id`)
)
ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
-
--- /*******************************************************
--- *
--- * civicrm_country
--- *
--- *******************************************************/
CREATE TABLE `civicrm_country` (
`id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'Country ID',
`name` varchar(64) COMMENT 'Country Name',
@@ -1370,60 +998,22 @@ CREATE TABLE `civicrm_country` (
`idd_prefix` varchar(4) COMMENT 'International direct dialing prefix from within the country TO another country',
`ndd_prefix` varchar(4) COMMENT 'Access prefix to call within a country to a different area',
`region_id` int unsigned NOT NULL COMMENT 'Foreign key to civicrm_worldregion.id.',
- `is_province_abbreviated` tinyint NOT NULL DEFAULT 0 COMMENT 'Should state/province be displayed as abbreviation for contacts from this country?',
- `is_active` tinyint NOT NULL DEFAULT 1 COMMENT 'Is this Country active?',
+ `is_province_abbreviated` boolean NOT NULL DEFAULT FALSE COMMENT 'Should state/province be displayed as abbreviation for contacts from this country?',
+ `is_active` boolean NOT NULL DEFAULT TRUE COMMENT 'Is this Country active?',
PRIMARY KEY (`id`),
- UNIQUE INDEX `UI_name_iso_code`(name, iso_code),
- CONSTRAINT FK_civicrm_country_address_format_id FOREIGN KEY (`address_format_id`) REFERENCES `civicrm_address_format`(`id`),
- CONSTRAINT FK_civicrm_country_region_id FOREIGN KEY (`region_id`) REFERENCES `civicrm_worldregion`(`id`)
-)
-ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
-
--- /*******************************************************
--- *
--- * civicrm_custom_group
--- *
--- * All extended (custom) properties are associated with a group. These are logical sets of related data.
-
--- *
--- *******************************************************/
-CREATE TABLE `civicrm_custom_group` (
- `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'Unique Custom Group ID',
- `name` varchar(64) COMMENT 'Variable name/programmatic handle for this group.',
- `title` varchar(64) NOT NULL COMMENT 'Friendly Name.',
- `extends` varchar(255) DEFAULT 'Contact' COMMENT 'Type of object this group extends (can add other options later e.g. contact_address, etc.).',
- `extends_entity_column_id` int unsigned DEFAULT NULL COMMENT 'FK to civicrm_option_value.value (for option group custom_data_type)',
- `extends_entity_column_value` varchar(255) COMMENT 'linking custom group for dynamic object',
- `style` varchar(15) COMMENT 'Visual relationship between this form and its parent.',
- `collapse_display` tinyint NOT NULL DEFAULT 0 COMMENT 'Will this group be in collapsed or expanded mode on initial display ?',
- `help_pre` text COMMENT 'Description and/or help text to display before fields in form.',
- `help_post` text COMMENT 'Description and/or help text to display after fields in form.',
- `weight` int NOT NULL DEFAULT 1 COMMENT 'Controls display order when multiple extended property groups are setup for the same class.',
- `is_active` tinyint NOT NULL DEFAULT 1 COMMENT 'Is this property active?',
- `table_name` varchar(255) COMMENT 'Name of the table that holds the values for this group.',
- `is_multiple` tinyint NOT NULL DEFAULT 0 COMMENT 'Does this group hold multiple values?',
- `min_multiple` int unsigned COMMENT 'minimum number of multiple records (typically 0?)',
- `max_multiple` int unsigned COMMENT 'maximum number of multiple records, if 0 - no max',
- `collapse_adv_display` tinyint NOT NULL DEFAULT 0 COMMENT 'Will this group be in collapsed or expanded mode on advanced search display ?',
- `created_id` int unsigned COMMENT 'FK to civicrm_contact, who created this custom group',
- `created_date` datetime COMMENT 'Date and time this custom group was created.',
- `is_reserved` tinyint NOT NULL DEFAULT 0 COMMENT 'Is this a reserved Custom Group?',
- `is_public` tinyint NOT NULL DEFAULT 1 COMMENT 'Is this property public?',
- `icon` varchar(255) DEFAULT NULL COMMENT 'crm-i icon class',
+ UNIQUE INDEX `UI_name_iso_code`(`name`, `iso_code`)
+)
+ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
+CREATE TABLE `civicrm_county` (
+ `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'County ID',
+ `name` varchar(64) COMMENT 'Name of County',
+ `abbreviation` varchar(4) COMMENT '2-4 Character Abbreviation of County',
+ `state_province_id` int unsigned NOT NULL COMMENT 'ID of State/Province that County belongs',
+ `is_active` boolean NOT NULL DEFAULT TRUE COMMENT 'Is this County active?',
PRIMARY KEY (`id`),
- UNIQUE INDEX `UI_title_extends`(title, extends),
- UNIQUE INDEX `UI_name`(name),
- CONSTRAINT FK_civicrm_custom_group_created_id FOREIGN KEY (`created_id`) REFERENCES `civicrm_contact`(`id`) ON DELETE SET NULL
-)
-ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
-
--- /*******************************************************
--- *
--- * civicrm_custom_field
--- *
--- * Stores info about an extended (custom) property (data and form field info).
--- *
--- *******************************************************/
+ UNIQUE INDEX `UI_name_state_id`(`name`, `state_province_id`)
+)
+ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
CREATE TABLE `civicrm_custom_field` (
`id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'Unique Custom Field ID',
`custom_group_id` int unsigned NOT NULL COMMENT 'FK to civicrm_custom_group.',
@@ -1432,15 +1022,15 @@ CREATE TABLE `civicrm_custom_field` (
`data_type` varchar(16) NOT NULL COMMENT 'Controls location of data storage in extended_data table.',
`html_type` varchar(32) NOT NULL COMMENT 'HTML types plus several built-in extended types.',
`default_value` varchar(255) COMMENT 'Use form_options.is_default for field_types which use options.',
- `is_required` tinyint NOT NULL DEFAULT 0 COMMENT 'Is a value required for this property.',
- `is_searchable` tinyint NOT NULL DEFAULT 0 COMMENT 'Is this property searchable.',
- `is_search_range` tinyint NOT NULL DEFAULT 0 COMMENT 'Is this property range searchable.',
+ `is_required` boolean NOT NULL DEFAULT FALSE COMMENT 'Is a value required for this property.',
+ `is_searchable` boolean NOT NULL DEFAULT FALSE COMMENT 'Is this property searchable.',
+ `is_search_range` boolean NOT NULL DEFAULT FALSE COMMENT 'Is this property range searchable.',
`weight` int NOT NULL DEFAULT 1 COMMENT 'Controls field display order within an extended property group.',
`help_pre` text COMMENT 'Description and/or help text to display before this field.',
`help_post` text COMMENT 'Description and/or help text to display after this field.',
- `attributes` varchar(255) COMMENT 'Store collection of type-appropriate attributes, e.g. textarea needs rows/cols attributes',
- `is_active` tinyint DEFAULT 1 COMMENT 'Is this property active?',
- `is_view` tinyint NOT NULL DEFAULT 0 COMMENT 'Is this property set by PHP Code? A code field is viewable but not editable',
+ `attributes` varchar(255) COMMENT 'Store collection of type-appropriate attributes, e.g. textarea needs rows/cols attributes',
+ `is_active` boolean DEFAULT TRUE COMMENT 'Is this property active?',
+ `is_view` boolean NOT NULL DEFAULT FALSE COMMENT 'Is this property set by PHP Code? A code field is viewable but not editable',
`options_per_line` int unsigned COMMENT 'number of options per line for checkbox and radio',
`text_length` int unsigned COMMENT 'field length if alphanumeric',
`start_date_years` int COMMENT 'Date may be up to start_date_years years prior to the current date.',
@@ -1453,23 +1043,70 @@ CREATE TABLE `civicrm_custom_field` (
`option_group_id` int unsigned COMMENT 'For elements with options, the option group id that is used',
`serialize` int unsigned NOT NULL DEFAULT 0 COMMENT 'Serialization method - a non-zero value indicates a multi-valued field.',
`filter` varchar(255) COMMENT 'Stores Contact Get API params contact reference custom fields. May be used for other filters in the future.',
- `in_selector` tinyint NOT NULL DEFAULT 0 COMMENT 'Should the multi-record custom field values be displayed in tab table listing',
+ `in_selector` boolean NOT NULL DEFAULT FALSE COMMENT 'Should the multi-record custom field values be displayed in tab table listing',
`fk_entity` varchar(255) DEFAULT NULL COMMENT 'Name of entity being referenced.',
+ `fk_entity_on_delete` varchar(255) NOT NULL DEFAULT 'set_null' COMMENT 'Behavior if referenced entity is deleted.',
+ PRIMARY KEY (`id`),
+ UNIQUE INDEX `UI_label_custom_group_id`(`label`, `custom_group_id`),
+ UNIQUE INDEX `UI_name_custom_group_id`(`name`, `custom_group_id`)
+)
+ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
+CREATE TABLE `civicrm_custom_group` (
+ `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'Unique Custom Group ID',
+ `name` varchar(64) COMMENT 'Variable name/programmatic handle for this group.',
+ `title` varchar(64) NOT NULL COMMENT 'Friendly Name.',
+ `extends` varchar(255) DEFAULT 'Contact' COMMENT 'Type of object this group extends (can add other options later e.g. contact_address, etc.).',
+ `extends_entity_column_id` int unsigned DEFAULT NULL COMMENT 'FK to civicrm_option_value.value (for option group custom_data_type)',
+ `extends_entity_column_value` varchar(255) COMMENT 'linking custom group for dynamic object',
+ `style` varchar(15) COMMENT 'Visual relationship between this form and its parent.',
+ `collapse_display` boolean NOT NULL DEFAULT FALSE COMMENT 'Will this group be in collapsed or expanded mode on initial display ?',
+ `help_pre` text COMMENT 'Description and/or help text to display before fields in form.',
+ `help_post` text COMMENT 'Description and/or help text to display after fields in form.',
+ `weight` int NOT NULL DEFAULT 1 COMMENT 'Controls display order when multiple extended property groups are setup for the same class.',
+ `is_active` boolean NOT NULL DEFAULT TRUE COMMENT 'Is this property active?',
+ `table_name` varchar(255) COMMENT 'Name of the table that holds the values for this group.',
+ `is_multiple` boolean NOT NULL DEFAULT FALSE COMMENT 'Does this group hold multiple values?',
+ `min_multiple` int unsigned COMMENT 'minimum number of multiple records (typically 0?)',
+ `max_multiple` int unsigned COMMENT 'maximum number of multiple records, if 0 - no max',
+ `collapse_adv_display` boolean NOT NULL DEFAULT FALSE COMMENT 'Will this group be in collapsed or expanded mode on advanced search display ?',
+ `created_id` int unsigned COMMENT 'FK to civicrm_contact, who created this custom group',
+ `created_date` datetime COMMENT 'Date and time this custom group was created.',
+ `is_reserved` boolean NOT NULL DEFAULT FALSE COMMENT 'Is this a reserved Custom Group?',
+ `is_public` boolean NOT NULL DEFAULT TRUE COMMENT 'Is this property public?',
+ `icon` varchar(255) DEFAULT NULL COMMENT 'crm-i icon class',
+ PRIMARY KEY (`id`),
+ UNIQUE INDEX `UI_title_extends`(`title`, `extends`),
+ UNIQUE INDEX `UI_name`(`name`)
+)
+ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
+CREATE TABLE `civicrm_dashboard` (
+ `id` int unsigned NOT NULL AUTO_INCREMENT,
+ `domain_id` int unsigned NOT NULL COMMENT 'Domain for dashboard',
+ `name` varchar(64) COMMENT 'Internal name of dashlet.',
+ `label` varchar(255) COMMENT 'dashlet title',
+ `url` varchar(255) COMMENT 'url in case of external dashlet',
+ `permission` varchar(255) COMMENT 'Permission for the dashlet',
+ `permission_operator` varchar(3) COMMENT 'Permission Operator',
+ `fullscreen_url` varchar(255) COMMENT 'fullscreen url for dashlet',
+ `is_active` boolean NOT NULL DEFAULT FALSE COMMENT 'Is this dashlet active?',
+ `is_reserved` boolean NOT NULL DEFAULT FALSE COMMENT 'Is this dashlet reserved?',
+ `cache_minutes` int unsigned NOT NULL DEFAULT 60 COMMENT 'Number of minutes to cache dashlet content in browser localStorage.',
+ `directive` varchar(255) COMMENT 'Element name of angular directive to invoke (lowercase hyphenated format)',
+ PRIMARY KEY (`id`)
+)
+ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
+CREATE TABLE `civicrm_discount` (
+ `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'primary key',
+ `entity_table` varchar(64) NOT NULL COMMENT 'physical tablename for entity being joined to discount, e.g. civicrm_event',
+ `entity_id` int unsigned NOT NULL COMMENT 'FK to entity table specified in entity_table column.',
+ `price_set_id` int unsigned NOT NULL COMMENT 'FK to civicrm_price_set',
+ `start_date` date COMMENT 'Date when discount starts.',
+ `end_date` date COMMENT 'Date when discount ends.',
PRIMARY KEY (`id`),
- UNIQUE INDEX `UI_label_custom_group_id`(label, custom_group_id),
- UNIQUE INDEX `UI_name_custom_group_id`(name, custom_group_id),
- CONSTRAINT FK_civicrm_custom_field_custom_group_id FOREIGN KEY (`custom_group_id`) REFERENCES `civicrm_custom_group`(`id`) ON DELETE CASCADE,
- CONSTRAINT FK_civicrm_custom_field_option_group_id FOREIGN KEY (`option_group_id`) REFERENCES `civicrm_option_group`(`id`) ON DELETE SET NULL
-)
-ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
-
--- /*******************************************************
--- *
--- * civicrm_domain
--- *
--- * Top-level hierarchy to support multi-org/domain installations. Define domains for multi-org installs, else all contacts belong to one domain.
--- *
--- *******************************************************/
+ INDEX `index_entity`(`entity_table`, `entity_id`),
+ INDEX `index_entity_option_id`(`entity_table`, `entity_id`, `price_set_id`)
+)
+ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
CREATE TABLE `civicrm_domain` (
`id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'Domain ID',
`name` varchar(64) COMMENT 'Name of Domain / Organization',
@@ -1479,47 +1116,61 @@ CREATE TABLE `civicrm_domain` (
`locales` text COMMENT 'list of locales supported by the current db state (NULL for single-lang install)',
`locale_custom_strings` text COMMENT 'Locale specific string overrides',
PRIMARY KEY (`id`),
- UNIQUE INDEX `UI_name`(name),
- CONSTRAINT FK_civicrm_domain_contact_id FOREIGN KEY (`contact_id`) REFERENCES `civicrm_contact`(`id`)
-)
-ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
-
--- /*******************************************************
--- *
--- * civicrm_email
--- *
--- * Email information for a specific location.
--- *
--- *******************************************************/
+ UNIQUE INDEX `UI_name`(`name`)
+)
+ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
CREATE TABLE `civicrm_email` (
`id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'Unique Email ID',
`contact_id` int unsigned COMMENT 'FK to Contact ID',
`location_type_id` int unsigned COMMENT 'Which Location does this email belong to.',
`email` varchar(254) COMMENT 'Email address',
- `is_primary` tinyint NOT NULL DEFAULT 0 COMMENT 'Is this the primary email address',
- `is_billing` tinyint NOT NULL DEFAULT 0 COMMENT 'Is this the billing?',
+ `is_primary` boolean NOT NULL DEFAULT FALSE COMMENT 'Is this the primary email address',
+ `is_billing` boolean NOT NULL DEFAULT FALSE COMMENT 'Is this the billing?',
`on_hold` int unsigned NOT NULL DEFAULT 0 COMMENT 'Implicit FK to civicrm_option_value where option_group = email_on_hold.',
- `is_bulkmail` tinyint NOT NULL DEFAULT 0 COMMENT 'Is this address for bulk mail ?',
+ `is_bulkmail` boolean NOT NULL DEFAULT FALSE COMMENT 'Is this address for bulk mail ?',
`hold_date` datetime COMMENT 'When the address went on bounce hold',
`reset_date` datetime COMMENT 'When the address bounce status was last reset',
`signature_text` text DEFAULT NULL COMMENT 'Text formatted signature for the email.',
`signature_html` text DEFAULT NULL COMMENT 'HTML formatted signature for the email.',
PRIMARY KEY (`id`),
- INDEX `index_location_type`(location_type_id),
- INDEX `UI_email`(email),
- INDEX `index_is_primary`(is_primary),
- INDEX `index_is_billing`(is_billing),
- CONSTRAINT FK_civicrm_email_contact_id FOREIGN KEY (`contact_id`) REFERENCES `civicrm_contact`(`id`) ON DELETE CASCADE
-)
-ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
-
--- /*******************************************************
--- *
--- * civicrm_file
--- *
--- * Data store for uploaded (attached) files (pointer to file on disk OR blob). Maybe be joined to entities via custom_value.file_id or entity_file table.
--- *
--- *******************************************************/
+ INDEX `index_location_type`(`location_type_id`),
+ INDEX `UI_email`(`email`),
+ INDEX `index_is_primary`(`is_primary`),
+ INDEX `index_is_billing`(`is_billing`)
+)
+ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
+CREATE TABLE `civicrm_entity_file` (
+ `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'primary key',
+ `entity_table` varchar(64) NOT NULL COMMENT 'physical tablename for entity being joined to file, e.g. civicrm_contact',
+ `entity_id` int unsigned NOT NULL COMMENT 'FK to entity table specified in entity_table column.',
+ `file_id` int unsigned NOT NULL COMMENT 'FK to civicrm_file',
+ PRIMARY KEY (`id`),
+ UNIQUE INDEX `UI_entity_id_entity_table_file_id`(`entity_id`, `entity_table`, `file_id`)
+)
+ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
+CREATE TABLE `civicrm_entity_tag` (
+ `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'primary key',
+ `entity_table` varchar(64) COMMENT 'physical tablename for entity being joined to file, e.g. civicrm_contact',
+ `entity_id` int unsigned NOT NULL COMMENT 'FK to entity table specified in entity_table column.',
+ `tag_id` int unsigned NOT NULL COMMENT 'FK to civicrm_tag',
+ PRIMARY KEY (`id`),
+ UNIQUE INDEX `UI_entity_id_entity_table_tag_id`(`entity_id`, `entity_table`, `tag_id`)
+)
+ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
+CREATE TABLE `civicrm_extension` (
+ `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'Local Extension ID',
+ `type` varchar(8) NOT NULL,
+ `full_name` varchar(255) NOT NULL COMMENT 'Fully qualified extension name',
+ `name` varchar(255) COMMENT 'Short name',
+ `label` varchar(255) COMMENT 'Short, printable name',
+ `file` varchar(255) COMMENT 'Primary PHP file',
+ `schema_version` varchar(63) COMMENT 'Revision code of the database schema; the format is module-defined',
+ `is_active` boolean DEFAULT TRUE COMMENT 'Is this extension active?',
+ PRIMARY KEY (`id`),
+ UNIQUE INDEX `UI_extension_full_name`(`full_name`),
+ INDEX `UI_extension_name`(`name`)
+)
+ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
CREATE TABLE `civicrm_file` (
`id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'Unique ID',
`file_type_id` int unsigned COMMENT 'Type of file (e.g. Transcript, Income Tax Return, etc). FK to civicrm_option_value.',
@@ -1529,88 +1180,78 @@ CREATE TABLE `civicrm_file` (
`description` varchar(255) COMMENT 'Additional descriptive text regarding this attachment (optional).',
`upload_date` datetime COMMENT 'Date and time that this attachment was uploaded or written to server.',
`created_id` int unsigned COMMENT 'FK to civicrm_contact, who uploaded this file',
- PRIMARY KEY (`id`),
- CONSTRAINT FK_civicrm_file_created_id FOREIGN KEY (`created_id`) REFERENCES `civicrm_contact`(`id`) ON DELETE SET NULL
+ PRIMARY KEY (`id`)
)
ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
-
--- /*******************************************************
--- *
--- * civicrm_im
--- *
--- * IM information for a specific location.
--- *
--- *******************************************************/
CREATE TABLE `civicrm_im` (
`id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'Unique IM ID',
`contact_id` int unsigned COMMENT 'FK to Contact ID',
`location_type_id` int unsigned COMMENT 'Which Location does this email belong to.',
`name` varchar(64) COMMENT 'IM screen name',
`provider_id` int unsigned COMMENT 'Which IM Provider does this screen name belong to.',
- `is_primary` tinyint NOT NULL DEFAULT 0 COMMENT 'Is this the primary IM for this contact and location.',
- `is_billing` tinyint NOT NULL DEFAULT 0 COMMENT 'Is this the billing?',
+ `is_primary` boolean NOT NULL DEFAULT FALSE COMMENT 'Is this the primary IM for this contact and location.',
+ `is_billing` boolean NOT NULL DEFAULT FALSE COMMENT 'Is this the billing?',
PRIMARY KEY (`id`),
- INDEX `index_location_type`(location_type_id),
- INDEX `UI_provider_id`(provider_id),
- INDEX `index_is_primary`(is_primary),
- INDEX `index_is_billing`(is_billing),
- CONSTRAINT FK_civicrm_im_contact_id FOREIGN KEY (`contact_id`) REFERENCES `civicrm_contact`(`id`) ON DELETE CASCADE
-)
-ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
-
--- /*******************************************************
--- *
--- * civicrm_job
--- *
--- * Scheduled job.
--- *
--- *******************************************************/
+ INDEX `index_location_type`(`location_type_id`),
+ INDEX `UI_provider_id`(`provider_id`),
+ INDEX `index_is_primary`(`is_primary`),
+ INDEX `index_is_billing`(`is_billing`)
+)
+ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
CREATE TABLE `civicrm_job` (
`id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'Job ID',
`domain_id` int unsigned NOT NULL COMMENT 'Which Domain is this scheduled job for',
- `run_frequency` varchar(8) DEFAULT "Daily" COMMENT 'Scheduled job run frequency.',
+ `run_frequency` varchar(8) DEFAULT 'Daily' COMMENT 'Scheduled job run frequency.',
`last_run` timestamp NULL DEFAULT NULL COMMENT 'When was this cron entry last run',
+ `last_run_end` timestamp NULL DEFAULT NULL COMMENT 'When did this cron entry last finish running',
`scheduled_run_date` timestamp NULL DEFAULT NULL COMMENT 'When is this cron entry scheduled to run',
`name` varchar(255) COMMENT 'Title of the job',
`description` varchar(255) COMMENT 'Description of the job',
`api_entity` varchar(255) COMMENT 'Entity of the job api call',
`api_action` varchar(255) COMMENT 'Action of the job api call',
`parameters` text COMMENT 'List of parameters to the command.',
- `is_active` tinyint NOT NULL DEFAULT 1 COMMENT 'Is this job active?',
- PRIMARY KEY (`id`),
- CONSTRAINT FK_civicrm_job_domain_id FOREIGN KEY (`domain_id`) REFERENCES `civicrm_domain`(`id`)
+ `is_active` boolean NOT NULL DEFAULT TRUE COMMENT 'Is this job active?',
+ PRIMARY KEY (`id`)
)
ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
-
--- /*******************************************************
--- *
--- * civicrm_job_log
--- *
--- * Scheduled jobs log.
--- *
--- *******************************************************/
CREATE TABLE `civicrm_job_log` (
`id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'Job log entry ID',
`domain_id` int unsigned NOT NULL COMMENT 'Which Domain is this scheduled job for',
- `run_time` timestamp COMMENT 'Log entry date',
+ `run_time` timestamp NULL COMMENT 'Log entry date',
`job_id` int unsigned COMMENT 'Pointer to job id',
`name` varchar(255) COMMENT 'Title of the job',
`command` varchar(255) COMMENT 'Full path to file containing job script',
`description` varchar(255) COMMENT 'Title line of log entry',
`data` longtext COMMENT 'Potential extended data for specific job run (e.g. tracebacks).',
+ PRIMARY KEY (`id`)
+)
+ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
+CREATE TABLE `civicrm_loc_block` (
+ `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'Unique ID',
+ `address_id` int unsigned,
+ `email_id` int unsigned,
+ `phone_id` int unsigned,
+ `im_id` int unsigned,
+ `address_2_id` int unsigned,
+ `email_2_id` int unsigned,
+ `phone_2_id` int unsigned,
+ `im_2_id` int unsigned,
+ PRIMARY KEY (`id`)
+)
+ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
+CREATE TABLE `civicrm_location_type` (
+ `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'Location Type ID',
+ `name` varchar(64) NOT NULL COMMENT 'Location Type Name.',
+ `display_name` varchar(64) NOT NULL COMMENT 'Location Type Display Name.',
+ `vcard_name` varchar(64) COMMENT 'vCard Location Type Name.',
+ `description` varchar(255) COMMENT 'Location Type Description.',
+ `is_reserved` boolean NOT NULL DEFAULT FALSE COMMENT 'Is this location type a predefined system location?',
+ `is_active` boolean NOT NULL DEFAULT TRUE COMMENT 'Is this property active?',
+ `is_default` boolean NOT NULL DEFAULT FALSE COMMENT 'Is this location type the default?',
PRIMARY KEY (`id`),
- CONSTRAINT FK_civicrm_job_log_domain_id FOREIGN KEY (`domain_id`) REFERENCES `civicrm_domain`(`id`),
- CONSTRAINT FK_civicrm_job_log_job_id FOREIGN KEY (`job_id`) REFERENCES `civicrm_job`(`id`) ON DELETE SET NULL
-)
-ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
-
--- /*******************************************************
--- *
--- * civicrm_log
--- *
--- * Log can be linked to any object in the application.
--- *
--- *******************************************************/
+ UNIQUE INDEX `UI_name`(`name`)
+)
+ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
CREATE TABLE `civicrm_log` (
`id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'Log ID',
`entity_table` varchar(64) NOT NULL COMMENT 'Name of table where item being referenced is stored.',
@@ -1619,23 +1260,14 @@ CREATE TABLE `civicrm_log` (
`modified_id` int unsigned COMMENT 'FK to Contact ID of person under whose credentials this data modification was made.',
`modified_date` datetime COMMENT 'When was the referenced entity created or modified or deleted.',
PRIMARY KEY (`id`),
- INDEX `index_entity`(entity_table, entity_id),
- CONSTRAINT FK_civicrm_log_modified_id FOREIGN KEY (`modified_id`) REFERENCES `civicrm_contact`(`id`) ON DELETE CASCADE
-)
-ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
-
--- /*******************************************************
--- *
--- * civicrm_mail_settings
--- *
--- * Various email accounts for use by CiviMail (and its processor)
--- *
--- *******************************************************/
+ INDEX `index_entity`(`entity_table`, `entity_id`)
+)
+ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
CREATE TABLE `civicrm_mail_settings` (
`id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'primary key',
`domain_id` int unsigned NOT NULL COMMENT 'Which Domain is this match entry for',
`name` varchar(255) COMMENT 'name of this group of settings',
- `is_default` tinyint NOT NULL DEFAULT 0 COMMENT 'whether this is the default set of settings for this domain',
+ `is_default` boolean NOT NULL DEFAULT FALSE COMMENT 'whether this is the default set of settings for this domain',
`domain` varchar(255) COMMENT 'email address domain (the part after @)',
`localpart` varchar(255) COMMENT 'optional local part (like civimail+ for addresses like civimail+s.1.2@example.com)',
`return_path` varchar(255) COMMENT 'contents of the Return-Path header',
@@ -1644,30 +1276,42 @@ CREATE TABLE `civicrm_mail_settings` (
`port` int unsigned COMMENT 'port to use when polling',
`username` varchar(255) COMMENT 'username to use when polling',
`password` varchar(255) COMMENT 'password to use when polling',
- `is_ssl` tinyint NOT NULL DEFAULT 0 COMMENT 'whether to use SSL or not',
+ `is_ssl` boolean NOT NULL DEFAULT FALSE COMMENT 'whether to use SSL or not',
`source` varchar(255) COMMENT 'folder to poll from when using IMAP, path to poll from when using Maildir, etc.',
`activity_status` varchar(255) COMMENT 'Name of status to use when creating email to activity.',
- `is_non_case_email_skipped` tinyint NOT NULL DEFAULT 0 COMMENT 'Enabling this option will have CiviCRM skip any emails that do not have the Case ID or Case Hash so that the system will only process emails that can be placed on case records. Any emails that are not processed will be moved to the ignored folder.',
- `is_contact_creation_disabled_if_no_match` tinyint NOT NULL DEFAULT 0,
- `is_active` tinyint NOT NULL DEFAULT 1 COMMENT 'Ignored for bounce processing, only for email-to-activity',
+ `is_non_case_email_skipped` boolean NOT NULL DEFAULT FALSE COMMENT 'Enabling this option will have CiviCRM skip any emails that do not have the Case ID or Case Hash so that the system will only process emails that can be placed on case records. Any emails that are not processed will be moved to the ignored folder.',
+ `is_contact_creation_disabled_if_no_match` boolean NOT NULL DEFAULT FALSE COMMENT 'If this option is enabled, CiviCRM will not create new contacts when filing emails.',
+ `is_active` boolean NOT NULL DEFAULT TRUE COMMENT 'Ignored for bounce processing, only for email-to-activity',
`activity_type_id` int unsigned COMMENT 'Implicit FK to civicrm_option_value where option_group = activity_type',
`campaign_id` int unsigned DEFAULT NULL COMMENT 'Foreign key to the Campaign.',
`activity_source` varchar(4) COMMENT 'Which email recipient to add as the activity source (from, to, cc, bcc).',
`activity_targets` varchar(16) COMMENT 'Which email recipients to add as the activity targets (from, to, cc, bcc).',
`activity_assignees` varchar(16) COMMENT 'Which email recipients to add as the activity assignees (from, to, cc, bcc).',
+ PRIMARY KEY (`id`)
+)
+ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
+CREATE TABLE `civicrm_managed` (
+ `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'Surrogate Key',
+ `module` varchar(255) NOT NULL COMMENT 'Name of the module which declared this object (soft FK to civicrm_extension.full_name)',
+ `name` varchar(255) NOT NULL COMMENT 'Symbolic name used by the module to identify the object',
+ `entity_type` varchar(64) NOT NULL COMMENT 'API entity type',
+ `entity_id` int unsigned COMMENT 'Soft foreign key to the referenced item.',
+ `cleanup` varchar(16) NOT NULL DEFAULT 'always' COMMENT 'Policy on when to cleanup entity (always, never, unused)',
+ `entity_modified_date` timestamp NULL DEFAULT NULL COMMENT 'When the managed entity was changed from its original settings.',
+ PRIMARY KEY (`id`),
+ INDEX `UI_managed_module_name`(`module`, `name`),
+ INDEX `UI_managed_entity`(`entity_type`, `entity_id`)
+)
+ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
+CREATE TABLE `civicrm_mapping` (
+ `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'Mapping ID',
+ `name` varchar(64) NOT NULL COMMENT 'Unique name of Mapping',
+ `description` varchar(255) COMMENT 'Description of Mapping.',
+ `mapping_type_id` int unsigned COMMENT 'Mapping Type',
PRIMARY KEY (`id`),
- CONSTRAINT FK_civicrm_mail_settings_domain_id FOREIGN KEY (`domain_id`) REFERENCES `civicrm_domain`(`id`) ON DELETE CASCADE,
- CONSTRAINT FK_civicrm_mail_settings_campaign_id FOREIGN KEY (`campaign_id`) REFERENCES `civicrm_campaign`(`id`) ON DELETE SET NULL
-)
-ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
-
--- /*******************************************************
--- *
--- * civicrm_mapping_field
--- *
--- * Individual field mappings for Mapping
--- *
--- *******************************************************/
+ UNIQUE INDEX `UI_name`(`name`)
+)
+ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
CREATE TABLE `civicrm_mapping_field` (
`id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'Mapping Field ID',
`mapping_id` int unsigned NOT NULL COMMENT 'Mapping to which this field belongs',
@@ -1680,23 +1324,12 @@ CREATE TABLE `civicrm_mapping_field` (
`website_type_id` int unsigned COMMENT 'Which type of website does this site belong',
`relationship_type_id` int unsigned COMMENT 'Relationship type, if required',
`relationship_direction` varchar(6),
- `grouping` int unsigned DEFAULT 1 COMMENT 'Used to group mapping_field records into related sets (e.g. for criteria sets in search builder\n mappings).',
+ `grouping` int unsigned DEFAULT 1 COMMENT 'Used to group mapping_field records into related sets (e.g. for criteria sets in search builder mappings).',
`operator` varchar(16) COMMENT 'SQL WHERE operator for search-builder mapping fields (search criteria).',
`value` varchar(255) COMMENT 'SQL WHERE value for search-builder mapping fields.',
- PRIMARY KEY (`id`),
- CONSTRAINT FK_civicrm_mapping_field_mapping_id FOREIGN KEY (`mapping_id`) REFERENCES `civicrm_mapping`(`id`) ON DELETE CASCADE,
- CONSTRAINT FK_civicrm_mapping_field_location_type_id FOREIGN KEY (`location_type_id`) REFERENCES `civicrm_location_type`(`id`),
- CONSTRAINT FK_civicrm_mapping_field_relationship_type_id FOREIGN KEY (`relationship_type_id`) REFERENCES `civicrm_relationship_type`(`id`)
-)
-ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
-
--- /*******************************************************
--- *
--- * civicrm_menu
--- *
--- * Table to store menu items for all civicrm components.
--- *
--- *******************************************************/
+ PRIMARY KEY (`id`)
+)
+ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
CREATE TABLE `civicrm_menu` (
`id` int unsigned NOT NULL AUTO_INCREMENT,
`domain_id` int unsigned NOT NULL COMMENT 'Which Domain is this menu item for',
@@ -1711,184 +1344,339 @@ CREATE TABLE `civicrm_menu` (
`return_url` varchar(255) COMMENT 'Url where a page should redirected to, if next url not known.',
`return_url_args` varchar(255) COMMENT 'Arguments to pass to return_url',
`component_id` int unsigned COMMENT 'Component that this menu item belongs to',
- `is_active` tinyint NOT NULL DEFAULT 1 COMMENT 'Is this menu item active?',
- `is_public` tinyint NOT NULL DEFAULT 0 COMMENT 'Is this menu accessible to the public?',
- `is_exposed` tinyint NOT NULL DEFAULT 1 COMMENT 'Is this menu exposed to the navigation system?',
- `is_ssl` tinyint NOT NULL DEFAULT 1 COMMENT 'Should this menu be exposed via SSL if enabled?',
+ `is_active` boolean NOT NULL DEFAULT TRUE COMMENT 'Is this menu item active?',
+ `is_public` boolean NOT NULL DEFAULT FALSE COMMENT 'Is this menu accessible to the public?',
+ `is_exposed` boolean NOT NULL DEFAULT TRUE COMMENT 'Is this menu exposed to the navigation system?',
+ `is_ssl` boolean NOT NULL DEFAULT TRUE COMMENT 'Should this menu be exposed via SSL if enabled?',
`weight` int NOT NULL DEFAULT 1 COMMENT 'Ordering of the menu items in various blocks.',
`type` int NOT NULL DEFAULT 1 COMMENT 'Drupal menu type.',
`page_type` int NOT NULL DEFAULT 1 COMMENT 'CiviCRM menu type.',
- `skipBreadcrumb` tinyint NOT NULL DEFAULT 0 COMMENT 'skip this url being exposed to breadcrumb',
+ `skipBreadcrumb` boolean NOT NULL DEFAULT FALSE COMMENT 'skip this url being exposed to breadcrumb',
`module_data` text COMMENT 'All other menu metadata not stored in other fields',
PRIMARY KEY (`id`),
- UNIQUE INDEX `UI_path_domain_id`(path, domain_id),
- CONSTRAINT FK_civicrm_menu_domain_id FOREIGN KEY (`domain_id`) REFERENCES `civicrm_domain`(`id`),
- CONSTRAINT FK_civicrm_menu_component_id FOREIGN KEY (`component_id`) REFERENCES `civicrm_component`(`id`)
-)
-ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
-
--- /*******************************************************
--- *
--- * civicrm_navigation
--- *
--- * Table to store navigation.
--- *
--- *******************************************************/
+ UNIQUE INDEX `UI_path_domain_id`(`path`, `domain_id`)
+)
+ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
+CREATE TABLE `civicrm_msg_template` (
+ `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'Message Template ID',
+ `msg_title` varchar(255) COMMENT 'Descriptive title of message',
+ `msg_subject` text COMMENT 'Subject for email message.',
+ `msg_text` longtext COMMENT 'Text formatted message',
+ `msg_html` longtext COMMENT 'HTML formatted message',
+ `is_active` boolean NOT NULL DEFAULT TRUE,
+ `workflow_id` int unsigned COMMENT 'a pseudo-FK to civicrm_option_value',
+ `workflow_name` varchar(255),
+ `is_default` boolean NOT NULL DEFAULT TRUE COMMENT 'is this the default message template for the workflow referenced by workflow_id?',
+ `is_reserved` boolean NOT NULL DEFAULT FALSE COMMENT 'is this the reserved message template which we ship for the workflow referenced by workflow_id?',
+ `is_sms` boolean NOT NULL DEFAULT FALSE COMMENT 'Is this message template used for sms?',
+ `pdf_format_id` int unsigned COMMENT 'a pseudo-FK to civicrm_option_value containing PDF Page Format.',
+ PRIMARY KEY (`id`)
+)
+ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
CREATE TABLE `civicrm_navigation` (
`id` int unsigned NOT NULL AUTO_INCREMENT,
`domain_id` int unsigned NOT NULL COMMENT 'Which Domain is this navigation item for',
`label` varchar(255) COMMENT 'Navigation Title',
`name` varchar(255) COMMENT 'Internal Name',
`url` varchar(255) COMMENT 'url in case of custom navigation link',
- `icon` varchar(255) NULL DEFAULT NULL COMMENT 'CSS class name for an icon',
+ `icon` varchar(255) DEFAULT NULL COMMENT 'CSS class name for an icon',
`permission` varchar(255) COMMENT 'Permission(s) needed to access menu item',
`permission_operator` varchar(3) COMMENT 'Operator to use if item has more than one permission',
`parent_id` int unsigned COMMENT 'Parent navigation item, used for grouping',
- `is_active` tinyint NOT NULL DEFAULT 1 COMMENT 'Is this navigation item active?',
+ `is_active` boolean NOT NULL DEFAULT TRUE COMMENT 'Is this navigation item active?',
`has_separator` tinyint DEFAULT 0 COMMENT 'Place a separator either before or after this menu item.',
`weight` int NOT NULL DEFAULT 0 COMMENT 'Ordering of the navigation items in various blocks.',
- PRIMARY KEY (`id`),
- CONSTRAINT FK_civicrm_navigation_domain_id FOREIGN KEY (`domain_id`) REFERENCES `civicrm_domain`(`id`),
- CONSTRAINT FK_civicrm_navigation_parent_id FOREIGN KEY (`parent_id`) REFERENCES `civicrm_navigation`(`id`) ON DELETE CASCADE
-)
-ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
-
--- /*******************************************************
--- *
--- * civicrm_note
--- *
--- * Notes can be linked to any object in the application.
--- *
--- *******************************************************/
+ PRIMARY KEY (`id`)
+)
+ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
CREATE TABLE `civicrm_note` (
`id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'Note ID',
`entity_table` varchar(64) NOT NULL COMMENT 'Name of table where item being referenced is stored.',
`entity_id` int unsigned NOT NULL COMMENT 'Foreign key to the referenced item.',
`note` text COMMENT 'Note and/or Comment.',
`contact_id` int unsigned COMMENT 'FK to Contact ID creator',
- `note_date` timestamp DEFAULT CURRENT_TIMESTAMP COMMENT 'Date attached to the note',
+ `note_date` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'Date attached to the note',
`created_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'When the note was created.',
- `modified_date` timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT 'When was this note last modified/edited',
+ `modified_date` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT 'When was this note last modified/edited',
`subject` varchar(255) COMMENT 'subject of note description',
- `privacy` varchar(255) NOT NULL DEFAULT 0 COMMENT 'Foreign Key to Note Privacy Level (which is an option value pair and hence an implicit FK)',
+ `privacy` varchar(255) NOT NULL DEFAULT '0' COMMENT 'Foreign Key to Note Privacy Level (which is an option value pair and hence an implicit FK)',
+ PRIMARY KEY (`id`),
+ INDEX `index_entity`(`entity_table`, `entity_id`)
+)
+ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
+CREATE TABLE `civicrm_openid` (
+ `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'Unique OpenID ID',
+ `contact_id` int unsigned COMMENT 'FK to Contact ID',
+ `location_type_id` int unsigned COMMENT 'Which Location does this email belong to.',
+ `openid` varchar(255) COMMENT 'the OpenID (or OpenID-style http://username.domain/) unique identifier for this contact mainly used for logging in to CiviCRM',
+ `allowed_to_login` boolean NOT NULL DEFAULT FALSE COMMENT 'Whether or not this user is allowed to login',
+ `is_primary` boolean NOT NULL DEFAULT FALSE COMMENT 'Is this the primary email for this contact and location.',
+ PRIMARY KEY (`id`),
+ INDEX `index_location_type`(`location_type_id`),
+ UNIQUE INDEX `UI_openid`(`openid`)
+)
+ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
+CREATE TABLE `civicrm_option_group` (
+ `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'Option Group ID',
+ `name` varchar(64) NOT NULL COMMENT 'Option group name. Used as selection key by class properties which lookup options in civicrm_option_value.',
+ `title` varchar(255) COMMENT 'Option Group title.',
+ `description` text COMMENT 'Option group description.',
+ `data_type` varchar(128) COMMENT 'Type of data stored by this option group.',
+ `is_reserved` boolean NOT NULL DEFAULT TRUE COMMENT 'Is this a predefined system option group (i.e. it can not be deleted)?',
+ `is_active` boolean NOT NULL DEFAULT TRUE COMMENT 'Is this option group active?',
+ `is_locked` boolean NOT NULL DEFAULT FALSE COMMENT 'A lock to remove the ability to add new options via the UI.',
+ `option_value_fields` varchar(128) DEFAULT 'name,label,description' COMMENT 'Which optional columns from the option_value table are in use by this group.',
+ PRIMARY KEY (`id`),
+ UNIQUE INDEX `UI_name`(`name`)
+)
+ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
+CREATE TABLE `civicrm_option_value` (
+ `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'Option ID',
+ `option_group_id` int unsigned NOT NULL COMMENT 'Group which this option belongs to.',
+ `label` varchar(512) NOT NULL COMMENT 'Option string as displayed to users - e.g. the label in an HTML OPTION tag.',
+ `value` varchar(512) NOT NULL COMMENT 'The actual value stored (as a foreign key) in the data record. Functions which need lookup option_value.title should use civicrm_option_value.option_group_id plus civicrm_option_value.value as the key.',
+ `name` varchar(255) COMMENT 'Stores a fixed (non-translated) name for this option value. Lookup functions should use the name as the key for the option value row.',
+ `grouping` varchar(255) COMMENT 'Use to sort and/or set display properties for sub-set(s) of options within an option group. EXAMPLE: Use for college_interest field, to differentiate partners from non-partners.',
+ `filter` int unsigned DEFAULT 0 COMMENT 'Bitwise logic can be used to create subsets of options within an option_group for different uses.',
+ `is_default` boolean DEFAULT FALSE COMMENT 'Is this the default option for the group?',
+ `weight` int unsigned NOT NULL COMMENT 'Controls display sort order.',
+ `description` text COMMENT 'Optional description.',
+ `is_optgroup` boolean DEFAULT FALSE COMMENT 'Is this row simply a display header? Expected usage is to render these as OPTGROUP tags within a SELECT field list of options?',
+ `is_reserved` boolean DEFAULT FALSE COMMENT 'Is this a predefined system object?',
+ `is_active` boolean DEFAULT TRUE COMMENT 'Is this option active?',
+ `component_id` int unsigned COMMENT 'Component that this option value belongs/caters to.',
+ `domain_id` int unsigned COMMENT 'Which Domain is this option value for',
+ `visibility_id` int unsigned DEFAULT NULL,
+ `icon` varchar(255) DEFAULT NULL COMMENT 'crm-i icon class',
+ `color` varchar(255) DEFAULT NULL COMMENT 'Hex color value e.g. #ffffff',
+ PRIMARY KEY (`id`),
+ INDEX `index_option_group_id_value`(`value`(128), `option_group_id`),
+ INDEX `index_option_group_id_name`(`name`(128), `option_group_id`)
+)
+ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
+CREATE TABLE `civicrm_phone` (
+ `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'Unique Phone ID',
+ `contact_id` int unsigned COMMENT 'FK to Contact ID',
+ `location_type_id` int unsigned COMMENT 'Which Location does this phone belong to.',
+ `is_primary` boolean NOT NULL DEFAULT FALSE COMMENT 'Is this the primary phone for this contact and location.',
+ `is_billing` boolean NOT NULL DEFAULT FALSE COMMENT 'Is this the billing?',
+ `mobile_provider_id` int unsigned COMMENT 'Which Mobile Provider does this phone belong to.',
+ `phone` varchar(32) COMMENT 'Complete phone number.',
+ `phone_ext` varchar(16) COMMENT 'Optional extension for a phone number.',
+ `phone_numeric` varchar(32) COMMENT 'Phone number stripped of all whitespace, letters, and punctuation.',
+ `phone_type_id` int unsigned COMMENT 'Which type of phone does this number belongs.',
+ PRIMARY KEY (`id`),
+ INDEX `index_location_type`(`location_type_id`),
+ INDEX `index_is_primary`(`is_primary`),
+ INDEX `index_is_billing`(`is_billing`),
+ INDEX `UI_mobile_provider_id`(`mobile_provider_id`),
+ INDEX `index_phone_numeric`(`phone_numeric`)
+)
+ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
+CREATE TABLE `civicrm_preferences_date` (
+ `id` int unsigned NOT NULL AUTO_INCREMENT,
+ `name` varchar(64) NOT NULL COMMENT 'The meta name for this date (fixed in code)',
+ `description` varchar(255) COMMENT 'Description of this date type.',
+ `start` int NOT NULL COMMENT 'The start offset relative to current year',
+ `end` int NOT NULL COMMENT 'The end offset relative to current year, can be negative',
+ `date_format` varchar(64) COMMENT 'The date type',
+ `time_format` varchar(64) COMMENT 'time format',
+ PRIMARY KEY (`id`),
+ INDEX `index_name`(`name`)
+)
+ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
+CREATE TABLE `civicrm_prevnext_cache` (
+ `id` int unsigned NOT NULL AUTO_INCREMENT,
+ `entity_table` varchar(64) COMMENT 'physical tablename for entity being joined to discount, e.g. civicrm_event',
+ `entity_id1` int unsigned NOT NULL COMMENT 'FK to entity table specified in entity_table column.',
+ `entity_id2` int unsigned COMMENT 'FK to entity table specified in entity_table column.',
+ `cachekey` varchar(255) COMMENT 'Unique path name for cache element of the searched item',
+ `data` longtext COMMENT 'cached snapshot of the serialized data',
+ `is_selected` boolean NOT NULL DEFAULT FALSE,
+ PRIMARY KEY (`id`),
+ INDEX `index_all`(`cachekey`, `entity_id1`, `entity_id2`, `entity_table`, `is_selected`)
+)
+ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
+CREATE TABLE `civicrm_print_label` (
+ `id` int unsigned NOT NULL AUTO_INCREMENT,
+ `title` varchar(255) COMMENT 'User title for this label layout',
+ `name` varchar(255) COMMENT 'variable name/programmatic handle for this field.',
+ `description` text COMMENT 'Description of this label layout',
+ `label_format_name` varchar(255) COMMENT 'This refers to name column of civicrm_option_value row in name_badge option group',
+ `label_type_id` int unsigned COMMENT 'Implicit FK to civicrm_option_value row in NEW label_type option group',
+ `data` longtext COMMENT 'contains json encode configurations options',
+ `is_default` boolean NOT NULL DEFAULT TRUE COMMENT 'Is this default?',
+ `is_active` boolean NOT NULL DEFAULT TRUE COMMENT 'Is this option active?',
+ `is_reserved` boolean NOT NULL DEFAULT TRUE COMMENT 'Is this reserved label?',
+ `created_id` int unsigned COMMENT 'FK to civicrm_contact, who created this label layout',
+ PRIMARY KEY (`id`)
+)
+ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
+CREATE TABLE `civicrm_recurring_entity` (
+ `id` int unsigned NOT NULL AUTO_INCREMENT,
+ `parent_id` int unsigned NOT NULL COMMENT 'Recurring Entity Parent ID',
+ `entity_id` int unsigned COMMENT 'Recurring Entity Child ID',
+ `entity_table` varchar(64) NOT NULL COMMENT 'Physical tablename for entity, e.g. civicrm_event',
+ `mode` boolean NOT NULL DEFAULT TRUE COMMENT '1-this entity, 2-this and the following entities, 3-all the entities',
+ PRIMARY KEY (`id`)
+)
+ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
+CREATE TABLE `civicrm_setting` (
+ `id` int unsigned NOT NULL AUTO_INCREMENT,
+ `name` varchar(255) COMMENT 'Unique name for setting',
+ `value` text COMMENT 'data associated with this group / name combo',
+ `domain_id` int unsigned DEFAULT NULL COMMENT 'Which Domain does this setting belong to',
+ `contact_id` int unsigned COMMENT 'FK to Contact ID if the setting is localized to a contact',
+ `is_domain` boolean NOT NULL DEFAULT FALSE COMMENT 'Is this setting per-domain or global?',
+ `component_id` int unsigned COMMENT 'Component that this menu item belongs to',
+ `created_date` datetime COMMENT 'When was the setting created',
+ `created_id` int unsigned COMMENT 'FK to civicrm_contact, who created this setting',
+ PRIMARY KEY (`id`),
+ UNIQUE INDEX `index_domain_contact_name`(`domain_id`, `contact_id`, `name`)
+)
+ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
+CREATE TABLE `civicrm_state_province` (
+ `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'State/Province ID',
+ `name` varchar(64) COMMENT 'Name of State/Province',
+ `abbreviation` varchar(4) COMMENT '2-4 Character Abbreviation of State/Province',
+ `country_id` int unsigned NOT NULL COMMENT 'ID of Country that State/Province belong',
+ `is_active` boolean NOT NULL DEFAULT TRUE COMMENT 'Is this StateProvince active?',
+ PRIMARY KEY (`id`),
+ UNIQUE INDEX `UI_name_country_id`(`name`, `country_id`)
+)
+ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
+CREATE TABLE `civicrm_status_pref` (
+ `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'Unique Status Preference ID',
+ `domain_id` int unsigned NOT NULL COMMENT 'Which Domain is this Status Preference for',
+ `name` varchar(255) NOT NULL COMMENT 'Name of the status check this preference references.',
+ `hush_until` date DEFAULT NULL COMMENT 'expires ignore_severity. NULL never hushes.',
+ `ignore_severity` int unsigned DEFAULT 1 COMMENT 'Hush messages up to and including this severity.',
+ `prefs` varchar(255) COMMENT 'These settings are per-check, and can\'t be compared across checks.',
+ `check_info` varchar(255) COMMENT 'These values are per-check, and can\'t be compared across checks.',
+ `is_active` boolean NOT NULL DEFAULT TRUE COMMENT 'Is this status check active?',
+ PRIMARY KEY (`id`),
+ INDEX `UI_status_pref_name`(`name`)
+)
+ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
+CREATE TABLE `civicrm_system_log` (
+ `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'Primary key ID',
+ `message` varchar(128) NOT NULL COMMENT 'Standardized message',
+ `context` longtext COMMENT 'JSON encoded data',
+ `level` varchar(9) DEFAULT 'info' COMMENT 'error level per PSR3',
+ `timestamp` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'Timestamp of when event occurred.',
+ `contact_id` int unsigned COMMENT 'Optional Contact ID that created the log. Not an FK as we keep this regardless',
+ `hostname` varchar(128) COMMENT 'Optional Name of logging host',
+ PRIMARY KEY (`id`)
+)
+ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
+CREATE TABLE `civicrm_tag` (
+ `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'Tag ID',
+ `name` varchar(64) NOT NULL COMMENT 'Unique machine name',
+ `label` varchar(64) NOT NULL COMMENT 'User-facing tag name',
+ `description` varchar(255) COMMENT 'Optional verbose description of the tag.',
+ `parent_id` int unsigned DEFAULT NULL COMMENT 'Optional parent id for this tag.',
+ `is_selectable` boolean NOT NULL DEFAULT TRUE COMMENT 'Is this tag selectable / displayed',
+ `is_reserved` boolean NOT NULL DEFAULT FALSE,
+ `is_tagset` boolean NOT NULL DEFAULT FALSE,
+ `used_for` varchar(64) DEFAULT NULL,
+ `created_id` int unsigned COMMENT 'FK to civicrm_contact, who created this tag',
+ `color` varchar(255) DEFAULT NULL COMMENT 'Hex color value e.g. #ffffff',
+ `created_date` datetime DEFAULT CURRENT_TIMESTAMP COMMENT 'Date and time that tag was created.',
+ PRIMARY KEY (`id`),
+ UNIQUE INDEX `UI_name`(`name`)
+)
+ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
+CREATE TABLE `civicrm_timezone` (
+ `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'Timezone ID',
+ `name` varchar(64) COMMENT 'Timezone full name',
+ `abbreviation` char(3) COMMENT 'ISO Code for timezone abbreviation',
+ `gmt` varchar(64) COMMENT 'GMT name of the timezone',
+ `offset` int,
+ `country_id` int unsigned NOT NULL COMMENT 'Country ID',
+ PRIMARY KEY (`id`)
+)
+ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
+CREATE TABLE `civicrm_translation` (
+ `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'Unique String ID',
+ `entity_table` varchar(64) NOT NULL COMMENT 'Table where referenced item is stored',
+ `entity_field` varchar(64) NOT NULL COMMENT 'Field where referenced item is stored',
+ `entity_id` int NOT NULL COMMENT 'ID of the relevant entity.',
+ `language` varchar(5) NOT NULL COMMENT 'Relevant language',
+ `status_id` tinyint NOT NULL DEFAULT 1 COMMENT 'Specify whether the string is active, draft, etc',
+ `string` longtext NOT NULL COMMENT 'Translated string',
+ PRIMARY KEY (`id`),
+ INDEX `index_entity_lang`(`entity_id`, `entity_table`, `language`)
+)
+ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
+CREATE TABLE `civicrm_uf_field` (
+ `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'Unique table ID',
+ `uf_group_id` int unsigned NOT NULL COMMENT 'Which form does this field belong to.',
+ `field_name` varchar(64) NOT NULL COMMENT 'Name for CiviCRM field which is being exposed for sharing.',
+ `is_active` boolean NOT NULL DEFAULT TRUE COMMENT 'Is this field currently shareable? If FALSE, hide the field for all sharing contexts.',
+ `is_view` boolean NOT NULL DEFAULT FALSE COMMENT 'the field is view only and not editable in user forms.',
+ `is_required` boolean NOT NULL DEFAULT FALSE COMMENT 'Is this field required when included in a user or registration form?',
+ `weight` int NOT NULL DEFAULT 1 COMMENT 'Controls field display order when user framework fields are displayed in registration and account editing forms.',
+ `help_post` text COMMENT 'Description and/or help text to display after this field.',
+ `help_pre` text COMMENT 'Description and/or help text to display before this field.',
+ `visibility` varchar(32) DEFAULT 'User and User Admin Only' COMMENT 'In what context(s) is this field visible.',
+ `in_selector` boolean NOT NULL DEFAULT FALSE COMMENT 'Is this field included as a column in the selector table?',
+ `is_searchable` boolean NOT NULL DEFAULT FALSE COMMENT 'Is this field included search form of profile?',
+ `location_type_id` int unsigned COMMENT 'Location type of this mapping, if required',
+ `phone_type_id` int unsigned COMMENT 'Phone Type ID, if required',
+ `website_type_id` int unsigned COMMENT 'Website Type ID, if required',
+ `label` varchar(255) NOT NULL COMMENT 'To save label for fields.',
+ `field_type` varchar(255) COMMENT 'This field saves field type (ie individual,household.. field etc).',
+ `is_reserved` boolean NOT NULL DEFAULT FALSE COMMENT 'Is this field reserved for use by some other CiviCRM functionality?',
+ `is_multi_summary` boolean NOT NULL DEFAULT FALSE COMMENT 'Include in multi-record listing?',
+ PRIMARY KEY (`id`),
+ INDEX `IX_website_type_id`(`website_type_id`)
+)
+ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
+CREATE TABLE `civicrm_uf_group` (
+ `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'Unique table ID',
+ `name` varchar(64) NOT NULL COMMENT 'Name of the UF group for directly addressing it in the codebase',
+ `is_active` boolean NOT NULL DEFAULT TRUE COMMENT 'Is this profile currently active? If FALSE, hide all related fields for all sharing contexts.',
+ `group_type` varchar(255) COMMENT 'Comma separated list of the type(s) of profile fields.',
+ `title` varchar(64) NOT NULL COMMENT 'Form title.',
+ `frontend_title` varchar(64) NOT NULL COMMENT 'Profile Form Public title',
+ `description` text COMMENT 'Optional verbose description of the profile.',
+ `help_pre` text COMMENT 'Description and/or help text to display before fields in form.',
+ `help_post` text COMMENT 'Description and/or help text to display after fields in form.',
+ `limit_listings_group_id` int unsigned COMMENT 'Group id, foreign key from civicrm_group',
+ `post_url` varchar(255) COMMENT 'Redirect to URL on submit.',
+ `add_to_group_id` int unsigned COMMENT 'foreign key to civicrm_group_id',
+ `add_captcha` boolean NOT NULL DEFAULT FALSE COMMENT 'Should a CAPTCHA widget be included this Profile form.',
+ `is_map` boolean NOT NULL DEFAULT FALSE COMMENT 'Do we want to map results from this profile.',
+ `is_edit_link` boolean NOT NULL DEFAULT FALSE COMMENT 'Should edit link display in profile selector',
+ `is_uf_link` boolean NOT NULL DEFAULT FALSE COMMENT 'Should we display a link to the website profile in profile selector',
+ `is_update_dupe` boolean NOT NULL DEFAULT FALSE COMMENT 'Should we update the contact record if we find a duplicate',
+ `cancel_url` varchar(255) COMMENT 'Redirect to URL when Cancel button clicked.',
+ `is_cms_user` boolean NOT NULL DEFAULT FALSE COMMENT 'Should we create a cms user for this profile',
+ `notify` text,
+ `is_reserved` boolean NOT NULL DEFAULT FALSE COMMENT 'Is this group reserved for use by some other CiviCRM functionality?',
+ `created_id` int unsigned COMMENT 'FK to civicrm_contact, who created this UF group',
+ `created_date` datetime COMMENT 'Date and time this UF group was created.',
+ `is_proximity_search` boolean NOT NULL DEFAULT FALSE COMMENT 'Should we include proximity search feature in this profile search form?',
+ `cancel_button_text` varchar(64) DEFAULT NULL COMMENT 'Custom Text to display on the Cancel button when used in create or edit mode',
+ `submit_button_text` varchar(64) DEFAULT NULL COMMENT 'Custom Text to display on the submit button on profile edit/create screens',
+ `add_cancel_button` boolean NOT NULL DEFAULT TRUE COMMENT 'Should a Cancel button be included in this Profile form.',
PRIMARY KEY (`id`),
- INDEX `index_entity`(entity_table, entity_id),
- CONSTRAINT FK_civicrm_note_contact_id FOREIGN KEY (`contact_id`) REFERENCES `civicrm_contact`(`id`) ON DELETE SET NULL
+ UNIQUE INDEX `UI_name`(`name`)
)
ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
-
--- /*******************************************************
--- *
--- * civicrm_option_value
--- *
--- *******************************************************/
-CREATE TABLE `civicrm_option_value` (
- `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'Option ID',
- `option_group_id` int unsigned NOT NULL COMMENT 'Group which this option belongs to.',
- `label` varchar(512) NOT NULL COMMENT 'Option string as displayed to users - e.g. the label in an HTML OPTION tag.',
- `value` varchar(512) NOT NULL COMMENT 'The actual value stored (as a foreign key) in the data record. Functions which need lookup option_value.title should use civicrm_option_value.option_group_id plus civicrm_option_value.value as the key.',
- `name` varchar(255) COMMENT 'Stores a fixed (non-translated) name for this option value. Lookup functions should use the name as the key for the option value row.',
- `grouping` varchar(255) COMMENT 'Use to sort and/or set display properties for sub-set(s) of options within an option group. EXAMPLE: Use for college_interest field, to differentiate partners from non-partners.',
- `filter` int unsigned DEFAULT 0 COMMENT 'Bitwise logic can be used to create subsets of options within an option_group for different uses.',
- `is_default` tinyint DEFAULT 0 COMMENT 'Is this the default option for the group?',
- `weight` int unsigned NOT NULL COMMENT 'Controls display sort order.',
- `description` text COMMENT 'Optional description.',
- `is_optgroup` tinyint DEFAULT 0 COMMENT 'Is this row simply a display header? Expected usage is to render these as OPTGROUP tags within a SELECT field list of options?',
- `is_reserved` tinyint DEFAULT 0 COMMENT 'Is this a predefined system object?',
- `is_active` tinyint DEFAULT 1 COMMENT 'Is this option active?',
- `component_id` int unsigned COMMENT 'Component that this option value belongs/caters to.',
- `domain_id` int unsigned COMMENT 'Which Domain is this option value for',
- `visibility_id` int unsigned DEFAULT NULL,
- `icon` varchar(255) DEFAULT NULL COMMENT 'crm-i icon class',
- `color` varchar(255) DEFAULT NULL COMMENT 'Hex color value e.g. #ffffff',
- PRIMARY KEY (`id`),
- INDEX `index_option_group_id_value`(value(128), option_group_id),
- INDEX `index_option_group_id_name`(name(128), option_group_id),
- CONSTRAINT FK_civicrm_option_value_option_group_id FOREIGN KEY (`option_group_id`) REFERENCES `civicrm_option_group`(`id`) ON DELETE CASCADE,
- CONSTRAINT FK_civicrm_option_value_component_id FOREIGN KEY (`component_id`) REFERENCES `civicrm_component`(`id`),
- CONSTRAINT FK_civicrm_option_value_domain_id FOREIGN KEY (`domain_id`) REFERENCES `civicrm_domain`(`id`)
-)
-ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
-
--- /*******************************************************
--- *
--- * civicrm_phone
--- *
--- * Phone information for a specific location.
--- *
--- *******************************************************/
-CREATE TABLE `civicrm_phone` (
- `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'Unique Phone ID',
- `contact_id` int unsigned COMMENT 'FK to Contact ID',
- `location_type_id` int unsigned COMMENT 'Which Location does this phone belong to.',
- `is_primary` tinyint NOT NULL DEFAULT 0 COMMENT 'Is this the primary phone for this contact and location.',
- `is_billing` tinyint NOT NULL DEFAULT 0 COMMENT 'Is this the billing?',
- `mobile_provider_id` int unsigned COMMENT 'Which Mobile Provider does this phone belong to.',
- `phone` varchar(32) COMMENT 'Complete phone number.',
- `phone_ext` varchar(16) COMMENT 'Optional extension for a phone number.',
- `phone_numeric` varchar(32) COMMENT 'Phone number stripped of all whitespace, letters, and punctuation.',
- `phone_type_id` int unsigned COMMENT 'Which type of phone does this number belongs.',
- PRIMARY KEY (`id`),
- INDEX `index_location_type`(location_type_id),
- INDEX `index_is_primary`(is_primary),
- INDEX `index_is_billing`(is_billing),
- INDEX `UI_mobile_provider_id`(mobile_provider_id),
- INDEX `index_phone_numeric`(phone_numeric),
- CONSTRAINT FK_civicrm_phone_contact_id FOREIGN KEY (`contact_id`) REFERENCES `civicrm_contact`(`id`) ON DELETE CASCADE
-)
-ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
-
--- /*******************************************************
--- *
--- * civicrm_state_province
--- *
--- *******************************************************/
-CREATE TABLE `civicrm_state_province` (
- `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'State/Province ID',
- `name` varchar(64) COMMENT 'Name of State/Province',
- `abbreviation` varchar(4) COMMENT '2-4 Character Abbreviation of State/Province',
- `country_id` int unsigned NOT NULL COMMENT 'ID of Country that State/Province belong',
- `is_active` tinyint NOT NULL DEFAULT 1 COMMENT 'Is this StateProvince active?',
- PRIMARY KEY (`id`),
- UNIQUE INDEX `UI_name_country_id`(name, country_id),
- CONSTRAINT FK_civicrm_state_province_country_id FOREIGN KEY (`country_id`) REFERENCES `civicrm_country`(`id`)
-)
-ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
-
--- /*******************************************************
--- *
--- * civicrm_tag
--- *
--- * Provides support for flat or hierarchical classification of various types of entities (contacts, groups, actions...).
--- *
--- *******************************************************/
-CREATE TABLE `civicrm_tag` (
- `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'Tag ID',
- `name` varchar(64) NOT NULL COMMENT 'Unique machine name',
- `label` varchar(64) NOT NULL COMMENT 'User-facing tag name',
- `description` varchar(255) COMMENT 'Optional verbose description of the tag.',
- `parent_id` int unsigned DEFAULT NULL COMMENT 'Optional parent id for this tag.',
- `is_selectable` tinyint NOT NULL DEFAULT 1 COMMENT 'Is this tag selectable / displayed',
- `is_reserved` tinyint NOT NULL DEFAULT 0,
- `is_tagset` tinyint NOT NULL DEFAULT 0,
- `used_for` varchar(64) DEFAULT NULL,
- `created_id` int unsigned COMMENT 'FK to civicrm_contact, who created this tag',
- `color` varchar(255) DEFAULT NULL COMMENT 'Hex color value e.g. #ffffff',
- `created_date` datetime DEFAULT CURRENT_TIMESTAMP COMMENT 'Date and time that tag was created.',
+CREATE TABLE `civicrm_uf_join` (
+ `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'Unique table ID',
+ `is_active` boolean NOT NULL DEFAULT TRUE COMMENT 'Is this join currently active?',
+ `module` varchar(64) NOT NULL COMMENT 'Module which owns this uf_join instance, e.g. User Registration, CiviDonate, etc.',
+ `entity_table` varchar(64) COMMENT 'Name of table where item being referenced is stored. Modules which only need a single collection of uf_join instances may choose not to populate entity_table and entity_id.',
+ `entity_id` int unsigned COMMENT 'Foreign key to the referenced item.',
+ `weight` int NOT NULL DEFAULT 1 COMMENT 'Controls display order when multiple user framework groups are setup for concurrent display.',
+ `uf_group_id` int unsigned NOT NULL COMMENT 'Which form does this field belong to.',
+ `module_data` longtext COMMENT 'Json serialized array of data used by the ufjoin.module',
PRIMARY KEY (`id`),
- UNIQUE INDEX `UI_name`(name),
- CONSTRAINT FK_civicrm_tag_parent_id FOREIGN KEY (`parent_id`) REFERENCES `civicrm_tag`(`id`),
- CONSTRAINT FK_civicrm_tag_created_id FOREIGN KEY (`created_id`) REFERENCES `civicrm_contact`(`id`) ON DELETE SET NULL
-)
-ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
-
--- /*******************************************************
--- *
--- * civicrm_uf_match
--- *
--- * The mapping from an user framework (UF) object to a CRM object.
--- *
--- *******************************************************/
+ INDEX `index_entity`(`entity_table`, `entity_id`)
+)
+ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
CREATE TABLE `civicrm_uf_match` (
`id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'System generated ID.',
`domain_id` int unsigned NOT NULL COMMENT 'Which Domain is this match entry for',
@@ -1897,22 +1685,12 @@ CREATE TABLE `civicrm_uf_match` (
`contact_id` int unsigned COMMENT 'FK to Contact ID',
`language` varchar(5) COMMENT 'UI language preferred by the given user/contact',
PRIMARY KEY (`id`),
- INDEX `I_civicrm_uf_match_uf_id`(uf_id),
- INDEX `UI_uf_match_uf_id_domain_id`(uf_id, domain_id),
- UNIQUE INDEX `UI_uf_name_domain_id`(uf_name, domain_id),
- UNIQUE INDEX `UI_contact_domain_id`(contact_id, domain_id),
- CONSTRAINT FK_civicrm_uf_match_domain_id FOREIGN KEY (`domain_id`) REFERENCES `civicrm_domain`(`id`),
- CONSTRAINT FK_civicrm_uf_match_contact_id FOREIGN KEY (`contact_id`) REFERENCES `civicrm_contact`(`id`) ON DELETE CASCADE
-)
-ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
-
--- /*******************************************************
--- *
--- * civicrm_user_job
--- *
--- * Tracking for user jobs (eg. imports).
--- *
--- *******************************************************/
+ INDEX `I_civicrm_uf_match_uf_id`(`uf_id`),
+ INDEX `UI_uf_match_uf_id_domain_id`(`uf_id`, `domain_id`),
+ UNIQUE INDEX `UI_uf_name_domain_id`(`uf_name`, `domain_id`),
+ UNIQUE INDEX `UI_contact_domain_id`(`contact_id`, `domain_id`)
+)
+ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
CREATE TABLE `civicrm_user_job` (
`id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'Job ID',
`name` varchar(64) COMMENT 'Unique name for job.',
@@ -1925,1143 +1703,428 @@ CREATE TABLE `civicrm_user_job` (
`job_type` varchar(64) NOT NULL COMMENT 'Name of the job type, which will allow finding the correct class',
`queue_id` int unsigned COMMENT 'FK to Queue',
`metadata` text COMMENT 'Data pertaining to job configuration',
- `is_template` tinyint NOT NULL DEFAULT 0 COMMENT 'Is this a template configuration (for use by other/future jobs)?',
- PRIMARY KEY (`id`),
- UNIQUE INDEX `UI_name`(name),
- CONSTRAINT FK_civicrm_user_job_created_id FOREIGN KEY (`created_id`) REFERENCES `civicrm_contact`(`id`) ON DELETE SET NULL,
- CONSTRAINT FK_civicrm_user_job_queue_id FOREIGN KEY (`queue_id`) REFERENCES `civicrm_queue`(`id`) ON DELETE SET NULL
-)
-ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
-
--- /*******************************************************
--- *
--- * civicrm_timezone
--- *
--- *******************************************************/
-CREATE TABLE `civicrm_timezone` (
- `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'Timezone ID',
- `name` varchar(64) COMMENT 'Timezone full name',
- `abbreviation` char(3) COMMENT 'ISO Code for timezone abbreviation',
- `gmt` varchar(64) COMMENT 'GMT name of the timezone',
- `offset` int,
- `country_id` int unsigned NOT NULL COMMENT 'Country ID',
+ `is_template` boolean NOT NULL DEFAULT FALSE COMMENT 'Is this a template configuration (for use by other/future jobs)?',
PRIMARY KEY (`id`),
- CONSTRAINT FK_civicrm_timezone_country_id FOREIGN KEY (`country_id`) REFERENCES `civicrm_country`(`id`)
+ UNIQUE INDEX `UI_name`(`name`)
)
ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
-
--- /*******************************************************
--- *
--- * civicrm_openid
--- *
--- * OpenID information for a specific location.
--- *
--- *******************************************************/
-CREATE TABLE `civicrm_openid` (
- `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'Unique OpenID ID',
- `contact_id` int unsigned COMMENT 'FK to Contact ID',
- `location_type_id` int unsigned COMMENT 'Which Location does this email belong to.',
- `openid` varchar(255) COMMENT 'the OpenID (or OpenID-style http://username.domain/) unique identifier for this contact mainly used for logging in to CiviCRM',
- `allowed_to_login` tinyint NOT NULL DEFAULT 0 COMMENT 'Whether or not this user is allowed to login',
- `is_primary` tinyint NOT NULL DEFAULT 0 COMMENT 'Is this the primary email for this contact and location.',
- PRIMARY KEY (`id`),
- INDEX `index_location_type`(location_type_id),
- UNIQUE INDEX `UI_openid`(openid),
- CONSTRAINT FK_civicrm_openid_contact_id FOREIGN KEY (`contact_id`) REFERENCES `civicrm_contact`(`id`) ON DELETE CASCADE
-)
-ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
-
--- /*******************************************************
--- *
--- * civicrm_website
--- *
--- * Website information for a specific location.
--- *
--- *******************************************************/
CREATE TABLE `civicrm_website` (
`id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'Unique Website ID',
`contact_id` int unsigned COMMENT 'FK to Contact ID',
`url` varchar(255) COMMENT 'Website',
`website_type_id` int unsigned COMMENT 'Which Website type does this website belong to.',
PRIMARY KEY (`id`),
- INDEX `UI_website_type_id`(website_type_id),
- CONSTRAINT FK_civicrm_website_contact_id FOREIGN KEY (`contact_id`) REFERENCES `civicrm_contact`(`id`) ON DELETE CASCADE
-)
-ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
-
--- /*******************************************************
--- *
--- * civicrm_setting
--- *
--- * Table to store civicrm settings for civicrm core and components.
--- *
--- *******************************************************/
-CREATE TABLE `civicrm_setting` (
- `id` int unsigned NOT NULL AUTO_INCREMENT,
- `name` varchar(255) COMMENT 'Unique name for setting',
- `value` text COMMENT 'data associated with this group / name combo',
- `domain_id` int unsigned DEFAULT NULL COMMENT 'Which Domain does this setting belong to',
- `contact_id` int unsigned COMMENT 'FK to Contact ID if the setting is localized to a contact',
- `is_domain` tinyint NOT NULL DEFAULT 0 COMMENT 'Is this setting per-domain or global?',
- `component_id` int unsigned COMMENT 'Component that this menu item belongs to',
- `created_date` datetime COMMENT 'When was the setting created',
- `created_id` int unsigned COMMENT 'FK to civicrm_contact, who created this setting',
- PRIMARY KEY (`id`),
- UNIQUE INDEX `index_domain_contact_name`(domain_id, contact_id, name),
- CONSTRAINT FK_civicrm_setting_domain_id FOREIGN KEY (`domain_id`) REFERENCES `civicrm_domain`(`id`) ON DELETE CASCADE,
- CONSTRAINT FK_civicrm_setting_contact_id FOREIGN KEY (`contact_id`) REFERENCES `civicrm_contact`(`id`) ON DELETE CASCADE,
- CONSTRAINT FK_civicrm_setting_component_id FOREIGN KEY (`component_id`) REFERENCES `civicrm_component`(`id`),
- CONSTRAINT FK_civicrm_setting_created_id FOREIGN KEY (`created_id`) REFERENCES `civicrm_contact`(`id`) ON DELETE SET NULL
-)
-ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
-
--- /*******************************************************
--- *
--- * civicrm_print_label
--- *
--- * Table to store the labels created by user.
--- *
--- *******************************************************/
-CREATE TABLE `civicrm_print_label` (
- `id` int unsigned NOT NULL AUTO_INCREMENT,
- `title` varchar(255) COMMENT 'User title for this label layout',
- `name` varchar(255) COMMENT 'variable name/programmatic handle for this field.',
- `description` text COMMENT 'Description of this label layout',
- `label_format_name` varchar(255) COMMENT 'This refers to name column of civicrm_option_value row in name_badge option group',
- `label_type_id` int unsigned COMMENT 'Implicit FK to civicrm_option_value row in NEW label_type option group',
- `data` longtext COMMENT 'contains json encode configurations options',
- `is_default` tinyint NOT NULL DEFAULT 1 COMMENT 'Is this default?',
- `is_active` tinyint NOT NULL DEFAULT 1 COMMENT 'Is this option active?',
- `is_reserved` tinyint NOT NULL DEFAULT 1 COMMENT 'Is this reserved label?',
- `created_id` int unsigned COMMENT 'FK to civicrm_contact, who created this label layout',
- PRIMARY KEY (`id`),
- CONSTRAINT FK_civicrm_print_label_created_id FOREIGN KEY (`created_id`) REFERENCES `civicrm_contact`(`id`) ON DELETE SET NULL
+ INDEX `UI_website_type_id`(`website_type_id`)
)
ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
-
--- /*******************************************************
--- *
--- * civicrm_word_replacement
--- *
--- * Top-level hierarchy to support word replacement.
--- *
--- *******************************************************/
CREATE TABLE `civicrm_word_replacement` (
`id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'Word replacement ID',
`find_word` varchar(255) COLLATE utf8_bin COMMENT 'Word which need to be replaced',
`replace_word` varchar(255) COLLATE utf8_bin COMMENT 'Word which will replace the word in find',
- `is_active` tinyint NOT NULL DEFAULT 1 COMMENT 'Is this entry active?',
- `match_type` varchar(16) DEFAULT "wildcardMatch",
+ `is_active` boolean NOT NULL DEFAULT TRUE COMMENT 'Is this entry active?',
+ `match_type` varchar(16) DEFAULT 'wildcardMatch',
`domain_id` int unsigned COMMENT 'FK to Domain ID. This is for Domain specific word replacement',
PRIMARY KEY (`id`),
- UNIQUE INDEX `UI_domain_find`(domain_id, find_word),
- CONSTRAINT FK_civicrm_word_replacement_domain_id FOREIGN KEY (`domain_id`) REFERENCES `civicrm_domain`(`id`)
-)
-ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
-
--- /*******************************************************
--- *
--- * civicrm_status_pref
--- *
--- * Preferences controlling status checks called in system.check.
--- *
--- *******************************************************/
-CREATE TABLE `civicrm_status_pref` (
- `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'Unique Status Preference ID',
- `domain_id` int unsigned NOT NULL COMMENT 'Which Domain is this Status Preference for',
- `name` varchar(255) NOT NULL COMMENT 'Name of the status check this preference references.',
- `hush_until` date DEFAULT NULL COMMENT 'expires ignore_severity. NULL never hushes.',
- `ignore_severity` int unsigned DEFAULT 1 COMMENT 'Hush messages up to and including this severity.',
- `prefs` varchar(255) COMMENT 'These settings are per-check, and can\'t be compared across checks.',
- `check_info` varchar(255) COMMENT 'These values are per-check, and can\'t be compared across checks.',
- `is_active` tinyint NOT NULL DEFAULT 1 COMMENT 'Is this status check active?',
- PRIMARY KEY (`id`),
- INDEX `UI_status_pref_name`(name),
- CONSTRAINT FK_civicrm_status_pref_domain_id FOREIGN KEY (`domain_id`) REFERENCES `civicrm_domain`(`id`)
-)
-ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
-
--- /*******************************************************
--- *
--- * civicrm_group
--- *
--- * Provide grouping of related contacts
--- *
--- *******************************************************/
-CREATE TABLE `civicrm_group` (
- `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'Group ID',
- `name` varchar(64) NOT NULL COMMENT 'Internal name of Group.',
- `title` varchar(255) NOT NULL COMMENT 'Name of Group.',
- `description` text COMMENT 'Optional verbose description of the group.',
- `source` varchar(64) COMMENT 'Module or process which created this group.',
- `saved_search_id` int unsigned COMMENT 'FK to saved search table.',
- `is_active` tinyint NOT NULL DEFAULT 1 COMMENT 'Is this group active?',
- `visibility` varchar(24) DEFAULT 'User and User Admin Only' COMMENT 'In what context(s) is this field visible.',
- `where_clause` text COMMENT 'the sql where clause if a saved search acl',
- `select_tables` text COMMENT 'the tables to be included in a select data',
- `where_tables` text COMMENT 'the tables to be included in the count statement',
- `group_type` varchar(128) COMMENT 'FK to group type',
- `cache_date` timestamp NULL COMMENT 'Date when we created the cache for a smart group',
- `cache_fill_took` double NULL COMMENT 'Seconds taken to fill smart group cache',
- `refresh_date` timestamp NULL COMMENT 'Unused deprecated column.',
- `parents` text COMMENT 'List of parent groups',
- `children` text COMMENT 'List of child groups (calculated)',
- `is_hidden` tinyint NOT NULL DEFAULT 0 COMMENT 'Is this group hidden?',
- `is_reserved` tinyint NOT NULL DEFAULT 0,
- `created_id` int unsigned COMMENT 'FK to contact table.',
- `modified_id` int unsigned COMMENT 'FK to contact table.',
- `frontend_title` varchar(255) NOT NULL COMMENT 'Alternative public title for this Group.',
- `frontend_description` text DEFAULT NULL COMMENT 'Alternative public description of the group.',
- PRIMARY KEY (`id`),
- INDEX `UI_cache_date`(cache_date),
- INDEX `index_group_type`(group_type),
- UNIQUE INDEX `UI_title`(title),
- UNIQUE INDEX `UI_name`(name),
- CONSTRAINT FK_civicrm_group_saved_search_id FOREIGN KEY (`saved_search_id`) REFERENCES `civicrm_saved_search`(`id`) ON DELETE CASCADE,
- CONSTRAINT FK_civicrm_group_created_id FOREIGN KEY (`created_id`) REFERENCES `civicrm_contact`(`id`) ON DELETE SET NULL,
- CONSTRAINT FK_civicrm_group_modified_id FOREIGN KEY (`modified_id`) REFERENCES `civicrm_contact`(`id`) ON DELETE SET NULL
-)
-ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
-
--- /*******************************************************
--- *
--- * civicrm_subscription_history
--- *
--- * History information of subscribe/unsubscribe actions
--- *
--- *******************************************************/
-CREATE TABLE `civicrm_subscription_history` (
- `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'Internal ID',
- `contact_id` int unsigned NOT NULL COMMENT 'Contact ID',
- `group_id` int unsigned COMMENT 'Group ID',
- `date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'Date of the (un)subscription',
- `method` varchar(8) COMMENT 'How the (un)subscription was triggered',
- `status` varchar(8) COMMENT 'The state of the contact within the group',
- `tracking` varchar(255) COMMENT 'IP address or other tracking info',
- PRIMARY KEY (`id`),
- CONSTRAINT FK_civicrm_subscription_history_contact_id FOREIGN KEY (`contact_id`) REFERENCES `civicrm_contact`(`id`) ON DELETE CASCADE,
- CONSTRAINT FK_civicrm_subscription_history_group_id FOREIGN KEY (`group_id`) REFERENCES `civicrm_group`(`id`) ON DELETE CASCADE
-)
-ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
-
--- /*******************************************************
--- *
--- * civicrm_group_contact_cache
--- *
--- * Join table cache for 'static' groups.
--- *
--- *******************************************************/
-CREATE TABLE `civicrm_group_contact_cache` (
- `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'primary key',
- `group_id` int unsigned NOT NULL COMMENT 'FK to civicrm_group',
- `contact_id` int unsigned NOT NULL COMMENT 'FK to civicrm_contact',
- PRIMARY KEY (`id`),
- UNIQUE INDEX `UI_contact_group`(contact_id, group_id),
- CONSTRAINT FK_civicrm_group_contact_cache_group_id FOREIGN KEY (`group_id`) REFERENCES `civicrm_group`(`id`) ON DELETE CASCADE,
- CONSTRAINT FK_civicrm_group_contact_cache_contact_id FOREIGN KEY (`contact_id`) REFERENCES `civicrm_contact`(`id`) ON DELETE CASCADE
-)
-ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
-
--- /*******************************************************
--- *
--- * civicrm_group_nesting
--- *
--- * Provide parent-child relationships for groups
--- *
--- *******************************************************/
-CREATE TABLE `civicrm_group_nesting` (
- `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'Relationship ID',
- `child_group_id` int unsigned NOT NULL COMMENT 'ID of the child group',
- `parent_group_id` int unsigned NOT NULL COMMENT 'ID of the parent group',
- PRIMARY KEY (`id`),
- CONSTRAINT FK_civicrm_group_nesting_child_group_id FOREIGN KEY (`child_group_id`) REFERENCES `civicrm_group`(`id`) ON DELETE CASCADE,
- CONSTRAINT FK_civicrm_group_nesting_parent_group_id FOREIGN KEY (`parent_group_id`) REFERENCES `civicrm_group`(`id`) ON DELETE CASCADE
-)
-ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
-
--- /*******************************************************
--- *
--- * civicrm_group_organization
--- *
--- * Integrate Organization information into Groups
--- *
--- *******************************************************/
-CREATE TABLE `civicrm_group_organization` (
- `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'Relationship ID',
- `group_id` int unsigned NOT NULL COMMENT 'ID of the group',
- `organization_id` int unsigned NOT NULL COMMENT 'ID of the Organization Contact',
+ UNIQUE INDEX `UI_domain_find`(`domain_id`, `find_word`)
+)
+ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
+CREATE TABLE `civicrm_worldregion` (
+ `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'Country ID',
+ `name` varchar(128) COMMENT 'Region name to be associated with countries',
+ PRIMARY KEY (`id`)
+)
+ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
+CREATE TABLE `civicrm_cxn` (
+ `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'Connection ID',
+ `app_guid` varchar(128) COMMENT 'Application GUID',
+ `app_meta` text COMMENT 'Application Metadata (JSON)',
+ `cxn_guid` varchar(128) COMMENT 'Connection GUID',
+ `secret` text COMMENT 'Shared secret',
+ `perm` text COMMENT 'Permissions approved for the service (JSON)',
+ `options` text COMMENT 'Options for the service (JSON)',
+ `is_active` boolean NOT NULL DEFAULT TRUE COMMENT 'Is connection currently enabled?',
+ `created_date` timestamp NULL DEFAULT NULL COMMENT 'When was the connection was created.',
+ `modified_date` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT 'When the connection was created or modified.',
+ `fetched_date` timestamp NULL DEFAULT NULL COMMENT 'The last time the application metadata was fetched.',
PRIMARY KEY (`id`),
- UNIQUE INDEX `UI_group_organization`(group_id, organization_id),
- CONSTRAINT FK_civicrm_group_organization_group_id FOREIGN KEY (`group_id`) REFERENCES `civicrm_group`(`id`) ON DELETE CASCADE,
- CONSTRAINT FK_civicrm_group_organization_organization_id FOREIGN KEY (`organization_id`) REFERENCES `civicrm_contact`(`id`) ON DELETE CASCADE
-)
-ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
-
--- /*******************************************************
--- *
--- * civicrm_mailing_event_subscribe
--- *
--- * Tracks when a (new) contact subscribes to a group by email
--- *
--- *******************************************************/
-CREATE TABLE `civicrm_mailing_event_subscribe` (
- `id` int unsigned NOT NULL AUTO_INCREMENT,
- `group_id` int unsigned NOT NULL COMMENT 'FK to Group',
- `contact_id` int unsigned NOT NULL COMMENT 'FK to Contact',
- `hash` varchar(255) NOT NULL COMMENT 'Security hash',
- `time_stamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'When this subscription event occurred.',
+ UNIQUE INDEX `UI_appid`(`app_guid`),
+ UNIQUE INDEX `UI_keypair_cxnid`(`cxn_guid`)
+)
+ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
+CREATE TABLE `civicrm_dedupe_exception` (
+ `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'Unique dedupe exception id',
+ `contact_id1` int unsigned NOT NULL COMMENT 'FK to Contact ID',
+ `contact_id2` int unsigned NOT NULL COMMENT 'FK to Contact ID',
PRIMARY KEY (`id`),
- CONSTRAINT FK_civicrm_mailing_event_subscribe_group_id FOREIGN KEY (`group_id`) REFERENCES `civicrm_group`(`id`) ON DELETE CASCADE,
- CONSTRAINT FK_civicrm_mailing_event_subscribe_contact_id FOREIGN KEY (`contact_id`) REFERENCES `civicrm_contact`(`id`) ON DELETE CASCADE
-)
-ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
-
--- /*******************************************************
--- *
--- * civicrm_mailing_event_confirm
--- *
--- * Tracks when a subscription event is confirmed by email
--- *
--- *******************************************************/
-CREATE TABLE `civicrm_mailing_event_confirm` (
- `id` int unsigned NOT NULL AUTO_INCREMENT,
- `event_subscribe_id` int unsigned NOT NULL COMMENT 'FK to civicrm_mailing_event_subscribe',
- `time_stamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'When this confirmation event occurred.',
+ UNIQUE INDEX `UI_contact_id1_contact_id2`(`contact_id1`, `contact_id2`)
+)
+ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
+CREATE TABLE `civicrm_dedupe_rule` (
+ `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'Unique dedupe rule id',
+ `dedupe_rule_group_id` int unsigned NOT NULL COMMENT 'The id of the rule group this rule belongs to',
+ `rule_table` varchar(64) NOT NULL COMMENT 'The name of the table this rule is about',
+ `rule_field` varchar(64) NOT NULL COMMENT 'The name of the field of the table referenced in rule_table',
+ `rule_length` int unsigned COMMENT 'The length of the matching substring',
+ `rule_weight` int NOT NULL COMMENT 'The weight of the rule',
+ PRIMARY KEY (`id`)
+)
+ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
+CREATE TABLE `civicrm_dedupe_rule_group` (
+ `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'Unique dedupe rule group id',
+ `contact_type` varchar(12) COMMENT 'The type of contacts this group applies to',
+ `threshold` int NOT NULL COMMENT 'The weight threshold the sum of the rule weights has to cross to consider two contacts the same',
+ `used` varchar(12) NOT NULL COMMENT 'Whether the rule should be used for cases where usage is Unsupervised, Supervised OR General(programatically)',
+ `name` varchar(255) COMMENT 'Unique name of rule group',
+ `title` varchar(255) COMMENT 'Label of the rule group',
+ `is_reserved` boolean NOT NULL DEFAULT FALSE COMMENT 'Is this a reserved rule - a rule group that has been optimized and cannot be changed by the admin',
PRIMARY KEY (`id`),
- CONSTRAINT FK_civicrm_mailing_event_confirm_event_subscribe_id FOREIGN KEY (`event_subscribe_id`) REFERENCES `civicrm_mailing_event_subscribe`(`id`) ON DELETE CASCADE
+ UNIQUE INDEX `UI_name`(`name`)
)
ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
-
--- /*******************************************************
--- *
--- * civicrm_contribution_page
--- *
--- * A Contribution object store meta information about a single customized contribution page
--- *
--- *******************************************************/
-CREATE TABLE `civicrm_contribution_page` (
- `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'Contribution ID',
- `title` varchar(255) NOT NULL COMMENT 'Contribution Page title. For top of page display',
- `frontend_title` varchar(255) NOT NULL COMMENT 'Contribution Page Public title',
- `name` varchar(255) NOT NULL COMMENT 'Unique name for identifying contribution page',
- `intro_text` text COMMENT 'Text and html allowed. Displayed below title.',
- `financial_type_id` int unsigned COMMENT 'default financial type assigned to contributions submitted via this page, e.g. Contribution, Campaign Contribution',
- `payment_processor` varchar(128) COMMENT 'Payment Processors configured for this contribution Page',
- `is_credit_card_only` tinyint NOT NULL DEFAULT 0 COMMENT 'if true - processing logic must reject transaction at confirmation stage if pay method != credit card',
- `is_monetary` tinyint NOT NULL DEFAULT 1 COMMENT 'if true - allows real-time monetary transactions otherwise non-monetary transactions',
- `is_recur` tinyint NOT NULL DEFAULT 0 COMMENT 'if true - allows recurring contributions, valid only for PayPal_Standard',
- `is_confirm_enabled` tinyint NOT NULL DEFAULT 1 COMMENT 'if false, the confirm page in contribution pages gets skipped',
- `recur_frequency_unit` varchar(128) COMMENT 'Supported recurring frequency units.',
- `is_recur_interval` tinyint NOT NULL DEFAULT 0 COMMENT 'if true - supports recurring intervals',
- `is_recur_installments` tinyint NOT NULL DEFAULT 0 COMMENT 'if true - asks user for recurring installments',
- `adjust_recur_start_date` tinyint NOT NULL DEFAULT 0 COMMENT 'if true - user is able to adjust payment start date',
- `is_pay_later` tinyint NOT NULL DEFAULT 0 COMMENT 'if true - allows the user to send payment directly to the org later',
+CREATE TABLE `civicrm_event_carts` (
+ `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'Cart ID',
+ `user_id` int unsigned COMMENT 'FK to civicrm_contact who created this cart',
+ `completed` boolean NOT NULL DEFAULT FALSE,
+ PRIMARY KEY (`id`)
+)
+ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
+CREATE TABLE `civicrm_event` (
+ `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'Event',
+ `title` varchar(255) COMMENT 'Event Title (e.g. Fall Fundraiser Dinner)',
+ `summary` text COMMENT 'Brief summary of event. Text and html allowed. Displayed on Event Registration form and can be used on other CMS pages which need an event summary.',
+ `description` text COMMENT 'Full description of event. Text and html allowed. Displayed on built-in Event Information screens.',
+ `event_type_id` int unsigned DEFAULT 0 COMMENT 'Event Type ID.Implicit FK to civicrm_option_value where option_group = event_type.',
+ `participant_listing_id` int unsigned DEFAULT NULL COMMENT 'Should we expose the participant list? Implicit FK to civicrm_option_value where option_group = participant_listing.',
+ `is_public` boolean NOT NULL DEFAULT TRUE COMMENT 'Public events will be included in the iCal feeds. Access to private event information may be limited using ACLs.',
+ `start_date` datetime COMMENT 'Date and time that event starts.',
+ `end_date` datetime COMMENT 'Date and time that event ends. May be NULL if no defined end date/time',
+ `is_online_registration` boolean NOT NULL DEFAULT FALSE COMMENT 'If TRUE, include registration link on Event Info page.',
+ `registration_link_text` varchar(255) COMMENT 'Text for link to Event Registration form which is displayed on Event Information screen when is_online_registration is true.',
+ `registration_start_date` datetime COMMENT 'Date and time that online registration starts.',
+ `registration_end_date` datetime COMMENT 'Date and time that online registration ends.',
+ `max_participants` int unsigned DEFAULT NULL COMMENT 'Maximum number of registered participants to allow. After max is reached, a custom Event Full message is displayed. If NULL, allow unlimited number of participants.',
+ `event_full_text` text COMMENT 'Message to display on Event Information page and INSTEAD OF Event Registration form if maximum participants are signed up. Can include email address/info about getting on a waiting list, etc. Text and html allowed.',
+ `is_monetary` boolean NOT NULL DEFAULT FALSE COMMENT 'If TRUE, one or more fee amounts must be set and a Payment Processor must be configured for Online Event Registration.',
+ `financial_type_id` int unsigned DEFAULT NULL COMMENT 'Financial type assigned to paid event registrations for this event. Required if is_monetary is true.',
+ `payment_processor` varchar(128) COMMENT 'Payment Processors configured for this Event (if is_monetary is true)',
+ `is_map` boolean NOT NULL DEFAULT FALSE COMMENT 'Include a map block on the Event Information page when geocode info is available and a mapping provider has been specified?',
+ `is_active` boolean NOT NULL DEFAULT FALSE COMMENT 'Is this Event enabled or disabled/cancelled?',
+ `fee_label` varchar(255),
+ `is_show_location` boolean NOT NULL DEFAULT TRUE COMMENT 'If TRUE, show event location.',
+ `loc_block_id` int unsigned COMMENT 'FK to Location Block ID',
+ `default_role_id` int unsigned DEFAULT 1 COMMENT 'Participant role ID. Implicit FK to civicrm_option_value where option_group = participant_role.',
+ `intro_text` text COMMENT 'Introductory message for Event Registration page. Text and html allowed. Displayed at the top of Event Registration form.',
+ `footer_text` text COMMENT 'Footer message for Event Registration page. Text and html allowed. Displayed at the bottom of Event Registration form.',
+ `confirm_title` varchar(255) DEFAULT NULL COMMENT 'Title for Confirmation page.',
+ `confirm_text` text COMMENT 'Introductory message for Event Registration page. Text and html allowed. Displayed at the top of Event Registration form.',
+ `confirm_footer_text` text COMMENT 'Footer message for Event Registration page. Text and html allowed. Displayed at the bottom of Event Registration form.',
+ `is_email_confirm` boolean NOT NULL DEFAULT FALSE COMMENT 'If TRUE, confirmation is automatically emailed to contact on successful registration.',
+ `confirm_email_text` text COMMENT 'text to include above standard event info on confirmation email. emails are text-only, so do not allow html for now',
+ `confirm_from_name` varchar(255) COMMENT 'FROM email name used for confirmation emails.',
+ `confirm_from_email` varchar(255) COMMENT 'FROM email address used for confirmation emails.',
+ `cc_confirm` varchar(255) COMMENT 'comma-separated list of email addresses to cc each time a confirmation is sent',
+ `bcc_confirm` varchar(255) COMMENT 'comma-separated list of email addresses to bcc each time a confirmation is sent',
+ `default_fee_id` int unsigned COMMENT 'FK to civicrm_option_value.',
+ `default_discount_fee_id` int unsigned COMMENT 'FK to civicrm_option_value.',
+ `thankyou_title` varchar(255) DEFAULT NULL COMMENT 'Title for ThankYou page.',
+ `thankyou_text` text COMMENT 'ThankYou Text.',
+ `thankyou_footer_text` text COMMENT 'Footer message.',
+ `is_pay_later` boolean NOT NULL DEFAULT FALSE COMMENT 'if true - allows the user to send payment directly to the org later',
`pay_later_text` text COMMENT 'The text displayed to the user in the main form',
`pay_later_receipt` text COMMENT 'The receipt sent to the user instead of the normal receipt text',
- `is_partial_payment` tinyint DEFAULT 0 COMMENT 'is partial payment enabled for this online contribution page',
+ `is_partial_payment` boolean NOT NULL DEFAULT FALSE COMMENT 'is partial payment enabled for this event',
`initial_amount_label` varchar(255) COMMENT 'Initial amount label for partial payment',
`initial_amount_help_text` text COMMENT 'Initial amount help text for partial payment',
`min_initial_amount` decimal(20,2) COMMENT 'Minimum initial amount for partial payment',
- `is_allow_other_amount` tinyint NOT NULL DEFAULT 0 COMMENT 'if true, page will include an input text field where user can enter their own amount',
- `default_amount_id` int unsigned COMMENT 'FK to civicrm_option_value.',
- `min_amount` decimal(20,2) COMMENT 'if other amounts allowed, user can configure minimum allowed.',
- `max_amount` decimal(20,2) COMMENT 'if other amounts allowed, user can configure maximum allowed.',
- `goal_amount` decimal(20,2) COMMENT 'The target goal for this page, allows people to build a goal meter',
- `thankyou_title` varchar(255) COMMENT 'Title for Thank-you page (header title tag, and display at the top of the page).',
- `thankyou_text` text COMMENT 'text and html allowed. displayed above result on success page',
- `thankyou_footer` text COMMENT 'Text and html allowed. displayed at the bottom of the success page. Common usage is to include link(s) to other pages such as tell-a-friend, etc.',
- `is_email_receipt` tinyint NOT NULL DEFAULT 0 COMMENT 'if true, receipt is automatically emailed to contact on success',
- `receipt_from_name` varchar(255) COMMENT 'FROM email name used for receipts generated by contributions to this contribution page.',
- `receipt_from_email` varchar(255) COMMENT 'FROM email address used for receipts generated by contributions to this contribution page.',
- `cc_receipt` varchar(255) COMMENT 'comma-separated list of email addresses to cc each time a receipt is sent',
- `bcc_receipt` varchar(255) COMMENT 'comma-separated list of email addresses to bcc each time a receipt is sent',
- `receipt_text` text COMMENT 'text to include above standard receipt info on receipt email. emails are text-only, so do not allow html for now',
- `is_active` tinyint NOT NULL DEFAULT 1 COMMENT 'Is this page active?',
- `footer_text` text COMMENT 'Text and html allowed. Displayed at the bottom of the first page of the contribution wizard.',
- `amount_block_is_active` tinyint NOT NULL DEFAULT 1 COMMENT 'Is this property active?',
- `start_date` datetime COMMENT 'Date and time that this page starts.',
- `end_date` datetime COMMENT 'Date and time that this page ends. May be NULL if no defined end date/time',
- `created_id` int unsigned COMMENT 'FK to civicrm_contact, who created this contribution page',
- `created_date` datetime COMMENT 'Date and time that contribution page was created.',
- `currency` varchar(3) DEFAULT NULL COMMENT '3 character string, value from config setting or input via user.',
- `campaign_id` int unsigned COMMENT 'The campaign for which we are collecting contributions with this page.',
- `is_share` tinyint NOT NULL DEFAULT 1 COMMENT 'Can people share the contribution page through social media?',
- `is_billing_required` tinyint NOT NULL DEFAULT 0 COMMENT 'if true - billing block is required for online contribution page',
- PRIMARY KEY (`id`),
- UNIQUE INDEX `UI_name`(name),
- CONSTRAINT FK_civicrm_contribution_page_financial_type_id FOREIGN KEY (`financial_type_id`) REFERENCES `civicrm_financial_type`(`id`),
- CONSTRAINT FK_civicrm_contribution_page_created_id FOREIGN KEY (`created_id`) REFERENCES `civicrm_contact`(`id`) ON DELETE SET NULL,
- CONSTRAINT FK_civicrm_contribution_page_campaign_id FOREIGN KEY (`campaign_id`) REFERENCES `civicrm_campaign`(`id`) ON DELETE SET NULL
-)
-ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
-
--- /*******************************************************
--- *
--- * civicrm_product
--- *
--- * able - stores "product info" for premiums and can be used for non-incentive products
--- *
--- *******************************************************/
-CREATE TABLE `civicrm_product` (
- `id` int unsigned NOT NULL AUTO_INCREMENT,
- `name` varchar(255) NOT NULL COMMENT 'Required product/premium name',
- `description` text COMMENT 'Optional description of the product/premium.',
- `sku` varchar(50) COMMENT 'Optional product sku or code.',
- `options` text COMMENT 'Store comma-delimited list of color, size, etc. options for the product.',
- `image` varchar(255) COMMENT 'Full or relative URL to uploaded image - fullsize.',
- `thumbnail` varchar(255) COMMENT 'Full or relative URL to image thumbnail.',
- `price` decimal(20,2) COMMENT 'Sell price or market value for premiums. For tax-deductible contributions, this will be stored as non_deductible_amount in the contribution record.',
- `currency` varchar(3) DEFAULT NULL COMMENT '3 character string, value from config setting or input via user.',
- `financial_type_id` int unsigned DEFAULT NULL COMMENT 'FK to Financial Type.',
- `min_contribution` decimal(20,2) COMMENT 'Minimum contribution required to be eligible to select this premium.',
- `cost` decimal(20,2) COMMENT 'Actual cost of this product. Useful to determine net return from sale or using this as an incentive.',
- `is_active` tinyint NOT NULL DEFAULT 1 COMMENT 'Disabling premium removes it from the premiums_premium join table below.',
- `period_type` varchar(8) DEFAULT 'rolling' COMMENT 'Rolling means we set start/end based on current day, fixed means we set start/end for current year or month\n (e.g. 1 year + fixed -> we would set start/end for 1/1/06 thru 12/31/06 for any premium chosen in 2006) ',
- `fixed_period_start_day` int DEFAULT 0101 COMMENT 'Month and day (MMDD) that fixed period type subscription or membership starts.',
- `duration_unit` varchar(8) DEFAULT 'year',
- `duration_interval` int COMMENT 'Number of units for total duration of subscription, service, membership (e.g. 12 Months).',
- `frequency_unit` varchar(8) DEFAULT 'month' COMMENT 'Frequency unit and interval allow option to store actual delivery frequency for a subscription or service.',
- `frequency_interval` int COMMENT 'Number of units for delivery frequency of subscription, service, membership (e.g. every 3 Months).',
- PRIMARY KEY (`id`),
- CONSTRAINT FK_civicrm_product_financial_type_id FOREIGN KEY (`financial_type_id`) REFERENCES `civicrm_financial_type`(`id`) ON DELETE SET NULL
-)
-ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
-
--- /*******************************************************
--- *
--- * civicrm_premiums_product
--- *
--- * joins premiums (settings) to individual product/premium items - determines which products are available for a given contribution page
--- *
--- *******************************************************/
-CREATE TABLE `civicrm_premiums_product` (
- `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'Contribution ID',
- `premiums_id` int unsigned NOT NULL COMMENT 'Foreign key to premiums settings record.',
- `product_id` int unsigned NOT NULL COMMENT 'Foreign key to each product object.',
- `weight` int unsigned NOT NULL,
- `financial_type_id` int unsigned DEFAULT NULL COMMENT 'FK to Financial Type.',
- PRIMARY KEY (`id`),
- CONSTRAINT FK_civicrm_premiums_product_premiums_id FOREIGN KEY (`premiums_id`) REFERENCES `civicrm_premiums`(`id`),
- CONSTRAINT FK_civicrm_premiums_product_product_id FOREIGN KEY (`product_id`) REFERENCES `civicrm_product`(`id`),
- CONSTRAINT FK_civicrm_premiums_product_financial_type_id FOREIGN KEY (`financial_type_id`) REFERENCES `civicrm_financial_type`(`id`) ON DELETE SET NULL
-)
-ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
-
--- /*******************************************************
--- *
--- * civicrm_contribution_widget
--- *
--- * A Widget object to store meta information about a single customized contribution widget
--- *
--- *******************************************************/
-CREATE TABLE `civicrm_contribution_widget` (
- `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'Contribution ID',
- `contribution_page_id` int unsigned COMMENT 'The Contribution Page which triggered this contribution',
- `is_active` tinyint NOT NULL DEFAULT 1 COMMENT 'Is this property active?',
- `title` varchar(255) COMMENT 'Widget title.',
- `url_logo` varchar(255) COMMENT 'URL to Widget logo',
- `button_title` varchar(255) COMMENT 'Button title.',
- `about` text COMMENT 'About description.',
- `url_homepage` varchar(255) COMMENT 'URL to Homepage.',
- `color_title` varchar(10),
- `color_button` varchar(10),
- `color_bar` varchar(10),
- `color_main_text` varchar(10),
- `color_main` varchar(10),
- `color_main_bg` varchar(10),
- `color_bg` varchar(10),
- `color_about_link` varchar(10),
- `color_homepage_link` varchar(10),
+ `is_multiple_registrations` boolean NOT NULL DEFAULT FALSE COMMENT 'if true - allows the user to register multiple participants for event',
+ `max_additional_participants` int unsigned DEFAULT 0 COMMENT 'Maximum number of additional participants that can be registered on a single booking',
+ `allow_same_participant_emails` boolean NOT NULL DEFAULT FALSE COMMENT 'if true - allows the user to register multiple registrations from same email address.',
+ `has_waitlist` boolean NOT NULL DEFAULT FALSE COMMENT 'Whether the event has waitlist support.',
+ `requires_approval` boolean NOT NULL DEFAULT FALSE COMMENT 'Whether participants require approval before they can finish registering.',
+ `expiration_time` int unsigned COMMENT 'Expire pending but unconfirmed registrations after this many hours.',
+ `allow_selfcancelxfer` boolean NOT NULL DEFAULT FALSE COMMENT 'Allow self service cancellation or transfer for event?',
+ `selfcancelxfer_time` int NOT NULL DEFAULT 0 COMMENT 'Number of hours prior to event start date to allow self-service cancellation or transfer.',
+ `waitlist_text` text COMMENT 'Text to display when the event is full, but participants can signup for a waitlist.',
+ `approval_req_text` text COMMENT 'Text to display when the approval is required to complete registration for an event.',
+ `is_template` boolean NOT NULL DEFAULT FALSE COMMENT 'whether the event has template',
+ `template_title` varchar(255) COMMENT 'Event Template Title',
+ `created_id` int unsigned COMMENT 'FK to civicrm_contact, who created this event',
+ `created_date` datetime COMMENT 'Date and time that event was created.',
+ `currency` varchar(3) COMMENT '3 character string, value from config setting or input via user.',
+ `campaign_id` int unsigned COMMENT 'The campaign for which this event has been created.',
+ `is_share` boolean NOT NULL DEFAULT TRUE COMMENT 'Can people share the event through social media?',
+ `is_confirm_enabled` boolean NOT NULL DEFAULT TRUE COMMENT 'If FALSE, the event booking confirmation screen gets skipped',
+ `parent_event_id` int unsigned DEFAULT NULL COMMENT 'Implicit FK to civicrm_event: parent event',
+ `slot_label_id` int unsigned DEFAULT NULL COMMENT 'Needs to be moved to Event cart extension. Subevent slot label. Implicit FK to civicrm_option_value where option_group = conference_slot.',
+ `dedupe_rule_group_id` int unsigned DEFAULT NULL COMMENT 'Rule to use when matching registrations for this event',
+ `is_billing_required` boolean NOT NULL DEFAULT FALSE COMMENT 'if true than billing block is required this event',
+ `is_show_calendar_links` boolean NOT NULL DEFAULT TRUE COMMENT 'If true then calendar links are shown for this event.',
PRIMARY KEY (`id`),
- CONSTRAINT FK_civicrm_contribution_widget_contribution_page_id FOREIGN KEY (`contribution_page_id`) REFERENCES `civicrm_contribution_page`(`id`) ON DELETE CASCADE
+ INDEX `index_event_type_id`(`event_type_id`),
+ INDEX `index_participant_listing_id`(`participant_listing_id`),
+ INDEX `index_parent_event_id`(`parent_event_id`)
)
ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
-
--- /*******************************************************
--- *
--- * civicrm_payment_processor
--- *
--- *******************************************************/
-CREATE TABLE `civicrm_payment_processor` (
- `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'Payment Processor ID',
- `domain_id` int unsigned NOT NULL COMMENT 'Which Domain is this match entry for',
- `name` varchar(64) NOT NULL COMMENT 'Payment Processor Name.',
- `title` varchar(255) NOT NULL COMMENT 'Name of processor when shown to CiviCRM administrators.',
- `frontend_title` varchar(255) NOT NULL COMMENT 'Name of processor when shown to users making a payment.',
- `description` varchar(255) COMMENT 'Additional processor information shown to administrators.',
- `payment_processor_type_id` int unsigned NOT NULL,
- `is_active` tinyint NOT NULL DEFAULT 1 COMMENT 'Is this processor active?',
- `is_default` tinyint NOT NULL DEFAULT 0 COMMENT 'Is this processor the default?',
- `is_test` tinyint NOT NULL DEFAULT 0 COMMENT 'Is this processor for a test site?',
- `user_name` varchar(255),
- `password` varchar(255),
- `signature` text,
- `url_site` varchar(255),
- `url_api` varchar(255),
- `url_recur` varchar(255),
- `url_button` varchar(255),
- `subject` varchar(255),
- `class_name` varchar(255),
- `billing_mode` int unsigned NOT NULL COMMENT 'Billing Mode (deprecated)',
- `is_recur` tinyint NOT NULL DEFAULT 0 COMMENT 'Can process recurring contributions',
- `payment_type` int unsigned DEFAULT 1 COMMENT 'Payment Type: Credit or Debit (deprecated)',
- `payment_instrument_id` int unsigned DEFAULT 1 COMMENT 'Payment Instrument ID',
- `accepted_credit_cards` text DEFAULT NULL COMMENT 'array of accepted credit card types',
- PRIMARY KEY (`id`),
- UNIQUE INDEX `UI_name_test_domain_id`(name, is_test, domain_id),
- CONSTRAINT FK_civicrm_payment_processor_domain_id FOREIGN KEY (`domain_id`) REFERENCES `civicrm_domain`(`id`),
- CONSTRAINT FK_civicrm_payment_processor_payment_processor_type_id FOREIGN KEY (`payment_processor_type_id`) REFERENCES `civicrm_payment_processor_type`(`id`)
-)
-ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
-
--- /*******************************************************
--- *
--- * civicrm_payment_token
--- *
--- * Payment Token
--- *
--- *******************************************************/
-CREATE TABLE `civicrm_payment_token` (
- `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'Payment Token ID',
- `contact_id` int unsigned NOT NULL COMMENT 'FK to Contact ID for the owner of the token',
- `payment_processor_id` int unsigned NOT NULL,
- `token` varchar(255) NOT NULL COMMENT 'Externally provided token string',
- `created_date` timestamp DEFAULT CURRENT_TIMESTAMP COMMENT 'Date created',
- `created_id` int unsigned COMMENT 'Contact ID of token creator',
- `expiry_date` datetime COMMENT 'Date this token expires',
- `email` varchar(255) COMMENT 'Email at the time of token creation. Useful for fraud forensics',
- `billing_first_name` varchar(255) COMMENT 'Billing first name at the time of token creation. Useful for fraud forensics',
- `billing_middle_name` varchar(255) COMMENT 'Billing middle name at the time of token creation. Useful for fraud forensics',
- `billing_last_name` varchar(255) COMMENT 'Billing last name at the time of token creation. Useful for fraud forensics',
- `masked_account_number` varchar(255) COMMENT 'Holds the part of the card number or account details that may be retained or displayed',
- `ip_address` varchar(255) COMMENT 'IP used when creating the token. Useful for fraud forensics',
- PRIMARY KEY (`id`),
- CONSTRAINT FK_civicrm_payment_token_contact_id FOREIGN KEY (`contact_id`) REFERENCES `civicrm_contact`(`id`) ON DELETE CASCADE,
- CONSTRAINT FK_civicrm_payment_token_payment_processor_id FOREIGN KEY (`payment_processor_id`) REFERENCES `civicrm_payment_processor`(`id`) ON DELETE RESTRICT,
- CONSTRAINT FK_civicrm_payment_token_created_id FOREIGN KEY (`created_id`) REFERENCES `civicrm_contact`(`id`) ON DELETE SET NULL
-)
-ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
-
--- /*******************************************************
--- *
--- * civicrm_sms_provider
--- *
--- * Table to add different sms providers
--- *
--- *******************************************************/
-CREATE TABLE `civicrm_sms_provider` (
- `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'SMS Provider ID',
- `name` varchar(64) COMMENT 'Provider internal name points to option_value of option_group sms_provider_name',
- `title` varchar(64) COMMENT 'Provider name visible to user',
- `username` varchar(255),
- `password` varchar(255),
- `api_type` int unsigned NOT NULL COMMENT 'points to value in civicrm_option_value for group sms_api_type',
- `api_url` varchar(128),
- `api_params` text COMMENT 'the api params in xml, http or smtp format',
- `is_default` tinyint NOT NULL DEFAULT 0,
- `is_active` tinyint NOT NULL DEFAULT 1,
- `domain_id` int unsigned COMMENT 'Which Domain is this sms provider for',
- PRIMARY KEY (`id`),
- CONSTRAINT FK_civicrm_sms_provider_domain_id FOREIGN KEY (`domain_id`) REFERENCES `civicrm_domain`(`id`) ON DELETE SET NULL
+CREATE TABLE `civicrm_events_in_carts` (
+ `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'Event In Cart ID',
+ `event_id` int unsigned COMMENT 'FK to Event ID',
+ `event_cart_id` int unsigned COMMENT 'FK to Event Cart ID',
+ PRIMARY KEY (`id`)
)
ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
-
--- /*******************************************************
--- *
--- * civicrm_membership_type
--- *
--- * Sites can configure multiple types of memberships. They encode the owner organization, fee, and the rules needed to set start and end (expire) dates when a member signs up for that type.
--- *
--- *******************************************************/
-CREATE TABLE `civicrm_membership_type` (
- `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'Membership ID',
- `domain_id` int unsigned NOT NULL COMMENT 'Which Domain is this match entry for',
- `name` varchar(128) NOT NULL COMMENT 'Name of Membership Type',
- `description` varchar(255) COMMENT 'Description of Membership Type',
- `member_of_contact_id` int unsigned NOT NULL COMMENT 'Owner organization for this membership type. FK to Contact ID',
- `financial_type_id` int unsigned NOT NULL COMMENT 'If membership is paid by a contribution - what financial type should be used. FK to civicrm_financial_type.id',
- `minimum_fee` decimal(18,9) DEFAULT 0 COMMENT 'Minimum fee for this membership (0 for free/complimentary memberships).',
- `duration_unit` varchar(8) NOT NULL COMMENT 'Unit in which membership period is expressed.',
- `duration_interval` int COMMENT 'Number of duration units in membership period (e.g. 1 year, 12 months).',
- `period_type` varchar(8) NOT NULL COMMENT 'Rolling membership period starts on signup date. Fixed membership periods start on fixed_period_start_day.',
- `fixed_period_start_day` int COMMENT 'For fixed period memberships, month and day (mmdd) on which subscription/membership will start. Period start is back-dated unless after rollover day.',
- `fixed_period_rollover_day` int COMMENT 'For fixed period memberships, signups after this day (mmdd) rollover to next period.',
- `relationship_type_id` varchar(64) COMMENT 'FK to Relationship Type ID',
- `relationship_direction` varchar(128),
- `max_related` int COMMENT 'Maximum number of related memberships.',
- `visibility` varchar(64),
- `weight` int,
- `receipt_text_signup` varchar(255) COMMENT 'Receipt Text for membership signup',
- `receipt_text_renewal` varchar(255) COMMENT 'Receipt Text for membership renewal',
- `auto_renew` tinyint DEFAULT 0 COMMENT '0 = No auto-renew option; 1 = Give option, but not required; 2 = Auto-renew required;',
- `is_active` tinyint DEFAULT 1 COMMENT 'Is this membership_type enabled',
- PRIMARY KEY (`id`),
- INDEX `index_relationship_type_id`(relationship_type_id),
- CONSTRAINT FK_civicrm_membership_type_domain_id FOREIGN KEY (`domain_id`) REFERENCES `civicrm_domain`(`id`),
- CONSTRAINT FK_civicrm_membership_type_member_of_contact_id FOREIGN KEY (`member_of_contact_id`) REFERENCES `civicrm_contact`(`id`) ON DELETE RESTRICT,
- CONSTRAINT FK_civicrm_membership_type_financial_type_id FOREIGN KEY (`financial_type_id`) REFERENCES `civicrm_financial_type`(`id`)
-)
-ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
-
--- /*******************************************************
--- *
--- * civicrm_membership_block
--- *
--- * A Membership Block stores admin configurable status options and rules
--- *
--- *******************************************************/
-CREATE TABLE `civicrm_membership_block` (
- `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'Membership ID',
- `entity_table` varchar(64) COMMENT 'Name for Membership Status',
- `entity_id` int unsigned NOT NULL COMMENT 'FK to civicrm_contribution_page.id',
- `membership_types` varchar(1024) COMMENT 'Membership types to be exposed by this block',
- `membership_type_default` int unsigned COMMENT 'Optional foreign key to membership_type',
- `display_min_fee` tinyint NOT NULL DEFAULT 1 COMMENT 'Display minimum membership fee',
- `is_separate_payment` tinyint NOT NULL DEFAULT 1 COMMENT 'Should membership transactions be processed separately',
- `new_title` varchar(255) COMMENT 'Title to display at top of block',
- `new_text` text COMMENT 'Text to display below title',
- `renewal_title` varchar(255) COMMENT 'Title for renewal',
- `renewal_text` text COMMENT 'Text to display for member renewal',
- `is_required` tinyint NOT NULL DEFAULT 0 COMMENT 'Is membership sign up optional',
- `is_active` tinyint NOT NULL DEFAULT 1 COMMENT 'Is this membership_block enabled',
- PRIMARY KEY (`id`),
- CONSTRAINT FK_civicrm_membership_block_entity_id FOREIGN KEY (`entity_id`) REFERENCES `civicrm_contribution_page`(`id`),
- CONSTRAINT FK_civicrm_membership_block_membership_type_default FOREIGN KEY (`membership_type_default`) REFERENCES `civicrm_membership_type`(`id`)
-)
-ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
-
--- /*******************************************************
--- *
--- * civicrm_case
--- *
--- * This table stores information about cases grouping activities.
--- *
--- *******************************************************/
-CREATE TABLE `civicrm_case` (
- `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'Unique Case ID',
- `case_type_id` int unsigned NOT NULL COMMENT 'FK to civicrm_case_type.id',
- `subject` varchar(128) COMMENT 'Short name of the case.',
- `start_date` date COMMENT 'Date on which given case starts.',
- `end_date` date COMMENT 'Date on which given case ends.',
- `details` text COMMENT 'Details populated from Open Case. Only used in the CiviCase extension.',
- `status_id` int unsigned NOT NULL COMMENT 'ID of case status.',
- `is_deleted` tinyint NOT NULL DEFAULT 0,
- `created_date` timestamp NULL DEFAULT NULL COMMENT 'When was the case was created.',
- `modified_date` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT 'When was the case (or closely related entity) was created or modified or deleted.',
- PRIMARY KEY (`id`),
- INDEX `index_case_type_id`(case_type_id),
- INDEX `index_is_deleted`(is_deleted),
- CONSTRAINT FK_civicrm_case_case_type_id FOREIGN KEY (`case_type_id`) REFERENCES `civicrm_case_type`(`id`)
-)
-ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
-
--- /*******************************************************
--- *
--- * civicrm_case_contact
--- *
--- * Joining table for case-contact associations.
--- *
--- *******************************************************/
-CREATE TABLE `civicrm_case_contact` (
- `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'Unique case-contact association id',
- `case_id` int unsigned NOT NULL COMMENT 'Case ID of case-contact association.',
- `contact_id` int unsigned NOT NULL COMMENT 'Contact ID of contact record given case belongs to.',
+CREATE TABLE `civicrm_participant` (
+ `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'Participant ID',
+ `contact_id` int unsigned NOT NULL COMMENT 'FK to Contact ID',
+ `event_id` int unsigned NOT NULL COMMENT 'FK to Event ID',
+ `status_id` int unsigned NOT NULL DEFAULT 1 COMMENT 'Participant status ID. FK to civicrm_participant_status_type. Default of 1 should map to status = Registered.',
+ `role_id` varchar(128) DEFAULT NULL COMMENT 'Participant role ID. Implicit FK to civicrm_option_value where option_group = participant_role.',
+ `register_date` datetime COMMENT 'When did contact register for event?',
+ `source` varchar(128) COMMENT 'Source of this event registration.',
+ `fee_level` text COMMENT 'Populate with the label (text) associated with a fee level for paid events with multiple levels. Note that we store the label value and not the key',
+ `is_test` boolean NOT NULL DEFAULT FALSE,
+ `is_pay_later` boolean NOT NULL DEFAULT FALSE,
+ `fee_amount` decimal(20,2) COMMENT 'actual processor fee if known - may be 0.',
+ `registered_by_id` int unsigned DEFAULT NULL COMMENT 'FK to Participant ID',
+ `discount_id` int unsigned DEFAULT NULL COMMENT 'FK to Discount ID',
+ `fee_currency` varchar(3) DEFAULT NULL COMMENT '3 character string, value derived from config setting.',
+ `campaign_id` int unsigned COMMENT 'The campaign for which this participant has been registered.',
+ `discount_amount` int unsigned COMMENT 'Discount Amount',
+ `cart_id` int unsigned COMMENT 'FK to civicrm_event_carts',
+ `must_wait` int COMMENT 'On Waiting List',
+ `transferred_to_contact_id` int unsigned DEFAULT NULL COMMENT 'FK to Contact ID',
+ `created_id` int unsigned COMMENT 'Contact responsible for registering this participant',
PRIMARY KEY (`id`),
- UNIQUE INDEX `UI_case_contact_id`(case_id, contact_id),
- CONSTRAINT FK_civicrm_case_contact_case_id FOREIGN KEY (`case_id`) REFERENCES `civicrm_case`(`id`) ON DELETE CASCADE,
- CONSTRAINT FK_civicrm_case_contact_contact_id FOREIGN KEY (`contact_id`) REFERENCES `civicrm_contact`(`id`) ON DELETE CASCADE
+ INDEX `index_status_id`(`status_id`),
+ INDEX `index_role_id`(`role_id`)
)
ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
-
--- /*******************************************************
--- *
--- * civicrm_pledge
--- *
--- *******************************************************/
-CREATE TABLE `civicrm_pledge` (
- `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'Pledge ID',
- `contact_id` int unsigned NOT NULL COMMENT 'Foreign key to civicrm_contact.id .',
- `financial_type_id` int unsigned COMMENT 'FK to Financial Type',
- `contribution_page_id` int unsigned COMMENT 'The Contribution Page which triggered this contribution',
- `amount` decimal(20,2) NOT NULL COMMENT 'Total pledged amount.',
- `original_installment_amount` decimal(20,2) NOT NULL COMMENT 'Original amount for each of the installments.',
- `currency` varchar(3) DEFAULT NULL COMMENT '3 character string, value from config setting or input via user.',
- `frequency_unit` varchar(8) NOT NULL DEFAULT 'month' COMMENT 'Time units for recurrence of pledge payments.',
- `frequency_interval` int unsigned NOT NULL DEFAULT 1 COMMENT 'Number of time units for recurrence of pledge payments.',
- `frequency_day` int unsigned NOT NULL DEFAULT 3 COMMENT 'Day in the period when the pledge payment is due e.g. 1st of month, 15th etc. Use this to set the scheduled dates for pledge payments.',
- `installments` int unsigned NOT NULL DEFAULT 1 COMMENT 'Total number of payments to be made.',
- `start_date` datetime NOT NULL COMMENT 'The date the first scheduled pledge occurs.',
- `create_date` datetime NOT NULL COMMENT 'When this pledge record was created.',
- `acknowledge_date` datetime COMMENT 'When a pledge acknowledgement message was sent to the contributor.',
- `modified_date` datetime COMMENT 'Last updated date for this pledge record.',
- `cancel_date` datetime COMMENT 'Date this pledge was cancelled by contributor.',
- `end_date` datetime COMMENT 'Date this pledge finished successfully (total pledge payments equal to or greater than pledged amount).',
- `max_reminders` int unsigned DEFAULT 1 COMMENT 'The maximum number of payment reminders to send for any given payment.',
- `initial_reminder_day` int unsigned DEFAULT 5 COMMENT 'Send initial reminder this many days prior to the payment due date.',
- `additional_reminder_day` int unsigned DEFAULT 5 COMMENT 'Send additional reminder this many days after last one sent, up to maximum number of reminders.',
- `status_id` int unsigned NOT NULL COMMENT 'Implicit foreign key to civicrm_option_values in the pledge_status option group.',
- `is_test` tinyint NOT NULL DEFAULT 0,
- `campaign_id` int unsigned COMMENT 'The campaign for which this pledge has been initiated.',
- PRIMARY KEY (`id`),
- INDEX `index_status`(status_id),
- CONSTRAINT FK_civicrm_pledge_contact_id FOREIGN KEY (`contact_id`) REFERENCES `civicrm_contact`(`id`) ON DELETE CASCADE,
- CONSTRAINT FK_civicrm_pledge_financial_type_id FOREIGN KEY (`financial_type_id`) REFERENCES `civicrm_financial_type`(`id`),
- CONSTRAINT FK_civicrm_pledge_contribution_page_id FOREIGN KEY (`contribution_page_id`) REFERENCES `civicrm_contribution_page`(`id`) ON DELETE SET NULL,
- CONSTRAINT FK_civicrm_pledge_campaign_id FOREIGN KEY (`campaign_id`) REFERENCES `civicrm_campaign`(`id`) ON DELETE SET NULL
-)
-ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
-
--- /*******************************************************
--- *
--- * civicrm_report_instance
--- *
--- * Users can save their report instance and put in a cron tab etc.
--- *
--- *******************************************************/
-CREATE TABLE `civicrm_report_instance` (
- `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'Report Instance ID',
- `domain_id` int unsigned NOT NULL COMMENT 'Which Domain is this instance for',
- `title` varchar(255) COMMENT 'Report Instance Title.',
- `report_id` varchar(512) NOT NULL COMMENT 'FK to civicrm_option_value for the report template',
- `name` varchar(255) COMMENT 'when combined with report_id/template uniquely identifies the instance',
- `args` varchar(255) COMMENT 'arguments that are passed in the url when invoking the instance',
- `description` varchar(255) COMMENT 'Report Instance description.',
- `permission` varchar(255) COMMENT 'permission required to be able to run this instance',
- `grouprole` varchar(1024) COMMENT 'role required to be able to run this instance',
- `form_values` longtext COMMENT 'Submitted form values for this report',
- `is_active` tinyint NOT NULL DEFAULT 1 COMMENT 'Is this entry active?',
- `created_id` int unsigned COMMENT 'FK to contact table.',
- `owner_id` int unsigned COMMENT 'FK to contact table.',
- `email_subject` varchar(255) COMMENT 'Subject of email',
- `email_to` text COMMENT 'comma-separated list of email addresses to send the report to',
- `email_cc` text COMMENT 'comma-separated list of email addresses to send the report to',
- `header` text COMMENT 'comma-separated list of email addresses to send the report to',
- `footer` text COMMENT 'comma-separated list of email addresses to send the report to',
- `navigation_id` int unsigned COMMENT 'FK to navigation ID',
- `drilldown_id` int unsigned COMMENT 'FK to instance ID drilldown to',
- `is_reserved` tinyint NOT NULL DEFAULT 0,
- PRIMARY KEY (`id`),
- CONSTRAINT FK_civicrm_report_instance_domain_id FOREIGN KEY (`domain_id`) REFERENCES `civicrm_domain`(`id`),
- CONSTRAINT FK_civicrm_report_instance_created_id FOREIGN KEY (`created_id`) REFERENCES `civicrm_contact`(`id`) ON DELETE SET NULL,
- CONSTRAINT FK_civicrm_report_instance_owner_id FOREIGN KEY (`owner_id`) REFERENCES `civicrm_contact`(`id`) ON DELETE SET NULL,
- CONSTRAINT FK_civicrm_report_instance_navigation_id FOREIGN KEY (`navigation_id`) REFERENCES `civicrm_navigation`(`id`) ON DELETE SET NULL,
- CONSTRAINT FK_civicrm_report_instance_drilldown_id FOREIGN KEY (`drilldown_id`) REFERENCES `civicrm_report_instance`(`id`) ON DELETE SET NULL
-)
-ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
-
--- /*******************************************************
--- *
--- * civicrm_price_set
--- *
--- *******************************************************/
-CREATE TABLE `civicrm_price_set` (
- `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'Price Set',
- `domain_id` int unsigned COMMENT 'Which Domain is this price-set for',
- `name` varchar(255) NOT NULL COMMENT 'Variable name/programmatic handle for this set of price fields.',
- `title` varchar(255) NOT NULL COMMENT 'Displayed title for the Price Set.',
- `is_active` tinyint NOT NULL DEFAULT 1 COMMENT 'Is this price set active',
- `help_pre` text COMMENT 'Description and/or help text to display before fields in form.',
- `help_post` text COMMENT 'Description and/or help text to display after fields in form.',
- `javascript` varchar(64) COMMENT 'Optional Javascript script function(s) included on the form with this price_set. Can be used for conditional',
- `extends` varchar(255) NOT NULL COMMENT 'What components are using this price set?',
- `financial_type_id` int unsigned DEFAULT NULL COMMENT 'FK to Financial Type(for membership price sets only).',
- `is_quick_config` tinyint NOT NULL DEFAULT 0 COMMENT 'Is set if edited on Contribution or Event Page rather than through Manage Price Sets',
- `is_reserved` tinyint NOT NULL DEFAULT 0 COMMENT 'Is this a predefined system price set (i.e. it can not be deleted, edited)?',
- `min_amount` decimal(20,2) DEFAULT 0.0 COMMENT 'Minimum Amount required for this set.',
+CREATE TABLE `civicrm_participant_payment` (
+ `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'Participant Payment ID',
+ `participant_id` int unsigned NOT NULL COMMENT 'Participant ID (FK)',
+ `contribution_id` int unsigned NOT NULL COMMENT 'FK to contribution table.',
PRIMARY KEY (`id`),
- UNIQUE INDEX `UI_name`(name),
- CONSTRAINT FK_civicrm_price_set_domain_id FOREIGN KEY (`domain_id`) REFERENCES `civicrm_domain`(`id`),
- CONSTRAINT FK_civicrm_price_set_financial_type_id FOREIGN KEY (`financial_type_id`) REFERENCES `civicrm_financial_type`(`id`) ON DELETE SET NULL
+ UNIQUE INDEX `UI_contribution_participant`(`contribution_id`, `participant_id`)
)
ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
-
--- /*******************************************************
--- *
--- * civicrm_price_set_entity
--- *
--- *******************************************************/
-CREATE TABLE `civicrm_price_set_entity` (
- `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'Price Set Entity',
- `entity_table` varchar(64) NOT NULL COMMENT 'Table which uses this price set',
- `entity_id` int unsigned NOT NULL COMMENT 'Item in table',
- `price_set_id` int unsigned NOT NULL COMMENT 'price set being used',
- PRIMARY KEY (`id`),
- UNIQUE INDEX `UI_entity`(entity_table, entity_id),
- CONSTRAINT FK_civicrm_price_set_entity_price_set_id FOREIGN KEY (`price_set_id`) REFERENCES `civicrm_price_set`(`id`)
+CREATE TABLE `civicrm_participant_status_type` (
+ `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'unique participant status type id',
+ `name` varchar(64) COMMENT 'non-localized name of the status type',
+ `label` varchar(255) COMMENT 'localized label for display of this status type',
+ `class` varchar(8) COMMENT 'the general group of status type this one belongs to',
+ `is_reserved` boolean NOT NULL DEFAULT FALSE COMMENT 'whether this is a status type required by the system',
+ `is_active` boolean NOT NULL DEFAULT TRUE COMMENT 'whether this status type is active',
+ `is_counted` boolean NOT NULL DEFAULT FALSE COMMENT 'whether this status type is counted against event size limit',
+ `weight` int unsigned NOT NULL COMMENT 'controls sort order',
+ `visibility_id` int unsigned COMMENT 'whether the status type is visible to the public, an implicit foreign key to option_value.value related to the `visibility` option_group',
+ PRIMARY KEY (`id`)
)
ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
-
--- /*******************************************************
--- *
--- * civicrm_county
--- *
--- *******************************************************/
-CREATE TABLE `civicrm_county` (
- `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'County ID',
- `name` varchar(64) COMMENT 'Name of County',
- `abbreviation` varchar(4) COMMENT '2-4 Character Abbreviation of County',
- `state_province_id` int unsigned NOT NULL COMMENT 'ID of State/Province that County belongs',
- `is_active` tinyint NOT NULL DEFAULT 1 COMMENT 'Is this County active?',
- PRIMARY KEY (`id`),
- UNIQUE INDEX `UI_name_state_id`(name, state_province_id),
- CONSTRAINT FK_civicrm_county_state_province_id FOREIGN KEY (`state_province_id`) REFERENCES `civicrm_state_province`(`id`)
-)
-ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
-
--- /*******************************************************
--- *
--- * civicrm_dashboard
--- *
--- * Table to store dashboard.
--- *
--- *******************************************************/
-CREATE TABLE `civicrm_dashboard` (
- `id` int unsigned NOT NULL AUTO_INCREMENT,
- `domain_id` int unsigned NOT NULL COMMENT 'Domain for dashboard',
- `name` varchar(64) COMMENT 'Internal name of dashlet.',
- `label` varchar(255) COMMENT 'dashlet title',
- `url` varchar(255) COMMENT 'url in case of external dashlet',
- `permission` varchar(255) COMMENT 'Permission for the dashlet',
- `permission_operator` varchar(3) COMMENT 'Permission Operator',
- `fullscreen_url` varchar(255) COMMENT 'fullscreen url for dashlet',
- `is_active` tinyint NOT NULL DEFAULT 0 COMMENT 'Is this dashlet active?',
- `is_reserved` tinyint NOT NULL DEFAULT 0 COMMENT 'Is this dashlet reserved?',
- `cache_minutes` int unsigned NOT NULL DEFAULT 60 COMMENT 'Number of minutes to cache dashlet content in browser localStorage.',
- `directive` varchar(255) COMMENT 'Element name of angular directive to invoke (lowercase hyphenated format)',
- PRIMARY KEY (`id`),
- CONSTRAINT FK_civicrm_dashboard_domain_id FOREIGN KEY (`domain_id`) REFERENCES `civicrm_domain`(`id`) ON DELETE CASCADE
+CREATE TABLE `civicrm_currency` (
+ `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'Currency ID',
+ `name` varchar(64) COMMENT 'Currency Name',
+ `symbol` varchar(8) COMMENT 'Currency Symbol',
+ `numeric_code` varchar(3) COMMENT 'Numeric currency code',
+ `full_name` varchar(64) COMMENT 'Full currency name',
+ PRIMARY KEY (`id`)
)
ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
-
--- /*******************************************************
--- *
--- * civicrm_discount
--- *
--- * Stores discounts for events on the basis of date
--- *
--- *******************************************************/
-CREATE TABLE `civicrm_discount` (
- `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'primary key',
- `entity_table` varchar(64) NOT NULL COMMENT 'physical tablename for entity being joined to discount, e.g. civicrm_event',
- `entity_id` int unsigned NOT NULL COMMENT 'FK to entity table specified in entity_table column.',
- `price_set_id` int unsigned NOT NULL COMMENT 'FK to civicrm_price_set',
- `start_date` date COMMENT 'Date when discount starts.',
- `end_date` date COMMENT 'Date when discount ends.',
+CREATE TABLE `civicrm_entity_financial_account` (
+ `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'ID',
+ `entity_table` varchar(64) NOT NULL COMMENT 'Links to an entity_table like civicrm_financial_type',
+ `entity_id` int unsigned NOT NULL COMMENT 'Links to an id in the entity_table, such as vid in civicrm_financial_type',
+ `account_relationship` int unsigned NOT NULL COMMENT 'FK to a new civicrm_option_value (account_relationship)',
+ `financial_account_id` int unsigned NOT NULL COMMENT 'FK to the financial_account_id',
PRIMARY KEY (`id`),
- INDEX `index_entity`(entity_table, entity_id),
- INDEX `index_entity_option_id`(entity_table, entity_id, price_set_id),
- CONSTRAINT FK_civicrm_discount_price_set_id FOREIGN KEY (`price_set_id`) REFERENCES `civicrm_price_set`(`id`) ON DELETE CASCADE
-)
-ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
-
--- /*******************************************************
--- *
--- * civicrm_entity_file
--- *
--- * Attaches (joins) uploaded files (images, documents, etc.) to entities (Contacts, Groups, Actions).
--- *
--- *******************************************************/
-CREATE TABLE `civicrm_entity_file` (
- `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'primary key',
- `entity_table` varchar(64) NOT NULL COMMENT 'physical tablename for entity being joined to file, e.g. civicrm_contact',
- `entity_id` int unsigned NOT NULL COMMENT 'FK to entity table specified in entity_table column.',
- `file_id` int unsigned NOT NULL COMMENT 'FK to civicrm_file',
+ UNIQUE INDEX `index_entity_id_entity_table_account_relationship`(`entity_id`, `entity_table`, `account_relationship`)
+)
+ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
+CREATE TABLE `civicrm_entity_financial_trxn` (
+ `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'ID',
+ `entity_table` varchar(64) NOT NULL COMMENT 'May contain civicrm_financial_item, civicrm_contribution, civicrm_financial_trxn, civicrm_grant, etc',
+ `entity_id` int unsigned NOT NULL,
+ `financial_trxn_id` int unsigned,
+ `amount` decimal(20,2) NOT NULL COMMENT 'allocated amount of transaction to this entity',
PRIMARY KEY (`id`),
- UNIQUE INDEX `UI_entity_id_entity_table_file_id`(entity_id, entity_table, file_id),
- CONSTRAINT FK_civicrm_entity_file_file_id FOREIGN KEY (`file_id`) REFERENCES `civicrm_file`(`id`)
-)
-ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
-
--- /*******************************************************
--- *
--- * civicrm_entity_tag
--- *
--- * Tag entities (Contacts, Groups, Actions) to categories.
--- *
--- *******************************************************/
-CREATE TABLE `civicrm_entity_tag` (
- `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'primary key',
- `entity_table` varchar(64) COMMENT 'physical tablename for entity being joined to file, e.g. civicrm_contact',
- `entity_id` int unsigned NOT NULL COMMENT 'FK to entity table specified in entity_table column.',
- `tag_id` int unsigned NOT NULL COMMENT 'FK to civicrm_tag',
+ INDEX `UI_entity_financial_trxn_entity_table`(`entity_table`),
+ INDEX `UI_entity_financial_trxn_entity_id`(`entity_id`)
+)
+ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
+CREATE TABLE `civicrm_financial_account` (
+ `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'ID',
+ `name` varchar(255) NOT NULL COMMENT 'Financial Account Name.',
+ `contact_id` int unsigned COMMENT 'FK to Contact ID that is responsible for the funds in this account',
+ `financial_account_type_id` int unsigned NOT NULL DEFAULT 3 COMMENT 'pseudo FK into civicrm_option_value.',
+ `accounting_code` varchar(64) COMMENT 'Optional value for mapping monies owed and received to accounting system codes.',
+ `account_type_code` varchar(64) COMMENT 'Optional value for mapping account types to accounting system account categories (QuickBooks Account Type Codes for example).',
+ `description` varchar(255) COMMENT 'Financial Type Description.',
+ `parent_id` int unsigned COMMENT 'Parent ID in account hierarchy',
+ `is_header_account` boolean NOT NULL DEFAULT FALSE COMMENT 'Is this a header account which does not allow transactions to be posted against it directly, but only to its sub-accounts?',
+ `is_deductible` boolean NOT NULL DEFAULT FALSE COMMENT 'Is this account tax-deductible?',
+ `is_tax` boolean NOT NULL DEFAULT FALSE COMMENT 'Is this account for taxes?',
+ `tax_rate` decimal(10,8) COMMENT 'The percentage of the total_amount that is due for this tax.',
+ `is_reserved` boolean NOT NULL DEFAULT FALSE COMMENT 'Is this a predefined system object?',
+ `is_active` boolean NOT NULL DEFAULT TRUE COMMENT 'Is this property active?',
+ `is_default` boolean NOT NULL DEFAULT FALSE COMMENT 'Is this account the default one (or default tax one) for its financial_account_type?',
PRIMARY KEY (`id`),
- UNIQUE INDEX `UI_entity_id_entity_table_tag_id`(entity_id, entity_table, tag_id),
- CONSTRAINT FK_civicrm_entity_tag_tag_id FOREIGN KEY (`tag_id`) REFERENCES `civicrm_tag`(`id`) ON DELETE CASCADE
-)
-ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
-
--- /*******************************************************
--- *
--- * civicrm_uf_group
--- *
--- * User framework groups. Each group represents a form which encompasses a set of fields defined in civicrm_uf_fields table. Initially will be used for CiviCRM Profile form(s). Subsequently we anticipate using this to define other public facing forms (e.g. online donation solicitation forms, mailing list preferences, etc.).
--- *
--- *******************************************************/
-CREATE TABLE `civicrm_uf_group` (
- `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'Unique table ID',
- `is_active` tinyint NOT NULL DEFAULT 1 COMMENT 'Is this profile currently active? If false, hide all related fields for all sharing contexts.',
- `group_type` varchar(255) COMMENT 'Comma separated list of the type(s) of profile fields.',
- `title` varchar(64) NOT NULL COMMENT 'Form title.',
- `frontend_title` varchar(64) COMMENT 'Profile Form Public title',
- `description` text COMMENT 'Optional verbose description of the profile.',
- `help_pre` text COMMENT 'Description and/or help text to display before fields in form.',
- `help_post` text COMMENT 'Description and/or help text to display after fields in form.',
- `limit_listings_group_id` int unsigned COMMENT 'Group id, foreign key from civicrm_group',
- `post_url` varchar(255) COMMENT 'Redirect to URL on submit.',
- `add_to_group_id` int unsigned COMMENT 'foreign key to civicrm_group_id',
- `add_captcha` tinyint NOT NULL DEFAULT 0 COMMENT 'Should a CAPTCHA widget be included this Profile form.',
- `is_map` tinyint NOT NULL DEFAULT 0 COMMENT 'Do we want to map results from this profile.',
- `is_edit_link` tinyint NOT NULL DEFAULT 0 COMMENT 'Should edit link display in profile selector',
- `is_uf_link` tinyint NOT NULL DEFAULT 0 COMMENT 'Should we display a link to the website profile in profile selector',
- `is_update_dupe` tinyint NOT NULL DEFAULT 0 COMMENT 'Should we update the contact record if we find a duplicate',
- `cancel_url` varchar(255) COMMENT 'Redirect to URL when Cancel button clicked.',
- `is_cms_user` tinyint NOT NULL DEFAULT 0 COMMENT 'Should we create a cms user for this profile ',
- `notify` text,
- `is_reserved` tinyint NOT NULL DEFAULT 0 COMMENT 'Is this group reserved for use by some other CiviCRM functionality?',
- `name` varchar(64) COMMENT 'Name of the UF group for directly addressing it in the codebase',
- `created_id` int unsigned COMMENT 'FK to civicrm_contact, who created this UF group',
- `created_date` datetime COMMENT 'Date and time this UF group was created.',
- `is_proximity_search` tinyint NOT NULL DEFAULT 0 COMMENT 'Should we include proximity search feature in this profile search form?',
- `cancel_button_text` varchar(64) DEFAULT NULL COMMENT 'Custom Text to display on the Cancel button when used in create or edit mode',
- `submit_button_text` varchar(64) DEFAULT NULL COMMENT 'Custom Text to display on the submit button on profile edit/create screens',
- `add_cancel_button` tinyint NOT NULL DEFAULT 1 COMMENT 'Should a Cancel button be included in this Profile form.',
+ UNIQUE INDEX `UI_name`(`name`)
+)
+ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
+CREATE TABLE `civicrm_financial_item` (
+ `id` int unsigned NOT NULL AUTO_INCREMENT,
+ `created_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'Date and time the item was created',
+ `transaction_date` datetime NOT NULL COMMENT 'Date and time of the source transaction',
+ `contact_id` int unsigned NOT NULL COMMENT 'FK to Contact ID of contact the item is from',
+ `description` varchar(255) COMMENT 'Human readable description of this item, to ease display without lookup of source item.',
+ `amount` decimal(20,2) NOT NULL DEFAULT '0' COMMENT 'Total amount of this item',
+ `currency` varchar(3) COMMENT 'Currency for the amount',
+ `financial_account_id` int unsigned COMMENT 'FK to civicrm_financial_account',
+ `status_id` int unsigned COMMENT 'Payment status: test, paid, part_paid, unpaid (if empty assume unpaid)',
+ `entity_table` varchar(64) COMMENT 'May contain civicrm_line_item, civicrm_financial_trxn etc',
+ `entity_id` int unsigned COMMENT 'The specific source item that is responsible for the creation of this financial_item',
PRIMARY KEY (`id`),
- UNIQUE INDEX `UI_name`(name),
- CONSTRAINT FK_civicrm_uf_group_limit_listings_group_id FOREIGN KEY (`limit_listings_group_id`) REFERENCES `civicrm_group`(`id`) ON DELETE SET NULL,
- CONSTRAINT FK_civicrm_uf_group_add_to_group_id FOREIGN KEY (`add_to_group_id`) REFERENCES `civicrm_group`(`id`) ON DELETE SET NULL,
- CONSTRAINT FK_civicrm_uf_group_created_id FOREIGN KEY (`created_id`) REFERENCES `civicrm_contact`(`id`) ON DELETE SET NULL
-)
-ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
-
--- /*******************************************************
--- *
--- * civicrm_uf_field
--- *
--- * User Framework fields and their properties.
--- *
--- *******************************************************/
-CREATE TABLE `civicrm_uf_field` (
- `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'Unique table ID',
- `uf_group_id` int unsigned NOT NULL COMMENT 'Which form does this field belong to.',
- `field_name` varchar(64) NOT NULL COMMENT 'Name for CiviCRM field which is being exposed for sharing.',
- `is_active` tinyint NOT NULL DEFAULT 1 COMMENT 'Is this field currently shareable? If false, hide the field for all sharing contexts.',
- `is_view` tinyint NOT NULL DEFAULT 0 COMMENT 'the field is view only and not editable in user forms.',
- `is_required` tinyint NOT NULL DEFAULT 0 COMMENT 'Is this field required when included in a user or registration form?',
- `weight` int NOT NULL DEFAULT 1 COMMENT 'Controls field display order when user framework fields are displayed in registration and account editing forms.',
- `help_post` text COMMENT 'Description and/or help text to display after this field.',
- `help_pre` text COMMENT 'Description and/or help text to display before this field.',
- `visibility` varchar(32) DEFAULT 'User and User Admin Only' COMMENT 'In what context(s) is this field visible.',
- `in_selector` tinyint NOT NULL DEFAULT 0 COMMENT 'Is this field included as a column in the selector table?',
- `is_searchable` tinyint NOT NULL DEFAULT 0 COMMENT 'Is this field included search form of profile?',
- `location_type_id` int unsigned COMMENT 'Location type of this mapping, if required',
- `phone_type_id` int unsigned COMMENT 'Phone Type ID, if required',
- `website_type_id` int unsigned COMMENT 'Website Type ID, if required',
- `label` varchar(255) NOT NULL COMMENT 'To save label for fields.',
- `field_type` varchar(255) COMMENT 'This field saves field type (ie individual,household.. field etc).',
- `is_reserved` tinyint NOT NULL DEFAULT 0 COMMENT 'Is this field reserved for use by some other CiviCRM functionality?',
- `is_multi_summary` tinyint NOT NULL DEFAULT 0 COMMENT 'Include in multi-record listing?',
+ INDEX `IX_created_date`(`created_date`),
+ INDEX `IX_transaction_date`(`transaction_date`),
+ INDEX `index_entity_id_entity_table`(`entity_id`, `entity_table`)
+)
+ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
+CREATE TABLE `civicrm_financial_trxn` (
+ `id` int unsigned NOT NULL AUTO_INCREMENT,
+ `from_financial_account_id` int unsigned COMMENT 'FK to financial_account table.',
+ `to_financial_account_id` int unsigned COMMENT 'FK to financial_financial_account table.',
+ `trxn_date` datetime DEFAULT NULL COMMENT 'date transaction occurred',
+ `total_amount` decimal(20,2) NOT NULL COMMENT 'amount of transaction',
+ `fee_amount` decimal(20,2) COMMENT 'actual processor fee if known - may be 0.',
+ `net_amount` decimal(20,2) COMMENT 'actual funds transfer amount. total less fees. if processor does not report actual fee during transaction, this is set to total_amount.',
+ `currency` varchar(3) DEFAULT NULL COMMENT '3 character string, value from config setting or input via user.',
+ `is_payment` boolean NOT NULL DEFAULT FALSE COMMENT 'Is this entry either a payment or a reversal of a payment?',
+ `trxn_id` varchar(255) COMMENT 'Transaction id supplied by external processor. This may not be unique.',
+ `trxn_result_code` varchar(255) COMMENT 'processor result code',
+ `status_id` int unsigned COMMENT 'pseudo FK to civicrm_option_value of contribution_status_id option_group',
+ `payment_processor_id` int unsigned COMMENT 'Payment Processor for this financial transaction',
+ `payment_instrument_id` int unsigned COMMENT 'FK to payment_instrument option group values',
+ `card_type_id` int unsigned COMMENT 'FK to accept_creditcard option group values',
+ `check_number` varchar(255) COMMENT 'Check number',
+ `pan_truncation` varchar(4) COMMENT 'Last 4 digits of credit card',
+ `order_reference` varchar(255) COMMENT 'Payment Processor external order reference',
PRIMARY KEY (`id`),
- INDEX `IX_website_type_id`(website_type_id),
- CONSTRAINT FK_civicrm_uf_field_uf_group_id FOREIGN KEY (`uf_group_id`) REFERENCES `civicrm_uf_group`(`id`) ON DELETE CASCADE,
- CONSTRAINT FK_civicrm_uf_field_location_type_id FOREIGN KEY (`location_type_id`) REFERENCES `civicrm_location_type`(`id`) ON DELETE SET NULL
-)
-ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
-
--- /*******************************************************
--- *
--- * civicrm_uf_join
--- *
--- * User framework join table. This links various internal civicrm object with a profile. Initial use cases are the donation object and the user module
--- *
--- *******************************************************/
-CREATE TABLE `civicrm_uf_join` (
- `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'Unique table ID',
- `is_active` tinyint NOT NULL DEFAULT 1 COMMENT 'Is this join currently active?',
- `module` varchar(64) NOT NULL COMMENT 'Module which owns this uf_join instance, e.g. User Registration, CiviDonate, etc.',
- `entity_table` varchar(64) COMMENT 'Name of table where item being referenced is stored. Modules which only need a single collection of uf_join instances may choose not to populate entity_table and entity_id.',
- `entity_id` int unsigned COMMENT 'Foreign key to the referenced item.',
- `weight` int NOT NULL DEFAULT 1 COMMENT 'Controls display order when multiple user framework groups are setup for concurrent display.',
- `uf_group_id` int unsigned NOT NULL COMMENT 'Which form does this field belong to.',
- `module_data` longtext COMMENT 'Json serialized array of data used by the ufjoin.module',
+ INDEX `UI_ftrxn_trxn_id`(`trxn_id`),
+ INDEX `UI_ftrxn_payment_instrument_id`(`payment_instrument_id`),
+ INDEX `UI_ftrxn_check_number`(`check_number`)
+)
+ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
+CREATE TABLE `civicrm_financial_type` (
+ `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'ID of original financial_type so you can search this table by the financial_type.id and then select the relevant version based on the timestamp',
+ `name` varchar(64) NOT NULL COMMENT 'Financial Type Name.',
+ `description` varchar(255) COMMENT 'Financial Type Description.',
+ `is_deductible` boolean NOT NULL DEFAULT FALSE COMMENT 'Is this financial type tax-deductible? If TRUE, contributions of this type may be fully OR partially deductible - non-deductible amount is stored in the Contribution record.',
+ `is_reserved` boolean NOT NULL DEFAULT FALSE COMMENT 'Is this a predefined system object?',
+ `is_active` boolean NOT NULL DEFAULT TRUE COMMENT 'Is this property active?',
+ PRIMARY KEY (`id`)
+)
+ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
+CREATE TABLE `civicrm_payment_processor` (
+ `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'Payment Processor ID',
+ `domain_id` int unsigned NOT NULL COMMENT 'Which Domain is this match entry for',
+ `name` varchar(64) NOT NULL COMMENT 'Payment Processor Name.',
+ `title` varchar(255) NOT NULL COMMENT 'Name of processor when shown to CiviCRM administrators.',
+ `frontend_title` varchar(255) NOT NULL COMMENT 'Name of processor when shown to users making a payment.',
+ `description` varchar(255) COMMENT 'Additional processor information shown to administrators.',
+ `payment_processor_type_id` int unsigned NOT NULL,
+ `is_active` boolean NOT NULL DEFAULT TRUE COMMENT 'Is this processor active?',
+ `is_default` boolean NOT NULL DEFAULT FALSE COMMENT 'Is this processor the default?',
+ `is_test` boolean NOT NULL DEFAULT FALSE COMMENT 'Is this processor for a test site?',
+ `user_name` varchar(255),
+ `password` varchar(255),
+ `signature` text,
+ `url_site` varchar(255),
+ `url_api` varchar(255),
+ `url_recur` varchar(255),
+ `url_button` varchar(255),
+ `subject` varchar(255),
+ `class_name` varchar(255),
+ `billing_mode` int unsigned NOT NULL COMMENT 'Billing Mode (deprecated)',
+ `is_recur` boolean NOT NULL DEFAULT FALSE COMMENT 'Can process recurring contributions',
+ `payment_type` int unsigned DEFAULT 1 COMMENT 'Payment Type: Credit or Debit (deprecated)',
+ `payment_instrument_id` int unsigned DEFAULT 1 COMMENT 'Payment Instrument ID',
+ `accepted_credit_cards` text DEFAULT NULL COMMENT 'array of accepted credit card types',
PRIMARY KEY (`id`),
- INDEX `index_entity`(entity_table, entity_id),
- CONSTRAINT FK_civicrm_uf_join_uf_group_id FOREIGN KEY (`uf_group_id`) REFERENCES `civicrm_uf_group`(`id`)
-)
-ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
-
--- /*******************************************************
--- *
--- * civicrm_action_schedule
--- *
--- * Table to store the reminders.
--- *
--- *******************************************************/
-CREATE TABLE `civicrm_action_schedule` (
- `id` int unsigned NOT NULL AUTO_INCREMENT,
- `name` varchar(128) NOT NULL COMMENT 'Name of the scheduled action',
- `title` varchar(64) COMMENT 'Title of the action(reminder)',
- `recipient` varchar(64) COMMENT 'Recipient',
- `limit_to` int COMMENT 'Is this the recipient criteria limited to OR in addition to?',
- `entity_value` varchar(255) COMMENT 'Entity value',
- `entity_status` varchar(64) COMMENT 'Entity status',
- `start_action_offset` int unsigned DEFAULT 0 COMMENT 'Reminder Interval.',
- `start_action_unit` varchar(8) COMMENT 'Time units for reminder.',
- `start_action_condition` varchar(64) COMMENT 'Reminder Action',
- `start_action_date` varchar(64) COMMENT 'Entity date',
- `is_repeat` tinyint NOT NULL DEFAULT 0,
- `repetition_frequency_unit` varchar(8) COMMENT 'Time units for repetition of reminder.',
- `repetition_frequency_interval` int unsigned DEFAULT 0 COMMENT 'Time interval for repeating the reminder.',
- `end_frequency_unit` varchar(8) COMMENT 'Time units till repetition of reminder.',
- `end_frequency_interval` int unsigned DEFAULT 0 COMMENT 'Time interval till repeating the reminder.',
- `end_action` varchar(32) COMMENT 'Reminder Action till repeating the reminder.',
- `end_date` varchar(64) COMMENT 'Entity end date',
- `is_active` tinyint NOT NULL DEFAULT 1 COMMENT 'Is this option active?',
- `recipient_manual` varchar(128) COMMENT 'Contact IDs to which reminder should be sent.',
- `recipient_listing` varchar(128) COMMENT 'listing based on recipient field.',
- `body_text` longtext COMMENT 'Body of the mailing in text format.',
- `body_html` longtext COMMENT 'Body of the mailing in html format.',
- `sms_body_text` longtext COMMENT 'Content of the SMS text.',
- `subject` varchar(128) COMMENT 'Subject of mailing',
- `record_activity` tinyint NOT NULL DEFAULT 0 COMMENT 'Record Activity for this reminder?',
- `mapping_id` varchar(64) COMMENT 'Name/ID of the mapping to use on this table',
- `group_id` int unsigned COMMENT 'FK to Group',
- `msg_template_id` int unsigned COMMENT 'FK to the message template.',
- `sms_template_id` int unsigned COMMENT 'FK to the message template.',
- `absolute_date` date COMMENT 'Date on which the reminder be sent.',
- `from_name` varchar(255) COMMENT 'Name in \"from\" field',
- `from_email` varchar(255) COMMENT 'Email address in \"from\" field',
- `mode` varchar(128) DEFAULT "Email" COMMENT 'Send the message as email or sms or both.',
- `sms_provider_id` int unsigned,
- `used_for` varchar(64) COMMENT 'Used for repeating entity',
- `filter_contact_language` varchar(128) COMMENT 'Used for multilingual installation',
- `communication_language` varchar(8) COMMENT 'Used for multilingual installation',
- `created_date` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'When was the scheduled reminder created.',
- `modified_date` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT 'When the reminder was created or modified.',
- `effective_start_date` timestamp NULL COMMENT 'Earliest date to consider start events from.',
- `effective_end_date` timestamp NULL COMMENT 'Latest date to consider end events from.',
+ UNIQUE INDEX `UI_name_test_domain_id`(`name`, `is_test`, `domain_id`)
+)
+ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
+CREATE TABLE `civicrm_payment_processor_type` (
+ `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'Payment Processor Type ID',
+ `name` varchar(64) NOT NULL COMMENT 'Payment Processor Type Name.',
+ `title` varchar(127) NOT NULL COMMENT 'Payment Processor Type Title.',
+ `description` varchar(255) COMMENT 'Payment Processor Description.',
+ `is_active` boolean NOT NULL DEFAULT TRUE COMMENT 'Is this processor active?',
+ `is_default` boolean NOT NULL DEFAULT FALSE COMMENT 'Is this processor the default?',
+ `user_name_label` varchar(255),
+ `password_label` varchar(255),
+ `signature_label` varchar(255),
+ `subject_label` varchar(255),
+ `class_name` varchar(255) NOT NULL,
+ `url_site_default` varchar(255),
+ `url_api_default` varchar(255),
+ `url_recur_default` varchar(255),
+ `url_button_default` varchar(255),
+ `url_site_test_default` varchar(255),
+ `url_api_test_default` varchar(255),
+ `url_recur_test_default` varchar(255),
+ `url_button_test_default` varchar(255),
+ `billing_mode` int unsigned NOT NULL COMMENT 'Billing Mode (deprecated)',
+ `is_recur` boolean NOT NULL DEFAULT FALSE COMMENT 'Can process recurring contributions',
+ `payment_type` int unsigned DEFAULT 1 COMMENT 'Payment Type: Credit or Debit (deprecated)',
+ `payment_instrument_id` int unsigned DEFAULT 1 COMMENT 'Payment Instrument ID',
PRIMARY KEY (`id`),
- UNIQUE INDEX `UI_name`(name),
- CONSTRAINT FK_civicrm_action_schedule_group_id FOREIGN KEY (`group_id`) REFERENCES `civicrm_group`(`id`) ON DELETE SET NULL,
- CONSTRAINT FK_civicrm_action_schedule_msg_template_id FOREIGN KEY (`msg_template_id`) REFERENCES `civicrm_msg_template`(`id`) ON DELETE SET NULL,
- CONSTRAINT FK_civicrm_action_schedule_sms_template_id FOREIGN KEY (`sms_template_id`) REFERENCES `civicrm_msg_template`(`id`) ON DELETE SET NULL,
- CONSTRAINT FK_civicrm_action_schedule_sms_provider_id FOREIGN KEY (`sms_provider_id`) REFERENCES `civicrm_sms_provider`(`id`) ON DELETE SET NULL
-)
-ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
-
--- /*******************************************************
--- *
--- * civicrm_action_log
--- *
--- * Table to store log for the reminder.
--- *
--- *******************************************************/
-CREATE TABLE `civicrm_action_log` (
+ UNIQUE INDEX `UI_name`(`name`)
+)
+ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
+CREATE TABLE `civicrm_payment_token` (
+ `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'Payment Token ID',
+ `contact_id` int unsigned NOT NULL COMMENT 'FK to Contact ID for the owner of the token',
+ `payment_processor_id` int unsigned NOT NULL,
+ `token` varchar(255) NOT NULL COMMENT 'Externally provided token string',
+ `created_date` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'Date created',
+ `created_id` int unsigned COMMENT 'Contact ID of token creator',
+ `expiry_date` datetime COMMENT 'Date this token expires',
+ `email` varchar(255) COMMENT 'Email at the time of token creation. Useful for fraud forensics',
+ `billing_first_name` varchar(255) COMMENT 'Billing first name at the time of token creation. Useful for fraud forensics',
+ `billing_middle_name` varchar(255) COMMENT 'Billing middle name at the time of token creation. Useful for fraud forensics',
+ `billing_last_name` varchar(255) COMMENT 'Billing last name at the time of token creation. Useful for fraud forensics',
+ `masked_account_number` varchar(255) COMMENT 'Holds the part of the card number or account details that may be retained or displayed',
+ `ip_address` varchar(255) COMMENT 'IP used when creating the token. Useful for fraud forensics',
+ PRIMARY KEY (`id`)
+)
+ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
+CREATE TABLE `civicrm_tell_friend` (
+ `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'Friend ID',
+ `entity_table` varchar(64) NOT NULL COMMENT 'Name of table where item being referenced is stored.',
+ `entity_id` int unsigned NOT NULL COMMENT 'Foreign key to the referenced item.',
+ `title` varchar(255),
+ `intro` text COMMENT 'Introductory message to contributor or participant displayed on the Tell a Friend form.',
+ `suggested_message` text COMMENT 'Suggested message to friends, provided as default on the Tell A Friend form.',
+ `general_link` varchar(255) COMMENT 'URL for general info about the organization - included in the email sent to friends.',
+ `thankyou_title` varchar(255) COMMENT 'Text for Tell a Friend thank you page header and HTML title.',
+ `thankyou_text` text COMMENT 'Thank you message displayed on success page.',
+ `is_active` boolean NOT NULL DEFAULT TRUE,
+ PRIMARY KEY (`id`)
+)
+ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
+CREATE TABLE `civicrm_mailing_bounce_pattern` (
`id` int unsigned NOT NULL AUTO_INCREMENT,
- `contact_id` int unsigned COMMENT 'FK to Contact ID',
- `entity_id` int unsigned NOT NULL COMMENT 'FK to id of the entity that the action was performed on. Pseudo - FK.',
- `entity_table` varchar(255) COMMENT 'name of the entity table for the above id, e.g. civicrm_activity, civicrm_participant',
- `action_schedule_id` int unsigned NOT NULL COMMENT 'FK to the action schedule that this action originated from.',
- `action_date_time` datetime COMMENT 'date time that the action was performed on.',
- `is_error` tinyint NOT NULL DEFAULT 0 COMMENT 'Was there any error sending the reminder?',
- `message` text COMMENT 'Description / text in case there was an error encountered.',
- `repetition_number` int unsigned COMMENT 'Keeps track of the sequence number of this repetition.',
- `reference_date` datetime DEFAULT NULL COMMENT 'Stores the date from the entity which triggered this reminder action (e.g. membership.end_date for most membership renewal reminders)',
- PRIMARY KEY (`id`),
- CONSTRAINT FK_civicrm_action_log_contact_id FOREIGN KEY (`contact_id`) REFERENCES `civicrm_contact`(`id`) ON DELETE CASCADE,
- CONSTRAINT FK_civicrm_action_log_action_schedule_id FOREIGN KEY (`action_schedule_id`) REFERENCES `civicrm_action_schedule`(`id`) ON DELETE CASCADE
-)
-ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
-
--- /*******************************************************
--- *
--- * civicrm_dashboard_contact
--- *
--- * Table to store dashboard for each contact.
--- *
--- *******************************************************/
-CREATE TABLE `civicrm_dashboard_contact` (
+ `bounce_type_id` int unsigned NOT NULL COMMENT 'Type of bounce',
+ `pattern` varchar(255) COMMENT 'A regexp to match a message to a bounce type',
+ PRIMARY KEY (`id`)
+)
+ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
+CREATE TABLE `civicrm_mailing_bounce_type` (
`id` int unsigned NOT NULL AUTO_INCREMENT,
- `dashboard_id` int unsigned NOT NULL COMMENT 'Dashboard ID',
- `contact_id` int unsigned NOT NULL COMMENT 'Contact ID',
- `column_no` int DEFAULT 0 COMMENT 'column no for this widget',
- `is_active` tinyint NOT NULL DEFAULT 0 COMMENT 'Is this widget active?',
- `weight` int DEFAULT 0 COMMENT 'Ordering of the widgets.',
- PRIMARY KEY (`id`),
- UNIQUE INDEX `index_dashboard_id_contact_id`(dashboard_id, contact_id),
- CONSTRAINT FK_civicrm_dashboard_contact_dashboard_id FOREIGN KEY (`dashboard_id`) REFERENCES `civicrm_dashboard`(`id`) ON DELETE CASCADE,
- CONSTRAINT FK_civicrm_dashboard_contact_contact_id FOREIGN KEY (`contact_id`) REFERENCES `civicrm_contact`(`id`) ON DELETE CASCADE
-)
-ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
-
--- /*******************************************************
--- *
--- * civicrm_relationship
--- *
--- * Relationship between any 2 types of contacts.
--- *
--- *******************************************************/
-CREATE TABLE `civicrm_relationship` (
- `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'Relationship ID',
- `contact_id_a` int unsigned NOT NULL COMMENT 'id of the first contact',
- `contact_id_b` int unsigned NOT NULL COMMENT 'id of the second contact',
- `relationship_type_id` int unsigned NOT NULL COMMENT 'Type of relationship',
- `start_date` date COMMENT 'date when the relationship started',
- `end_date` date COMMENT 'date when the relationship ended',
- `is_active` tinyint NOT NULL DEFAULT 1 COMMENT 'is the relationship active ?',
- `description` varchar(255) COMMENT 'Optional verbose description for the relationship.',
- `is_permission_a_b` int unsigned NOT NULL DEFAULT 0 COMMENT 'Permission that Contact A has to view/update Contact B',
- `is_permission_b_a` int unsigned NOT NULL DEFAULT 0 COMMENT 'Permission that Contact B has to view/update Contact A',
- `case_id` int unsigned DEFAULT NULL COMMENT 'FK to civicrm_case',
- `created_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'Relationship created date.',
- `modified_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT 'Relationship last modified.',
- PRIMARY KEY (`id`),
- CONSTRAINT FK_civicrm_relationship_contact_id_a FOREIGN KEY (`contact_id_a`) REFERENCES `civicrm_contact`(`id`) ON DELETE CASCADE,
- CONSTRAINT FK_civicrm_relationship_contact_id_b FOREIGN KEY (`contact_id_b`) REFERENCES `civicrm_contact`(`id`) ON DELETE CASCADE,
- CONSTRAINT FK_civicrm_relationship_relationship_type_id FOREIGN KEY (`relationship_type_id`) REFERENCES `civicrm_relationship_type`(`id`) ON DELETE CASCADE,
- CONSTRAINT FK_civicrm_relationship_case_id FOREIGN KEY (`case_id`) REFERENCES `civicrm_case`(`id`) ON DELETE CASCADE
-)
-ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
-
--- /*******************************************************
--- *
--- * civicrm_relationship_cache
--- *
--- * The cache permutes information from the relationship table to facilitate querying. Every relationship is mapped to multiple records in the cache. Joins should begin on the near side and extract info from the far side.
--- *
--- *******************************************************/
-CREATE TABLE `civicrm_relationship_cache` (
- `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'Relationship Cache ID',
- `relationship_id` int unsigned NOT NULL COMMENT 'id of the relationship (FK to civicrm_relationship.id)',
- `relationship_type_id` int unsigned NOT NULL COMMENT 'id of the relationship type',
- `orientation` char(3) NOT NULL COMMENT 'The cache record is a permutation of the original relationship record. The orientation indicates whether it is forward (a_b) or reverse (b_a) relationship.',
- `near_contact_id` int unsigned NOT NULL COMMENT 'id of the first contact',
- `near_relation` varchar(64) COMMENT 'name for relationship of near_contact to far_contact.',
- `far_contact_id` int unsigned NOT NULL COMMENT 'id of the second contact',
- `far_relation` varchar(64) COMMENT 'name for relationship of far_contact to near_contact.',
- `is_active` tinyint NOT NULL DEFAULT 1 COMMENT 'is the relationship active ?',
- `start_date` date COMMENT 'date when the relationship started',
- `end_date` date COMMENT 'date when the relationship ended',
- `case_id` int unsigned DEFAULT NULL COMMENT 'FK to civicrm_case',
- PRIMARY KEY (`id`),
- UNIQUE INDEX `UI_relationship`(relationship_id, orientation),
- INDEX `index_nearid_nearrelation`(near_contact_id, near_relation),
- INDEX `index_nearid_farrelation`(near_contact_id, far_relation),
- INDEX `index_near_relation`(near_relation),
- CONSTRAINT FK_civicrm_relationship_cache_relationship_id FOREIGN KEY (`relationship_id`) REFERENCES `civicrm_relationship`(`id`) ON DELETE CASCADE,
- CONSTRAINT FK_civicrm_relationship_cache_relationship_type_id FOREIGN KEY (`relationship_type_id`) REFERENCES `civicrm_relationship_type`(`id`) ON DELETE CASCADE,
- CONSTRAINT FK_civicrm_relationship_cache_near_contact_id FOREIGN KEY (`near_contact_id`) REFERENCES `civicrm_contact`(`id`) ON DELETE CASCADE,
- CONSTRAINT FK_civicrm_relationship_cache_far_contact_id FOREIGN KEY (`far_contact_id`) REFERENCES `civicrm_contact`(`id`) ON DELETE CASCADE,
- CONSTRAINT FK_civicrm_relationship_cache_case_id FOREIGN KEY (`case_id`) REFERENCES `civicrm_case`(`id`) ON DELETE CASCADE
-)
-ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
-
--- /*******************************************************
--- *
--- * civicrm_mailing
--- *
--- * Stores information about a mailing.
--- *
--- *******************************************************/
+ `name` varchar(255) NOT NULL COMMENT 'Type of bounce',
+ `description` varchar(2048) COMMENT 'A description of this bounce type',
+ `hold_threshold` int unsigned NOT NULL COMMENT 'Number of bounces of this type required before the email address is put on bounce hold',
+ PRIMARY KEY (`id`)
+)
+ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
CREATE TABLE `civicrm_mailing` (
`id` int unsigned NOT NULL AUTO_INCREMENT,
`domain_id` int unsigned COMMENT 'Which site is this mailing for',
@@ -3081,13 +2144,13 @@ CREATE TABLE `civicrm_mailing` (
`subject` varchar(128) COMMENT 'Subject of mailing',
`body_text` longtext COMMENT 'Body of the mailing in text format.',
`body_html` longtext COMMENT 'Body of the mailing in html format.',
- `url_tracking` tinyint NOT NULL DEFAULT 0 COMMENT 'Should we track URL click-throughs for this mailing?',
- `forward_replies` tinyint NOT NULL DEFAULT 0 COMMENT 'Should we forward replies back to the author?',
- `auto_responder` tinyint NOT NULL DEFAULT 0 COMMENT 'Should we enable the auto-responder?',
- `open_tracking` tinyint NOT NULL DEFAULT 0 COMMENT 'Should we track when recipients open/read this mailing?',
- `is_completed` tinyint NOT NULL DEFAULT 0 COMMENT 'Has at least one job associated with this mailing finished?',
+ `url_tracking` boolean NOT NULL DEFAULT FALSE COMMENT 'Should we track URL click-throughs for this mailing?',
+ `forward_replies` boolean NOT NULL DEFAULT FALSE COMMENT 'Should we forward replies back to the author?',
+ `auto_responder` boolean NOT NULL DEFAULT FALSE COMMENT 'Should we enable the auto-responder?',
+ `open_tracking` boolean NOT NULL DEFAULT FALSE COMMENT 'Should we track when recipients open/read this mailing?',
+ `is_completed` boolean NOT NULL DEFAULT FALSE COMMENT 'Has at least one job associated with this mailing finished?',
`msg_template_id` int unsigned COMMENT 'FK to the message template.',
- `override_verp` tinyint NOT NULL DEFAULT 0 COMMENT 'Overwrite the VERP address in Reply-To',
+ `override_verp` boolean NOT NULL DEFAULT FALSE COMMENT 'Overwrite the VERP address in Reply-To',
`created_id` int unsigned COMMENT 'FK to Contact ID who first created this mailing',
`created_date` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'Date and time this mailing was created.',
`modified_date` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT 'When the mailing (or closely related entity) was created or modified or deleted.',
@@ -3097,369 +2160,185 @@ CREATE TABLE `civicrm_mailing` (
`approval_date` timestamp NULL DEFAULT NULL COMMENT 'Date and time this mailing was approved.',
`approval_status_id` int unsigned COMMENT 'The status of this mailing. Values: none, approved, rejected',
`approval_note` longtext COMMENT 'Note behind the decision.',
- `is_archived` tinyint NOT NULL DEFAULT 0 COMMENT 'Is this mailing archived?',
+ `is_archived` boolean NOT NULL DEFAULT FALSE COMMENT 'Is this mailing archived?',
`visibility` varchar(40) DEFAULT 'Public Pages' COMMENT 'In what context(s) is the mailing contents visible (online viewing)',
`campaign_id` int unsigned COMMENT 'The campaign for which this mailing has been initiated.',
- `dedupe_email` tinyint NOT NULL DEFAULT 0 COMMENT 'Remove duplicate emails?',
+ `dedupe_email` boolean NOT NULL DEFAULT FALSE COMMENT 'Remove duplicate emails?',
`sms_provider_id` int unsigned,
`hash` varchar(16) COMMENT 'Key for validating requests related to this mailing.',
`location_type_id` int unsigned COMMENT 'With email_selection_method, determines which email address to use',
`email_selection_method` varchar(20) DEFAULT 'automatic' COMMENT 'With location_type_id, determine how to choose the email address to use.',
`language` varchar(5) COMMENT 'Language of the content of the mailing. Useful for tokens.',
PRIMARY KEY (`id`),
- INDEX `index_hash`(hash),
- CONSTRAINT FK_civicrm_mailing_domain_id FOREIGN KEY (`domain_id`) REFERENCES `civicrm_domain`(`id`) ON DELETE SET NULL,
- CONSTRAINT FK_civicrm_mailing_header_id FOREIGN KEY (`header_id`) REFERENCES `civicrm_mailing_component`(`id`) ON DELETE SET NULL,
- CONSTRAINT FK_civicrm_mailing_footer_id FOREIGN KEY (`footer_id`) REFERENCES `civicrm_mailing_component`(`id`) ON DELETE SET NULL,
- CONSTRAINT FK_civicrm_mailing_reply_id FOREIGN KEY (`reply_id`) REFERENCES `civicrm_mailing_component`(`id`) ON DELETE SET NULL,
- CONSTRAINT FK_civicrm_mailing_unsubscribe_id FOREIGN KEY (`unsubscribe_id`) REFERENCES `civicrm_mailing_component`(`id`) ON DELETE SET NULL,
- CONSTRAINT FK_civicrm_mailing_optout_id FOREIGN KEY (`optout_id`) REFERENCES `civicrm_mailing_component`(`id`) ON DELETE SET NULL,
- CONSTRAINT FK_civicrm_mailing_msg_template_id FOREIGN KEY (`msg_template_id`) REFERENCES `civicrm_msg_template`(`id`) ON DELETE SET NULL,
- CONSTRAINT FK_civicrm_mailing_created_id FOREIGN KEY (`created_id`) REFERENCES `civicrm_contact`(`id`) ON DELETE SET NULL,
- CONSTRAINT FK_civicrm_mailing_scheduled_id FOREIGN KEY (`scheduled_id`) REFERENCES `civicrm_contact`(`id`) ON DELETE SET NULL,
- CONSTRAINT FK_civicrm_mailing_approver_id FOREIGN KEY (`approver_id`) REFERENCES `civicrm_contact`(`id`) ON DELETE SET NULL,
- CONSTRAINT FK_civicrm_mailing_campaign_id FOREIGN KEY (`campaign_id`) REFERENCES `civicrm_campaign`(`id`) ON DELETE SET NULL,
- CONSTRAINT FK_civicrm_mailing_sms_provider_id FOREIGN KEY (`sms_provider_id`) REFERENCES `civicrm_sms_provider`(`id`) ON DELETE SET NULL,
- CONSTRAINT FK_civicrm_mailing_location_type_id FOREIGN KEY (`location_type_id`) REFERENCES `civicrm_location_type`(`id`) ON DELETE SET NULL
-)
-ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
-
--- /*******************************************************
--- *
--- * civicrm_mailing_group
--- *
--- * Stores information about the groups that participate in this mailing..
--- *
--- *******************************************************/
-CREATE TABLE `civicrm_mailing_group` (
- `id` int unsigned NOT NULL AUTO_INCREMENT,
- `mailing_id` int unsigned NOT NULL COMMENT 'The ID of a previous mailing to include/exclude recipients.',
- `group_type` varchar(8) COMMENT 'Are the members of the group included or excluded?.',
- `entity_table` varchar(64) NOT NULL COMMENT 'Name of table where item being referenced is stored.',
- `entity_id` int unsigned NOT NULL COMMENT 'Foreign key to the referenced item.',
- `search_id` int COMMENT 'The filtering search. custom search id or -1 for civicrm api search',
- `search_args` text COMMENT 'The arguments to be sent to the search function',
- PRIMARY KEY (`id`),
- CONSTRAINT FK_civicrm_mailing_group_mailing_id FOREIGN KEY (`mailing_id`) REFERENCES `civicrm_mailing`(`id`) ON DELETE CASCADE
+ INDEX `index_hash`(`hash`)
)
ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
-
--- /*******************************************************
--- *
--- * civicrm_mailing_trackable_url
--- *
--- * Stores URLs for which we should track click-throughs from mailings
--- *
--- *******************************************************/
-CREATE TABLE `civicrm_mailing_trackable_url` (
+CREATE TABLE `civicrm_mailing_abtest` (
`id` int unsigned NOT NULL AUTO_INCREMENT,
- `url` text NOT NULL COMMENT 'The URL to be tracked.',
- `mailing_id` int unsigned NOT NULL COMMENT 'FK to the mailing',
- PRIMARY KEY (`id`),
- CONSTRAINT FK_civicrm_mailing_trackable_url_mailing_id FOREIGN KEY (`mailing_id`) REFERENCES `civicrm_mailing`(`id`) ON DELETE CASCADE
+ `name` varchar(128) COMMENT 'Name of the A/B test',
+ `status` varchar(32) COMMENT 'Status',
+ `mailing_id_a` int unsigned COMMENT 'The first experimental mailing (\"A\" condition)',
+ `mailing_id_b` int unsigned COMMENT 'The second experimental mailing (\"B\" condition)',
+ `mailing_id_c` int unsigned COMMENT 'The final, general mailing (derived from A or B)',
+ `domain_id` int unsigned NOT NULL COMMENT 'Which site is this mailing for',
+ `testing_criteria` varchar(32),
+ `winner_criteria` varchar(32),
+ `specific_url` varchar(255) COMMENT 'What specific url to track',
+ `declare_winning_time` datetime COMMENT 'In how much time to declare winner',
+ `group_percentage` int unsigned,
+ `created_id` int unsigned COMMENT 'FK to Contact ID',
+ `created_date` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'When was this item created',
+ PRIMARY KEY (`id`)
)
ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
-
--- /*******************************************************
--- *
--- * civicrm_mailing_job
--- *
--- * Stores information about the job that executes this mailing
--- *
--- *******************************************************/
-CREATE TABLE `civicrm_mailing_job` (
- `id` int unsigned NOT NULL AUTO_INCREMENT,
- `mailing_id` int unsigned NOT NULL COMMENT 'The ID of the mailing this Job will send.',
- `scheduled_date` timestamp NULL DEFAULT NULL COMMENT 'date on which this job was scheduled.',
- `start_date` timestamp NULL DEFAULT NULL COMMENT 'date on which this job was started.',
- `end_date` timestamp NULL DEFAULT NULL COMMENT 'date on which this job ended.',
- `status` varchar(12) COMMENT 'The state of this job',
- `is_test` tinyint NOT NULL DEFAULT 0 COMMENT 'Is this job for a test mail?',
- `job_type` varchar(255) COMMENT 'Type of mailling job: null | child ',
- `parent_id` int unsigned DEFAULT NULL COMMENT 'Parent job id',
- `job_offset` int DEFAULT 0 COMMENT 'Offset of the child job',
- `job_limit` int DEFAULT 0 COMMENT 'Queue size limit for each child job',
- PRIMARY KEY (`id`),
- CONSTRAINT FK_civicrm_mailing_job_mailing_id FOREIGN KEY (`mailing_id`) REFERENCES `civicrm_mailing`(`id`) ON DELETE CASCADE,
- CONSTRAINT FK_civicrm_mailing_job_parent_id FOREIGN KEY (`parent_id`) REFERENCES `civicrm_mailing_job`(`id`) ON DELETE CASCADE
-)
-ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
-
--- /*******************************************************
--- *
--- * civicrm_mailing_recipients
--- *
--- * Stores information about the recipients of a mailing.
--- *
--- *******************************************************/
-CREATE TABLE `civicrm_mailing_recipients` (
- `id` int unsigned NOT NULL AUTO_INCREMENT,
- `mailing_id` int unsigned NOT NULL COMMENT 'The ID of the mailing this Job will send.',
- `contact_id` int unsigned NOT NULL COMMENT 'FK to Contact',
- `email_id` int unsigned DEFAULT NULL COMMENT 'FK to Email',
- `phone_id` int unsigned DEFAULT NULL COMMENT 'FK to Phone',
- PRIMARY KEY (`id`),
- CONSTRAINT FK_civicrm_mailing_recipients_mailing_id FOREIGN KEY (`mailing_id`) REFERENCES `civicrm_mailing`(`id`) ON DELETE CASCADE,
- CONSTRAINT FK_civicrm_mailing_recipients_contact_id FOREIGN KEY (`contact_id`) REFERENCES `civicrm_contact`(`id`) ON DELETE CASCADE,
- CONSTRAINT FK_civicrm_mailing_recipients_email_id FOREIGN KEY (`email_id`) REFERENCES `civicrm_email`(`id`) ON DELETE SET NULL,
- CONSTRAINT FK_civicrm_mailing_recipients_phone_id FOREIGN KEY (`phone_id`) REFERENCES `civicrm_phone`(`id`) ON DELETE SET NULL
-)
-ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
-
--- /*******************************************************
--- *
--- * civicrm_mailing_spool
--- *
--- * Stores the outbond mails
--- *
--- *******************************************************/
-CREATE TABLE `civicrm_mailing_spool` (
+CREATE TABLE `civicrm_mailing_component` (
`id` int unsigned NOT NULL AUTO_INCREMENT,
- `job_id` int unsigned NOT NULL COMMENT 'The ID of the Job .',
- `recipient_email` text COMMENT 'The email of the recipients this mail is to be sent.',
- `headers` text COMMENT 'The header information of this mailing .',
- `body` text COMMENT 'The body of this mailing.',
- `added_at` timestamp NULL DEFAULT NULL COMMENT 'date on which this job was added.',
- `removed_at` timestamp NULL DEFAULT NULL COMMENT 'date on which this job was removed.',
- PRIMARY KEY (`id`),
- CONSTRAINT FK_civicrm_mailing_spool_job_id FOREIGN KEY (`job_id`) REFERENCES `civicrm_mailing_job`(`id`) ON DELETE CASCADE
+ `name` varchar(64) COMMENT 'The name of this component',
+ `component_type` varchar(12) COMMENT 'Type of Component.',
+ `subject` varchar(255),
+ `body_html` text COMMENT 'Body of the component in html format.',
+ `body_text` text COMMENT 'Body of the component in text format.',
+ `is_default` boolean NOT NULL DEFAULT FALSE COMMENT 'Is this the default component for this component_type?',
+ `is_active` boolean NOT NULL DEFAULT TRUE COMMENT 'Is this property active?',
+ PRIMARY KEY (`id`)
)
ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
-
--- /*******************************************************
--- *
--- * civicrm_mailing_event_queue
--- *
--- * A collection of all intended recipients of a job
--- *
--- *******************************************************/
-CREATE TABLE `civicrm_mailing_event_queue` (
- `id` int unsigned NOT NULL AUTO_INCREMENT,
- `job_id` int unsigned NULL COMMENT 'Mailing Job',
- `mailing_id` int unsigned NULL COMMENT 'Related mailing. Used for reporting on mailing success, if present.',
- `is_test` tinyint NOT NULL DEFAULT 0,
- `email_id` int unsigned DEFAULT NULL COMMENT 'FK to Email',
- `contact_id` int unsigned NOT NULL COMMENT 'FK to Contact',
- `hash` varchar(255) NOT NULL COMMENT 'Security hash',
- `phone_id` int unsigned DEFAULT NULL COMMENT 'FK to Phone',
- PRIMARY KEY (`id`),
- INDEX `index_hash`(hash),
- CONSTRAINT FK_civicrm_mailing_event_queue_job_id FOREIGN KEY (`job_id`) REFERENCES `civicrm_mailing_job`(`id`) ON DELETE SET NULL,
- CONSTRAINT FK_civicrm_mailing_event_queue_mailing_id FOREIGN KEY (`mailing_id`) REFERENCES `civicrm_mailing`(`id`) ON DELETE SET NULL,
- CONSTRAINT FK_civicrm_mailing_event_queue_email_id FOREIGN KEY (`email_id`) REFERENCES `civicrm_email`(`id`) ON DELETE SET NULL,
- CONSTRAINT FK_civicrm_mailing_event_queue_contact_id FOREIGN KEY (`contact_id`) REFERENCES `civicrm_contact`(`id`) ON DELETE CASCADE,
- CONSTRAINT FK_civicrm_mailing_event_queue_phone_id FOREIGN KEY (`phone_id`) REFERENCES `civicrm_phone`(`id`) ON DELETE SET NULL
-)
-ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
-
--- /*******************************************************
--- *
--- * civicrm_mailing_event_bounce
--- *
--- * Tracks when and why an email bounced.
--- *
--- *******************************************************/
CREATE TABLE `civicrm_mailing_event_bounce` (
`id` int unsigned NOT NULL AUTO_INCREMENT,
`event_queue_id` int unsigned NOT NULL COMMENT 'FK to EventQueue',
`bounce_type_id` int unsigned COMMENT 'What type of bounce was it?',
`bounce_reason` varchar(255) COMMENT 'The reason the email bounced.',
`time_stamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'When this bounce event occurred.',
- PRIMARY KEY (`id`),
- CONSTRAINT FK_civicrm_mailing_event_bounce_event_queue_id FOREIGN KEY (`event_queue_id`) REFERENCES `civicrm_mailing_event_queue`(`id`) ON DELETE CASCADE
+ PRIMARY KEY (`id`)
+)
+ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
+CREATE TABLE `civicrm_mailing_event_confirm` (
+ `id` int unsigned NOT NULL AUTO_INCREMENT,
+ `event_subscribe_id` int unsigned NOT NULL COMMENT 'FK to civicrm_mailing_event_subscribe',
+ `time_stamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'When this confirmation event occurred.',
+ PRIMARY KEY (`id`)
)
ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
-
--- /*******************************************************
--- *
--- * civicrm_mailing_event_delivered
--- *
--- * Tracks when a queued email is actually delivered to the MTA
--- *
--- *******************************************************/
CREATE TABLE `civicrm_mailing_event_delivered` (
`id` int unsigned NOT NULL AUTO_INCREMENT,
`event_queue_id` int unsigned NOT NULL COMMENT 'FK to EventQueue',
`time_stamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'When this delivery event occurred.',
- PRIMARY KEY (`id`),
- CONSTRAINT FK_civicrm_mailing_event_delivered_event_queue_id FOREIGN KEY (`event_queue_id`) REFERENCES `civicrm_mailing_event_queue`(`id`) ON DELETE CASCADE
+ PRIMARY KEY (`id`)
)
ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
-
--- /*******************************************************
--- *
--- * civicrm_mailing_event_forward
--- *
--- * Tracks when a contact forwards a mailing to a (new) contact
--- *
--- *******************************************************/
CREATE TABLE `civicrm_mailing_event_forward` (
`id` int unsigned NOT NULL AUTO_INCREMENT,
`event_queue_id` int unsigned NOT NULL COMMENT 'FK to EventQueue',
`dest_queue_id` int unsigned COMMENT 'FK to EventQueue for destination',
`time_stamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'When this forward event occurred.',
- PRIMARY KEY (`id`),
- CONSTRAINT FK_civicrm_mailing_event_forward_event_queue_id FOREIGN KEY (`event_queue_id`) REFERENCES `civicrm_mailing_event_queue`(`id`) ON DELETE CASCADE,
- CONSTRAINT FK_civicrm_mailing_event_forward_dest_queue_id FOREIGN KEY (`dest_queue_id`) REFERENCES `civicrm_mailing_event_queue`(`id`) ON DELETE SET NULL
-)
-ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
-
--- /*******************************************************
--- *
--- * civicrm_mailing_event_opened
--- *
--- * Tracks when a delivered email is opened by the recipient
--- *
--- *******************************************************/
+ PRIMARY KEY (`id`)
+)
+ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
CREATE TABLE `civicrm_mailing_event_opened` (
`id` int unsigned NOT NULL AUTO_INCREMENT,
`event_queue_id` int unsigned NOT NULL COMMENT 'FK to EventQueue',
`time_stamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'When this open event occurred.',
+ PRIMARY KEY (`id`)
+)
+ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
+CREATE TABLE `civicrm_mailing_event_queue` (
+ `id` int unsigned NOT NULL AUTO_INCREMENT,
+ `job_id` int unsigned COMMENT 'Mailing Job',
+ `mailing_id` int unsigned COMMENT 'Related mailing. Used for reporting on mailing success, if present.',
+ `is_test` boolean NOT NULL DEFAULT FALSE,
+ `email_id` int unsigned DEFAULT NULL COMMENT 'FK to Email',
+ `contact_id` int unsigned NOT NULL COMMENT 'FK to Contact',
+ `hash` varchar(255) NOT NULL COMMENT 'Security hash',
+ `phone_id` int unsigned DEFAULT NULL COMMENT 'FK to Phone',
PRIMARY KEY (`id`),
- CONSTRAINT FK_civicrm_mailing_event_opened_event_queue_id FOREIGN KEY (`event_queue_id`) REFERENCES `civicrm_mailing_event_queue`(`id`) ON DELETE CASCADE
+ INDEX `index_hash`(`hash`)
)
ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
-
--- /*******************************************************
--- *
--- * civicrm_mailing_event_reply
--- *
--- * Tracks when a contact replies to a mailing
--- *
--- *******************************************************/
CREATE TABLE `civicrm_mailing_event_reply` (
`id` int unsigned NOT NULL AUTO_INCREMENT,
`event_queue_id` int unsigned NOT NULL COMMENT 'FK to EventQueue',
`time_stamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'When this reply event occurred.',
- PRIMARY KEY (`id`),
- CONSTRAINT FK_civicrm_mailing_event_reply_event_queue_id FOREIGN KEY (`event_queue_id`) REFERENCES `civicrm_mailing_event_queue`(`id`) ON DELETE CASCADE
+ PRIMARY KEY (`id`)
+)
+ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
+CREATE TABLE `civicrm_mailing_event_subscribe` (
+ `id` int unsigned NOT NULL AUTO_INCREMENT,
+ `group_id` int unsigned NOT NULL COMMENT 'FK to Group',
+ `contact_id` int unsigned NOT NULL COMMENT 'FK to Contact',
+ `hash` varchar(255) NOT NULL COMMENT 'Security hash',
+ `time_stamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'When this subscription event occurred.',
+ PRIMARY KEY (`id`)
)
ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
-
--- /*******************************************************
--- *
--- * civicrm_mailing_event_trackable_url_open
--- *
--- * Tracks when a TrackableURL is clicked by a recipient.
--- *
--- *******************************************************/
CREATE TABLE `civicrm_mailing_event_trackable_url_open` (
`id` int unsigned NOT NULL AUTO_INCREMENT,
`event_queue_id` int unsigned NOT NULL COMMENT 'FK to EventQueue',
`trackable_url_id` int unsigned NOT NULL COMMENT 'FK to TrackableURL',
`time_stamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'When this trackable URL open occurred.',
- PRIMARY KEY (`id`),
- CONSTRAINT FK_civicrm_mailing_event_trackable_url_open_event_queue_id FOREIGN KEY (`event_queue_id`) REFERENCES `civicrm_mailing_event_queue`(`id`) ON DELETE CASCADE,
- CONSTRAINT FK_civicrm_mailing_event_trackable_url_open_trackable_url_id FOREIGN KEY (`trackable_url_id`) REFERENCES `civicrm_mailing_trackable_url`(`id`) ON DELETE CASCADE
-)
-ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
-
--- /*******************************************************
--- *
--- * civicrm_mailing_event_unsubscribe
--- *
--- * Tracks when a recipient unsubscribes from a group/domain
--- *
--- *******************************************************/
+ PRIMARY KEY (`id`)
+)
+ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
CREATE TABLE `civicrm_mailing_event_unsubscribe` (
`id` int unsigned NOT NULL AUTO_INCREMENT,
`event_queue_id` int unsigned NOT NULL COMMENT 'FK to EventQueue',
- `org_unsubscribe` tinyint NOT NULL COMMENT 'Unsubscribe at org- or group-level',
+ `org_unsubscribe` boolean NOT NULL DEFAULT FALSE COMMENT 'Unsubscribe at org- or group-level',
`time_stamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'When this delivery event occurred.',
- PRIMARY KEY (`id`),
- CONSTRAINT FK_civicrm_mailing_event_unsubscribe_event_queue_id FOREIGN KEY (`event_queue_id`) REFERENCES `civicrm_mailing_event_queue`(`id`) ON DELETE CASCADE
+ PRIMARY KEY (`id`)
)
ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
-
--- /*******************************************************
--- *
--- * civicrm_contribution_recur
--- *
--- *******************************************************/
-CREATE TABLE `civicrm_contribution_recur` (
- `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'Contribution Recur ID',
- `contact_id` int unsigned NOT NULL COMMENT 'Foreign key to civicrm_contact.id.',
- `amount` decimal(20,2) NOT NULL COMMENT 'Amount to be collected (including any sales tax) by payment processor each recurrence.',
- `currency` varchar(3) DEFAULT NULL COMMENT '3 character string, value from config setting or input via user.',
- `frequency_unit` varchar(8) DEFAULT 'month' COMMENT 'Time units for recurrence of payment.',
- `frequency_interval` int unsigned NOT NULL DEFAULT 1 COMMENT 'Number of time units for recurrence of payment.',
- `installments` int unsigned COMMENT 'Total number of payments to be made. Set this to 0 if this is an open-ended commitment i.e. no set end date.',
- `start_date` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'The date the first scheduled recurring contribution occurs.',
- `create_date` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'When this recurring contribution record was created.',
- `modified_date` timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT 'Last updated date for this record. mostly the last time a payment was received',
- `cancel_date` datetime COMMENT 'Date this recurring contribution was cancelled by contributor- if we can get access to it',
- `cancel_reason` text COMMENT 'Free text field for a reason for cancelling',
- `end_date` datetime COMMENT 'Date this recurring contribution finished successfully',
- `processor_id` varchar(255) COMMENT 'Possibly needed to store a unique identifier for this recurring payment order - if this is available from the processor??',
- `payment_token_id` int unsigned COMMENT 'Optionally used to store a link to a payment token used for this recurring contribution.',
- `trxn_id` varchar(255) COMMENT 'unique transaction id (deprecated - use processor_id)',
- `invoice_id` varchar(255) COMMENT 'unique invoice id, system generated or passed in',
- `contribution_status_id` int unsigned DEFAULT 2,
- `is_test` tinyint NOT NULL DEFAULT 0,
- `cycle_day` int unsigned NOT NULL DEFAULT 1 COMMENT 'Day in the period when the payment should be charged e.g. 1st of month, 15th etc.',
- `next_sched_contribution_date` datetime COMMENT 'Next scheduled date',
- `failure_count` int unsigned DEFAULT 0 COMMENT 'Number of failed charge attempts since last success. Business rule could be set to deactivate on more than x failures.',
- `failure_retry_date` datetime COMMENT 'Date to retry failed attempt',
- `auto_renew` tinyint NOT NULL DEFAULT 0 COMMENT 'Some systems allow contributor to set a number of installments - but then auto-renew the subscription or commitment if they do not cancel.',
- `payment_processor_id` int unsigned COMMENT 'Foreign key to civicrm_payment_processor.id',
- `financial_type_id` int unsigned COMMENT 'FK to Financial Type',
- `payment_instrument_id` int unsigned COMMENT 'FK to Payment Instrument',
- `campaign_id` int unsigned COMMENT 'The campaign for which this contribution has been triggered.',
- `is_email_receipt` tinyint NOT NULL DEFAULT 1 COMMENT 'if true, receipt is automatically emailed to contact on each successful payment',
- PRIMARY KEY (`id`),
- UNIQUE INDEX `UI_contrib_trxn_id`(trxn_id),
- UNIQUE INDEX `UI_contrib_invoice_id`(invoice_id),
- INDEX `index_contribution_status`(contribution_status_id),
- INDEX `UI_contribution_recur_payment_instrument_id`(payment_instrument_id),
- CONSTRAINT FK_civicrm_contribution_recur_contact_id FOREIGN KEY (`contact_id`) REFERENCES `civicrm_contact`(`id`) ON DELETE CASCADE,
- CONSTRAINT FK_civicrm_contribution_recur_payment_token_id FOREIGN KEY (`payment_token_id`) REFERENCES `civicrm_payment_token`(`id`) ON DELETE SET NULL,
- CONSTRAINT FK_civicrm_contribution_recur_payment_processor_id FOREIGN KEY (`payment_processor_id`) REFERENCES `civicrm_payment_processor`(`id`) ON DELETE SET NULL,
- CONSTRAINT FK_civicrm_contribution_recur_financial_type_id FOREIGN KEY (`financial_type_id`) REFERENCES `civicrm_financial_type`(`id`) ON DELETE SET NULL,
- CONSTRAINT FK_civicrm_contribution_recur_campaign_id FOREIGN KEY (`campaign_id`) REFERENCES `civicrm_campaign`(`id`) ON DELETE SET NULL
-)
-ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
-
--- /*******************************************************
--- *
--- * civicrm_financial_trxn
--- *
--- *******************************************************/
-CREATE TABLE `civicrm_financial_trxn` (
+CREATE TABLE `civicrm_mailing_group` (
`id` int unsigned NOT NULL AUTO_INCREMENT,
- `from_financial_account_id` int unsigned COMMENT 'FK to financial_account table.',
- `to_financial_account_id` int unsigned COMMENT 'FK to financial_financial_account table.',
- `trxn_date` datetime DEFAULT NULL COMMENT 'date transaction occurred',
- `total_amount` decimal(20,2) NOT NULL COMMENT 'amount of transaction',
- `fee_amount` decimal(20,2) COMMENT 'actual processor fee if known - may be 0.',
- `net_amount` decimal(20,2) COMMENT 'actual funds transfer amount. total less fees. if processor does not report actual fee during transaction, this is set to total_amount.',
- `currency` varchar(3) DEFAULT NULL COMMENT '3 character string, value from config setting or input via user.',
- `is_payment` tinyint NOT NULL DEFAULT 0 COMMENT 'Is this entry either a payment or a reversal of a payment?',
- `trxn_id` varchar(255) COMMENT 'Transaction id supplied by external processor. This may not be unique.',
- `trxn_result_code` varchar(255) COMMENT 'processor result code',
- `status_id` int unsigned COMMENT 'pseudo FK to civicrm_option_value of contribution_status_id option_group',
- `payment_processor_id` int unsigned COMMENT 'Payment Processor for this financial transaction',
- `payment_instrument_id` int unsigned COMMENT 'FK to payment_instrument option group values',
- `card_type_id` int unsigned COMMENT 'FK to accept_creditcard option group values',
- `check_number` varchar(255) COMMENT 'Check number',
- `pan_truncation` varchar(4) COMMENT 'Last 4 digits of credit card',
- `order_reference` varchar(255) COMMENT 'Payment Processor external order reference',
- PRIMARY KEY (`id`),
- INDEX `UI_ftrxn_trxn_id`(trxn_id),
- INDEX `UI_ftrxn_payment_instrument_id`(payment_instrument_id),
- INDEX `UI_ftrxn_check_number`(check_number),
- CONSTRAINT FK_civicrm_financial_trxn_from_financial_account_id FOREIGN KEY (`from_financial_account_id`) REFERENCES `civicrm_financial_account`(`id`),
- CONSTRAINT FK_civicrm_financial_trxn_to_financial_account_id FOREIGN KEY (`to_financial_account_id`) REFERENCES `civicrm_financial_account`(`id`),
- CONSTRAINT FK_civicrm_financial_trxn_payment_processor_id FOREIGN KEY (`payment_processor_id`) REFERENCES `civicrm_payment_processor`(`id`) ON DELETE SET NULL
-)
-ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
-
--- /*******************************************************
--- *
--- * civicrm_membership
--- *
--- * Contact Membership records.
--- *
--- *******************************************************/
+ `mailing_id` int unsigned NOT NULL COMMENT 'The ID of a previous mailing to include/exclude recipients.',
+ `group_type` varchar(8) COMMENT 'Are the members of the group included or excluded?.',
+ `entity_table` varchar(64) NOT NULL COMMENT 'Name of table where item being referenced is stored.',
+ `entity_id` int unsigned NOT NULL COMMENT 'Foreign key to the referenced item.',
+ `search_id` int COMMENT 'The filtering search. custom search id or -1 for civicrm api search',
+ `search_args` text COMMENT 'The arguments to be sent to the search function',
+ PRIMARY KEY (`id`)
+)
+ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
+CREATE TABLE `civicrm_mailing_job` (
+ `id` int unsigned NOT NULL AUTO_INCREMENT,
+ `mailing_id` int unsigned NOT NULL COMMENT 'The ID of the mailing this Job will send.',
+ `scheduled_date` timestamp NULL DEFAULT NULL COMMENT 'date on which this job was scheduled.',
+ `start_date` timestamp NULL DEFAULT NULL COMMENT 'date on which this job was started.',
+ `end_date` timestamp NULL DEFAULT NULL COMMENT 'date on which this job ended.',
+ `status` varchar(12) COMMENT 'The state of this job',
+ `is_test` boolean NOT NULL DEFAULT FALSE COMMENT 'Is this job for a test mail?',
+ `job_type` varchar(255) COMMENT 'Type of mailling job: null | child',
+ `parent_id` int unsigned DEFAULT NULL COMMENT 'Parent job id',
+ `job_offset` int DEFAULT 0 COMMENT 'Offset of the child job',
+ `job_limit` int DEFAULT 0 COMMENT 'Queue size limit for each child job',
+ PRIMARY KEY (`id`)
+)
+ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
+CREATE TABLE `civicrm_mailing_recipients` (
+ `id` int unsigned NOT NULL AUTO_INCREMENT,
+ `mailing_id` int unsigned NOT NULL COMMENT 'The ID of the mailing this Job will send.',
+ `contact_id` int unsigned NOT NULL COMMENT 'FK to Contact',
+ `email_id` int unsigned DEFAULT NULL COMMENT 'FK to Email',
+ `phone_id` int unsigned DEFAULT NULL COMMENT 'FK to Phone',
+ PRIMARY KEY (`id`)
+)
+ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
+CREATE TABLE `civicrm_mailing_trackable_url` (
+ `id` int unsigned NOT NULL AUTO_INCREMENT,
+ `url` text NOT NULL COMMENT 'The URL to be tracked.',
+ `mailing_id` int unsigned NOT NULL COMMENT 'FK to the mailing',
+ PRIMARY KEY (`id`)
+)
+ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
+CREATE TABLE `civicrm_mailing_spool` (
+ `id` int unsigned NOT NULL AUTO_INCREMENT,
+ `job_id` int unsigned NOT NULL COMMENT 'The ID of the Job .',
+ `recipient_email` text COMMENT 'The email of the recipients this mail is to be sent.',
+ `headers` text COMMENT 'The header information of this mailing .',
+ `body` text COMMENT 'The body of this mailing.',
+ `added_at` timestamp NULL DEFAULT NULL COMMENT 'date on which this job was added.',
+ `removed_at` timestamp NULL DEFAULT NULL COMMENT 'date on which this job was removed.',
+ PRIMARY KEY (`id`)
+)
+ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
CREATE TABLE `civicrm_membership` (
`id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'Membership ID',
`contact_id` int unsigned NOT NULL COMMENT 'FK to Contact ID',
@@ -3469,32 +2348,35 @@ CREATE TABLE `civicrm_membership` (
`end_date` date COMMENT 'Current membership period expire date.',
`source` varchar(128),
`status_id` int unsigned NOT NULL COMMENT 'FK to Membership Status',
- `is_override` tinyint NOT NULL DEFAULT 0 COMMENT 'Admin users may set a manual status which overrides the calculated status. When this flag is true, automated status update scripts should NOT modify status for the record.',
+ `is_override` boolean NOT NULL DEFAULT FALSE COMMENT 'Admin users may set a manual status which overrides the calculated status. When this flag is TRUE, automated status update scripts should NOT modify status for the record.',
`status_override_end_date` date DEFAULT NULL COMMENT 'Then end date of membership status override if \'Override until selected date\' override type is selected.',
`owner_membership_id` int unsigned COMMENT 'Optional FK to Parent Membership.',
`max_related` int COMMENT 'Maximum number of related memberships (membership_type override).',
- `is_test` tinyint NOT NULL DEFAULT 0,
- `is_pay_later` tinyint NOT NULL DEFAULT 0,
+ `is_test` boolean NOT NULL DEFAULT FALSE,
+ `is_pay_later` boolean NOT NULL DEFAULT FALSE,
`contribution_recur_id` int unsigned COMMENT 'Conditional foreign key to civicrm_contribution_recur id. Each membership in connection with a recurring contribution carries a foreign key to the recurring contribution record. This assumes we can track these processor initiated events.',
`campaign_id` int unsigned COMMENT 'The campaign for which this membership is attached.',
PRIMARY KEY (`id`),
- INDEX `index_owner_membership_id`(owner_membership_id),
- CONSTRAINT FK_civicrm_membership_contact_id FOREIGN KEY (`contact_id`) REFERENCES `civicrm_contact`(`id`) ON DELETE CASCADE,
- CONSTRAINT FK_civicrm_membership_membership_type_id FOREIGN KEY (`membership_type_id`) REFERENCES `civicrm_membership_type`(`id`) ON DELETE CASCADE,
- CONSTRAINT FK_civicrm_membership_status_id FOREIGN KEY (`status_id`) REFERENCES `civicrm_membership_status`(`id`) ON DELETE CASCADE,
- CONSTRAINT FK_civicrm_membership_owner_membership_id FOREIGN KEY (`owner_membership_id`) REFERENCES `civicrm_membership`(`id`) ON DELETE SET NULL,
- CONSTRAINT FK_civicrm_membership_contribution_recur_id FOREIGN KEY (`contribution_recur_id`) REFERENCES `civicrm_contribution_recur`(`id`) ON DELETE SET NULL,
- CONSTRAINT FK_civicrm_membership_campaign_id FOREIGN KEY (`campaign_id`) REFERENCES `civicrm_campaign`(`id`) ON DELETE SET NULL
-)
-ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
-
--- /*******************************************************
--- *
--- * civicrm_membership_log
--- *
--- * Logs actions which affect a Membership record (signup, status override, renewal, etc.)
--- *
--- *******************************************************/
+ INDEX `index_owner_membership_id`(`owner_membership_id`)
+)
+ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
+CREATE TABLE `civicrm_membership_block` (
+ `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'Membership ID',
+ `entity_table` varchar(64) COMMENT 'Name for Membership Status',
+ `entity_id` int unsigned NOT NULL COMMENT 'FK to civicrm_contribution_page.id',
+ `membership_types` varchar(1024) COMMENT 'Membership types to be exposed by this block',
+ `membership_type_default` int unsigned COMMENT 'Optional foreign key to membership_type',
+ `display_min_fee` boolean NOT NULL DEFAULT TRUE COMMENT 'Display minimum membership fee',
+ `is_separate_payment` boolean NOT NULL DEFAULT TRUE COMMENT 'Should membership transactions be processed separately',
+ `new_title` varchar(255) COMMENT 'Title to display at top of block',
+ `new_text` text COMMENT 'Text to display below title',
+ `renewal_title` varchar(255) COMMENT 'Title for renewal',
+ `renewal_text` text COMMENT 'Text to display for member renewal',
+ `is_required` boolean NOT NULL DEFAULT FALSE COMMENT 'Is membership sign up optional',
+ `is_active` boolean NOT NULL DEFAULT TRUE COMMENT 'Is this membership_block enabled',
+ PRIMARY KEY (`id`)
+)
+ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
CREATE TABLE `civicrm_membership_log` (
`id` int unsigned NOT NULL AUTO_INCREMENT,
`membership_id` int unsigned NOT NULL COMMENT 'FK to Membership table',
@@ -3505,597 +2387,143 @@ CREATE TABLE `civicrm_membership_log` (
`modified_date` date COMMENT 'Date this membership modification action was logged.',
`membership_type_id` int unsigned COMMENT 'FK to Membership Type.',
`max_related` int COMMENT 'Maximum number of related memberships.',
+ PRIMARY KEY (`id`)
+)
+ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
+CREATE TABLE `civicrm_membership_payment` (
+ `id` int unsigned NOT NULL AUTO_INCREMENT,
+ `membership_id` int unsigned NOT NULL COMMENT 'FK to Membership table',
+ `contribution_id` int unsigned COMMENT 'FK to contribution table.',
PRIMARY KEY (`id`),
- CONSTRAINT FK_civicrm_membership_log_membership_id FOREIGN KEY (`membership_id`) REFERENCES `civicrm_membership`(`id`) ON DELETE CASCADE,
- CONSTRAINT FK_civicrm_membership_log_status_id FOREIGN KEY (`status_id`) REFERENCES `civicrm_membership_status`(`id`) ON DELETE CASCADE,
- CONSTRAINT FK_civicrm_membership_log_modified_id FOREIGN KEY (`modified_id`) REFERENCES `civicrm_contact`(`id`) ON DELETE SET NULL,
- CONSTRAINT FK_civicrm_membership_log_membership_type_id FOREIGN KEY (`membership_type_id`) REFERENCES `civicrm_membership_type`(`id`) ON DELETE SET NULL
-)
-ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
-
--- /*******************************************************
--- *
--- * civicrm_activity
--- *
--- * Other Activity details stored here include contact, location, details.
--- *
--- *******************************************************/
-CREATE TABLE `civicrm_activity` (
- `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'Unique Other Activity ID',
- `source_record_id` int unsigned COMMENT 'Artificial FK to original transaction (e.g. contribution) IF it is not an Activity. Entity table is discovered by filtering by the appropriate activity_type_id.',
- `activity_type_id` int unsigned NOT NULL DEFAULT 1 COMMENT 'FK to civicrm_option_value.id, that has to be valid, registered activity type.',
- `subject` varchar(255) COMMENT 'The subject/purpose/short description of the activity.',
- `activity_date_time` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'Date and time this activity is scheduled to occur. Formerly named scheduled_date_time.',
- `duration` int unsigned COMMENT 'Planned or actual duration of activity expressed in minutes. Conglomerate of former duration_hours and duration_minutes.',
- `location` varchar(255) COMMENT 'Location of the activity (optional, open text).',
- `phone_id` int unsigned COMMENT 'Phone ID of the number called (optional - used if an existing phone number is selected).',
- `phone_number` varchar(64) COMMENT 'Phone number in case the number does not exist in the civicrm_phone table.',
- `details` longtext COMMENT 'Details about the activity (agenda, notes, etc).',
- `status_id` int unsigned COMMENT 'ID of the status this activity is currently in. Foreign key to civicrm_option_value.',
- `priority_id` int unsigned COMMENT 'ID of the priority given to this activity. Foreign key to civicrm_option_value.',
- `parent_id` int unsigned COMMENT 'Parent meeting ID (if this is a follow-up item).',
- `is_test` tinyint NOT NULL DEFAULT 0,
- `medium_id` int unsigned DEFAULT NULL COMMENT 'Activity Medium, Implicit FK to civicrm_option_value where option_group = encounter_medium.',
- `is_auto` tinyint NOT NULL DEFAULT 0,
- `relationship_id` int unsigned DEFAULT NULL COMMENT 'FK to Relationship ID',
- `is_current_revision` tinyint NOT NULL DEFAULT 1 COMMENT 'Unused deprecated column.',
- `original_id` int unsigned COMMENT 'Unused deprecated column.',
- `result` varchar(255) COMMENT 'Currently being used to store result id for survey activity, FK to option value.',
- `is_deleted` tinyint NOT NULL DEFAULT 0,
- `campaign_id` int unsigned COMMENT 'The campaign for which this activity has been triggered.',
- `engagement_level` int unsigned COMMENT 'Assign a specific level of engagement to this activity. Used for tracking constituents in ladder of engagement.',
+ UNIQUE INDEX `UI_contribution_membership`(`contribution_id`, `membership_id`)
+)
+ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
+CREATE TABLE `civicrm_membership_status` (
+ `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'Membership ID',
+ `name` varchar(128) NOT NULL COMMENT 'Name for Membership Status',
+ `label` varchar(128) COMMENT 'Label for Membership Status',
+ `start_event` varchar(12) COMMENT 'Event when this status starts.',
+ `start_event_adjust_unit` varchar(8) COMMENT 'Unit used for adjusting from start_event.',
+ `start_event_adjust_interval` int COMMENT 'Status range begins this many units from start_event.',
+ `end_event` varchar(12) COMMENT 'Event after which this status ends.',
+ `end_event_adjust_unit` varchar(8) COMMENT 'Unit used for adjusting from the ending event.',
+ `end_event_adjust_interval` int COMMENT 'Status range ends this many units from end_event.',
+ `is_current_member` boolean NOT NULL DEFAULT FALSE COMMENT 'Does this status aggregate to current members (e.g. New, Renewed, Grace might all be TRUE... while Unrenewed, Lapsed, Inactive would be FALSE).',
+ `is_admin` boolean NOT NULL DEFAULT FALSE COMMENT 'Is this status for admin/manual assignment only.',
`weight` int,
- `is_star` tinyint NOT NULL DEFAULT 0 COMMENT 'Activity marked as favorite.',
- `created_date` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'When was the activity was created.',
- `modified_date` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT 'When was the activity (or closely related entity) was created or modified or deleted.',
- PRIMARY KEY (`id`),
- INDEX `UI_source_record_id`(source_record_id),
- INDEX `UI_activity_type_id`(activity_type_id),
- INDEX `index_activity_date_time`(activity_date_time),
- INDEX `index_status_id`(status_id),
- INDEX `index_is_current_revision`(is_current_revision),
- INDEX `index_is_deleted`(is_deleted),
- CONSTRAINT FK_civicrm_activity_phone_id FOREIGN KEY (`phone_id`) REFERENCES `civicrm_phone`(`id`) ON DELETE SET NULL,
- CONSTRAINT FK_civicrm_activity_parent_id FOREIGN KEY (`parent_id`) REFERENCES `civicrm_activity`(`id`) ON DELETE SET NULL,
- CONSTRAINT FK_civicrm_activity_relationship_id FOREIGN KEY (`relationship_id`) REFERENCES `civicrm_relationship`(`id`) ON DELETE SET NULL,
- CONSTRAINT FK_civicrm_activity_original_id FOREIGN KEY (`original_id`) REFERENCES `civicrm_activity`(`id`) ON DELETE SET NULL,
- CONSTRAINT FK_civicrm_activity_campaign_id FOREIGN KEY (`campaign_id`) REFERENCES `civicrm_campaign`(`id`) ON DELETE SET NULL
-)
-ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
-
--- /*******************************************************
--- *
--- * civicrm_activity_contact
--- *
--- * Activity Contact
--- *
--- *******************************************************/
-CREATE TABLE `civicrm_activity_contact` (
- `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'Activity contact id',
- `activity_id` int unsigned NOT NULL COMMENT 'Foreign key to the activity for this record.',
- `contact_id` int unsigned NOT NULL COMMENT 'Foreign key to the contact for this record.',
- `record_type_id` int unsigned COMMENT 'Determines the contact\'s role in the activity (source, target, or assignee).',
- PRIMARY KEY (`id`),
- UNIQUE INDEX `UI_activity_contact`(contact_id, activity_id, record_type_id),
- INDEX `index_record_type`(activity_id, record_type_id),
- CONSTRAINT FK_civicrm_activity_contact_activity_id FOREIGN KEY (`activity_id`) REFERENCES `civicrm_activity`(`id`) ON DELETE CASCADE,
- CONSTRAINT FK_civicrm_activity_contact_contact_id FOREIGN KEY (`contact_id`) REFERENCES `civicrm_contact`(`id`) ON DELETE CASCADE
-)
-ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
-
--- /*******************************************************
--- *
--- * civicrm_case_activity
--- *
--- * Joining table for case-activity associations.
--- *
--- *******************************************************/
-CREATE TABLE `civicrm_case_activity` (
- `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'Unique case-activity association id',
- `case_id` int unsigned NOT NULL COMMENT 'Case ID of case-activity association.',
- `activity_id` int unsigned NOT NULL COMMENT 'Activity ID of case-activity association.',
- PRIMARY KEY (`id`),
- INDEX `UI_case_activity_id`(case_id, activity_id),
- CONSTRAINT FK_civicrm_case_activity_case_id FOREIGN KEY (`case_id`) REFERENCES `civicrm_case`(`id`) ON DELETE CASCADE,
- CONSTRAINT FK_civicrm_case_activity_activity_id FOREIGN KEY (`activity_id`) REFERENCES `civicrm_activity`(`id`) ON DELETE CASCADE
+ `is_default` boolean NOT NULL DEFAULT FALSE COMMENT 'Assign this status to a membership record if no other status match is found.',
+ `is_active` boolean NOT NULL DEFAULT TRUE COMMENT 'Is this membership_status enabled.',
+ `is_reserved` boolean NOT NULL DEFAULT FALSE COMMENT 'Is this membership_status reserved.',
+ PRIMARY KEY (`id`)
)
ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
-
--- /*******************************************************
--- *
--- * civicrm_price_field
--- *
--- *******************************************************/
-CREATE TABLE `civicrm_price_field` (
- `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'Price Field',
- `price_set_id` int unsigned NOT NULL COMMENT 'FK to civicrm_price_set',
- `name` varchar(255) NOT NULL COMMENT 'Variable name/programmatic handle for this field.',
- `label` varchar(255) NOT NULL COMMENT 'Text for form field label (also friendly name for administering this field).',
- `html_type` varchar(12) NOT NULL,
- `is_enter_qty` tinyint NOT NULL DEFAULT 0 COMMENT 'Enter a quantity for this field?',
- `help_pre` text COMMENT 'Description and/or help text to display before this field.',
- `help_post` text COMMENT 'Description and/or help text to display after this field.',
- `weight` int DEFAULT 1 COMMENT 'Order in which the fields should appear',
- `is_display_amounts` tinyint NOT NULL DEFAULT 1 COMMENT 'Should the price be displayed next to the label for each option?',
- `options_per_line` int unsigned DEFAULT 1 COMMENT 'number of options per line for checkbox and radio',
- `is_active` tinyint NOT NULL DEFAULT 1 COMMENT 'Is this price field active',
- `is_required` tinyint NOT NULL DEFAULT 1 COMMENT 'Is this price field required (value must be > 1)',
- `active_on` datetime DEFAULT NULL COMMENT 'If non-zero, do not show this field before the date specified',
- `expire_on` datetime DEFAULT NULL COMMENT 'If non-zero, do not show this field after the date specified',
- `javascript` varchar(255) COMMENT 'Optional scripting attributes for field',
- `visibility_id` int unsigned DEFAULT 1 COMMENT 'Implicit FK to civicrm_option_group with name = \'visibility\'',
+CREATE TABLE `civicrm_membership_type` (
+ `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'Membership ID',
+ `domain_id` int unsigned NOT NULL COMMENT 'Which Domain is this match entry for',
+ `name` varchar(128) NOT NULL COMMENT 'Name of Membership Type',
+ `description` varchar(255) COMMENT 'Description of Membership Type',
+ `member_of_contact_id` int unsigned NOT NULL COMMENT 'Owner organization for this membership type. FK to Contact ID',
+ `financial_type_id` int unsigned NOT NULL COMMENT 'If membership is paid by a contribution - what financial type should be used. FK to civicrm_financial_type.id',
+ `minimum_fee` decimal(18,9) DEFAULT '0' COMMENT 'Minimum fee for this membership (0 for free/complimentary memberships).',
+ `duration_unit` varchar(8) NOT NULL COMMENT 'Unit in which membership period is expressed.',
+ `duration_interval` int COMMENT 'Number of duration units in membership period (e.g. 1 year, 12 months).',
+ `period_type` varchar(8) NOT NULL COMMENT 'Rolling membership period starts on signup date. Fixed membership periods start on fixed_period_start_day.',
+ `fixed_period_start_day` int COMMENT 'For fixed period memberships, month and day (mmdd) on which subscription/membership will start. Period start is back-dated unless after rollover day.',
+ `fixed_period_rollover_day` int COMMENT 'For fixed period memberships, signups after this day (mmdd) rollover to next period.',
+ `relationship_type_id` varchar(64) COMMENT 'FK to Relationship Type ID',
+ `relationship_direction` varchar(128),
+ `max_related` int COMMENT 'Maximum number of related memberships.',
+ `visibility` varchar(64),
+ `weight` int,
+ `receipt_text_signup` varchar(255) COMMENT 'Receipt Text for membership signup',
+ `receipt_text_renewal` varchar(255) COMMENT 'Receipt Text for membership renewal',
+ `auto_renew` tinyint DEFAULT 0 COMMENT '0 = No auto-renew option; 1 = Give option, but not required; 2 = Auto-renew required;',
+ `is_active` boolean DEFAULT TRUE COMMENT 'Is this membership_type enabled',
PRIMARY KEY (`id`),
- INDEX `index_name`(name),
- CONSTRAINT FK_civicrm_price_field_price_set_id FOREIGN KEY (`price_set_id`) REFERENCES `civicrm_price_set`(`id`)
+ INDEX `index_relationship_type_id`(`relationship_type_id`)
+)
+ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
+CREATE TABLE `civicrm_pcp` (
+ `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'Personal Campaign Page ID',
+ `contact_id` int unsigned NOT NULL COMMENT 'FK to Contact ID',
+ `status_id` int unsigned NOT NULL,
+ `title` varchar(255) DEFAULT NULL,
+ `intro_text` text DEFAULT NULL,
+ `page_text` text DEFAULT NULL,
+ `donate_link_text` varchar(255) DEFAULT NULL,
+ `page_id` int unsigned NOT NULL COMMENT 'The Contribution or Event Page which triggered this pcp',
+ `page_type` varchar(64) DEFAULT 'contribute' COMMENT 'The type of PCP this is: contribute or event',
+ `pcp_block_id` int unsigned NOT NULL COMMENT 'The pcp block that this pcp page was created from',
+ `is_thermometer` int unsigned DEFAULT 0,
+ `is_honor_roll` int unsigned DEFAULT 0,
+ `goal_amount` decimal(20,2) COMMENT 'Goal amount of this Personal Campaign Page.',
+ `currency` varchar(3) DEFAULT NULL COMMENT '3 character string, value from config setting or input via user.',
+ `is_active` boolean NOT NULL DEFAULT TRUE COMMENT 'Is Personal Campaign Page enabled/active?',
+ `is_notify` boolean NOT NULL DEFAULT FALSE COMMENT 'Notify owner via email when someone donates to page?',
+ PRIMARY KEY (`id`)
)
ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
-
--- /*******************************************************
--- *
--- * civicrm_price_field_value
--- *
--- *******************************************************/
-CREATE TABLE `civicrm_price_field_value` (
- `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'Price Field Value',
- `price_field_id` int unsigned NOT NULL COMMENT 'FK to civicrm_price_field',
- `name` varchar(255) DEFAULT NULL COMMENT 'Price field option name',
- `label` varchar(255) DEFAULT NULL COMMENT 'Price field option label',
- `description` text DEFAULT NULL COMMENT 'Price field option description.',
- `help_pre` text DEFAULT NULL COMMENT 'Price field option pre help text.',
- `help_post` text DEFAULT NULL COMMENT 'Price field option post field help.',
- `amount` decimal(18,9) NOT NULL COMMENT 'Price field option amount',
- `count` int unsigned DEFAULT NULL COMMENT 'Number of participants per field option',
- `max_value` int unsigned DEFAULT NULL COMMENT 'Max number of participants per field options',
- `weight` int DEFAULT 1 COMMENT 'Order in which the field options should appear',
- `membership_type_id` int unsigned DEFAULT NULL COMMENT 'FK to Membership Type',
- `membership_num_terms` int unsigned DEFAULT NULL COMMENT 'Number of terms for this membership',
- `is_default` tinyint NOT NULL DEFAULT 0 COMMENT 'Is this default price field option',
- `is_active` tinyint NOT NULL DEFAULT 1 COMMENT 'Is this price field value active',
- `financial_type_id` int unsigned DEFAULT NULL COMMENT 'FK to Financial Type.',
- `non_deductible_amount` decimal(20,2) NOT NULL DEFAULT 0.0 COMMENT 'Portion of total amount which is NOT tax deductible.',
- `visibility_id` int unsigned DEFAULT 1 COMMENT 'Implicit FK to civicrm_option_group with name = \'visibility\'',
- PRIMARY KEY (`id`),
- CONSTRAINT FK_civicrm_price_field_value_price_field_id FOREIGN KEY (`price_field_id`) REFERENCES `civicrm_price_field`(`id`),
- CONSTRAINT FK_civicrm_price_field_value_membership_type_id FOREIGN KEY (`membership_type_id`) REFERENCES `civicrm_membership_type`(`id`) ON DELETE SET NULL,
- CONSTRAINT FK_civicrm_price_field_value_financial_type_id FOREIGN KEY (`financial_type_id`) REFERENCES `civicrm_financial_type`(`id`) ON DELETE SET NULL
-)
-ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
-
--- /*******************************************************
--- *
--- * civicrm_pcp_block
--- *
--- * A Personal Campaign Page Block stores admin configurable status options and rules
--- *
--- *******************************************************/
CREATE TABLE `civicrm_pcp_block` (
`id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'PCP block ID',
`entity_table` varchar(64),
`entity_id` int unsigned NOT NULL COMMENT 'FK to civicrm_contribution_page.id OR civicrm_event.id',
- `target_entity_type` varchar(255) NOT NULL DEFAULT 'contribute' COMMENT 'The type of entity that this pcp targets',
- `target_entity_id` int unsigned NOT NULL COMMENT 'The entity that this pcp targets',
- `supporter_profile_id` int unsigned DEFAULT NULL COMMENT 'FK to civicrm_uf_group.id. Does Personal Campaign Page require manual activation by administrator? (is inactive by default after setup)?',
- `owner_notify_id` int unsigned DEFAULT 0 COMMENT 'FK to civicrm_option_group with name = PCP owner notifications',
- `is_approval_needed` tinyint NOT NULL DEFAULT 0 COMMENT 'Does Personal Campaign Page require manual activation by administrator? (is inactive by default after setup)?',
- `is_tellfriend_enabled` tinyint NOT NULL DEFAULT 0 COMMENT 'Does Personal Campaign Page allow using tell a friend?',
- `tellfriend_limit` int unsigned DEFAULT NULL COMMENT 'Maximum recipient fields allowed in tell a friend',
- `link_text` varchar(255) DEFAULT NULL COMMENT 'Link text for PCP.',
- `is_active` tinyint NOT NULL DEFAULT 1 COMMENT 'Is Personal Campaign Page Block enabled/active?',
- `notify_email` varchar(255) DEFAULT NULL COMMENT 'If set, notification is automatically emailed to this email-address on create/update Personal Campaign Page',
- PRIMARY KEY (`id`),
- CONSTRAINT FK_civicrm_pcp_block_supporter_profile_id FOREIGN KEY (`supporter_profile_id`) REFERENCES `civicrm_uf_group`(`id`) ON DELETE SET NULL
-)
-ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
-
--- /*******************************************************
--- *
--- * civicrm_address
--- *
--- * Stores the physical street / mailing address. This format should be capable of storing ALL international addresses.
--- *
--- *******************************************************/
-CREATE TABLE `civicrm_address` (
- `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'Unique Address ID',
- `contact_id` int unsigned COMMENT 'FK to Contact ID',
- `location_type_id` int unsigned COMMENT 'Which Location does this address belong to.',
- `is_primary` tinyint NOT NULL DEFAULT 0 COMMENT 'Is this the primary address.',
- `is_billing` tinyint NOT NULL DEFAULT 0 COMMENT 'Is this the billing address.',
- `street_address` varchar(96) COMMENT 'Concatenation of all routable street address components (prefix, street number, street name, suffix, unit\n number OR P.O. Box). Apps should be able to determine physical location with this data (for mapping, mail\n delivery, etc.).',
- `street_number` int COMMENT 'Numeric portion of address number on the street, e.g. For 112A Main St, the street_number = 112.',
- `street_number_suffix` varchar(8) COMMENT 'Non-numeric portion of address number on the street, e.g. For 112A Main St, the street_number_suffix = A',
- `street_number_predirectional` varchar(8) COMMENT 'Directional prefix, e.g. SE Main St, SE is the prefix.',
- `street_name` varchar(64) COMMENT 'Actual street name, excluding St, Dr, Rd, Ave, e.g. For 112 Main St, the street_name = Main.',
- `street_type` varchar(8) COMMENT 'St, Rd, Dr, etc.',
- `street_number_postdirectional` varchar(8) COMMENT 'Directional prefix, e.g. Main St S, S is the suffix.',
- `street_unit` varchar(16) COMMENT 'Secondary unit designator, e.g. Apt 3 or Unit # 14, or Bldg 1200',
- `supplemental_address_1` varchar(96) COMMENT 'Supplemental Address Information, Line 1',
- `supplemental_address_2` varchar(96) COMMENT 'Supplemental Address Information, Line 2',
- `supplemental_address_3` varchar(96) COMMENT 'Supplemental Address Information, Line 3',
- `city` varchar(64) COMMENT 'City, Town or Village Name.',
- `county_id` int unsigned COMMENT 'Which County does this address belong to.',
- `state_province_id` int unsigned COMMENT 'Which State_Province does this address belong to.',
- `postal_code_suffix` varchar(12) COMMENT 'Store the suffix, like the +4 part in the USPS system.',
- `postal_code` varchar(64) COMMENT 'Store both US (zip5) AND international postal codes. App is responsible for country/region appropriate validation.',
- `usps_adc` varchar(32) COMMENT 'USPS Bulk mailing code.',
- `country_id` int unsigned COMMENT 'Which Country does this address belong to.',
- `geo_code_1` double COMMENT 'Latitude',
- `geo_code_2` double COMMENT 'Longitude',
- `manual_geo_code` tinyint NOT NULL DEFAULT 0 COMMENT 'Is this a manually entered geo code',
- `timezone` varchar(8) COMMENT 'Timezone expressed as a UTC offset - e.g. United States CST would be written as \"UTC-6\".',
- `name` varchar(255),
- `master_id` int unsigned COMMENT 'FK to Address ID',
- PRIMARY KEY (`id`),
- INDEX `index_location_type`(location_type_id),
- INDEX `index_is_primary`(is_primary),
- INDEX `index_is_billing`(is_billing),
- INDEX `index_street_name`(street_name),
- INDEX `index_city`(city),
- INDEX `index_geo_code_1_geo_code_2`(geo_code_1, geo_code_2),
- CONSTRAINT FK_civicrm_address_contact_id FOREIGN KEY (`contact_id`) REFERENCES `civicrm_contact`(`id`) ON DELETE CASCADE,
- CONSTRAINT FK_civicrm_address_county_id FOREIGN KEY (`county_id`) REFERENCES `civicrm_county`(`id`) ON DELETE SET NULL,
- CONSTRAINT FK_civicrm_address_state_province_id FOREIGN KEY (`state_province_id`) REFERENCES `civicrm_state_province`(`id`) ON DELETE SET NULL,
- CONSTRAINT FK_civicrm_address_country_id FOREIGN KEY (`country_id`) REFERENCES `civicrm_country`(`id`) ON DELETE SET NULL,
- CONSTRAINT FK_civicrm_address_master_id FOREIGN KEY (`master_id`) REFERENCES `civicrm_address`(`id`) ON DELETE SET NULL
-)
-ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
-
--- /*******************************************************
--- *
--- * civicrm_loc_block
--- *
--- * Define location specific properties
--- *
--- *******************************************************/
-CREATE TABLE `civicrm_loc_block` (
- `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'Unique ID',
- `address_id` int unsigned,
- `email_id` int unsigned,
- `phone_id` int unsigned,
- `im_id` int unsigned,
- `address_2_id` int unsigned,
- `email_2_id` int unsigned,
- `phone_2_id` int unsigned,
- `im_2_id` int unsigned,
- PRIMARY KEY (`id`),
- CONSTRAINT FK_civicrm_loc_block_address_id FOREIGN KEY (`address_id`) REFERENCES `civicrm_address`(`id`) ON DELETE SET NULL,
- CONSTRAINT FK_civicrm_loc_block_email_id FOREIGN KEY (`email_id`) REFERENCES `civicrm_email`(`id`) ON DELETE SET NULL,
- CONSTRAINT FK_civicrm_loc_block_phone_id FOREIGN KEY (`phone_id`) REFERENCES `civicrm_phone`(`id`) ON DELETE SET NULL,
- CONSTRAINT FK_civicrm_loc_block_im_id FOREIGN KEY (`im_id`) REFERENCES `civicrm_im`(`id`) ON DELETE SET NULL,
- CONSTRAINT FK_civicrm_loc_block_address_2_id FOREIGN KEY (`address_2_id`) REFERENCES `civicrm_address`(`id`) ON DELETE SET NULL,
- CONSTRAINT FK_civicrm_loc_block_email_2_id FOREIGN KEY (`email_2_id`) REFERENCES `civicrm_email`(`id`) ON DELETE SET NULL,
- CONSTRAINT FK_civicrm_loc_block_phone_2_id FOREIGN KEY (`phone_2_id`) REFERENCES `civicrm_phone`(`id`) ON DELETE SET NULL,
- CONSTRAINT FK_civicrm_loc_block_im_2_id FOREIGN KEY (`im_2_id`) REFERENCES `civicrm_im`(`id`) ON DELETE SET NULL
-)
-ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
-
--- /*******************************************************
--- *
--- * civicrm_group_contact
--- *
--- * Join table sets membership for 'static' groups. Also used to store 'opt-out' entries for 'query' type groups (status = 'OUT')
--- *
--- *******************************************************/
-CREATE TABLE `civicrm_group_contact` (
- `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'primary key',
- `group_id` int unsigned NOT NULL COMMENT 'FK to civicrm_group',
- `contact_id` int unsigned NOT NULL COMMENT 'FK to civicrm_contact',
- `status` varchar(8) COMMENT 'status of contact relative to membership in group',
- `location_id` int unsigned COMMENT 'Optional location to associate with this membership',
- `email_id` int unsigned COMMENT 'Optional email to associate with this membership',
- PRIMARY KEY (`id`),
- UNIQUE INDEX `UI_contact_group`(contact_id, group_id),
- CONSTRAINT FK_civicrm_group_contact_group_id FOREIGN KEY (`group_id`) REFERENCES `civicrm_group`(`id`) ON DELETE CASCADE,
- CONSTRAINT FK_civicrm_group_contact_contact_id FOREIGN KEY (`contact_id`) REFERENCES `civicrm_contact`(`id`) ON DELETE CASCADE,
- CONSTRAINT FK_civicrm_group_contact_location_id FOREIGN KEY (`location_id`) REFERENCES `civicrm_loc_block`(`id`) ON DELETE SET NULL,
- CONSTRAINT FK_civicrm_group_contact_email_id FOREIGN KEY (`email_id`) REFERENCES `civicrm_email`(`id`)
-)
-ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
-
--- /*******************************************************
--- *
--- * civicrm_contribution
--- *
--- *******************************************************/
-CREATE TABLE `civicrm_contribution` (
- `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'Contribution ID',
- `contact_id` int unsigned NOT NULL COMMENT 'FK to Contact ID',
- `financial_type_id` int unsigned COMMENT 'FK to Financial Type for (total_amount - non_deductible_amount).',
- `contribution_page_id` int unsigned COMMENT 'The Contribution Page which triggered this contribution',
- `payment_instrument_id` int unsigned COMMENT 'FK to Payment Instrument',
- `receive_date` datetime,
- `non_deductible_amount` decimal(20,2) DEFAULT 0 COMMENT 'Portion of total amount which is NOT tax deductible. Equal to total_amount for non-deductible financial types.',
- `total_amount` decimal(20,2) NOT NULL COMMENT 'Total amount of this contribution. Use market value for non-monetary gifts.',
- `fee_amount` decimal(20,2) COMMENT 'actual processor fee if known - may be 0.',
- `net_amount` decimal(20,2) COMMENT 'actual funds transfer amount. total less fees. if processor does not report actual fee during transaction, this is set to total_amount.',
- `trxn_id` varchar(255) COMMENT 'unique transaction id. may be processor id, bank id + trans id, or account number + check number... depending on payment_method',
- `invoice_id` varchar(255) COMMENT 'unique invoice id, system generated or passed in',
- `invoice_number` varchar(255) COMMENT 'Human readable invoice number',
- `currency` varchar(3) DEFAULT NULL COMMENT '3 character string, value from config setting or input via user.',
- `cancel_date` datetime COMMENT 'when was gift cancelled',
- `cancel_reason` text,
- `receipt_date` datetime COMMENT 'when (if) receipt was sent. populated automatically for online donations w/ automatic receipting',
- `thankyou_date` datetime COMMENT 'when (if) was donor thanked',
- `source` varchar(255) COMMENT 'Origin of this Contribution.',
- `amount_level` text,
- `contribution_recur_id` int unsigned COMMENT 'Conditional foreign key to civicrm_contribution_recur id. Each contribution made in connection with a recurring contribution carries a foreign key to the recurring contribution record. This assumes we can track these processor initiated events.',
- `is_test` tinyint NOT NULL DEFAULT 0,
- `is_pay_later` tinyint NOT NULL DEFAULT 0,
- `contribution_status_id` int unsigned DEFAULT 1,
- `address_id` int unsigned COMMENT 'Conditional foreign key to civicrm_address.id. We insert an address record for each contribution when we have associated billing name and address data.',
- `check_number` varchar(255),
- `campaign_id` int unsigned COMMENT 'The campaign for which this contribution has been triggered.',
- `creditnote_id` varchar(255) COMMENT 'unique credit note id, system generated or passed in',
- `tax_amount` decimal(20,2) NOT NULL DEFAULT 0 COMMENT 'Total tax amount of this contribution.',
- `revenue_recognition_date` datetime COMMENT 'Stores the date when revenue should be recognized.',
- `is_template` tinyint NOT NULL DEFAULT 0 COMMENT 'Shows this is a template for recurring contributions.',
- PRIMARY KEY (`id`),
- INDEX `UI_contrib_payment_instrument_id`(payment_instrument_id),
- INDEX `index_total_amount_receive_date`(total_amount, receive_date),
- INDEX `index_source`(source),
- UNIQUE INDEX `UI_contrib_trxn_id`(trxn_id),
- UNIQUE INDEX `UI_contrib_invoice_id`(invoice_id),
- INDEX `index_contribution_status`(contribution_status_id),
- INDEX `received_date`(receive_date),
- INDEX `check_number`(check_number),
- INDEX `index_creditnote_id`(creditnote_id),
- CONSTRAINT FK_civicrm_contribution_contact_id FOREIGN KEY (`contact_id`) REFERENCES `civicrm_contact`(`id`) ON DELETE CASCADE,
- CONSTRAINT FK_civicrm_contribution_financial_type_id FOREIGN KEY (`financial_type_id`) REFERENCES `civicrm_financial_type`(`id`),
- CONSTRAINT FK_civicrm_contribution_contribution_page_id FOREIGN KEY (`contribution_page_id`) REFERENCES `civicrm_contribution_page`(`id`) ON DELETE SET NULL,
- CONSTRAINT FK_civicrm_contribution_contribution_recur_id FOREIGN KEY (`contribution_recur_id`) REFERENCES `civicrm_contribution_recur`(`id`) ON DELETE SET NULL,
- CONSTRAINT FK_civicrm_contribution_address_id FOREIGN KEY (`address_id`) REFERENCES `civicrm_address`(`id`) ON DELETE SET NULL,
- CONSTRAINT FK_civicrm_contribution_campaign_id FOREIGN KEY (`campaign_id`) REFERENCES `civicrm_campaign`(`id`) ON DELETE SET NULL
-)
-ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
-
--- /*******************************************************
--- *
--- * civicrm_contribution_product
--- *
--- *******************************************************/
-CREATE TABLE `civicrm_contribution_product` (
- `id` int unsigned NOT NULL AUTO_INCREMENT,
- `product_id` int unsigned NOT NULL,
- `contribution_id` int unsigned NOT NULL,
- `product_option` varchar(255) COMMENT 'Option value selected if applicable - e.g. color, size etc.',
- `quantity` int,
- `fulfilled_date` date COMMENT 'Optional. Can be used to record the date this product was fulfilled or shipped.',
- `start_date` date COMMENT 'Actual start date for a time-delimited premium (subscription, service or membership)',
- `end_date` date COMMENT 'Actual end date for a time-delimited premium (subscription, service or membership)',
- `comment` text,
- `financial_type_id` int unsigned DEFAULT NULL COMMENT 'FK to Financial Type(for membership price sets only).',
- PRIMARY KEY (`id`),
- CONSTRAINT FK_civicrm_contribution_product_product_id FOREIGN KEY (`product_id`) REFERENCES `civicrm_product`(`id`) ON DELETE CASCADE,
- CONSTRAINT FK_civicrm_contribution_product_contribution_id FOREIGN KEY (`contribution_id`) REFERENCES `civicrm_contribution`(`id`) ON DELETE CASCADE,
- CONSTRAINT FK_civicrm_contribution_product_financial_type_id FOREIGN KEY (`financial_type_id`) REFERENCES `civicrm_financial_type`(`id`) ON DELETE SET NULL
+ `target_entity_type` varchar(255) NOT NULL DEFAULT 'contribute' COMMENT 'The type of entity that this pcp targets',
+ `target_entity_id` int unsigned NOT NULL COMMENT 'The entity that this pcp targets',
+ `supporter_profile_id` int unsigned DEFAULT NULL COMMENT 'FK to civicrm_uf_group.id. Does Personal Campaign Page require manual activation by administrator? (is inactive by default after setup)?',
+ `owner_notify_id` int unsigned DEFAULT 0 COMMENT 'FK to civicrm_option_group with name = PCP owner notifications',
+ `is_approval_needed` boolean NOT NULL DEFAULT FALSE COMMENT 'Does Personal Campaign Page require manual activation by administrator? (is inactive by default after setup)?',
+ `is_tellfriend_enabled` boolean NOT NULL DEFAULT FALSE COMMENT 'Does Personal Campaign Page allow using tell a friend?',
+ `tellfriend_limit` int unsigned DEFAULT NULL COMMENT 'Maximum recipient fields allowed in tell a friend',
+ `link_text` varchar(255) DEFAULT NULL COMMENT 'Link text for PCP.',
+ `is_active` boolean NOT NULL DEFAULT TRUE COMMENT 'Is Personal Campaign Page Block enabled/active?',
+ `notify_email` varchar(255) DEFAULT NULL COMMENT 'If set, notification is automatically emailed to this email-address on create/update Personal Campaign Page',
+ PRIMARY KEY (`id`)
)
ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
-
--- /*******************************************************
--- *
--- * civicrm_contribution_soft
--- *
--- *******************************************************/
-CREATE TABLE `civicrm_contribution_soft` (
- `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'Soft Credit ID',
- `contribution_id` int unsigned NOT NULL COMMENT 'FK to contribution table.',
- `contact_id` int unsigned NOT NULL COMMENT 'FK to Contact ID',
- `amount` decimal(20,2) NOT NULL COMMENT 'Amount of this soft credit.',
+CREATE TABLE `civicrm_pledge` (
+ `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'Pledge ID',
+ `contact_id` int unsigned NOT NULL COMMENT 'Foreign key to civicrm_contact.id .',
+ `financial_type_id` int unsigned COMMENT 'FK to Financial Type',
+ `contribution_page_id` int unsigned COMMENT 'The Contribution Page which triggered this contribution',
+ `amount` decimal(20,2) NOT NULL COMMENT 'Total pledged amount.',
+ `original_installment_amount` decimal(20,2) NOT NULL COMMENT 'Original amount for each of the installments.',
`currency` varchar(3) DEFAULT NULL COMMENT '3 character string, value from config setting or input via user.',
- `pcp_id` int unsigned DEFAULT NULL COMMENT 'FK to civicrm_pcp.id',
- `pcp_display_in_roll` tinyint NOT NULL DEFAULT 0,
- `pcp_roll_nickname` varchar(255) DEFAULT NULL,
- `pcp_personal_note` varchar(255) DEFAULT NULL,
- `soft_credit_type_id` int unsigned DEFAULT NULL COMMENT 'Soft Credit Type ID.Implicit FK to civicrm_option_value where option_group = soft_credit_type.',
- PRIMARY KEY (`id`),
- INDEX `index_id`(pcp_id),
- CONSTRAINT FK_civicrm_contribution_soft_contribution_id FOREIGN KEY (`contribution_id`) REFERENCES `civicrm_contribution`(`id`) ON DELETE CASCADE,
- CONSTRAINT FK_civicrm_contribution_soft_contact_id FOREIGN KEY (`contact_id`) REFERENCES `civicrm_contact`(`id`) ON DELETE CASCADE,
- CONSTRAINT FK_civicrm_contribution_soft_pcp_id FOREIGN KEY (`pcp_id`) REFERENCES `civicrm_pcp`(`id`) ON DELETE SET NULL
-)
-ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
-
--- /*******************************************************
--- *
--- * civicrm_entity_financial_trxn
--- *
--- *******************************************************/
-CREATE TABLE `civicrm_entity_financial_trxn` (
- `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'ID',
- `entity_table` varchar(64) NOT NULL COMMENT 'May contain civicrm_financial_item, civicrm_contribution, civicrm_financial_trxn, civicrm_grant, etc',
- `entity_id` int unsigned NOT NULL,
- `financial_trxn_id` int unsigned,
- `amount` decimal(20,2) NOT NULL COMMENT 'allocated amount of transaction to this entity',
- PRIMARY KEY (`id`),
- INDEX `UI_entity_financial_trxn_entity_table`(entity_table),
- INDEX `UI_entity_financial_trxn_entity_id`(entity_id),
- CONSTRAINT FK_civicrm_entity_financial_trxn_financial_trxn_id FOREIGN KEY (`financial_trxn_id`) REFERENCES `civicrm_financial_trxn`(`id`) ON DELETE SET NULL
-)
-ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
-
--- /*******************************************************
--- *
--- * civicrm_membership_payment
--- *
--- * Membership Payment
--- *
--- *******************************************************/
-CREATE TABLE `civicrm_membership_payment` (
- `id` int unsigned NOT NULL AUTO_INCREMENT,
- `membership_id` int unsigned NOT NULL COMMENT 'FK to Membership table',
- `contribution_id` int unsigned COMMENT 'FK to contribution table.',
+ `frequency_unit` varchar(8) NOT NULL DEFAULT 'month' COMMENT 'Time units for recurrence of pledge payments.',
+ `frequency_interval` int unsigned NOT NULL DEFAULT 1 COMMENT 'Number of time units for recurrence of pledge payments.',
+ `frequency_day` int unsigned NOT NULL DEFAULT 3 COMMENT 'Day in the period when the pledge payment is due e.g. 1st of month, 15th etc. Use this to set the scheduled dates for pledge payments.',
+ `installments` int unsigned NOT NULL DEFAULT 1 COMMENT 'Total number of payments to be made.',
+ `start_date` datetime NOT NULL COMMENT 'The date the first scheduled pledge occurs.',
+ `create_date` datetime NOT NULL COMMENT 'When this pledge record was created.',
+ `acknowledge_date` datetime COMMENT 'When a pledge acknowledgement message was sent to the contributor.',
+ `modified_date` datetime COMMENT 'Last updated date for this pledge record.',
+ `cancel_date` datetime COMMENT 'Date this pledge was cancelled by contributor.',
+ `end_date` datetime COMMENT 'Date this pledge finished successfully (total pledge payments equal to or greater than pledged amount).',
+ `max_reminders` int unsigned DEFAULT 1 COMMENT 'The maximum number of payment reminders to send for any given payment.',
+ `initial_reminder_day` int unsigned DEFAULT 5 COMMENT 'Send initial reminder this many days prior to the payment due date.',
+ `additional_reminder_day` int unsigned DEFAULT 5 COMMENT 'Send additional reminder this many days after last one sent, up to maximum number of reminders.',
+ `status_id` int unsigned NOT NULL COMMENT 'Implicit foreign key to civicrm_option_values in the pledge_status option group.',
+ `is_test` boolean NOT NULL DEFAULT FALSE,
+ `campaign_id` int unsigned COMMENT 'The campaign for which this pledge has been initiated.',
PRIMARY KEY (`id`),
- UNIQUE INDEX `UI_contribution_membership`(contribution_id, membership_id),
- CONSTRAINT FK_civicrm_membership_payment_membership_id FOREIGN KEY (`membership_id`) REFERENCES `civicrm_membership`(`id`) ON DELETE CASCADE,
- CONSTRAINT FK_civicrm_membership_payment_contribution_id FOREIGN KEY (`contribution_id`) REFERENCES `civicrm_contribution`(`id`) ON DELETE CASCADE
+ INDEX `index_status`(`status_id`)
)
ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
-
--- /*******************************************************
--- *
--- * civicrm_event
--- *
--- *******************************************************/
-CREATE TABLE `civicrm_event` (
- `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'Event',
- `title` varchar(255) COMMENT 'Event Title (e.g. Fall Fundraiser Dinner)',
- `summary` text COMMENT 'Brief summary of event. Text and html allowed. Displayed on Event Registration form and can be used on other CMS pages which need an event summary.',
- `description` text COMMENT 'Full description of event. Text and html allowed. Displayed on built-in Event Information screens.',
- `event_type_id` int unsigned DEFAULT 0 COMMENT 'Event Type ID.Implicit FK to civicrm_option_value where option_group = event_type.',
- `participant_listing_id` int unsigned DEFAULT NULL COMMENT 'Should we expose the participant list? Implicit FK to civicrm_option_value where option_group = participant_listing.',
- `is_public` tinyint NOT NULL DEFAULT 1 COMMENT 'Public events will be included in the iCal feeds. Access to private event information may be limited using ACLs.',
- `start_date` datetime COMMENT 'Date and time that event starts.',
- `end_date` datetime COMMENT 'Date and time that event ends. May be NULL if no defined end date/time',
- `is_online_registration` tinyint NOT NULL DEFAULT 0 COMMENT 'If true, include registration link on Event Info page.',
- `registration_link_text` varchar(255) COMMENT 'Text for link to Event Registration form which is displayed on Event Information screen when is_online_registration is true.',
- `registration_start_date` datetime COMMENT 'Date and time that online registration starts.',
- `registration_end_date` datetime COMMENT 'Date and time that online registration ends.',
- `max_participants` int unsigned DEFAULT NULL COMMENT 'Maximum number of registered participants to allow. After max is reached, a custom Event Full message is displayed. If NULL, allow unlimited number of participants.',
- `event_full_text` text COMMENT 'Message to display on Event Information page and INSTEAD OF Event Registration form if maximum participants are signed up. Can include email address/info about getting on a waiting list, etc. Text and html allowed.',
- `is_monetary` tinyint NOT NULL DEFAULT 0 COMMENT 'If true, one or more fee amounts must be set and a Payment Processor must be configured for Online Event Registration.',
- `financial_type_id` int unsigned DEFAULT NULL COMMENT 'Financial type assigned to paid event registrations for this event. Required if is_monetary is true.',
- `payment_processor` varchar(128) COMMENT 'Payment Processors configured for this Event (if is_monetary is true)',
- `is_map` tinyint NOT NULL DEFAULT 0 COMMENT 'Include a map block on the Event Information page when geocode info is available and a mapping provider has been specified?',
- `is_active` tinyint NOT NULL DEFAULT 0 COMMENT 'Is this Event enabled or disabled/cancelled?',
- `fee_label` varchar(255),
- `is_show_location` tinyint NOT NULL DEFAULT 1 COMMENT 'If true, show event location.',
- `loc_block_id` int unsigned COMMENT 'FK to Location Block ID',
- `default_role_id` int unsigned DEFAULT 1 COMMENT 'Participant role ID. Implicit FK to civicrm_option_value where option_group = participant_role.',
- `intro_text` text COMMENT 'Introductory message for Event Registration page. Text and html allowed. Displayed at the top of Event Registration form.',
- `footer_text` text COMMENT 'Footer message for Event Registration page. Text and html allowed. Displayed at the bottom of Event Registration form.',
- `confirm_title` varchar(255) DEFAULT NULL COMMENT 'Title for Confirmation page.',
- `confirm_text` text COMMENT 'Introductory message for Event Registration page. Text and html allowed. Displayed at the top of Event Registration form.',
- `confirm_footer_text` text COMMENT 'Footer message for Event Registration page. Text and html allowed. Displayed at the bottom of Event Registration form.',
- `is_email_confirm` tinyint NOT NULL DEFAULT 0 COMMENT 'If true, confirmation is automatically emailed to contact on successful registration.',
- `confirm_email_text` text COMMENT 'text to include above standard event info on confirmation email. emails are text-only, so do not allow html for now',
- `confirm_from_name` varchar(255) COMMENT 'FROM email name used for confirmation emails.',
- `confirm_from_email` varchar(255) COMMENT 'FROM email address used for confirmation emails.',
- `cc_confirm` varchar(255) COMMENT 'comma-separated list of email addresses to cc each time a confirmation is sent',
- `bcc_confirm` varchar(255) COMMENT 'comma-separated list of email addresses to bcc each time a confirmation is sent',
- `default_fee_id` int unsigned COMMENT 'FK to civicrm_option_value.',
- `default_discount_fee_id` int unsigned COMMENT 'FK to civicrm_option_value.',
- `thankyou_title` varchar(255) DEFAULT NULL COMMENT 'Title for ThankYou page.',
- `thankyou_text` text COMMENT 'ThankYou Text.',
- `thankyou_footer_text` text COMMENT 'Footer message.',
- `is_pay_later` tinyint NOT NULL DEFAULT 0 COMMENT 'if true - allows the user to send payment directly to the org later',
- `pay_later_text` text COMMENT 'The text displayed to the user in the main form',
- `pay_later_receipt` text COMMENT 'The receipt sent to the user instead of the normal receipt text',
- `is_partial_payment` tinyint NOT NULL DEFAULT 0 COMMENT 'is partial payment enabled for this event',
- `initial_amount_label` varchar(255) COMMENT 'Initial amount label for partial payment',
- `initial_amount_help_text` text COMMENT 'Initial amount help text for partial payment',
- `min_initial_amount` decimal(20,2) COMMENT 'Minimum initial amount for partial payment',
- `is_multiple_registrations` tinyint NOT NULL DEFAULT 0 COMMENT 'if true - allows the user to register multiple participants for event',
- `max_additional_participants` int unsigned DEFAULT 0 COMMENT 'Maximum number of additional participants that can be registered on a single booking',
- `allow_same_participant_emails` tinyint NOT NULL DEFAULT 0 COMMENT 'if true - allows the user to register multiple registrations from same email address.',
- `has_waitlist` tinyint NOT NULL DEFAULT 0 COMMENT 'Whether the event has waitlist support.',
- `requires_approval` tinyint NOT NULL DEFAULT 0 COMMENT 'Whether participants require approval before they can finish registering.',
- `expiration_time` int unsigned COMMENT 'Expire pending but unconfirmed registrations after this many hours.',
- `allow_selfcancelxfer` tinyint NOT NULL DEFAULT 0 COMMENT 'Allow self service cancellation or transfer for event?',
- `selfcancelxfer_time` int DEFAULT 0 COMMENT 'Number of hours prior to event start date to allow self-service cancellation or transfer.',
- `waitlist_text` text COMMENT 'Text to display when the event is full, but participants can signup for a waitlist.',
- `approval_req_text` text COMMENT 'Text to display when the approval is required to complete registration for an event.',
- `is_template` tinyint NOT NULL DEFAULT 0 COMMENT 'whether the event has template',
- `template_title` varchar(255) COMMENT 'Event Template Title',
- `created_id` int unsigned COMMENT 'FK to civicrm_contact, who created this event',
- `created_date` datetime COMMENT 'Date and time that event was created.',
- `currency` varchar(3) COMMENT '3 character string, value from config setting or input via user.',
- `campaign_id` int unsigned COMMENT 'The campaign for which this event has been created.',
- `is_share` tinyint NOT NULL DEFAULT 1 COMMENT 'Can people share the event through social media?',
- `is_confirm_enabled` tinyint NOT NULL DEFAULT 1 COMMENT 'If false, the event booking confirmation screen gets skipped',
- `parent_event_id` int unsigned DEFAULT NULL COMMENT 'Implicit FK to civicrm_event: parent event',
- `slot_label_id` int unsigned DEFAULT NULL COMMENT 'Needs to be moved to Event cart extension. Subevent slot label. Implicit FK to civicrm_option_value where option_group = conference_slot.',
- `dedupe_rule_group_id` int unsigned DEFAULT NULL COMMENT 'Rule to use when matching registrations for this event',
- `is_billing_required` tinyint NOT NULL DEFAULT 0 COMMENT 'if true than billing block is required this event',
- `is_show_calendar_links` tinyint NOT NULL DEFAULT 1 COMMENT 'If true then calendar links are shown for this event.',
- PRIMARY KEY (`id`),
- INDEX `index_event_type_id`(event_type_id),
- INDEX `index_participant_listing_id`(participant_listing_id),
- INDEX `index_parent_event_id`(parent_event_id),
- CONSTRAINT FK_civicrm_event_loc_block_id FOREIGN KEY (`loc_block_id`) REFERENCES `civicrm_loc_block`(`id`) ON DELETE SET NULL,
- CONSTRAINT FK_civicrm_event_created_id FOREIGN KEY (`created_id`) REFERENCES `civicrm_contact`(`id`) ON DELETE SET NULL,
- CONSTRAINT FK_civicrm_event_campaign_id FOREIGN KEY (`campaign_id`) REFERENCES `civicrm_campaign`(`id`) ON DELETE SET NULL,
- CONSTRAINT FK_civicrm_event_dedupe_rule_group_id FOREIGN KEY (`dedupe_rule_group_id`) REFERENCES `civicrm_dedupe_rule_group`(`id`)
-)
-ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
-
--- /*******************************************************
--- *
--- * civicrm_participant
--- *
--- *******************************************************/
-CREATE TABLE `civicrm_participant` (
- `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'Participant ID',
- `contact_id` int unsigned NOT NULL COMMENT 'FK to Contact ID',
- `event_id` int unsigned NOT NULL COMMENT 'FK to Event ID',
- `status_id` int unsigned NOT NULL DEFAULT 1 COMMENT 'Participant status ID. FK to civicrm_participant_status_type. Default of 1 should map to status = Registered.',
- `role_id` varchar(128) DEFAULT NULL COMMENT 'Participant role ID. Implicit FK to civicrm_option_value where option_group = participant_role.',
- `register_date` datetime COMMENT 'When did contact register for event?',
- `source` varchar(128) COMMENT 'Source of this event registration.',
- `fee_level` text COMMENT 'Populate with the label (text) associated with a fee level for paid events with multiple levels. Note that\n we store the label value and not the key',
- `is_test` tinyint NOT NULL DEFAULT 0,
- `is_pay_later` tinyint NOT NULL DEFAULT 0,
- `fee_amount` decimal(20,2) COMMENT 'actual processor fee if known - may be 0.',
- `registered_by_id` int unsigned DEFAULT NULL COMMENT 'FK to Participant ID',
- `discount_id` int unsigned DEFAULT NULL COMMENT 'FK to Discount ID',
- `fee_currency` varchar(3) DEFAULT NULL COMMENT '3 character string, value derived from config setting.',
- `campaign_id` int unsigned COMMENT 'The campaign for which this participant has been registered.',
- `discount_amount` int unsigned COMMENT 'Discount Amount',
- `cart_id` int unsigned COMMENT 'FK to civicrm_event_carts',
- `must_wait` int COMMENT 'On Waiting List',
- `transferred_to_contact_id` int unsigned DEFAULT NULL COMMENT 'FK to Contact ID',
- `created_id` int unsigned COMMENT 'Contact responsible for registering this participant',
- PRIMARY KEY (`id`),
- INDEX `index_status_id`(status_id),
- INDEX `index_role_id`(role_id),
- CONSTRAINT FK_civicrm_participant_contact_id FOREIGN KEY (`contact_id`) REFERENCES `civicrm_contact`(`id`) ON DELETE CASCADE,
- CONSTRAINT FK_civicrm_participant_event_id FOREIGN KEY (`event_id`) REFERENCES `civicrm_event`(`id`) ON DELETE CASCADE,
- CONSTRAINT FK_civicrm_participant_status_id FOREIGN KEY (`status_id`) REFERENCES `civicrm_participant_status_type`(`id`),
- CONSTRAINT FK_civicrm_participant_registered_by_id FOREIGN KEY (`registered_by_id`) REFERENCES `civicrm_participant`(`id`) ON DELETE SET NULL,
- CONSTRAINT FK_civicrm_participant_discount_id FOREIGN KEY (`discount_id`) REFERENCES `civicrm_discount`(`id`) ON DELETE SET NULL,
- CONSTRAINT FK_civicrm_participant_campaign_id FOREIGN KEY (`campaign_id`) REFERENCES `civicrm_campaign`(`id`) ON DELETE SET NULL,
- CONSTRAINT FK_civicrm_participant_cart_id FOREIGN KEY (`cart_id`) REFERENCES `civicrm_event_carts`(`id`) ON DELETE SET NULL,
- CONSTRAINT FK_civicrm_participant_transferred_to_contact_id FOREIGN KEY (`transferred_to_contact_id`) REFERENCES `civicrm_contact`(`id`) ON DELETE SET NULL,
- CONSTRAINT FK_civicrm_participant_created_id FOREIGN KEY (`created_id`) REFERENCES `civicrm_contact`(`id`) ON DELETE SET NULL
-)
-ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
-
--- /*******************************************************
--- *
--- * civicrm_participant_payment
--- *
--- *******************************************************/
-CREATE TABLE `civicrm_participant_payment` (
- `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'Participant Payment ID',
- `participant_id` int unsigned NOT NULL COMMENT 'Participant ID (FK)',
- `contribution_id` int unsigned NOT NULL COMMENT 'FK to contribution table.',
+CREATE TABLE `civicrm_pledge_block` (
+ `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'Pledge ID',
+ `entity_table` varchar(64) COMMENT 'physical tablename for entity being joined to pledge, e.g. civicrm_contact',
+ `entity_id` int unsigned NOT NULL COMMENT 'FK to entity table specified in entity_table column.',
+ `pledge_frequency_unit` varchar(128) COMMENT 'Delimited list of supported frequency units',
+ `is_pledge_interval` boolean NOT NULL DEFAULT FALSE COMMENT 'Is frequency interval exposed on the contribution form.',
+ `max_reminders` int unsigned DEFAULT 1 COMMENT 'The maximum number of payment reminders to send for any given payment.',
+ `initial_reminder_day` int unsigned DEFAULT 5 COMMENT 'Send initial reminder this many days prior to the payment due date.',
+ `additional_reminder_day` int unsigned DEFAULT 5 COMMENT 'Send additional reminder this many days after last one sent, up to maximum number of reminders.',
+ `pledge_start_date` varchar(64) COMMENT 'The date the first scheduled pledge occurs.',
+ `is_pledge_start_date_visible` boolean NOT NULL DEFAULT FALSE COMMENT 'If true - recurring start date is shown.',
+ `is_pledge_start_date_editable` boolean NOT NULL DEFAULT FALSE COMMENT 'If true - recurring start date is editable.',
PRIMARY KEY (`id`),
- UNIQUE INDEX `UI_contribution_participant`(contribution_id, participant_id),
- CONSTRAINT FK_civicrm_participant_payment_participant_id FOREIGN KEY (`participant_id`) REFERENCES `civicrm_participant`(`id`) ON DELETE CASCADE,
- CONSTRAINT FK_civicrm_participant_payment_contribution_id FOREIGN KEY (`contribution_id`) REFERENCES `civicrm_contribution`(`id`) ON DELETE CASCADE
+ INDEX `index_entity`(`entity_table`, `entity_id`)
)
ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
-
--- /*******************************************************
--- *
--- * civicrm_events_in_carts
--- *
--- *******************************************************/
-CREATE TABLE `civicrm_events_in_carts` (
- `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'Event In Cart ID',
- `event_id` int unsigned COMMENT 'FK to Event ID',
- `event_cart_id` int unsigned COMMENT 'FK to Event Cart ID',
- PRIMARY KEY (`id`),
- CONSTRAINT FK_civicrm_events_in_carts_event_id FOREIGN KEY (`event_id`) REFERENCES `civicrm_event`(`id`) ON DELETE CASCADE,
- CONSTRAINT FK_civicrm_events_in_carts_event_cart_id FOREIGN KEY (`event_cart_id`) REFERENCES `civicrm_event_carts`(`id`) ON DELETE CASCADE
-)
-ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
-
--- /*******************************************************
--- *
--- * civicrm_pledge_payment
--- *
--- * Pledge Payment
--- *
--- *******************************************************/
CREATE TABLE `civicrm_pledge_payment` (
`id` int unsigned NOT NULL AUTO_INCREMENT,
`pledge_id` int unsigned NOT NULL COMMENT 'FK to Pledge table',
@@ -4108,18 +2536,10 @@ CREATE TABLE `civicrm_pledge_payment` (
`reminder_count` int unsigned DEFAULT 0 COMMENT 'The number of payment reminders sent.',
`status_id` int unsigned,
PRIMARY KEY (`id`),
- INDEX `index_contribution_pledge`(contribution_id, pledge_id),
- INDEX `index_status`(status_id),
- CONSTRAINT FK_civicrm_pledge_payment_pledge_id FOREIGN KEY (`pledge_id`) REFERENCES `civicrm_pledge`(`id`) ON DELETE CASCADE,
- CONSTRAINT FK_civicrm_pledge_payment_contribution_id FOREIGN KEY (`contribution_id`) REFERENCES `civicrm_contribution`(`id`) ON DELETE CASCADE
-)
-ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
-
--- /*******************************************************
--- *
--- * civicrm_line_item
--- *
--- *******************************************************/
+ INDEX `index_contribution_pledge`(`contribution_id`, `pledge_id`),
+ INDEX `index_status`(`status_id`)
+)
+ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
CREATE TABLE `civicrm_line_item` (
`id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'Line Item',
`entity_table` varchar(64) NOT NULL COMMENT 'May contain civicrm_contribution, civicrm_participant or civicrm_membership',
@@ -4133,14 +2553,543 @@ CREATE TABLE `civicrm_line_item` (
`participant_count` int unsigned DEFAULT NULL COMMENT 'Participant count for field',
`price_field_value_id` int unsigned DEFAULT NULL COMMENT 'FK to civicrm_price_field_value',
`financial_type_id` int unsigned DEFAULT NULL COMMENT 'FK to Financial Type.',
- `non_deductible_amount` decimal(20,2) NOT NULL DEFAULT 0.0 COMMENT 'Portion of total amount which is NOT tax deductible.',
- `tax_amount` decimal(20,2) NOT NULL DEFAULT 0 COMMENT 'tax of each item',
+ `non_deductible_amount` decimal(20,2) NOT NULL DEFAULT '0.0' COMMENT 'Portion of total amount which is NOT tax deductible.',
+ `tax_amount` decimal(20,2) NOT NULL DEFAULT '0' COMMENT 'tax of each item',
`membership_num_terms` int unsigned DEFAULT NULL COMMENT 'Number of terms for this membership (only supported in Order->Payment flow). If the field is NULL it means unknown and it will be assumed to be 1 during payment.create if entity_table is civicrm_membership',
PRIMARY KEY (`id`),
- UNIQUE INDEX `UI_line_item_value`(entity_id, entity_table, contribution_id, price_field_value_id, price_field_id),
- CONSTRAINT FK_civicrm_line_item_contribution_id FOREIGN KEY (`contribution_id`) REFERENCES `civicrm_contribution`(`id`) ON DELETE SET NULL,
- CONSTRAINT FK_civicrm_line_item_price_field_id FOREIGN KEY (`price_field_id`) REFERENCES `civicrm_price_field`(`id`) ON DELETE SET NULL,
- CONSTRAINT FK_civicrm_line_item_price_field_value_id FOREIGN KEY (`price_field_value_id`) REFERENCES `civicrm_price_field_value`(`id`) ON DELETE SET NULL,
- CONSTRAINT FK_civicrm_line_item_financial_type_id FOREIGN KEY (`financial_type_id`) REFERENCES `civicrm_financial_type`(`id`) ON DELETE SET NULL
+ UNIQUE INDEX `UI_line_item_value`(`entity_id`, `entity_table`, `contribution_id`, `price_field_value_id`, `price_field_id`)
+)
+ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
+CREATE TABLE `civicrm_price_field` (
+ `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'Price Field',
+ `price_set_id` int unsigned NOT NULL COMMENT 'FK to civicrm_price_set',
+ `name` varchar(255) NOT NULL COMMENT 'Variable name/programmatic handle for this field.',
+ `label` varchar(255) NOT NULL COMMENT 'Text for form field label (also friendly name for administering this field).',
+ `html_type` varchar(12) NOT NULL,
+ `is_enter_qty` boolean NOT NULL DEFAULT FALSE COMMENT 'Enter a quantity for this field?',
+ `help_pre` text COMMENT 'Description and/or help text to display before this field.',
+ `help_post` text COMMENT 'Description and/or help text to display after this field.',
+ `weight` int DEFAULT 1 COMMENT 'Order in which the fields should appear',
+ `is_display_amounts` boolean NOT NULL DEFAULT TRUE COMMENT 'Should the price be displayed next to the label for each option?',
+ `options_per_line` int unsigned DEFAULT 1 COMMENT 'number of options per line for checkbox and radio',
+ `is_active` boolean NOT NULL DEFAULT TRUE COMMENT 'Is this price field active',
+ `is_required` boolean NOT NULL DEFAULT TRUE COMMENT 'Is this price field required (value must be > 1)',
+ `active_on` datetime DEFAULT NULL COMMENT 'If non-zero, do not show this field before the date specified',
+ `expire_on` datetime DEFAULT NULL COMMENT 'If non-zero, do not show this field after the date specified',
+ `javascript` varchar(255) COMMENT 'Optional scripting attributes for field',
+ `visibility_id` int unsigned DEFAULT 1 COMMENT 'Implicit FK to civicrm_option_group with name = \'visibility\'',
+ PRIMARY KEY (`id`),
+ INDEX `index_name`(`name`)
+)
+ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
+CREATE TABLE `civicrm_price_field_value` (
+ `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'Price Field Value',
+ `price_field_id` int unsigned NOT NULL COMMENT 'FK to civicrm_price_field',
+ `name` varchar(255) DEFAULT NULL COMMENT 'Price field option name',
+ `label` varchar(255) DEFAULT NULL COMMENT 'Price field option label',
+ `description` text DEFAULT NULL COMMENT 'Price field option description.',
+ `help_pre` text DEFAULT NULL COMMENT 'Price field option pre help text.',
+ `help_post` text DEFAULT NULL COMMENT 'Price field option post field help.',
+ `amount` decimal(18,9) NOT NULL COMMENT 'Price field option amount',
+ `count` int unsigned DEFAULT NULL COMMENT 'Number of participants per field option',
+ `max_value` int unsigned DEFAULT NULL COMMENT 'Max number of participants per field options',
+ `weight` int DEFAULT 1 COMMENT 'Order in which the field options should appear',
+ `membership_type_id` int unsigned DEFAULT NULL COMMENT 'FK to Membership Type',
+ `membership_num_terms` int unsigned DEFAULT NULL COMMENT 'Number of terms for this membership',
+ `is_default` boolean NOT NULL DEFAULT FALSE COMMENT 'Is this default price field option',
+ `is_active` boolean NOT NULL DEFAULT TRUE COMMENT 'Is this price field value active',
+ `financial_type_id` int unsigned DEFAULT NULL COMMENT 'FK to Financial Type.',
+ `non_deductible_amount` decimal(20,2) NOT NULL DEFAULT '0.0' COMMENT 'Portion of total amount which is NOT tax deductible.',
+ `visibility_id` int unsigned DEFAULT 1 COMMENT 'Implicit FK to civicrm_option_group with name = \'visibility\'',
+ PRIMARY KEY (`id`)
+)
+ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
+CREATE TABLE `civicrm_price_set` (
+ `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'Price Set',
+ `domain_id` int unsigned COMMENT 'Which Domain is this price-set for',
+ `name` varchar(255) NOT NULL COMMENT 'Variable name/programmatic handle for this set of price fields.',
+ `title` varchar(255) NOT NULL COMMENT 'Displayed title for the Price Set.',
+ `is_active` boolean NOT NULL DEFAULT TRUE COMMENT 'Is this price set active',
+ `help_pre` text COMMENT 'Description and/or help text to display before fields in form.',
+ `help_post` text COMMENT 'Description and/or help text to display after fields in form.',
+ `javascript` varchar(64) COMMENT 'Optional Javascript script function(s) included on the form with this price_set. Can be used for conditional',
+ `extends` varchar(255) NOT NULL COMMENT 'What components are using this price set?',
+ `financial_type_id` int unsigned DEFAULT NULL COMMENT 'FK to Financial Type(for membership price sets only).',
+ `is_quick_config` boolean NOT NULL DEFAULT FALSE COMMENT 'Is set if edited on Contribution or Event Page rather than through Manage Price Sets',
+ `is_reserved` boolean NOT NULL DEFAULT FALSE COMMENT 'Is this a predefined system price set (i.e. it can not be deleted, edited)?',
+ `min_amount` decimal(20,2) DEFAULT '0.0' COMMENT 'Minimum Amount required for this set.',
+ PRIMARY KEY (`id`),
+ UNIQUE INDEX `UI_name`(`name`)
+)
+ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
+CREATE TABLE `civicrm_price_set_entity` (
+ `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'Price Set Entity',
+ `entity_table` varchar(64) NOT NULL COMMENT 'Table which uses this price set',
+ `entity_id` int unsigned NOT NULL COMMENT 'Item in table',
+ `price_set_id` int unsigned NOT NULL COMMENT 'price set being used',
+ PRIMARY KEY (`id`),
+ UNIQUE INDEX `UI_entity`(`entity_table`, `entity_id`)
+)
+ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
+CREATE TABLE `civicrm_queue` (
+ `id` int unsigned NOT NULL AUTO_INCREMENT,
+ `name` varchar(64) NOT NULL COMMENT 'Name of the queue',
+ `type` varchar(64) NOT NULL COMMENT 'Type of the queue',
+ `runner` varchar(64) COMMENT 'Name of the task runner',
+ `batch_limit` int unsigned NOT NULL DEFAULT 1 COMMENT 'Maximum number of items in a batch.',
+ `lease_time` int unsigned NOT NULL DEFAULT 3600 COMMENT 'When claiming an item (or batch of items) for work, how long should the item(s) be reserved. (Seconds)',
+ `retry_limit` int NOT NULL DEFAULT 0 COMMENT 'Number of permitted retries. Set to zero (0) to disable.',
+ `retry_interval` int COMMENT 'Number of seconds to wait before retrying a failed execution.',
+ `status` varchar(16) DEFAULT 'active' COMMENT 'Execution status',
+ `error` varchar(16) COMMENT 'Fallback behavior for unhandled errors',
+ `is_template` boolean NOT NULL DEFAULT FALSE COMMENT 'Is this a template configuration (for use by other/future queues)?',
+ PRIMARY KEY (`id`),
+ UNIQUE INDEX `UI_name`(`name`)
+)
+ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
+CREATE TABLE `civicrm_queue_item` (
+ `id` int unsigned NOT NULL AUTO_INCREMENT,
+ `queue_name` varchar(64) NOT NULL COMMENT 'Name of the queue which includes this item',
+ `weight` int NOT NULL,
+ `submit_time` timestamp NOT NULL COMMENT 'date on which this item was submitted to the queue',
+ `release_time` timestamp NULL DEFAULT NULL COMMENT 'date on which this job becomes available; null if ASAP',
+ `run_count` int NOT NULL DEFAULT 0 COMMENT 'Number of times execution has been attempted.',
+ `data` longtext COMMENT 'Serialized queue data',
+ PRIMARY KEY (`id`),
+ INDEX `index_queueids`(`queue_name`, `weight`, `id`)
+)
+ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
+CREATE TABLE `civicrm_report_instance` (
+ `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'Report Instance ID',
+ `domain_id` int unsigned NOT NULL COMMENT 'Which Domain is this instance for',
+ `title` varchar(255) COMMENT 'Report Instance Title.',
+ `report_id` varchar(512) NOT NULL COMMENT 'FK to civicrm_option_value for the report template',
+ `name` varchar(255) COMMENT 'when combined with report_id/template uniquely identifies the instance',
+ `args` varchar(255) COMMENT 'arguments that are passed in the url when invoking the instance',
+ `description` varchar(255) COMMENT 'Report Instance description.',
+ `permission` varchar(255) COMMENT 'permission required to be able to run this instance',
+ `grouprole` varchar(1024) COMMENT 'role required to be able to run this instance',
+ `form_values` longtext COMMENT 'Submitted form values for this report',
+ `is_active` boolean NOT NULL DEFAULT TRUE COMMENT 'Is this entry active?',
+ `created_id` int unsigned COMMENT 'FK to contact table.',
+ `owner_id` int unsigned COMMENT 'FK to contact table.',
+ `email_subject` varchar(255) COMMENT 'Subject of email',
+ `email_to` text COMMENT 'comma-separated list of email addresses to send the report to',
+ `email_cc` text COMMENT 'comma-separated list of email addresses to send the report to',
+ `header` text COMMENT 'comma-separated list of email addresses to send the report to',
+ `footer` text COMMENT 'comma-separated list of email addresses to send the report to',
+ `navigation_id` int unsigned COMMENT 'FK to navigation ID',
+ `drilldown_id` int unsigned COMMENT 'FK to instance ID drilldown to',
+ `is_reserved` boolean NOT NULL DEFAULT FALSE,
+ PRIMARY KEY (`id`)
+)
+ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
+CREATE TABLE `civicrm_sms_provider` (
+ `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'SMS Provider ID',
+ `name` varchar(64) COMMENT 'Provider internal name points to option_value of option_group sms_provider_name',
+ `title` varchar(64) COMMENT 'Provider name visible to user',
+ `username` varchar(255),
+ `password` varchar(255),
+ `api_type` int unsigned NOT NULL COMMENT 'points to value in civicrm_option_value for group sms_api_type',
+ `api_url` varchar(128),
+ `api_params` text COMMENT 'the api params in xml, http or smtp format',
+ `is_default` boolean NOT NULL DEFAULT FALSE,
+ `is_active` boolean NOT NULL DEFAULT TRUE,
+ `domain_id` int unsigned COMMENT 'Which Domain is this sms provider for',
+ PRIMARY KEY (`id`)
)
ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
+ALTER TABLE `civicrm_acl_cache`
+ ADD CONSTRAINT `FK_civicrm_acl_cache_acl_id` FOREIGN KEY (`acl_id`) REFERENCES `civicrm_acl`(`id`) ON DELETE CASCADE;
+ALTER TABLE `civicrm_activity`
+ ADD CONSTRAINT `FK_civicrm_activity_phone_id` FOREIGN KEY (`phone_id`) REFERENCES `civicrm_phone`(`id`) ON DELETE SET NULL,
+ ADD CONSTRAINT `FK_civicrm_activity_parent_id` FOREIGN KEY (`parent_id`) REFERENCES `civicrm_activity`(`id`) ON DELETE SET NULL,
+ ADD CONSTRAINT `FK_civicrm_activity_relationship_id` FOREIGN KEY (`relationship_id`) REFERENCES `civicrm_relationship`(`id`) ON DELETE SET NULL,
+ ADD CONSTRAINT `FK_civicrm_activity_original_id` FOREIGN KEY (`original_id`) REFERENCES `civicrm_activity`(`id`) ON DELETE SET NULL,
+ ADD CONSTRAINT `FK_civicrm_activity_campaign_id` FOREIGN KEY (`campaign_id`) REFERENCES `civicrm_campaign`(`id`) ON DELETE SET NULL;
+ALTER TABLE `civicrm_activity_contact`
+ ADD CONSTRAINT `FK_civicrm_activity_contact_activity_id` FOREIGN KEY (`activity_id`) REFERENCES `civicrm_activity`(`id`) ON DELETE CASCADE,
+ ADD CONSTRAINT `FK_civicrm_activity_contact_contact_id` FOREIGN KEY (`contact_id`) REFERENCES `civicrm_contact`(`id`) ON DELETE CASCADE;
+ALTER TABLE `civicrm_batch`
+ ADD CONSTRAINT `FK_civicrm_batch_created_id` FOREIGN KEY (`created_id`) REFERENCES `civicrm_contact`(`id`) ON DELETE SET NULL,
+ ADD CONSTRAINT `FK_civicrm_batch_modified_id` FOREIGN KEY (`modified_id`) REFERENCES `civicrm_contact`(`id`) ON DELETE SET NULL,
+ ADD CONSTRAINT `FK_civicrm_batch_saved_search_id` FOREIGN KEY (`saved_search_id`) REFERENCES `civicrm_saved_search`(`id`) ON DELETE SET NULL;
+ALTER TABLE `civicrm_entity_batch`
+ ADD CONSTRAINT `FK_civicrm_entity_batch_batch_id` FOREIGN KEY (`batch_id`) REFERENCES `civicrm_batch`(`id`) ON DELETE CASCADE;
+ALTER TABLE `civicrm_campaign`
+ ADD CONSTRAINT `FK_civicrm_campaign_parent_id` FOREIGN KEY (`parent_id`) REFERENCES `civicrm_campaign`(`id`) ON DELETE SET NULL,
+ ADD CONSTRAINT `FK_civicrm_campaign_created_id` FOREIGN KEY (`created_id`) REFERENCES `civicrm_contact`(`id`) ON DELETE SET NULL,
+ ADD CONSTRAINT `FK_civicrm_campaign_last_modified_id` FOREIGN KEY (`last_modified_id`) REFERENCES `civicrm_contact`(`id`) ON DELETE SET NULL;
+ALTER TABLE `civicrm_campaign_group`
+ ADD CONSTRAINT `FK_civicrm_campaign_group_campaign_id` FOREIGN KEY (`campaign_id`) REFERENCES `civicrm_campaign`(`id`) ON DELETE CASCADE;
+ALTER TABLE `civicrm_survey`
+ ADD CONSTRAINT `FK_civicrm_survey_campaign_id` FOREIGN KEY (`campaign_id`) REFERENCES `civicrm_campaign`(`id`) ON DELETE SET NULL,
+ ADD CONSTRAINT `FK_civicrm_survey_created_id` FOREIGN KEY (`created_id`) REFERENCES `civicrm_contact`(`id`) ON DELETE SET NULL,
+ ADD CONSTRAINT `FK_civicrm_survey_last_modified_id` FOREIGN KEY (`last_modified_id`) REFERENCES `civicrm_contact`(`id`) ON DELETE SET NULL;
+ALTER TABLE `civicrm_case`
+ ADD CONSTRAINT `FK_civicrm_case_case_type_id` FOREIGN KEY (`case_type_id`) REFERENCES `civicrm_case_type`(`id`);
+ALTER TABLE `civicrm_case_activity`
+ ADD CONSTRAINT `FK_civicrm_case_activity_case_id` FOREIGN KEY (`case_id`) REFERENCES `civicrm_case`(`id`) ON DELETE CASCADE,
+ ADD CONSTRAINT `FK_civicrm_case_activity_activity_id` FOREIGN KEY (`activity_id`) REFERENCES `civicrm_activity`(`id`) ON DELETE CASCADE;
+ALTER TABLE `civicrm_case_contact`
+ ADD CONSTRAINT `FK_civicrm_case_contact_case_id` FOREIGN KEY (`case_id`) REFERENCES `civicrm_case`(`id`) ON DELETE CASCADE,
+ ADD CONSTRAINT `FK_civicrm_case_contact_contact_id` FOREIGN KEY (`contact_id`) REFERENCES `civicrm_contact`(`id`) ON DELETE CASCADE;
+ALTER TABLE `civicrm_contact`
+ ADD CONSTRAINT `FK_civicrm_contact_primary_contact_id` FOREIGN KEY (`primary_contact_id`) REFERENCES `civicrm_contact`(`id`) ON DELETE SET NULL,
+ ADD CONSTRAINT `FK_civicrm_contact_employer_id` FOREIGN KEY (`employer_id`) REFERENCES `civicrm_contact`(`id`) ON DELETE SET NULL;
+ALTER TABLE `civicrm_contact_type`
+ ADD CONSTRAINT `FK_civicrm_contact_type_parent_id` FOREIGN KEY (`parent_id`) REFERENCES `civicrm_contact_type`(`id`);
+ALTER TABLE `civicrm_dashboard_contact`
+ ADD CONSTRAINT `FK_civicrm_dashboard_contact_dashboard_id` FOREIGN KEY (`dashboard_id`) REFERENCES `civicrm_dashboard`(`id`) ON DELETE CASCADE,
+ ADD CONSTRAINT `FK_civicrm_dashboard_contact_contact_id` FOREIGN KEY (`contact_id`) REFERENCES `civicrm_contact`(`id`) ON DELETE CASCADE;
+ALTER TABLE `civicrm_group`
+ ADD CONSTRAINT `FK_civicrm_group_saved_search_id` FOREIGN KEY (`saved_search_id`) REFERENCES `civicrm_saved_search`(`id`) ON DELETE CASCADE,
+ ADD CONSTRAINT `FK_civicrm_group_created_id` FOREIGN KEY (`created_id`) REFERENCES `civicrm_contact`(`id`) ON DELETE SET NULL,
+ ADD CONSTRAINT `FK_civicrm_group_modified_id` FOREIGN KEY (`modified_id`) REFERENCES `civicrm_contact`(`id`) ON DELETE SET NULL;
+ALTER TABLE `civicrm_group_contact`
+ ADD CONSTRAINT `FK_civicrm_group_contact_group_id` FOREIGN KEY (`group_id`) REFERENCES `civicrm_group`(`id`) ON DELETE CASCADE,
+ ADD CONSTRAINT `FK_civicrm_group_contact_contact_id` FOREIGN KEY (`contact_id`) REFERENCES `civicrm_contact`(`id`) ON DELETE CASCADE,
+ ADD CONSTRAINT `FK_civicrm_group_contact_location_id` FOREIGN KEY (`location_id`) REFERENCES `civicrm_loc_block`(`id`) ON DELETE SET NULL,
+ ADD CONSTRAINT `FK_civicrm_group_contact_email_id` FOREIGN KEY (`email_id`) REFERENCES `civicrm_email`(`id`);
+ALTER TABLE `civicrm_group_contact_cache`
+ ADD CONSTRAINT `FK_civicrm_group_contact_cache_group_id` FOREIGN KEY (`group_id`) REFERENCES `civicrm_group`(`id`) ON DELETE CASCADE,
+ ADD CONSTRAINT `FK_civicrm_group_contact_cache_contact_id` FOREIGN KEY (`contact_id`) REFERENCES `civicrm_contact`(`id`) ON DELETE CASCADE;
+ALTER TABLE `civicrm_group_nesting`
+ ADD CONSTRAINT `FK_civicrm_group_nesting_child_group_id` FOREIGN KEY (`child_group_id`) REFERENCES `civicrm_group`(`id`) ON DELETE CASCADE,
+ ADD CONSTRAINT `FK_civicrm_group_nesting_parent_group_id` FOREIGN KEY (`parent_group_id`) REFERENCES `civicrm_group`(`id`) ON DELETE CASCADE;
+ALTER TABLE `civicrm_group_organization`
+ ADD CONSTRAINT `FK_civicrm_group_organization_group_id` FOREIGN KEY (`group_id`) REFERENCES `civicrm_group`(`id`) ON DELETE CASCADE,
+ ADD CONSTRAINT `FK_civicrm_group_organization_organization_id` FOREIGN KEY (`organization_id`) REFERENCES `civicrm_contact`(`id`) ON DELETE CASCADE;
+ALTER TABLE `civicrm_relationship`
+ ADD CONSTRAINT `FK_civicrm_relationship_contact_id_a` FOREIGN KEY (`contact_id_a`) REFERENCES `civicrm_contact`(`id`) ON DELETE CASCADE,
+ ADD CONSTRAINT `FK_civicrm_relationship_contact_id_b` FOREIGN KEY (`contact_id_b`) REFERENCES `civicrm_contact`(`id`) ON DELETE CASCADE,
+ ADD CONSTRAINT `FK_civicrm_relationship_relationship_type_id` FOREIGN KEY (`relationship_type_id`) REFERENCES `civicrm_relationship_type`(`id`) ON DELETE CASCADE,
+ ADD CONSTRAINT `FK_civicrm_relationship_case_id` FOREIGN KEY (`case_id`) REFERENCES `civicrm_case`(`id`) ON DELETE CASCADE;
+ALTER TABLE `civicrm_relationship_cache`
+ ADD CONSTRAINT `FK_civicrm_relationship_cache_relationship_id` FOREIGN KEY (`relationship_id`) REFERENCES `civicrm_relationship`(`id`) ON DELETE CASCADE,
+ ADD CONSTRAINT `FK_civicrm_relationship_cache_relationship_type_id` FOREIGN KEY (`relationship_type_id`) REFERENCES `civicrm_relationship_type`(`id`) ON DELETE CASCADE,
+ ADD CONSTRAINT `FK_civicrm_relationship_cache_near_contact_id` FOREIGN KEY (`near_contact_id`) REFERENCES `civicrm_contact`(`id`) ON DELETE CASCADE,
+ ADD CONSTRAINT `FK_civicrm_relationship_cache_far_contact_id` FOREIGN KEY (`far_contact_id`) REFERENCES `civicrm_contact`(`id`) ON DELETE CASCADE,
+ ADD CONSTRAINT `FK_civicrm_relationship_cache_case_id` FOREIGN KEY (`case_id`) REFERENCES `civicrm_case`(`id`) ON DELETE CASCADE;
+ALTER TABLE `civicrm_saved_search`
+ ADD CONSTRAINT `FK_civicrm_saved_search_mapping_id` FOREIGN KEY (`mapping_id`) REFERENCES `civicrm_mapping`(`id`) ON DELETE SET NULL,
+ ADD CONSTRAINT `FK_civicrm_saved_search_created_id` FOREIGN KEY (`created_id`) REFERENCES `civicrm_contact`(`id`) ON DELETE SET NULL,
+ ADD CONSTRAINT `FK_civicrm_saved_search_modified_id` FOREIGN KEY (`modified_id`) REFERENCES `civicrm_contact`(`id`) ON DELETE SET NULL;
+ALTER TABLE `civicrm_subscription_history`
+ ADD CONSTRAINT `FK_civicrm_subscription_history_contact_id` FOREIGN KEY (`contact_id`) REFERENCES `civicrm_contact`(`id`) ON DELETE CASCADE,
+ ADD CONSTRAINT `FK_civicrm_subscription_history_group_id` FOREIGN KEY (`group_id`) REFERENCES `civicrm_group`(`id`) ON DELETE CASCADE;
+ALTER TABLE `civicrm_contribution`
+ ADD CONSTRAINT `FK_civicrm_contribution_contact_id` FOREIGN KEY (`contact_id`) REFERENCES `civicrm_contact`(`id`) ON DELETE CASCADE,
+ ADD CONSTRAINT `FK_civicrm_contribution_financial_type_id` FOREIGN KEY (`financial_type_id`) REFERENCES `civicrm_financial_type`(`id`),
+ ADD CONSTRAINT `FK_civicrm_contribution_contribution_page_id` FOREIGN KEY (`contribution_page_id`) REFERENCES `civicrm_contribution_page`(`id`) ON DELETE SET NULL,
+ ADD CONSTRAINT `FK_civicrm_contribution_contribution_recur_id` FOREIGN KEY (`contribution_recur_id`) REFERENCES `civicrm_contribution_recur`(`id`) ON DELETE SET NULL,
+ ADD CONSTRAINT `FK_civicrm_contribution_address_id` FOREIGN KEY (`address_id`) REFERENCES `civicrm_address`(`id`) ON DELETE SET NULL,
+ ADD CONSTRAINT `FK_civicrm_contribution_campaign_id` FOREIGN KEY (`campaign_id`) REFERENCES `civicrm_campaign`(`id`) ON DELETE SET NULL;
+ALTER TABLE `civicrm_contribution_page`
+ ADD CONSTRAINT `FK_civicrm_contribution_page_financial_type_id` FOREIGN KEY (`financial_type_id`) REFERENCES `civicrm_financial_type`(`id`),
+ ADD CONSTRAINT `FK_civicrm_contribution_page_created_id` FOREIGN KEY (`created_id`) REFERENCES `civicrm_contact`(`id`) ON DELETE SET NULL,
+ ADD CONSTRAINT `FK_civicrm_contribution_page_campaign_id` FOREIGN KEY (`campaign_id`) REFERENCES `civicrm_campaign`(`id`) ON DELETE SET NULL;
+ALTER TABLE `civicrm_contribution_product`
+ ADD CONSTRAINT `FK_civicrm_contribution_product_product_id` FOREIGN KEY (`product_id`) REFERENCES `civicrm_product`(`id`) ON DELETE CASCADE,
+ ADD CONSTRAINT `FK_civicrm_contribution_product_contribution_id` FOREIGN KEY (`contribution_id`) REFERENCES `civicrm_contribution`(`id`) ON DELETE CASCADE,
+ ADD CONSTRAINT `FK_civicrm_contribution_product_financial_type_id` FOREIGN KEY (`financial_type_id`) REFERENCES `civicrm_financial_type`(`id`) ON DELETE SET NULL;
+ALTER TABLE `civicrm_contribution_recur`
+ ADD CONSTRAINT `FK_civicrm_contribution_recur_contact_id` FOREIGN KEY (`contact_id`) REFERENCES `civicrm_contact`(`id`) ON DELETE CASCADE,
+ ADD CONSTRAINT `FK_civicrm_contribution_recur_payment_token_id` FOREIGN KEY (`payment_token_id`) REFERENCES `civicrm_payment_token`(`id`) ON DELETE SET NULL,
+ ADD CONSTRAINT `FK_civicrm_contribution_recur_payment_processor_id` FOREIGN KEY (`payment_processor_id`) REFERENCES `civicrm_payment_processor`(`id`) ON DELETE SET NULL,
+ ADD CONSTRAINT `FK_civicrm_contribution_recur_financial_type_id` FOREIGN KEY (`financial_type_id`) REFERENCES `civicrm_financial_type`(`id`) ON DELETE SET NULL,
+ ADD CONSTRAINT `FK_civicrm_contribution_recur_campaign_id` FOREIGN KEY (`campaign_id`) REFERENCES `civicrm_campaign`(`id`) ON DELETE SET NULL;
+ALTER TABLE `civicrm_contribution_soft`
+ ADD CONSTRAINT `FK_civicrm_contribution_soft_contribution_id` FOREIGN KEY (`contribution_id`) REFERENCES `civicrm_contribution`(`id`) ON DELETE CASCADE,
+ ADD CONSTRAINT `FK_civicrm_contribution_soft_contact_id` FOREIGN KEY (`contact_id`) REFERENCES `civicrm_contact`(`id`) ON DELETE CASCADE,
+ ADD CONSTRAINT `FK_civicrm_contribution_soft_pcp_id` FOREIGN KEY (`pcp_id`) REFERENCES `civicrm_pcp`(`id`) ON DELETE SET NULL;
+ALTER TABLE `civicrm_premiums_product`
+ ADD CONSTRAINT `FK_civicrm_premiums_product_premiums_id` FOREIGN KEY (`premiums_id`) REFERENCES `civicrm_premiums`(`id`),
+ ADD CONSTRAINT `FK_civicrm_premiums_product_product_id` FOREIGN KEY (`product_id`) REFERENCES `civicrm_product`(`id`),
+ ADD CONSTRAINT `FK_civicrm_premiums_product_financial_type_id` FOREIGN KEY (`financial_type_id`) REFERENCES `civicrm_financial_type`(`id`) ON DELETE SET NULL;
+ALTER TABLE `civicrm_product`
+ ADD CONSTRAINT `FK_civicrm_product_financial_type_id` FOREIGN KEY (`financial_type_id`) REFERENCES `civicrm_financial_type`(`id`) ON DELETE SET NULL;
+ALTER TABLE `civicrm_contribution_widget`
+ ADD CONSTRAINT `FK_civicrm_contribution_widget_contribution_page_id` FOREIGN KEY (`contribution_page_id`) REFERENCES `civicrm_contribution_page`(`id`) ON DELETE CASCADE;
+ALTER TABLE `civicrm_action_log`
+ ADD CONSTRAINT `FK_civicrm_action_log_contact_id` FOREIGN KEY (`contact_id`) REFERENCES `civicrm_contact`(`id`) ON DELETE CASCADE,
+ ADD CONSTRAINT `FK_civicrm_action_log_action_schedule_id` FOREIGN KEY (`action_schedule_id`) REFERENCES `civicrm_action_schedule`(`id`) ON DELETE CASCADE;
+ALTER TABLE `civicrm_action_schedule`
+ ADD CONSTRAINT `FK_civicrm_action_schedule_group_id` FOREIGN KEY (`group_id`) REFERENCES `civicrm_group`(`id`) ON DELETE SET NULL,
+ ADD CONSTRAINT `FK_civicrm_action_schedule_msg_template_id` FOREIGN KEY (`msg_template_id`) REFERENCES `civicrm_msg_template`(`id`) ON DELETE SET NULL,
+ ADD CONSTRAINT `FK_civicrm_action_schedule_sms_template_id` FOREIGN KEY (`sms_template_id`) REFERENCES `civicrm_msg_template`(`id`) ON DELETE SET NULL,
+ ADD CONSTRAINT `FK_civicrm_action_schedule_sms_provider_id` FOREIGN KEY (`sms_provider_id`) REFERENCES `civicrm_sms_provider`(`id`) ON DELETE SET NULL;
+ALTER TABLE `civicrm_address`
+ ADD CONSTRAINT `FK_civicrm_address_contact_id` FOREIGN KEY (`contact_id`) REFERENCES `civicrm_contact`(`id`) ON DELETE CASCADE,
+ ADD CONSTRAINT `FK_civicrm_address_county_id` FOREIGN KEY (`county_id`) REFERENCES `civicrm_county`(`id`) ON DELETE SET NULL,
+ ADD CONSTRAINT `FK_civicrm_address_state_province_id` FOREIGN KEY (`state_province_id`) REFERENCES `civicrm_state_province`(`id`) ON DELETE SET NULL,
+ ADD CONSTRAINT `FK_civicrm_address_country_id` FOREIGN KEY (`country_id`) REFERENCES `civicrm_country`(`id`) ON DELETE SET NULL,
+ ADD CONSTRAINT `FK_civicrm_address_master_id` FOREIGN KEY (`master_id`) REFERENCES `civicrm_address`(`id`) ON DELETE SET NULL;
+ALTER TABLE `civicrm_cache`
+ ADD CONSTRAINT `FK_civicrm_cache_component_id` FOREIGN KEY (`component_id`) REFERENCES `civicrm_component`(`id`);
+ALTER TABLE `civicrm_country`
+ ADD CONSTRAINT `FK_civicrm_country_address_format_id` FOREIGN KEY (`address_format_id`) REFERENCES `civicrm_address_format`(`id`),
+ ADD CONSTRAINT `FK_civicrm_country_region_id` FOREIGN KEY (`region_id`) REFERENCES `civicrm_worldregion`(`id`);
+ALTER TABLE `civicrm_county`
+ ADD CONSTRAINT `FK_civicrm_county_state_province_id` FOREIGN KEY (`state_province_id`) REFERENCES `civicrm_state_province`(`id`);
+ALTER TABLE `civicrm_custom_field`
+ ADD CONSTRAINT `FK_civicrm_custom_field_custom_group_id` FOREIGN KEY (`custom_group_id`) REFERENCES `civicrm_custom_group`(`id`) ON DELETE CASCADE,
+ ADD CONSTRAINT `FK_civicrm_custom_field_option_group_id` FOREIGN KEY (`option_group_id`) REFERENCES `civicrm_option_group`(`id`) ON DELETE SET NULL;
+ALTER TABLE `civicrm_custom_group`
+ ADD CONSTRAINT `FK_civicrm_custom_group_created_id` FOREIGN KEY (`created_id`) REFERENCES `civicrm_contact`(`id`) ON DELETE SET NULL;
+ALTER TABLE `civicrm_dashboard`
+ ADD CONSTRAINT `FK_civicrm_dashboard_domain_id` FOREIGN KEY (`domain_id`) REFERENCES `civicrm_domain`(`id`) ON DELETE CASCADE;
+ALTER TABLE `civicrm_discount`
+ ADD CONSTRAINT `FK_civicrm_discount_price_set_id` FOREIGN KEY (`price_set_id`) REFERENCES `civicrm_price_set`(`id`) ON DELETE CASCADE;
+ALTER TABLE `civicrm_domain`
+ ADD CONSTRAINT `FK_civicrm_domain_contact_id` FOREIGN KEY (`contact_id`) REFERENCES `civicrm_contact`(`id`);
+ALTER TABLE `civicrm_email`
+ ADD CONSTRAINT `FK_civicrm_email_contact_id` FOREIGN KEY (`contact_id`) REFERENCES `civicrm_contact`(`id`) ON DELETE CASCADE;
+ALTER TABLE `civicrm_entity_file`
+ ADD CONSTRAINT `FK_civicrm_entity_file_file_id` FOREIGN KEY (`file_id`) REFERENCES `civicrm_file`(`id`);
+ALTER TABLE `civicrm_entity_tag`
+ ADD CONSTRAINT `FK_civicrm_entity_tag_tag_id` FOREIGN KEY (`tag_id`) REFERENCES `civicrm_tag`(`id`) ON DELETE CASCADE;
+ALTER TABLE `civicrm_file`
+ ADD CONSTRAINT `FK_civicrm_file_created_id` FOREIGN KEY (`created_id`) REFERENCES `civicrm_contact`(`id`) ON DELETE SET NULL;
+ALTER TABLE `civicrm_im`
+ ADD CONSTRAINT `FK_civicrm_im_contact_id` FOREIGN KEY (`contact_id`) REFERENCES `civicrm_contact`(`id`) ON DELETE CASCADE;
+ALTER TABLE `civicrm_job`
+ ADD CONSTRAINT `FK_civicrm_job_domain_id` FOREIGN KEY (`domain_id`) REFERENCES `civicrm_domain`(`id`);
+ALTER TABLE `civicrm_job_log`
+ ADD CONSTRAINT `FK_civicrm_job_log_domain_id` FOREIGN KEY (`domain_id`) REFERENCES `civicrm_domain`(`id`),
+ ADD CONSTRAINT `FK_civicrm_job_log_job_id` FOREIGN KEY (`job_id`) REFERENCES `civicrm_job`(`id`) ON DELETE SET NULL;
+ALTER TABLE `civicrm_loc_block`
+ ADD CONSTRAINT `FK_civicrm_loc_block_address_id` FOREIGN KEY (`address_id`) REFERENCES `civicrm_address`(`id`) ON DELETE SET NULL,
+ ADD CONSTRAINT `FK_civicrm_loc_block_email_id` FOREIGN KEY (`email_id`) REFERENCES `civicrm_email`(`id`) ON DELETE SET NULL,
+ ADD CONSTRAINT `FK_civicrm_loc_block_phone_id` FOREIGN KEY (`phone_id`) REFERENCES `civicrm_phone`(`id`) ON DELETE SET NULL,
+ ADD CONSTRAINT `FK_civicrm_loc_block_im_id` FOREIGN KEY (`im_id`) REFERENCES `civicrm_im`(`id`) ON DELETE SET NULL,
+ ADD CONSTRAINT `FK_civicrm_loc_block_address_2_id` FOREIGN KEY (`address_2_id`) REFERENCES `civicrm_address`(`id`) ON DELETE SET NULL,
+ ADD CONSTRAINT `FK_civicrm_loc_block_email_2_id` FOREIGN KEY (`email_2_id`) REFERENCES `civicrm_email`(`id`) ON DELETE SET NULL,
+ ADD CONSTRAINT `FK_civicrm_loc_block_phone_2_id` FOREIGN KEY (`phone_2_id`) REFERENCES `civicrm_phone`(`id`) ON DELETE SET NULL,
+ ADD CONSTRAINT `FK_civicrm_loc_block_im_2_id` FOREIGN KEY (`im_2_id`) REFERENCES `civicrm_im`(`id`) ON DELETE SET NULL;
+ALTER TABLE `civicrm_log`
+ ADD CONSTRAINT `FK_civicrm_log_modified_id` FOREIGN KEY (`modified_id`) REFERENCES `civicrm_contact`(`id`) ON DELETE CASCADE;
+ALTER TABLE `civicrm_mail_settings`
+ ADD CONSTRAINT `FK_civicrm_mail_settings_domain_id` FOREIGN KEY (`domain_id`) REFERENCES `civicrm_domain`(`id`) ON DELETE CASCADE,
+ ADD CONSTRAINT `FK_civicrm_mail_settings_campaign_id` FOREIGN KEY (`campaign_id`) REFERENCES `civicrm_campaign`(`id`) ON DELETE SET NULL;
+ALTER TABLE `civicrm_mapping_field`
+ ADD CONSTRAINT `FK_civicrm_mapping_field_mapping_id` FOREIGN KEY (`mapping_id`) REFERENCES `civicrm_mapping`(`id`) ON DELETE CASCADE,
+ ADD CONSTRAINT `FK_civicrm_mapping_field_location_type_id` FOREIGN KEY (`location_type_id`) REFERENCES `civicrm_location_type`(`id`),
+ ADD CONSTRAINT `FK_civicrm_mapping_field_relationship_type_id` FOREIGN KEY (`relationship_type_id`) REFERENCES `civicrm_relationship_type`(`id`);
+ALTER TABLE `civicrm_menu`
+ ADD CONSTRAINT `FK_civicrm_menu_domain_id` FOREIGN KEY (`domain_id`) REFERENCES `civicrm_domain`(`id`),
+ ADD CONSTRAINT `FK_civicrm_menu_component_id` FOREIGN KEY (`component_id`) REFERENCES `civicrm_component`(`id`);
+ALTER TABLE `civicrm_navigation`
+ ADD CONSTRAINT `FK_civicrm_navigation_domain_id` FOREIGN KEY (`domain_id`) REFERENCES `civicrm_domain`(`id`),
+ ADD CONSTRAINT `FK_civicrm_navigation_parent_id` FOREIGN KEY (`parent_id`) REFERENCES `civicrm_navigation`(`id`) ON DELETE CASCADE;
+ALTER TABLE `civicrm_note`
+ ADD CONSTRAINT `FK_civicrm_note_contact_id` FOREIGN KEY (`contact_id`) REFERENCES `civicrm_contact`(`id`) ON DELETE SET NULL;
+ALTER TABLE `civicrm_openid`
+ ADD CONSTRAINT `FK_civicrm_openid_contact_id` FOREIGN KEY (`contact_id`) REFERENCES `civicrm_contact`(`id`) ON DELETE CASCADE;
+ALTER TABLE `civicrm_option_value`
+ ADD CONSTRAINT `FK_civicrm_option_value_option_group_id` FOREIGN KEY (`option_group_id`) REFERENCES `civicrm_option_group`(`id`) ON DELETE CASCADE,
+ ADD CONSTRAINT `FK_civicrm_option_value_component_id` FOREIGN KEY (`component_id`) REFERENCES `civicrm_component`(`id`),
+ ADD CONSTRAINT `FK_civicrm_option_value_domain_id` FOREIGN KEY (`domain_id`) REFERENCES `civicrm_domain`(`id`);
+ALTER TABLE `civicrm_phone`
+ ADD CONSTRAINT `FK_civicrm_phone_contact_id` FOREIGN KEY (`contact_id`) REFERENCES `civicrm_contact`(`id`) ON DELETE CASCADE;
+ALTER TABLE `civicrm_print_label`
+ ADD CONSTRAINT `FK_civicrm_print_label_created_id` FOREIGN KEY (`created_id`) REFERENCES `civicrm_contact`(`id`) ON DELETE SET NULL;
+ALTER TABLE `civicrm_setting`
+ ADD CONSTRAINT `FK_civicrm_setting_domain_id` FOREIGN KEY (`domain_id`) REFERENCES `civicrm_domain`(`id`) ON DELETE CASCADE,
+ ADD CONSTRAINT `FK_civicrm_setting_contact_id` FOREIGN KEY (`contact_id`) REFERENCES `civicrm_contact`(`id`) ON DELETE CASCADE,
+ ADD CONSTRAINT `FK_civicrm_setting_component_id` FOREIGN KEY (`component_id`) REFERENCES `civicrm_component`(`id`),
+ ADD CONSTRAINT `FK_civicrm_setting_created_id` FOREIGN KEY (`created_id`) REFERENCES `civicrm_contact`(`id`) ON DELETE SET NULL;
+ALTER TABLE `civicrm_state_province`
+ ADD CONSTRAINT `FK_civicrm_state_province_country_id` FOREIGN KEY (`country_id`) REFERENCES `civicrm_country`(`id`);
+ALTER TABLE `civicrm_status_pref`
+ ADD CONSTRAINT `FK_civicrm_status_pref_domain_id` FOREIGN KEY (`domain_id`) REFERENCES `civicrm_domain`(`id`);
+ALTER TABLE `civicrm_tag`
+ ADD CONSTRAINT `FK_civicrm_tag_parent_id` FOREIGN KEY (`parent_id`) REFERENCES `civicrm_tag`(`id`),
+ ADD CONSTRAINT `FK_civicrm_tag_created_id` FOREIGN KEY (`created_id`) REFERENCES `civicrm_contact`(`id`) ON DELETE SET NULL;
+ALTER TABLE `civicrm_timezone`
+ ADD CONSTRAINT `FK_civicrm_timezone_country_id` FOREIGN KEY (`country_id`) REFERENCES `civicrm_country`(`id`);
+ALTER TABLE `civicrm_uf_field`
+ ADD CONSTRAINT `FK_civicrm_uf_field_uf_group_id` FOREIGN KEY (`uf_group_id`) REFERENCES `civicrm_uf_group`(`id`) ON DELETE CASCADE,
+ ADD CONSTRAINT `FK_civicrm_uf_field_location_type_id` FOREIGN KEY (`location_type_id`) REFERENCES `civicrm_location_type`(`id`) ON DELETE SET NULL;
+ALTER TABLE `civicrm_uf_group`
+ ADD CONSTRAINT `FK_civicrm_uf_group_limit_listings_group_id` FOREIGN KEY (`limit_listings_group_id`) REFERENCES `civicrm_group`(`id`) ON DELETE SET NULL,
+ ADD CONSTRAINT `FK_civicrm_uf_group_add_to_group_id` FOREIGN KEY (`add_to_group_id`) REFERENCES `civicrm_group`(`id`) ON DELETE SET NULL,
+ ADD CONSTRAINT `FK_civicrm_uf_group_created_id` FOREIGN KEY (`created_id`) REFERENCES `civicrm_contact`(`id`) ON DELETE SET NULL;
+ALTER TABLE `civicrm_uf_join`
+ ADD CONSTRAINT `FK_civicrm_uf_join_uf_group_id` FOREIGN KEY (`uf_group_id`) REFERENCES `civicrm_uf_group`(`id`);
+ALTER TABLE `civicrm_uf_match`
+ ADD CONSTRAINT `FK_civicrm_uf_match_domain_id` FOREIGN KEY (`domain_id`) REFERENCES `civicrm_domain`(`id`),
+ ADD CONSTRAINT `FK_civicrm_uf_match_contact_id` FOREIGN KEY (`contact_id`) REFERENCES `civicrm_contact`(`id`) ON DELETE CASCADE;
+ALTER TABLE `civicrm_user_job`
+ ADD CONSTRAINT `FK_civicrm_user_job_created_id` FOREIGN KEY (`created_id`) REFERENCES `civicrm_contact`(`id`) ON DELETE SET NULL,
+ ADD CONSTRAINT `FK_civicrm_user_job_queue_id` FOREIGN KEY (`queue_id`) REFERENCES `civicrm_queue`(`id`) ON DELETE SET NULL;
+ALTER TABLE `civicrm_website`
+ ADD CONSTRAINT `FK_civicrm_website_contact_id` FOREIGN KEY (`contact_id`) REFERENCES `civicrm_contact`(`id`) ON DELETE CASCADE;
+ALTER TABLE `civicrm_word_replacement`
+ ADD CONSTRAINT `FK_civicrm_word_replacement_domain_id` FOREIGN KEY (`domain_id`) REFERENCES `civicrm_domain`(`id`);
+ALTER TABLE `civicrm_dedupe_exception`
+ ADD CONSTRAINT `FK_civicrm_dedupe_exception_contact_id1` FOREIGN KEY (`contact_id1`) REFERENCES `civicrm_contact`(`id`) ON DELETE CASCADE,
+ ADD CONSTRAINT `FK_civicrm_dedupe_exception_contact_id2` FOREIGN KEY (`contact_id2`) REFERENCES `civicrm_contact`(`id`) ON DELETE CASCADE;
+ALTER TABLE `civicrm_dedupe_rule`
+ ADD CONSTRAINT `FK_civicrm_dedupe_rule_dedupe_rule_group_id` FOREIGN KEY (`dedupe_rule_group_id`) REFERENCES `civicrm_dedupe_rule_group`(`id`);
+ALTER TABLE `civicrm_event_carts`
+ ADD CONSTRAINT `FK_civicrm_event_carts_user_id` FOREIGN KEY (`user_id`) REFERENCES `civicrm_contact`(`id`) ON DELETE SET NULL;
+ALTER TABLE `civicrm_event`
+ ADD CONSTRAINT `FK_civicrm_event_loc_block_id` FOREIGN KEY (`loc_block_id`) REFERENCES `civicrm_loc_block`(`id`) ON DELETE SET NULL,
+ ADD CONSTRAINT `FK_civicrm_event_created_id` FOREIGN KEY (`created_id`) REFERENCES `civicrm_contact`(`id`) ON DELETE SET NULL,
+ ADD CONSTRAINT `FK_civicrm_event_campaign_id` FOREIGN KEY (`campaign_id`) REFERENCES `civicrm_campaign`(`id`) ON DELETE SET NULL,
+ ADD CONSTRAINT `FK_civicrm_event_dedupe_rule_group_id` FOREIGN KEY (`dedupe_rule_group_id`) REFERENCES `civicrm_dedupe_rule_group`(`id`);
+ALTER TABLE `civicrm_events_in_carts`
+ ADD CONSTRAINT `FK_civicrm_events_in_carts_event_id` FOREIGN KEY (`event_id`) REFERENCES `civicrm_event`(`id`) ON DELETE CASCADE,
+ ADD CONSTRAINT `FK_civicrm_events_in_carts_event_cart_id` FOREIGN KEY (`event_cart_id`) REFERENCES `civicrm_event_carts`(`id`) ON DELETE CASCADE;
+ALTER TABLE `civicrm_participant`
+ ADD CONSTRAINT `FK_civicrm_participant_contact_id` FOREIGN KEY (`contact_id`) REFERENCES `civicrm_contact`(`id`) ON DELETE CASCADE,
+ ADD CONSTRAINT `FK_civicrm_participant_event_id` FOREIGN KEY (`event_id`) REFERENCES `civicrm_event`(`id`) ON DELETE CASCADE,
+ ADD CONSTRAINT `FK_civicrm_participant_status_id` FOREIGN KEY (`status_id`) REFERENCES `civicrm_participant_status_type`(`id`),
+ ADD CONSTRAINT `FK_civicrm_participant_registered_by_id` FOREIGN KEY (`registered_by_id`) REFERENCES `civicrm_participant`(`id`) ON DELETE SET NULL,
+ ADD CONSTRAINT `FK_civicrm_participant_discount_id` FOREIGN KEY (`discount_id`) REFERENCES `civicrm_discount`(`id`) ON DELETE SET NULL,
+ ADD CONSTRAINT `FK_civicrm_participant_campaign_id` FOREIGN KEY (`campaign_id`) REFERENCES `civicrm_campaign`(`id`) ON DELETE SET NULL,
+ ADD CONSTRAINT `FK_civicrm_participant_cart_id` FOREIGN KEY (`cart_id`) REFERENCES `civicrm_event_carts`(`id`) ON DELETE SET NULL,
+ ADD CONSTRAINT `FK_civicrm_participant_transferred_to_contact_id` FOREIGN KEY (`transferred_to_contact_id`) REFERENCES `civicrm_contact`(`id`) ON DELETE SET NULL,
+ ADD CONSTRAINT `FK_civicrm_participant_created_id` FOREIGN KEY (`created_id`) REFERENCES `civicrm_contact`(`id`) ON DELETE SET NULL;
+ALTER TABLE `civicrm_participant_payment`
+ ADD CONSTRAINT `FK_civicrm_participant_payment_participant_id` FOREIGN KEY (`participant_id`) REFERENCES `civicrm_participant`(`id`) ON DELETE CASCADE,
+ ADD CONSTRAINT `FK_civicrm_participant_payment_contribution_id` FOREIGN KEY (`contribution_id`) REFERENCES `civicrm_contribution`(`id`) ON DELETE CASCADE;
+ALTER TABLE `civicrm_entity_financial_account`
+ ADD CONSTRAINT `FK_civicrm_entity_financial_account_financial_account_id` FOREIGN KEY (`financial_account_id`) REFERENCES `civicrm_financial_account`(`id`) ON DELETE RESTRICT;
+ALTER TABLE `civicrm_entity_financial_trxn`
+ ADD CONSTRAINT `FK_civicrm_entity_financial_trxn_financial_trxn_id` FOREIGN KEY (`financial_trxn_id`) REFERENCES `civicrm_financial_trxn`(`id`) ON DELETE SET NULL;
+ALTER TABLE `civicrm_financial_account`
+ ADD CONSTRAINT `FK_civicrm_financial_account_contact_id` FOREIGN KEY (`contact_id`) REFERENCES `civicrm_contact`(`id`) ON DELETE SET NULL,
+ ADD CONSTRAINT `FK_civicrm_financial_account_parent_id` FOREIGN KEY (`parent_id`) REFERENCES `civicrm_financial_account`(`id`);
+ALTER TABLE `civicrm_financial_item`
+ ADD CONSTRAINT `FK_civicrm_financial_item_contact_id` FOREIGN KEY (`contact_id`) REFERENCES `civicrm_contact`(`id`) ON DELETE CASCADE,
+ ADD CONSTRAINT `FK_civicrm_financial_item_financial_account_id` FOREIGN KEY (`financial_account_id`) REFERENCES `civicrm_financial_account`(`id`);
+ALTER TABLE `civicrm_financial_trxn`
+ ADD CONSTRAINT `FK_civicrm_financial_trxn_from_financial_account_id` FOREIGN KEY (`from_financial_account_id`) REFERENCES `civicrm_financial_account`(`id`),
+ ADD CONSTRAINT `FK_civicrm_financial_trxn_to_financial_account_id` FOREIGN KEY (`to_financial_account_id`) REFERENCES `civicrm_financial_account`(`id`),
+ ADD CONSTRAINT `FK_civicrm_financial_trxn_payment_processor_id` FOREIGN KEY (`payment_processor_id`) REFERENCES `civicrm_payment_processor`(`id`) ON DELETE SET NULL;
+ALTER TABLE `civicrm_payment_processor`
+ ADD CONSTRAINT `FK_civicrm_payment_processor_domain_id` FOREIGN KEY (`domain_id`) REFERENCES `civicrm_domain`(`id`),
+ ADD CONSTRAINT `FK_civicrm_payment_processor_payment_processor_type_id` FOREIGN KEY (`payment_processor_type_id`) REFERENCES `civicrm_payment_processor_type`(`id`);
+ALTER TABLE `civicrm_payment_token`
+ ADD CONSTRAINT `FK_civicrm_payment_token_contact_id` FOREIGN KEY (`contact_id`) REFERENCES `civicrm_contact`(`id`) ON DELETE CASCADE,
+ ADD CONSTRAINT `FK_civicrm_payment_token_payment_processor_id` FOREIGN KEY (`payment_processor_id`) REFERENCES `civicrm_payment_processor`(`id`) ON DELETE RESTRICT,
+ ADD CONSTRAINT `FK_civicrm_payment_token_created_id` FOREIGN KEY (`created_id`) REFERENCES `civicrm_contact`(`id`) ON DELETE SET NULL;
+ALTER TABLE `civicrm_mailing_bounce_pattern`
+ ADD CONSTRAINT `FK_civicrm_mailing_bounce_pattern_bounce_type_id` FOREIGN KEY (`bounce_type_id`) REFERENCES `civicrm_mailing_bounce_type`(`id`) ON DELETE CASCADE;
+ALTER TABLE `civicrm_mailing`
+ ADD CONSTRAINT `FK_civicrm_mailing_domain_id` FOREIGN KEY (`domain_id`) REFERENCES `civicrm_domain`(`id`) ON DELETE SET NULL,
+ ADD CONSTRAINT `FK_civicrm_mailing_header_id` FOREIGN KEY (`header_id`) REFERENCES `civicrm_mailing_component`(`id`) ON DELETE SET NULL,
+ ADD CONSTRAINT `FK_civicrm_mailing_footer_id` FOREIGN KEY (`footer_id`) REFERENCES `civicrm_mailing_component`(`id`) ON DELETE SET NULL,
+ ADD CONSTRAINT `FK_civicrm_mailing_reply_id` FOREIGN KEY (`reply_id`) REFERENCES `civicrm_mailing_component`(`id`) ON DELETE SET NULL,
+ ADD CONSTRAINT `FK_civicrm_mailing_unsubscribe_id` FOREIGN KEY (`unsubscribe_id`) REFERENCES `civicrm_mailing_component`(`id`) ON DELETE SET NULL,
+ ADD CONSTRAINT `FK_civicrm_mailing_optout_id` FOREIGN KEY (`optout_id`) REFERENCES `civicrm_mailing_component`(`id`) ON DELETE SET NULL,
+ ADD CONSTRAINT `FK_civicrm_mailing_msg_template_id` FOREIGN KEY (`msg_template_id`) REFERENCES `civicrm_msg_template`(`id`) ON DELETE SET NULL,
+ ADD CONSTRAINT `FK_civicrm_mailing_created_id` FOREIGN KEY (`created_id`) REFERENCES `civicrm_contact`(`id`) ON DELETE SET NULL,
+ ADD CONSTRAINT `FK_civicrm_mailing_scheduled_id` FOREIGN KEY (`scheduled_id`) REFERENCES `civicrm_contact`(`id`) ON DELETE SET NULL,
+ ADD CONSTRAINT `FK_civicrm_mailing_approver_id` FOREIGN KEY (`approver_id`) REFERENCES `civicrm_contact`(`id`) ON DELETE SET NULL,
+ ADD CONSTRAINT `FK_civicrm_mailing_campaign_id` FOREIGN KEY (`campaign_id`) REFERENCES `civicrm_campaign`(`id`) ON DELETE SET NULL,
+ ADD CONSTRAINT `FK_civicrm_mailing_sms_provider_id` FOREIGN KEY (`sms_provider_id`) REFERENCES `civicrm_sms_provider`(`id`) ON DELETE SET NULL,
+ ADD CONSTRAINT `FK_civicrm_mailing_location_type_id` FOREIGN KEY (`location_type_id`) REFERENCES `civicrm_location_type`(`id`) ON DELETE SET NULL;
+ALTER TABLE `civicrm_mailing_abtest`
+ ADD CONSTRAINT `FK_civicrm_mailing_abtest_created_id` FOREIGN KEY (`created_id`) REFERENCES `civicrm_contact`(`id`) ON DELETE SET NULL;
+ALTER TABLE `civicrm_mailing_event_bounce`
+ ADD CONSTRAINT `FK_civicrm_mailing_event_bounce_event_queue_id` FOREIGN KEY (`event_queue_id`) REFERENCES `civicrm_mailing_event_queue`(`id`) ON DELETE CASCADE;
+ALTER TABLE `civicrm_mailing_event_confirm`
+ ADD CONSTRAINT `FK_civicrm_mailing_event_confirm_event_subscribe_id` FOREIGN KEY (`event_subscribe_id`) REFERENCES `civicrm_mailing_event_subscribe`(`id`) ON DELETE CASCADE;
+ALTER TABLE `civicrm_mailing_event_delivered`
+ ADD CONSTRAINT `FK_civicrm_mailing_event_delivered_event_queue_id` FOREIGN KEY (`event_queue_id`) REFERENCES `civicrm_mailing_event_queue`(`id`) ON DELETE CASCADE;
+ALTER TABLE `civicrm_mailing_event_forward`
+ ADD CONSTRAINT `FK_civicrm_mailing_event_forward_event_queue_id` FOREIGN KEY (`event_queue_id`) REFERENCES `civicrm_mailing_event_queue`(`id`) ON DELETE CASCADE,
+ ADD CONSTRAINT `FK_civicrm_mailing_event_forward_dest_queue_id` FOREIGN KEY (`dest_queue_id`) REFERENCES `civicrm_mailing_event_queue`(`id`) ON DELETE SET NULL;
+ALTER TABLE `civicrm_mailing_event_opened`
+ ADD CONSTRAINT `FK_civicrm_mailing_event_opened_event_queue_id` FOREIGN KEY (`event_queue_id`) REFERENCES `civicrm_mailing_event_queue`(`id`) ON DELETE CASCADE;
+ALTER TABLE `civicrm_mailing_event_queue`
+ ADD CONSTRAINT `FK_civicrm_mailing_event_queue_job_id` FOREIGN KEY (`job_id`) REFERENCES `civicrm_mailing_job`(`id`) ON DELETE SET NULL,
+ ADD CONSTRAINT `FK_civicrm_mailing_event_queue_mailing_id` FOREIGN KEY (`mailing_id`) REFERENCES `civicrm_mailing`(`id`) ON DELETE SET NULL,
+ ADD CONSTRAINT `FK_civicrm_mailing_event_queue_email_id` FOREIGN KEY (`email_id`) REFERENCES `civicrm_email`(`id`) ON DELETE SET NULL,
+ ADD CONSTRAINT `FK_civicrm_mailing_event_queue_contact_id` FOREIGN KEY (`contact_id`) REFERENCES `civicrm_contact`(`id`) ON DELETE CASCADE,
+ ADD CONSTRAINT `FK_civicrm_mailing_event_queue_phone_id` FOREIGN KEY (`phone_id`) REFERENCES `civicrm_phone`(`id`) ON DELETE SET NULL;
+ALTER TABLE `civicrm_mailing_event_reply`
+ ADD CONSTRAINT `FK_civicrm_mailing_event_reply_event_queue_id` FOREIGN KEY (`event_queue_id`) REFERENCES `civicrm_mailing_event_queue`(`id`) ON DELETE CASCADE;
+ALTER TABLE `civicrm_mailing_event_subscribe`
+ ADD CONSTRAINT `FK_civicrm_mailing_event_subscribe_group_id` FOREIGN KEY (`group_id`) REFERENCES `civicrm_group`(`id`) ON DELETE CASCADE,
+ ADD CONSTRAINT `FK_civicrm_mailing_event_subscribe_contact_id` FOREIGN KEY (`contact_id`) REFERENCES `civicrm_contact`(`id`) ON DELETE CASCADE;
+ALTER TABLE `civicrm_mailing_event_trackable_url_open`
+ ADD CONSTRAINT `FK_civicrm_mailing_event_trackable_url_open_event_queue_id` FOREIGN KEY (`event_queue_id`) REFERENCES `civicrm_mailing_event_queue`(`id`) ON DELETE CASCADE,
+ ADD CONSTRAINT `FK_civicrm_mailing_event_trackable_url_open_trackable_url_id` FOREIGN KEY (`trackable_url_id`) REFERENCES `civicrm_mailing_trackable_url`(`id`) ON DELETE CASCADE;
+ALTER TABLE `civicrm_mailing_event_unsubscribe`
+ ADD CONSTRAINT `FK_civicrm_mailing_event_unsubscribe_event_queue_id` FOREIGN KEY (`event_queue_id`) REFERENCES `civicrm_mailing_event_queue`(`id`) ON DELETE CASCADE;
+ALTER TABLE `civicrm_mailing_group`
+ ADD CONSTRAINT `FK_civicrm_mailing_group_mailing_id` FOREIGN KEY (`mailing_id`) REFERENCES `civicrm_mailing`(`id`) ON DELETE CASCADE;
+ALTER TABLE `civicrm_mailing_job`
+ ADD CONSTRAINT `FK_civicrm_mailing_job_mailing_id` FOREIGN KEY (`mailing_id`) REFERENCES `civicrm_mailing`(`id`) ON DELETE CASCADE,
+ ADD CONSTRAINT `FK_civicrm_mailing_job_parent_id` FOREIGN KEY (`parent_id`) REFERENCES `civicrm_mailing_job`(`id`) ON DELETE CASCADE;
+ALTER TABLE `civicrm_mailing_recipients`
+ ADD CONSTRAINT `FK_civicrm_mailing_recipients_mailing_id` FOREIGN KEY (`mailing_id`) REFERENCES `civicrm_mailing`(`id`) ON DELETE CASCADE,
+ ADD CONSTRAINT `FK_civicrm_mailing_recipients_contact_id` FOREIGN KEY (`contact_id`) REFERENCES `civicrm_contact`(`id`) ON DELETE CASCADE,
+ ADD CONSTRAINT `FK_civicrm_mailing_recipients_email_id` FOREIGN KEY (`email_id`) REFERENCES `civicrm_email`(`id`) ON DELETE SET NULL,
+ ADD CONSTRAINT `FK_civicrm_mailing_recipients_phone_id` FOREIGN KEY (`phone_id`) REFERENCES `civicrm_phone`(`id`) ON DELETE SET NULL;
+ALTER TABLE `civicrm_mailing_trackable_url`
+ ADD CONSTRAINT `FK_civicrm_mailing_trackable_url_mailing_id` FOREIGN KEY (`mailing_id`) REFERENCES `civicrm_mailing`(`id`) ON DELETE CASCADE;
+ALTER TABLE `civicrm_mailing_spool`
+ ADD CONSTRAINT `FK_civicrm_mailing_spool_job_id` FOREIGN KEY (`job_id`) REFERENCES `civicrm_mailing_job`(`id`) ON DELETE CASCADE;
+ALTER TABLE `civicrm_membership`
+ ADD CONSTRAINT `FK_civicrm_membership_contact_id` FOREIGN KEY (`contact_id`) REFERENCES `civicrm_contact`(`id`) ON DELETE CASCADE,
+ ADD CONSTRAINT `FK_civicrm_membership_membership_type_id` FOREIGN KEY (`membership_type_id`) REFERENCES `civicrm_membership_type`(`id`) ON DELETE CASCADE,
+ ADD CONSTRAINT `FK_civicrm_membership_status_id` FOREIGN KEY (`status_id`) REFERENCES `civicrm_membership_status`(`id`) ON DELETE CASCADE,
+ ADD CONSTRAINT `FK_civicrm_membership_owner_membership_id` FOREIGN KEY (`owner_membership_id`) REFERENCES `civicrm_membership`(`id`) ON DELETE SET NULL,
+ ADD CONSTRAINT `FK_civicrm_membership_contribution_recur_id` FOREIGN KEY (`contribution_recur_id`) REFERENCES `civicrm_contribution_recur`(`id`) ON DELETE SET NULL,
+ ADD CONSTRAINT `FK_civicrm_membership_campaign_id` FOREIGN KEY (`campaign_id`) REFERENCES `civicrm_campaign`(`id`) ON DELETE SET NULL;
+ALTER TABLE `civicrm_membership_block`
+ ADD CONSTRAINT `FK_civicrm_membership_block_entity_id` FOREIGN KEY (`entity_id`) REFERENCES `civicrm_contribution_page`(`id`),
+ ADD CONSTRAINT `FK_civicrm_membership_block_membership_type_default` FOREIGN KEY (`membership_type_default`) REFERENCES `civicrm_membership_type`(`id`);
+ALTER TABLE `civicrm_membership_log`
+ ADD CONSTRAINT `FK_civicrm_membership_log_membership_id` FOREIGN KEY (`membership_id`) REFERENCES `civicrm_membership`(`id`) ON DELETE CASCADE,
+ ADD CONSTRAINT `FK_civicrm_membership_log_status_id` FOREIGN KEY (`status_id`) REFERENCES `civicrm_membership_status`(`id`) ON DELETE CASCADE,
+ ADD CONSTRAINT `FK_civicrm_membership_log_modified_id` FOREIGN KEY (`modified_id`) REFERENCES `civicrm_contact`(`id`) ON DELETE SET NULL,
+ ADD CONSTRAINT `FK_civicrm_membership_log_membership_type_id` FOREIGN KEY (`membership_type_id`) REFERENCES `civicrm_membership_type`(`id`) ON DELETE SET NULL;
+ALTER TABLE `civicrm_membership_payment`
+ ADD CONSTRAINT `FK_civicrm_membership_payment_membership_id` FOREIGN KEY (`membership_id`) REFERENCES `civicrm_membership`(`id`) ON DELETE CASCADE,
+ ADD CONSTRAINT `FK_civicrm_membership_payment_contribution_id` FOREIGN KEY (`contribution_id`) REFERENCES `civicrm_contribution`(`id`) ON DELETE CASCADE;
+ALTER TABLE `civicrm_membership_type`
+ ADD CONSTRAINT `FK_civicrm_membership_type_domain_id` FOREIGN KEY (`domain_id`) REFERENCES `civicrm_domain`(`id`),
+ ADD CONSTRAINT `FK_civicrm_membership_type_member_of_contact_id` FOREIGN KEY (`member_of_contact_id`) REFERENCES `civicrm_contact`(`id`) ON DELETE RESTRICT,
+ ADD CONSTRAINT `FK_civicrm_membership_type_financial_type_id` FOREIGN KEY (`financial_type_id`) REFERENCES `civicrm_financial_type`(`id`);
+ALTER TABLE `civicrm_pcp`
+ ADD CONSTRAINT `FK_civicrm_pcp_contact_id` FOREIGN KEY (`contact_id`) REFERENCES `civicrm_contact`(`id`) ON DELETE CASCADE;
+ALTER TABLE `civicrm_pcp_block`
+ ADD CONSTRAINT `FK_civicrm_pcp_block_supporter_profile_id` FOREIGN KEY (`supporter_profile_id`) REFERENCES `civicrm_uf_group`(`id`) ON DELETE SET NULL;
+ALTER TABLE `civicrm_pledge`
+ ADD CONSTRAINT `FK_civicrm_pledge_contact_id` FOREIGN KEY (`contact_id`) REFERENCES `civicrm_contact`(`id`) ON DELETE CASCADE,
+ ADD CONSTRAINT `FK_civicrm_pledge_financial_type_id` FOREIGN KEY (`financial_type_id`) REFERENCES `civicrm_financial_type`(`id`),
+ ADD CONSTRAINT `FK_civicrm_pledge_contribution_page_id` FOREIGN KEY (`contribution_page_id`) REFERENCES `civicrm_contribution_page`(`id`) ON DELETE SET NULL,
+ ADD CONSTRAINT `FK_civicrm_pledge_campaign_id` FOREIGN KEY (`campaign_id`) REFERENCES `civicrm_campaign`(`id`) ON DELETE SET NULL;
+ALTER TABLE `civicrm_pledge_payment`
+ ADD CONSTRAINT `FK_civicrm_pledge_payment_pledge_id` FOREIGN KEY (`pledge_id`) REFERENCES `civicrm_pledge`(`id`) ON DELETE CASCADE,
+ ADD CONSTRAINT `FK_civicrm_pledge_payment_contribution_id` FOREIGN KEY (`contribution_id`) REFERENCES `civicrm_contribution`(`id`) ON DELETE CASCADE;
+ALTER TABLE `civicrm_line_item`
+ ADD CONSTRAINT `FK_civicrm_line_item_contribution_id` FOREIGN KEY (`contribution_id`) REFERENCES `civicrm_contribution`(`id`) ON DELETE SET NULL,
+ ADD CONSTRAINT `FK_civicrm_line_item_price_field_id` FOREIGN KEY (`price_field_id`) REFERENCES `civicrm_price_field`(`id`) ON DELETE SET NULL,
+ ADD CONSTRAINT `FK_civicrm_line_item_price_field_value_id` FOREIGN KEY (`price_field_value_id`) REFERENCES `civicrm_price_field_value`(`id`) ON DELETE SET NULL,
+ ADD CONSTRAINT `FK_civicrm_line_item_financial_type_id` FOREIGN KEY (`financial_type_id`) REFERENCES `civicrm_financial_type`(`id`) ON DELETE SET NULL;
+ALTER TABLE `civicrm_price_field`
+ ADD CONSTRAINT `FK_civicrm_price_field_price_set_id` FOREIGN KEY (`price_set_id`) REFERENCES `civicrm_price_set`(`id`);
+ALTER TABLE `civicrm_price_field_value`
+ ADD CONSTRAINT `FK_civicrm_price_field_value_price_field_id` FOREIGN KEY (`price_field_id`) REFERENCES `civicrm_price_field`(`id`),
+ ADD CONSTRAINT `FK_civicrm_price_field_value_membership_type_id` FOREIGN KEY (`membership_type_id`) REFERENCES `civicrm_membership_type`(`id`) ON DELETE SET NULL,
+ ADD CONSTRAINT `FK_civicrm_price_field_value_financial_type_id` FOREIGN KEY (`financial_type_id`) REFERENCES `civicrm_financial_type`(`id`) ON DELETE SET NULL;
+ALTER TABLE `civicrm_price_set`
+ ADD CONSTRAINT `FK_civicrm_price_set_domain_id` FOREIGN KEY (`domain_id`) REFERENCES `civicrm_domain`(`id`),
+ ADD CONSTRAINT `FK_civicrm_price_set_financial_type_id` FOREIGN KEY (`financial_type_id`) REFERENCES `civicrm_financial_type`(`id`) ON DELETE SET NULL;
+ALTER TABLE `civicrm_price_set_entity`
+ ADD CONSTRAINT `FK_civicrm_price_set_entity_price_set_id` FOREIGN KEY (`price_set_id`) REFERENCES `civicrm_price_set`(`id`);
+ALTER TABLE `civicrm_report_instance`
+ ADD CONSTRAINT `FK_civicrm_report_instance_domain_id` FOREIGN KEY (`domain_id`) REFERENCES `civicrm_domain`(`id`),
+ ADD CONSTRAINT `FK_civicrm_report_instance_created_id` FOREIGN KEY (`created_id`) REFERENCES `civicrm_contact`(`id`) ON DELETE SET NULL,
+ ADD CONSTRAINT `FK_civicrm_report_instance_owner_id` FOREIGN KEY (`owner_id`) REFERENCES `civicrm_contact`(`id`) ON DELETE SET NULL,
+ ADD CONSTRAINT `FK_civicrm_report_instance_navigation_id` FOREIGN KEY (`navigation_id`) REFERENCES `civicrm_navigation`(`id`) ON DELETE SET NULL,
+ ADD CONSTRAINT `FK_civicrm_report_instance_drilldown_id` FOREIGN KEY (`drilldown_id`) REFERENCES `civicrm_report_instance`(`id`) ON DELETE SET NULL;
+ALTER TABLE `civicrm_sms_provider`
+ ADD CONSTRAINT `FK_civicrm_sms_provider_domain_id` FOREIGN KEY (`domain_id`) REFERENCES `civicrm_domain`(`id`) ON DELETE SET NULL;
diff --git a/www/modules/civicrm/sql/civicrm_data.mysql b/www/modules/civicrm/sql/civicrm_data.mysql
index c0a43c2f9..bb291161a 100644
--- a/www/modules/civicrm/sql/civicrm_data.mysql
+++ b/www/modules/civicrm/sql/civicrm_data.mysql
@@ -277,6 +277,7 @@ INSERT INTO civicrm_country (id, name,iso_code,region_id,is_province_abbreviated
INSERT INTO civicrm_country (id, name,iso_code,region_id,is_province_abbreviated) VALUES("1251", "Kosovo", "XK", "1", "0");
INSERT INTO civicrm_country (id, name,iso_code,region_id,is_province_abbreviated) VALUES("1252", "Saint Barthélemy", "BL", "2", "0");
INSERT INTO civicrm_country (id, name,iso_code,region_id,is_province_abbreviated) VALUES("1253", "Saint Martin (French part)", "MF", "2", "0");
+
-- +--------------------------------------------------------------------+
-- | Copyright CiviCRM LLC. All rights reserved. |
-- | |
@@ -4369,6 +4370,7 @@ INSERT INTO civicrm_state_province (country_id, abbreviation, name) VALUES
(1016, "14", "Al Janūbīyah"),
(1016, "16", "Al Wusţá"),
(1016, "17", "Ash ShamÄlÄ«yah");
+
-- +--------------------------------------------------------------------+
-- | Copyright CiviCRM LLC. All rights reserved. |
-- | |
@@ -4556,6 +4558,7 @@ INSERT INTO civicrm_currency (id, name, symbol, numeric_code, full_name) VALUES
(183, "YER", "ï·¼", "886", "Yemeni Rial"),
(184, "ZMK", NULL, "894", "Zambian Kwacha"),
(185, "ZWD", "Z$", "716", "Zimbabwe Dollar");
+
-- +--------------------------------------------------------------------+
-- | Copyright CiviCRM LLC. All rights reserved. |
-- | |
@@ -6210,6 +6213,7 @@ VALUES
(@option_group_id_languages, 0, 0, 'yo_NG', 'yo', 'Yoruba', @counter := @counter + 1),
(@option_group_id_languages, 0, 0, 'za_CN', 'za', 'Zhuang, Chuang', @counter := @counter + 1),
(@option_group_id_languages, 0, 0, 'zu_ZA', 'zu', 'Zulu', @counter := @counter + 1);
+
INSERT INTO civicrm_option_group (`description`,`is_active`,`is_reserved`,`name`,`option_value_fields`,`title`) VALUES
("Encounter medium for case activities (e.g. In Person, By Phone, etc.)","1","1","encounter_medium","name,label,description","Encounter Medium")
;
@@ -6818,47 +6822,7 @@ INSERT INTO civicrm_option_group
(msg_title, msg_subject, msg_text, msg_html, workflow_name, workflow_id, is_default, is_reserved)
VALUES
('Cases - Send Copy of an Activity', '{if !empty($idHash)}[case #{$idHash}]{/if} {$activitySubject}
-', '===========================================================
-{ts}Activity Summary{/ts} - {$activityTypeName}
-===========================================================
-{if !empty($isCaseActivity)}
-{ts}Your Case Role(s){/ts} : {$contact.role|default:\'\'}
-{if !empty($manageCaseURL)}
-{ts}Manage Case{/ts} : {$manageCaseURL}
-{/if}
-{/if}
-
-{if !empty($editActURL)}
-{ts}Edit activity{/ts} : {$editActURL}
-{/if}
-{if !empty($viewActURL)}
-{ts}View activity{/ts} : {$viewActURL}
-{/if}
-
-{foreach from=$activity.fields item=field}
-{if $field.type eq \'Date\'}
-{$field.label} : {$field.value|crmDate:$config->dateformatDatetime}
-{else}
-{$field.label} : {$field.value}
-{/if}
-{/foreach}
-
-{if !empty($activity.customGroups)}
-{foreach from=$activity.customGroups key=customGroupName item=customGroup}
-==========================================================
-{$customGroupName}
-==========================================================
-{foreach from=$customGroup item=field}
-{if $field.type eq \'Date\'}
-{$field.label} : {$field.value|crmDate:$config->dateformatDatetime}
-{else}
-{$field.label} : {$field.value}
-{/if}
-{/foreach}
-
-{/foreach}
-{/if}
-', '
+', '', '
@@ -6883,7 +6847,7 @@ INSERT INTO civicrm_option_group
- {ts}Activity Summary{/ts} - {$activityTypeName}
+ {ts}Activity Summary{/ts} - {activity.activity_type_id:label}
{if !empty($isCaseActivity)}
@@ -6967,47 +6931,7 @@ INSERT INTO civicrm_option_group
(msg_title, msg_subject, msg_text, msg_html, workflow_name, workflow_id, is_default, is_reserved)
VALUES
('Cases - Send Copy of an Activity', '{if !empty($idHash)}[case #{$idHash}]{/if} {$activitySubject}
-', '===========================================================
-{ts}Activity Summary{/ts} - {$activityTypeName}
-===========================================================
-{if !empty($isCaseActivity)}
-{ts}Your Case Role(s){/ts} : {$contact.role|default:\'\'}
-{if !empty($manageCaseURL)}
-{ts}Manage Case{/ts} : {$manageCaseURL}
-{/if}
-{/if}
-
-{if !empty($editActURL)}
-{ts}Edit activity{/ts} : {$editActURL}
-{/if}
-{if !empty($viewActURL)}
-{ts}View activity{/ts} : {$viewActURL}
-{/if}
-
-{foreach from=$activity.fields item=field}
-{if $field.type eq \'Date\'}
-{$field.label} : {$field.value|crmDate:$config->dateformatDatetime}
-{else}
-{$field.label} : {$field.value}
-{/if}
-{/foreach}
-
-{if !empty($activity.customGroups)}
-{foreach from=$activity.customGroups key=customGroupName item=customGroup}
-==========================================================
-{$customGroupName}
-==========================================================
-{foreach from=$customGroup item=field}
-{if $field.type eq \'Date\'}
-{$field.label} : {$field.value|crmDate:$config->dateformatDatetime}
-{else}
-{$field.label} : {$field.value}
-{/if}
-{/foreach}
-
-{/foreach}
-{/if}
-', '
+', '', '
@@ -7032,7 +6956,7 @@ INSERT INTO civicrm_option_group
- {ts}Activity Summary{/ts} - {$activityTypeName}
+ {ts}Activity Summary{/ts} - {activity.activity_type_id:label}
{if !empty($isCaseActivity)}
@@ -7120,24 +7044,7 @@ INSERT INTO civicrm_option_group
(msg_title, msg_subject, msg_text, msg_html, workflow_name, workflow_id, is_default, is_reserved)
VALUES
('Contributions - Duplicate Organization Alert', '{ts}CiviContribute Alert: Possible Duplicate Contact Record{/ts} - {contact.display_name}
-', '{ts}A contribution / membership signup was made on behalf of the organization listed below.{/ts}
-{ts}The information provided matched multiple existing database records based on the configured Duplicate Matching Rules for your site.{/ts}
-
-{ts}Organization Name{/ts}: {$onBehalfName}
-{ts}Organization Email{/ts}: {$onBehalfEmail}
-{ts}Organization Contact ID{/ts}: {$onBehalfID}
-
-{ts}If you think this may be a duplicate contact which should be merged with an existing record - Go to "Contacts >> Find and Merge Duplicate Contacts". Use the strict rule for Organizations to find the potential duplicates and merge them if appropriate.{/ts}
-
-{if $receiptMessage}
-###########################################################
-{ts}Copy of Contribution Receipt{/ts}
-
-###########################################################
-{$receiptMessage}
-
-{/if}
-', '
+', '', '
@@ -7226,24 +7133,7 @@ INSERT INTO civicrm_option_group
(msg_title, msg_subject, msg_text, msg_html, workflow_name, workflow_id, is_default, is_reserved)
VALUES
('Contributions - Duplicate Organization Alert', '{ts}CiviContribute Alert: Possible Duplicate Contact Record{/ts} - {contact.display_name}
-', '{ts}A contribution / membership signup was made on behalf of the organization listed below.{/ts}
-{ts}The information provided matched multiple existing database records based on the configured Duplicate Matching Rules for your site.{/ts}
-
-{ts}Organization Name{/ts}: {$onBehalfName}
-{ts}Organization Email{/ts}: {$onBehalfEmail}
-{ts}Organization Contact ID{/ts}: {$onBehalfID}
-
-{ts}If you think this may be a duplicate contact which should be merged with an existing record - Go to "Contacts >> Find and Merge Duplicate Contacts". Use the strict rule for Organizations to find the potential duplicates and merge them if appropriate.{/ts}
-
-{if $receiptMessage}
-###########################################################
-{ts}Copy of Contribution Receipt{/ts}
-
-###########################################################
-{$receiptMessage}
-
-{/if}
-', '
+', '', '
@@ -7336,122 +7226,7 @@ INSERT INTO civicrm_option_group
(msg_title, msg_subject, msg_text, msg_html, workflow_name, workflow_id, is_default, is_reserved)
VALUES
('Contributions - Receipt (off-line)', '{ts}Contribution Receipt{/ts} - {contact.display_name}
-', '{assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}{$greeting},{/if}
-
-{if {contribution.contribution_page_id.receipt_text|boolean}}
-{contribution.contribution_page_id.receipt_text}
-{elseif {contribution.paid_amount|boolean}} {ts}Below you will find a receipt for this contribution.{/ts}
-{/if}
-
-===========================================================
-{ts}Contribution Information{/ts}
-
-===========================================================
-{ts}Contributor{/ts}: {contact.display_name}
-{if \'{contribution.financial_type_id}\'}
-{ts}Financial Type{/ts}: {contribution.financial_type_id:label}
-{/if}
-{if $isShowLineItems}
----------------------------------------------------------
-{capture assign=ts_item}{ts}Item{/ts}{/capture}
-{capture assign=ts_qty}{ts}Qty{/ts}{/capture}
-{capture assign=ts_each}{ts}Each{/ts}{/capture}
-{if $isShowTax && {contribution.tax_amount|boolean}}
-{capture assign=ts_subtotal}{ts}Subtotal{/ts}{/capture}
-{capture assign=ts_taxRate}{ts}Tax Rate{/ts}{/capture}
-{capture assign=ts_taxAmount}{ts}Tax Amount{/ts}{/capture}
-{/if}
-{capture assign=ts_total}{ts}Total{/ts}{/capture}
-{$ts_item|string_format:"%-30s"} {$ts_qty|string_format:"%5s"} {$ts_each|string_format:"%10s"} {if $isShowTax && {contribution.tax_amount|boolean}} {$ts_subtotal|string_format:"%10s"} {$ts_taxRate} {$ts_taxAmount|string_format:"%10s"} {/if} {$ts_total|string_format:"%10s"}
-----------------------------------------------------------
-{foreach from=$lineItems item=line}
-{capture assign=ts_item}{$line.title}{/capture}{$ts_item|truncate:30:"..."|string_format:"%-30s"} {$line.qty|string_format:"%5s"} {$line.unit_price|crmMoney:\'{contribution.currency}\'|string_format:"%10s"} {if $isShowTax && {contribution.tax_amount|boolean}}{$line.line_total|crmMoney:\'{contribution.currency}\'|string_format:"%10s"} {if $line.tax_rate || $line.tax_amount != ""} {$line.tax_rate|string_format:"%.2f"} % {$line.tax_amount|crmMoney:\'{contribution.currency}\'|string_format:"%10s"} {else} {/if} {/if} {$line.line_total_inclusive|crmMoney:\'{contribution.currency}\'|string_format:"%10s"}
-{/foreach}
-{/if}
-
-
-{if $isShowTax && {contribution.tax_amount|boolean}}
-{ts}Amount before Tax{/ts} : {contribution.tax_exclusive_amount}
-{/if}
-{foreach from=$taxRateBreakdown item=taxDetail key=taxRate}
-{if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else}{$taxTerm} {$taxDetail.percentage}%{/if} : {$taxDetail.amount|crmMoney:\'{contribution.currency}\'}
-{/foreach}
-
-{if $isShowTax}
-{ts}Total Tax Amount{/ts} : {contribution.tax_amount}
-{/if}
-{ts}Total Amount{/ts} : {contribution.total_amount}
-{if \'{contribution.receive_date}\'}
-{ts}Contribution Date{/ts}: {contribution.receive_date|crmDate:"shortdate"}
-{/if}
-{if \'{contribution.receipt_date}\'}
-{ts}Receipt Date{/ts}: {contribution.receipt_date|crmDate:"shortdate"}
-{/if}
-{if {contribution.payment_instrument_id|boolean} && {contribution.paid_amount|boolean}}
-{ts}Paid By{/ts}: {contribution.payment_instrument_id:label}
-{if \'{contribution.check_number}\'}
-{ts}Check Number{/ts}: {contribution.check_number}
-{/if}
-{/if}
-{if \'{contribution.trxn_id}\'}
-{ts}Transaction ID{/ts}: {contribution.trxn_id}
-{/if}
-
-{if !empty($ccContribution)}
-===========================================================
-{ts}Billing Name and Address{/ts}
-
-===========================================================
-{$billingName}
-{$address}
-
-===========================================================
-{ts}Credit Card Information{/ts}
-
-===========================================================
-{$credit_card_type}
-{$credit_card_number}
-{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}
-{/if}
-{if !empty($customGroup)}
-{foreach from=$customGroup item=value key=customName}
-===========================================================
-{$customName}
-===========================================================
-{foreach from=$value item=v key=n}
-{$n}: {$v}
-{/foreach}
-{/foreach}
-{/if}
-
-{if !empty($softCreditTypes) and !empty($softCredits)}
-{foreach from=$softCreditTypes item=softCreditType key=n}
-===========================================================
-{$softCreditType}
-===========================================================
-{foreach from=$softCredits.$n item=value key=label}
-{$label}: {$value}
-{/foreach}
-{/foreach}
-{/if}
-
-{if !empty($formValues.product_name)}
-===========================================================
-{ts}Premium Information{/ts}
-
-===========================================================
-{$formValues.product_name}
-{if $formValues.product_option}
-{ts}Option{/ts}: {$formValues.product_option}
-{/if}
-{if $formValues.product_sku}
-{ts}SKU{/ts}: {$formValues.product_sku}
-{/if}
-{if !empty($fulfilled_date)}
-{ts}Sent{/ts}: {$fulfilled_date|crmDate}
-{/if}
-{/if}
-', '
+', '', '
@@ -7774,122 +7549,7 @@ INSERT INTO civicrm_option_group
(msg_title, msg_subject, msg_text, msg_html, workflow_name, workflow_id, is_default, is_reserved)
VALUES
('Contributions - Receipt (off-line)', '{ts}Contribution Receipt{/ts} - {contact.display_name}
-', '{assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}{$greeting},{/if}
-
-{if {contribution.contribution_page_id.receipt_text|boolean}}
-{contribution.contribution_page_id.receipt_text}
-{elseif {contribution.paid_amount|boolean}} {ts}Below you will find a receipt for this contribution.{/ts}
-{/if}
-
-===========================================================
-{ts}Contribution Information{/ts}
-
-===========================================================
-{ts}Contributor{/ts}: {contact.display_name}
-{if \'{contribution.financial_type_id}\'}
-{ts}Financial Type{/ts}: {contribution.financial_type_id:label}
-{/if}
-{if $isShowLineItems}
----------------------------------------------------------
-{capture assign=ts_item}{ts}Item{/ts}{/capture}
-{capture assign=ts_qty}{ts}Qty{/ts}{/capture}
-{capture assign=ts_each}{ts}Each{/ts}{/capture}
-{if $isShowTax && {contribution.tax_amount|boolean}}
-{capture assign=ts_subtotal}{ts}Subtotal{/ts}{/capture}
-{capture assign=ts_taxRate}{ts}Tax Rate{/ts}{/capture}
-{capture assign=ts_taxAmount}{ts}Tax Amount{/ts}{/capture}
-{/if}
-{capture assign=ts_total}{ts}Total{/ts}{/capture}
-{$ts_item|string_format:"%-30s"} {$ts_qty|string_format:"%5s"} {$ts_each|string_format:"%10s"} {if $isShowTax && {contribution.tax_amount|boolean}} {$ts_subtotal|string_format:"%10s"} {$ts_taxRate} {$ts_taxAmount|string_format:"%10s"} {/if} {$ts_total|string_format:"%10s"}
-----------------------------------------------------------
-{foreach from=$lineItems item=line}
-{capture assign=ts_item}{$line.title}{/capture}{$ts_item|truncate:30:"..."|string_format:"%-30s"} {$line.qty|string_format:"%5s"} {$line.unit_price|crmMoney:\'{contribution.currency}\'|string_format:"%10s"} {if $isShowTax && {contribution.tax_amount|boolean}}{$line.line_total|crmMoney:\'{contribution.currency}\'|string_format:"%10s"} {if $line.tax_rate || $line.tax_amount != ""} {$line.tax_rate|string_format:"%.2f"} % {$line.tax_amount|crmMoney:\'{contribution.currency}\'|string_format:"%10s"} {else} {/if} {/if} {$line.line_total_inclusive|crmMoney:\'{contribution.currency}\'|string_format:"%10s"}
-{/foreach}
-{/if}
-
-
-{if $isShowTax && {contribution.tax_amount|boolean}}
-{ts}Amount before Tax{/ts} : {contribution.tax_exclusive_amount}
-{/if}
-{foreach from=$taxRateBreakdown item=taxDetail key=taxRate}
-{if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else}{$taxTerm} {$taxDetail.percentage}%{/if} : {$taxDetail.amount|crmMoney:\'{contribution.currency}\'}
-{/foreach}
-
-{if $isShowTax}
-{ts}Total Tax Amount{/ts} : {contribution.tax_amount}
-{/if}
-{ts}Total Amount{/ts} : {contribution.total_amount}
-{if \'{contribution.receive_date}\'}
-{ts}Contribution Date{/ts}: {contribution.receive_date|crmDate:"shortdate"}
-{/if}
-{if \'{contribution.receipt_date}\'}
-{ts}Receipt Date{/ts}: {contribution.receipt_date|crmDate:"shortdate"}
-{/if}
-{if {contribution.payment_instrument_id|boolean} && {contribution.paid_amount|boolean}}
-{ts}Paid By{/ts}: {contribution.payment_instrument_id:label}
-{if \'{contribution.check_number}\'}
-{ts}Check Number{/ts}: {contribution.check_number}
-{/if}
-{/if}
-{if \'{contribution.trxn_id}\'}
-{ts}Transaction ID{/ts}: {contribution.trxn_id}
-{/if}
-
-{if !empty($ccContribution)}
-===========================================================
-{ts}Billing Name and Address{/ts}
-
-===========================================================
-{$billingName}
-{$address}
-
-===========================================================
-{ts}Credit Card Information{/ts}
-
-===========================================================
-{$credit_card_type}
-{$credit_card_number}
-{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}
-{/if}
-{if !empty($customGroup)}
-{foreach from=$customGroup item=value key=customName}
-===========================================================
-{$customName}
-===========================================================
-{foreach from=$value item=v key=n}
-{$n}: {$v}
-{/foreach}
-{/foreach}
-{/if}
-
-{if !empty($softCreditTypes) and !empty($softCredits)}
-{foreach from=$softCreditTypes item=softCreditType key=n}
-===========================================================
-{$softCreditType}
-===========================================================
-{foreach from=$softCredits.$n item=value key=label}
-{$label}: {$value}
-{/foreach}
-{/foreach}
-{/if}
-
-{if !empty($formValues.product_name)}
-===========================================================
-{ts}Premium Information{/ts}
-
-===========================================================
-{$formValues.product_name}
-{if $formValues.product_option}
-{ts}Option{/ts}: {$formValues.product_option}
-{/if}
-{if $formValues.product_sku}
-{ts}SKU{/ts}: {$formValues.product_sku}
-{/if}
-{if !empty($fulfilled_date)}
-{ts}Sent{/ts}: {$fulfilled_date|crmDate}
-{/if}
-{/if}
-', '
+', '', '
@@ -9131,8 +8791,7 @@ INSERT INTO civicrm_option_group
{ts}Invoice{/ts}
{/if}
- {contact.display_name}
-', '{ts}Contribution Invoice{/ts}
-', '
+', '', '
@@ -9160,14 +8819,14 @@ INSERT INTO civicrm_option_group
{contact.display_name}{if \'{contact.current_employer}\'} ({contact.current_employer}){/if}
- {$invoice_date}
+ {contribution.receive_date|crmDate:"Full"}
{domain.street_address}
{domain.supplemental_address_1}
- {$street_address} {$supplemental_address_1}
+ {contact.address_billing.street_address} {contact.address_billing.supplemental_address_1}
{ts}Invoice Number:{/ts}
{domain.supplemental_address_2}
@@ -9175,7 +8834,7 @@ INSERT INTO civicrm_option_group
- {$supplemental_address_2} {$stateProvinceAbbreviation}
+ {contact.address_billing.supplemental_address_2} {contact.address_billing.state_province_id:abbr}
{contribution.invoice_number}
{domain.city}
@@ -9183,12 +8842,12 @@ INSERT INTO civicrm_option_group
- {$city} {$postal_code}
+ {contact.address_billing.city} {contact.address_billing.postal_code}
{ts}Reference:{/ts}
{domain.country_id:label}
- {$country}
+ {contact.address_billing.country_id:label}
{contribution.source}
{domain.email}
@@ -9205,7 +8864,7 @@ INSERT INTO civicrm_option_group
{ts}Quantity{/ts}
{ts}Unit Price{/ts}
{domain.tax_term}
- {ts 1=$currency}Amount %1{/ts}
+ {ts 1=\'{contribution.currency}\'}Amount %1{/ts}
{foreach from=$lineItems item=line}
@@ -9225,7 +8884,7 @@ INSERT INTO civicrm_option_group
{ts}Sub Total{/ts}
- {$subTotal|crmMoney:$currency}
+ {contribution.tax_exclusive_amount}
{foreach from=$taxRateBreakdown item=taxDetail key=taxRate}
{if $taxRate != 0}
@@ -9238,8 +8897,8 @@ INSERT INTO civicrm_option_group
{/foreach}
- {ts 1=$currency}TOTAL %1{/ts}
- {$amount|crmMoney:$currency}
+ {ts 1=\'{contribution.currency}\'}TOTAL %1{/ts}
+ {contribution.total_amount}
@@ -9250,7 +8909,7 @@ INSERT INTO civicrm_option_group
{ts}Amount Paid{/ts}
{/if}
- {$amountPaid|crmMoney:$currency}
+ {contribution.paid_amount}
@@ -9259,7 +8918,7 @@ INSERT INTO civicrm_option_group
{ts}AMOUNT DUE:{/ts}
- {$amountDue|crmMoney:$currency}
+ {contribution.balance_amount}
@@ -9304,15 +8963,15 @@ INSERT INTO civicrm_option_group
{contribution.invoice_number}
- {if $is_pay_later == 1}
+ {if {contribution.is_pay_later|boolean}}
{ts}Amount Due:{/ts}
- {$amount|crmMoney:$currency}
+ {contribution.total_amount}
{else}
{ts}Amount Due:{/ts}
- {$amountDue|crmMoney:$currency}
+ {contribution.paid_amount}
{/if}
@@ -9345,14 +9004,14 @@ INSERT INTO civicrm_option_group
{contact.display_name}{if \'{contact.current_employer}\'} ({contact.current_employer}){/if}
- {$invoice_date}
+ {contribution.receive_date|crmDate:"Full"}
{domain.street_address}
{domain.supplemental_address_1}
- {$street_address} {$supplemental_address_1}
+ {contact.address_billing.street_address} {contact.address_billing.supplemental_address_1}
{ts}Credit Note Number:{/ts}
{domain.supplemental_address_2}
@@ -9360,7 +9019,7 @@ INSERT INTO civicrm_option_group
- {$supplemental_address_2} {$stateProvinceAbbreviation}
+ {contact.address_billing.supplemental_address_2} {contact.address_billing.state_province_id:abbr}
{contribution.creditnote_id}
{domain.city}
@@ -9368,7 +9027,7 @@ INSERT INTO civicrm_option_group
- {$city} {$postal_code}
+ {contact.address_billing.city} {contact.address_billing.postal_code}
{ts}Reference:{/ts}
{domain.country_id:label}
@@ -9399,7 +9058,7 @@ INSERT INTO civicrm_option_group
{ts}Quantity{/ts}
{ts}Unit Price{/ts}
{domain.tax_term}
- {ts 1=$currency}Amount %1{/ts}
+ {ts 1="{contribution.currency}"}Amount %1{/ts}
{foreach from=$lineItems item=line key=index}
@@ -9408,7 +9067,7 @@ INSERT INTO civicrm_option_group
{$line.title}
{$line.qty}
- {$line.unit_price|crmMoney:$currency}
+ {$line.unit_price|crmMoney:\'{contribution.currency}\'}
{if $line.tax_amount != \'\'}
{if $line.tax_rate}{$line.tax_rate|crmNumberFormat}%{/if}
{else}
@@ -9421,7 +9080,7 @@ INSERT INTO civicrm_option_group
{ts}Sub Total{/ts}
- {$subTotal|crmMoney:$currency}
+ {contribution.tax_exclusive_amount}
{foreach from=$taxRateBreakdown item=taxDetail key=taxRate}
{if $taxRate != 0}
@@ -9438,14 +9097,14 @@ INSERT INTO civicrm_option_group
- {ts 1=$currency}TOTAL %1{/ts}
- {$amount|crmMoney:$currency}
+ {ts 1=\'{contribution.currency}\'}TOTAL %1{/ts}
+ {contribution.total_amount}
- {if \'{contribution.is_pay_later}\' == 0}
+ {if !\'{contribution.is_pay_later|boolean}\'}
{ts}LESS Credit to invoice(s){/ts}
- {$amount|crmMoney:$currency}
+ {contribution.total_amount}
@@ -9454,7 +9113,7 @@ INSERT INTO civicrm_option_group
{ts}REMAINING CREDIT{/ts}
- {$amountDue|crmMoney:$currency}
+ {contribution.balance_amount}
{/if}
@@ -9496,7 +9155,7 @@ INSERT INTO civicrm_option_group
{ts}Credit Amount:{/ts}
- {$amount|crmMoney:$currency}
+ {contribution.total_amount}
@@ -9524,8 +9183,7 @@ INSERT INTO civicrm_option_group
{ts}Invoice{/ts}
{/if}
- {contact.display_name}
-', '{ts}Contribution Invoice{/ts}
-', '
+', '', '
@@ -9553,14 +9211,14 @@ INSERT INTO civicrm_option_group
{contact.display_name}{if \'{contact.current_employer}\'} ({contact.current_employer}){/if}
- {$invoice_date}
+ {contribution.receive_date|crmDate:"Full"}
{domain.street_address}
{domain.supplemental_address_1}
- {$street_address} {$supplemental_address_1}
+ {contact.address_billing.street_address} {contact.address_billing.supplemental_address_1}
{ts}Invoice Number:{/ts}
{domain.supplemental_address_2}
@@ -9568,7 +9226,7 @@ INSERT INTO civicrm_option_group
- {$supplemental_address_2} {$stateProvinceAbbreviation}
+ {contact.address_billing.supplemental_address_2} {contact.address_billing.state_province_id:abbr}
{contribution.invoice_number}
{domain.city}
@@ -9576,12 +9234,12 @@ INSERT INTO civicrm_option_group
- {$city} {$postal_code}
+ {contact.address_billing.city} {contact.address_billing.postal_code}
{ts}Reference:{/ts}
{domain.country_id:label}
- {$country}
+ {contact.address_billing.country_id:label}
{contribution.source}
{domain.email}
@@ -9598,7 +9256,7 @@ INSERT INTO civicrm_option_group
{ts}Quantity{/ts}
{ts}Unit Price{/ts}
{domain.tax_term}
- {ts 1=$currency}Amount %1{/ts}
+ {ts 1=\'{contribution.currency}\'}Amount %1{/ts}
{foreach from=$lineItems item=line}
@@ -9618,7 +9276,7 @@ INSERT INTO civicrm_option_group
{ts}Sub Total{/ts}
- {$subTotal|crmMoney:$currency}
+ {contribution.tax_exclusive_amount}
{foreach from=$taxRateBreakdown item=taxDetail key=taxRate}
{if $taxRate != 0}
@@ -9631,8 +9289,8 @@ INSERT INTO civicrm_option_group
{/foreach}
- {ts 1=$currency}TOTAL %1{/ts}
- {$amount|crmMoney:$currency}
+ {ts 1=\'{contribution.currency}\'}TOTAL %1{/ts}
+ {contribution.total_amount}
@@ -9643,7 +9301,7 @@ INSERT INTO civicrm_option_group
{ts}Amount Paid{/ts}
{/if}
- {$amountPaid|crmMoney:$currency}
+ {contribution.paid_amount}
@@ -9652,7 +9310,7 @@ INSERT INTO civicrm_option_group
{ts}AMOUNT DUE:{/ts}
- {$amountDue|crmMoney:$currency}
+ {contribution.balance_amount}
@@ -9697,15 +9355,15 @@ INSERT INTO civicrm_option_group
{contribution.invoice_number}
- {if $is_pay_later == 1}
+ {if {contribution.is_pay_later|boolean}}
{ts}Amount Due:{/ts}
- {$amount|crmMoney:$currency}
+ {contribution.total_amount}
{else}
{ts}Amount Due:{/ts}
- {$amountDue|crmMoney:$currency}
+ {contribution.paid_amount}
{/if}
@@ -9738,14 +9396,14 @@ INSERT INTO civicrm_option_group
{contact.display_name}{if \'{contact.current_employer}\'} ({contact.current_employer}){/if}
- {$invoice_date}
+ {contribution.receive_date|crmDate:"Full"}
{domain.street_address}
{domain.supplemental_address_1}
- {$street_address} {$supplemental_address_1}
+ {contact.address_billing.street_address} {contact.address_billing.supplemental_address_1}
{ts}Credit Note Number:{/ts}
{domain.supplemental_address_2}
@@ -9753,7 +9411,7 @@ INSERT INTO civicrm_option_group
- {$supplemental_address_2} {$stateProvinceAbbreviation}
+ {contact.address_billing.supplemental_address_2} {contact.address_billing.state_province_id:abbr}
{contribution.creditnote_id}
{domain.city}
@@ -9761,7 +9419,7 @@ INSERT INTO civicrm_option_group
- {$city} {$postal_code}
+ {contact.address_billing.city} {contact.address_billing.postal_code}
{ts}Reference:{/ts}
{domain.country_id:label}
@@ -9792,7 +9450,7 @@ INSERT INTO civicrm_option_group
{ts}Quantity{/ts}
{ts}Unit Price{/ts}
{domain.tax_term}
- {ts 1=$currency}Amount %1{/ts}
+ {ts 1="{contribution.currency}"}Amount %1{/ts}
{foreach from=$lineItems item=line key=index}
@@ -9801,7 +9459,7 @@ INSERT INTO civicrm_option_group
{$line.title}
{$line.qty}
- {$line.unit_price|crmMoney:$currency}
+ {$line.unit_price|crmMoney:\'{contribution.currency}\'}
{if $line.tax_amount != \'\'}
{if $line.tax_rate}{$line.tax_rate|crmNumberFormat}%{/if}
{else}
@@ -9814,7 +9472,7 @@ INSERT INTO civicrm_option_group
{ts}Sub Total{/ts}
- {$subTotal|crmMoney:$currency}
+ {contribution.tax_exclusive_amount}
{foreach from=$taxRateBreakdown item=taxDetail key=taxRate}
{if $taxRate != 0}
@@ -9831,14 +9489,14 @@ INSERT INTO civicrm_option_group
- {ts 1=$currency}TOTAL %1{/ts}
- {$amount|crmMoney:$currency}
+ {ts 1=\'{contribution.currency}\'}TOTAL %1{/ts}
+ {contribution.total_amount}
- {if \'{contribution.is_pay_later}\' == 0}
+ {if !\'{contribution.is_pay_later|boolean}\'}
{ts}LESS Credit to invoice(s){/ts}
- {$amount|crmMoney:$currency}
+ {contribution.total_amount}
@@ -9847,7 +9505,7 @@ INSERT INTO civicrm_option_group
{ts}REMAINING CREDIT{/ts}
- {$amountDue|crmMoney:$currency}
+ {contribution.balance_amount}
{/if}
@@ -9889,7 +9547,7 @@ INSERT INTO civicrm_option_group
{ts}Credit Amount:{/ts}
- {$amount|crmMoney:$currency}
+ {contribution.total_amount}
@@ -10412,15 +10070,7 @@ INSERT INTO civicrm_option_group
(msg_title, msg_subject, msg_text, msg_html, workflow_name, workflow_id, is_default, is_reserved)
VALUES
('Contributions - Recurring Updates', '{ts}Recurring Contribution Update Notification{/ts} - {contact.display_name}
-', '{assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}{$greeting},{/if}
-
-{ts}Your recurring contribution has been updated as requested:{/ts}
-
-{ts 1=$amount 2=$recur_frequency_interval 3=$recur_frequency_unit}Recurring contribution is for %1, every %2 %3(s){/ts}
-{if $installments}{ts 1=$installments} for %1 installments.{/ts}{/if}
-
-{ts 1=$receipt_from_email}If you have questions please contact us at %1.{/ts}
-', '
+', '', '
@@ -10460,15 +10110,7 @@ INSERT INTO civicrm_option_group
(msg_title, msg_subject, msg_text, msg_html, workflow_name, workflow_id, is_default, is_reserved)
VALUES
('Contributions - Recurring Updates', '{ts}Recurring Contribution Update Notification{/ts} - {contact.display_name}
-', '{assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}{$greeting},{/if}
-
-{ts}Your recurring contribution has been updated as requested:{/ts}
-
-{ts 1=$amount 2=$recur_frequency_interval 3=$recur_frequency_unit}Recurring contribution is for %1, every %2 %3(s){/ts}
-{if $installments}{ts 1=$installments} for %1 installments.{/ts}{/if}
-
-{ts 1=$receipt_from_email}If you have questions please contact us at %1.{/ts}
-', '
+', '', '
@@ -11052,29 +10694,7 @@ INSERT INTO civicrm_option_group
(msg_title, msg_subject, msg_text, msg_html, workflow_name, workflow_id, is_default, is_reserved)
VALUES
('Personal Campaign Pages - Owner Notification', '{ts}Someone has just donated to your personal campaign page{/ts} - {contact.display_name}
-', '===========================================================
-{ts}Personal Campaign Page Owner Notification{/ts}
-
-===========================================================
-{assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}{$greeting},{/if}
-
-{ts}You have received a donation at your personal page{/ts}: {$page_title}
->> {$pcpInfoURL}
-
-{ts}Your fundraising total has been updated.{/ts}
-{ts}The donor\'s information is listed below. You can choose to contact them and convey your thanks if you wish.{/ts}
-{if $is_honor_roll_enabled}
- {ts}The donor\'s name has been added to your honor roll unless they asked not to be included.{/ts}
-{/if}
-
-{ts}Contribution Date{/ts}: {$receive_date|crmDate}
-
-{ts}Amount{/ts}: {$total_amount|crmMoney:$currency}
-
-{ts}Name{/ts}: {$donors_display_name}
-
-{ts}Email{/ts}: {$donors_email}
-', '
+', '', '
@@ -11108,29 +10728,7 @@ INSERT INTO civicrm_option_group
(msg_title, msg_subject, msg_text, msg_html, workflow_name, workflow_id, is_default, is_reserved)
VALUES
('Personal Campaign Pages - Owner Notification', '{ts}Someone has just donated to your personal campaign page{/ts} - {contact.display_name}
-', '===========================================================
-{ts}Personal Campaign Page Owner Notification{/ts}
-
-===========================================================
-{assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}{$greeting},{/if}
-
-{ts}You have received a donation at your personal page{/ts}: {$page_title}
->> {$pcpInfoURL}
-
-{ts}Your fundraising total has been updated.{/ts}
-{ts}The donor\'s information is listed below. You can choose to contact them and convey your thanks if you wish.{/ts}
-{if $is_honor_roll_enabled}
- {ts}The donor\'s name has been added to your honor roll unless they asked not to be included.{/ts}
-{/if}
-
-{ts}Contribution Date{/ts}: {$receive_date|crmDate}
-
-{ts}Amount{/ts}: {$total_amount|crmMoney:$currency}
-
-{ts}Name{/ts}: {$donors_display_name}
-
-{ts}Email{/ts}: {$donors_email}
-', '
+', '', '
@@ -12641,9 +12239,9 @@ INSERT INTO civicrm_option_group
{event.confirm_email_text}
{else}
{ts}Thank you for your registration.{/ts}
- {if $participant_status}{ts 1=$participant_status}This is a confirmation that your registration has been received and your status has been updated to %1 .{/ts}
+ {if $participant_status}{ts 1=$participant_status}This is a confirmation that your registration has been received and your status has been updated to %1 .{/ts}
{else}
- {if $isOnWaitlist}{ts}This is a confirmation that your registration has been received and your status has been updated towaitlisted .{/ts}
+ {if $isOnWaitlist}{ts}This is a confirmation that your registration has been received and your status has been updated to waitlisted .{/ts}
{else}{ts}This is a confirmation that your registration has been received and your status has been updated to registered.{/ts}
{/if}
{/if}
@@ -12963,7 +12561,7 @@ INSERT INTO civicrm_option_group
{ts}Transaction #{/ts}
- {contribution.trxn_id|boolean}
+ {contribution.trxn_id}
{/if}
@@ -13122,9 +12720,9 @@ INSERT INTO civicrm_option_group
{event.confirm_email_text}
{else}
{ts}Thank you for your registration.{/ts}
- {if $participant_status}{ts 1=$participant_status}This is a confirmation that your registration has been received and your status has been updated to %1 .{/ts}
+ {if $participant_status}{ts 1=$participant_status}This is a confirmation that your registration has been received and your status has been updated to %1 .{/ts}
{else}
- {if $isOnWaitlist}{ts}This is a confirmation that your registration has been received and your status has been updated towaitlisted .{/ts}
+ {if $isOnWaitlist}{ts}This is a confirmation that your registration has been received and your status has been updated to waitlisted .{/ts}
{else}{ts}This is a confirmation that your registration has been received and your status has been updated to registered.{/ts}
{/if}
{/if}
@@ -13444,7 +13042,7 @@ INSERT INTO civicrm_option_group
{ts}Transaction #{/ts}
- {contribution.trxn_id|boolean}
+ {contribution.trxn_id}
{/if}
@@ -13990,71 +13588,72 @@ INSERT INTO civicrm_option_group
{participant.role_id:label}
+ {if {event.is_show_location|boolean}}
+
+
+ {event.location}
+
+
+ {/if}
+
+ {if {event.loc_block_id.phone_id.phone|boolean} || {event.loc_block_id.email_id.email|boolean}}
+
+
+ {ts}Event Contacts:{/ts}
+
+
- {if !empty($isShowLocation)}
+ {if {event.loc_block_id.phone_id.phone|boolean}}
-
- {event.location}
+
+ {if {event.loc_block_id.phone_id.phone_type_id|boolean}}
+ {event.loc_block_id.phone_id.phone_type_id:label}
+ {else}
+ {ts}Phone{/ts}
+ {/if}
+
+
+ {event.loc_block_id.phone_id.phone} {if {event.loc_block_id.phone_id.phone_ext|boolean}} {ts}ext.{/ts} {event.loc_block_id.phone_id.phone_ext}{/if}
+
+
+ {/if}
+ {if {event.loc_block_id.phone_2_id.phone|boolean}}
+
+
+ {if {event.loc_block_id.phone_2_id.phone_type_id|boolean}}
+ {event.loc_block_id.phone_2_id.phone_type_id:label}
+ {else}
+ {ts}Phone{/ts}
+ {/if}
+
+
+ {event.loc_block_id.phone_2_id.phone} {if {event.loc_block_id.phone_2_id.phone_ext|boolean}} {ts}ext.{/ts} {event.loc_block_id.phone_2_id.phone_ext}{/if}
{/if}
- {if {event.loc_block_id.phone_id.phone|boolean} || {event.loc_block_id.email_id.email|boolean}}
+ {if {event.loc_block_id.email_id.email|boolean}}
-
- {ts}Event Contacts:{/ts}
+
+ {ts}Email{/ts}
+
+
+ {event.loc_block_id.email_id.email}
+ {/if}
- {if {event.loc_block_id.phone_id.phone|boolean}}
-
-
- {if {event.loc_block_id.phone_id.phone_type_id|boolean}}
- {event.loc_block_id.phone_id.phone_type_id:label}
- {else}
- {ts}Phone{/ts}
- {/if}
-
-
- {event.loc_block_id.phone_id.phone} {if {event.loc_block_id.phone_id.phone_ext|boolean}} {ts}ext.{/ts} {event.loc_block_id.phone_id.phone_ext}{/if}
-
-
- {/if}
- {if {event.loc_block_id.phone_2_id.phone|boolean}}
-
-
- {if {event.loc_block_id.phone_2_id.phone_type_id|boolean}}
- {event.loc_block_id.phone_2_id.phone_type_id:label}
- {else}
- {ts}Phone{/ts}
- {/if}
-
-
- {event.loc_block_id.phone_2_id.phone} {if {event.loc_block_id.phone_2_id.phone_ext|boolean}} {ts}ext.{/ts} {event.loc_block_id.phone_2_id.phone_ext}{/if}
-
-
- {/if}
- {if {event.loc_block_id.email_id.email|boolean}}
-
-
- {ts}Email{/ts}
-
-
- {event.loc_block_id.email_id.email}
-
-
- {/if}
- {if {event.loc_block_id.email_2_id.email|boolean}}
-
-
- {ts}Email{/ts}
-
-
- {event.loc_block_id.email_2_id.email}
-
-
- {/if}
+ {if {event.loc_block_id.email_2_id.email|boolean}}
+
+
+ {ts}Email{/ts}
+
+
+ {event.loc_block_id.email_2_id.email}
+
+
{/if}
+ {/if}
{if \'{contact.email}\'}
@@ -14148,71 +13747,72 @@ INSERT INTO civicrm_option_group
{participant.role_id:label}
+ {if {event.is_show_location|boolean}}
+
+
+ {event.location}
+
+
+ {/if}
+
+ {if {event.loc_block_id.phone_id.phone|boolean} || {event.loc_block_id.email_id.email|boolean}}
+
+
+ {ts}Event Contacts:{/ts}
+
+
- {if !empty($isShowLocation)}
+ {if {event.loc_block_id.phone_id.phone|boolean}}
-
- {event.location}
+
+ {if {event.loc_block_id.phone_id.phone_type_id|boolean}}
+ {event.loc_block_id.phone_id.phone_type_id:label}
+ {else}
+ {ts}Phone{/ts}
+ {/if}
+
+
+ {event.loc_block_id.phone_id.phone} {if {event.loc_block_id.phone_id.phone_ext|boolean}} {ts}ext.{/ts} {event.loc_block_id.phone_id.phone_ext}{/if}
+
+
+ {/if}
+ {if {event.loc_block_id.phone_2_id.phone|boolean}}
+
+
+ {if {event.loc_block_id.phone_2_id.phone_type_id|boolean}}
+ {event.loc_block_id.phone_2_id.phone_type_id:label}
+ {else}
+ {ts}Phone{/ts}
+ {/if}
+
+
+ {event.loc_block_id.phone_2_id.phone} {if {event.loc_block_id.phone_2_id.phone_ext|boolean}} {ts}ext.{/ts} {event.loc_block_id.phone_2_id.phone_ext}{/if}
{/if}
- {if {event.loc_block_id.phone_id.phone|boolean} || {event.loc_block_id.email_id.email|boolean}}
+ {if {event.loc_block_id.email_id.email|boolean}}
-
- {ts}Event Contacts:{/ts}
+
+ {ts}Email{/ts}
+
+
+ {event.loc_block_id.email_id.email}
+ {/if}
- {if {event.loc_block_id.phone_id.phone|boolean}}
-
-
- {if {event.loc_block_id.phone_id.phone_type_id|boolean}}
- {event.loc_block_id.phone_id.phone_type_id:label}
- {else}
- {ts}Phone{/ts}
- {/if}
-
-
- {event.loc_block_id.phone_id.phone} {if {event.loc_block_id.phone_id.phone_ext|boolean}} {ts}ext.{/ts} {event.loc_block_id.phone_id.phone_ext}{/if}
-
-
- {/if}
- {if {event.loc_block_id.phone_2_id.phone|boolean}}
-
-
- {if {event.loc_block_id.phone_2_id.phone_type_id|boolean}}
- {event.loc_block_id.phone_2_id.phone_type_id:label}
- {else}
- {ts}Phone{/ts}
- {/if}
-
-
- {event.loc_block_id.phone_2_id.phone} {if {event.loc_block_id.phone_2_id.phone_ext|boolean}} {ts}ext.{/ts} {event.loc_block_id.phone_2_id.phone_ext}{/if}
-
-
- {/if}
- {if {event.loc_block_id.email_id.email|boolean}}
-
-
- {ts}Email{/ts}
-
-
- {event.loc_block_id.email_id.email}
-
-
- {/if}
- {if {event.loc_block_id.email_2_id.email|boolean}}
-
-
- {ts}Email{/ts}
-
-
- {event.loc_block_id.email_2_id.email}
-
-
- {/if}
+ {if {event.loc_block_id.email_2_id.email|boolean}}
+
+
+ {ts}Email{/ts}
+
+
+ {event.loc_block_id.email_2_id.email}
+
+
{/if}
+ {/if}
{if \'{contact.email}\'}
@@ -14287,7 +13887,7 @@ INSERT INTO civicrm_option_group
{ts}This is an invitation to complete your registration that was initially waitlisted.{/ts}
- {if !$isAdditional and $participant.id}
+ {if !$isAdditional and {participant.id|boolean}}
{ts}Confirm Your Registration{/ts}
@@ -14295,14 +13895,14 @@ INSERT INTO civicrm_option_group
- {capture assign=confirmUrl}{crmURL p=\'civicrm/event/confirm\' q="reset=1&participantId=`$participant.id`&cs=`$checksumValue`" a=true h=0 fe=1}{/capture}
+ {capture assign=confirmUrl}{crmURL p=\'civicrm/event/confirm\' q="reset=1&participantId={participant.id}&cs=`$checksumValue`" a=true h=0 fe=1}{/capture}
{ts}Click here to confirm and complete your registration{/ts}
{/if}
- {if $event.allow_selfcancelxfer}
+ {if {event.allow_selfcancelxfer|boolean}}
{ts}This event allows for{/ts}
- {capture assign=selfService}{crmURL p=\'civicrm/event/selfsvcupdate\' q="reset=1&pid=`$participant.id`&{contact.checksum}" h=0 a=1 fe=1}{/capture}
+ {capture assign=selfService}{crmURL p=\'civicrm/event/selfsvcupdate\' q="reset=1&pid={participant.id}&{contact.checksum}" h=0 a=1 fe=1}{/capture}
{ts}self service cancel or transfer{/ts}
{/if}
@@ -14316,8 +13916,8 @@ INSERT INTO civicrm_option_group
- {$event.event_title}
- {$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|crmDate:"%Y%m%d" == $event.event_start_date|crmDate:"%Y%m%d"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate}{/if}{/if}
+ {event.title}
+ {event.start_date|crmDate:"%A"} {event.start_date|crmDate}{if {event.end_date|boolean}}-{if \'{event.end_date|crmDate:"%Y%m%d"}\' === \'{event.start_date|crmDate:"%Y%m%d"}\'}{event.end_date|crmDate:"Time"}{else}{event.end_date|crmDate:"%A"} {event.end_date|crmDate}{/if}{/if}
@@ -14325,60 +13925,86 @@ INSERT INTO civicrm_option_group
{ts}Participant Role{/ts}:
- {$participant.role}
+ {participant.role_id:label}
-
- {if $isShowLocation}
-
-
- {$event.location.address.1.display|nl2br}
-
-
- {/if}
-
- {if $event.location.phone.1.phone || $event.location.email.1.email}
-
-
- {ts}Event Contacts:{/ts}
-
-
- {foreach from=$event.location.phone item=phone}
- {if $phone.phone}
+ {if {event.is_show_location|boolean}}
-
- {if $phone.phone_type}{$phone.phone_type_display}{else}{ts}Phone{/ts}{/if}
-
-
- {$phone.phone}
-
+
+ {event.location}
+
- {/if}
- {/foreach}
- {foreach from=$event.location.email item=eventEmail}
- {if $eventEmail.email}
+ {/if}
+
+ {if {event.loc_block_id.phone_id.phone|boolean} || {event.loc_block_id.email_id.email|boolean}}
-
- {ts}Email{/ts}
-
-
- {$eventEmail.email}
-
+
+ {ts}Event Contacts:{/ts}
+
- {/if}
- {/foreach}
- {/if}
- {if $event.is_public}
+ {if {event.loc_block_id.phone_id.phone|boolean}}
+
+
+ {if {event.loc_block_id.phone_id.phone_type_id|boolean}}
+ {event.loc_block_id.phone_id.phone_type_id:label}
+ {else}
+ {ts}Phone{/ts}
+ {/if}
+
+
+ {event.loc_block_id.phone_id.phone} {if {event.loc_block_id.phone_id.phone_ext|boolean}} {ts}ext.{/ts} {event.loc_block_id.phone_id.phone_ext}{/if}
+
+
+ {/if}
+ {if {event.loc_block_id.phone_2_id.phone|boolean}}
+
+
+ {if {event.loc_block_id.phone_2_id.phone_type_id|boolean}}
+ {event.loc_block_id.phone_2_id.phone_type_id:label}
+ {else}
+ {ts}Phone{/ts}
+ {/if}
+
+
+ {event.loc_block_id.phone_2_id.phone} {if {event.loc_block_id.phone_2_id.phone_ext|boolean}} {ts}ext.{/ts} {event.loc_block_id.phone_2_id.phone_ext}{/if}
+
+
+ {/if}
+
+ {if {event.loc_block_id.email_id.email|boolean}}
+
+
+ {ts}Email{/ts}
+
+
+ {event.loc_block_id.email_id.email}
+
+
+ {/if}
+
+ {if {event.loc_block_id.email_2_id.email|boolean}}
+
+
+ {ts}Email{/ts}
+
+
+ {event.loc_block_id.email_2_id.email}
+
+
+ {/if}
+ {/if}
+
+ {if {event.is_public|boolean}}
- {capture assign=icalFeed}{crmURL p=\'civicrm/event/ical\' q="reset=1&id=`$event.id`" h=0 a=1 fe=1}{/capture}
+ {capture assign=icalFeed}{crmURL p=\'civicrm/event/ical\' q="reset=1&id={event.id}" h=0 a=1 fe=1}{/capture}
{ts}Download iCalendar entry for this event.{/ts}
- {capture assign=gCalendar}{crmURL p=\'civicrm/event/ical\' q="gCalendar=1&reset=1&id=`$event.id`" h=0 a=1 fe=1}{/capture}
+ {capture assign=gCalendar}{crmURL p=\'civicrm/event/ical\' q="gCalendar=1&reset=1&id={event.id}" h=0 a=1 fe=1}{/capture}
{ts}Add event to Google Calendar{/ts}
@@ -14397,13 +14023,13 @@ INSERT INTO civicrm_option_group
{/if}
- {if $register_date}
+ {if {participant.register_date|boolean}}
{ts}Registration Date{/ts}
- {$participant.register_date|crmDate}
+ {participant.register_date}
{/if}
@@ -14411,11 +14037,11 @@ INSERT INTO civicrm_option_group
- {if $event.allow_selfcancelxfer}
+ {if {event.allow_selfcancelxfer|boolean}}
- {ts 1=$selfcancelxfer_time 2=$selfservice_preposition}You may transfer your registration to another participant or cancel your registration up to %1 hours %2 the event.{/ts} {if $totalAmount}{ts}Cancellations are not refundable.{/ts}{/if}
- {capture assign=selfService}{crmURL p=\'civicrm/event/selfsvcupdate\' q="reset=1&pid=`$participant.id`&{contact.checksum}" h=0 a=1 fe=1}{/capture}
+ {ts 1=$selfcancelxfer_time 2=$selfservice_preposition}You may transfer your registration to another participant or cancel your registration up to %1 hours %2 the event.{/ts}
+ {capture assign=selfService}{crmURL p=\'civicrm/event/selfsvcupdate\' q="reset=1&pid={participant.id}&{contact.checksum}" h=0 a=1 fe=1}{/capture}
{ts}Click here to transfer or cancel your registration.{/ts}
@@ -14461,7 +14087,7 @@ INSERT INTO civicrm_option_group
{ts}This is an invitation to complete your registration that was initially waitlisted.{/ts}
- {if !$isAdditional and $participant.id}
+ {if !$isAdditional and {participant.id|boolean}}
{ts}Confirm Your Registration{/ts}
@@ -14469,14 +14095,14 @@ INSERT INTO civicrm_option_group
- {capture assign=confirmUrl}{crmURL p=\'civicrm/event/confirm\' q="reset=1&participantId=`$participant.id`&cs=`$checksumValue`" a=true h=0 fe=1}{/capture}
+ {capture assign=confirmUrl}{crmURL p=\'civicrm/event/confirm\' q="reset=1&participantId={participant.id}&cs=`$checksumValue`" a=true h=0 fe=1}{/capture}
{ts}Click here to confirm and complete your registration{/ts}
{/if}
- {if $event.allow_selfcancelxfer}
+ {if {event.allow_selfcancelxfer|boolean}}
{ts}This event allows for{/ts}
- {capture assign=selfService}{crmURL p=\'civicrm/event/selfsvcupdate\' q="reset=1&pid=`$participant.id`&{contact.checksum}" h=0 a=1 fe=1}{/capture}
+ {capture assign=selfService}{crmURL p=\'civicrm/event/selfsvcupdate\' q="reset=1&pid={participant.id}&{contact.checksum}" h=0 a=1 fe=1}{/capture}
{ts}self service cancel or transfer{/ts}
{/if}
@@ -14490,8 +14116,8 @@ INSERT INTO civicrm_option_group
- {$event.event_title}
- {$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|crmDate:"%Y%m%d" == $event.event_start_date|crmDate:"%Y%m%d"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate}{/if}{/if}
+ {event.title}
+ {event.start_date|crmDate:"%A"} {event.start_date|crmDate}{if {event.end_date|boolean}}-{if \'{event.end_date|crmDate:"%Y%m%d"}\' === \'{event.start_date|crmDate:"%Y%m%d"}\'}{event.end_date|crmDate:"Time"}{else}{event.end_date|crmDate:"%A"} {event.end_date|crmDate}{/if}{/if}
@@ -14499,60 +14125,86 @@ INSERT INTO civicrm_option_group
{ts}Participant Role{/ts}:
- {$participant.role}
+ {participant.role_id:label}
-
- {if $isShowLocation}
-
-
- {$event.location.address.1.display|nl2br}
-
-
- {/if}
-
- {if $event.location.phone.1.phone || $event.location.email.1.email}
-
-
- {ts}Event Contacts:{/ts}
-
-
- {foreach from=$event.location.phone item=phone}
- {if $phone.phone}
+ {if {event.is_show_location|boolean}}
-
- {if $phone.phone_type}{$phone.phone_type_display}{else}{ts}Phone{/ts}{/if}
-
-
- {$phone.phone}
-
+
+ {event.location}
+
- {/if}
- {/foreach}
- {foreach from=$event.location.email item=eventEmail}
- {if $eventEmail.email}
+ {/if}
+
+ {if {event.loc_block_id.phone_id.phone|boolean} || {event.loc_block_id.email_id.email|boolean}}
-
- {ts}Email{/ts}
-
-
- {$eventEmail.email}
-
+
+ {ts}Event Contacts:{/ts}
+
- {/if}
- {/foreach}
- {/if}
- {if $event.is_public}
+ {if {event.loc_block_id.phone_id.phone|boolean}}
+
+
+ {if {event.loc_block_id.phone_id.phone_type_id|boolean}}
+ {event.loc_block_id.phone_id.phone_type_id:label}
+ {else}
+ {ts}Phone{/ts}
+ {/if}
+
+
+ {event.loc_block_id.phone_id.phone} {if {event.loc_block_id.phone_id.phone_ext|boolean}} {ts}ext.{/ts} {event.loc_block_id.phone_id.phone_ext}{/if}
+
+
+ {/if}
+ {if {event.loc_block_id.phone_2_id.phone|boolean}}
+
+
+ {if {event.loc_block_id.phone_2_id.phone_type_id|boolean}}
+ {event.loc_block_id.phone_2_id.phone_type_id:label}
+ {else}
+ {ts}Phone{/ts}
+ {/if}
+
+
+ {event.loc_block_id.phone_2_id.phone} {if {event.loc_block_id.phone_2_id.phone_ext|boolean}} {ts}ext.{/ts} {event.loc_block_id.phone_2_id.phone_ext}{/if}
+
+
+ {/if}
+
+ {if {event.loc_block_id.email_id.email|boolean}}
+
+
+ {ts}Email{/ts}
+
+
+ {event.loc_block_id.email_id.email}
+
+
+ {/if}
+
+ {if {event.loc_block_id.email_2_id.email|boolean}}
+
+
+ {ts}Email{/ts}
+
+
+ {event.loc_block_id.email_2_id.email}
+
+
+ {/if}
+ {/if}
+
+ {if {event.is_public|boolean}}
- {capture assign=icalFeed}{crmURL p=\'civicrm/event/ical\' q="reset=1&id=`$event.id`" h=0 a=1 fe=1}{/capture}
+ {capture assign=icalFeed}{crmURL p=\'civicrm/event/ical\' q="reset=1&id={event.id}" h=0 a=1 fe=1}{/capture}
{ts}Download iCalendar entry for this event.{/ts}
- {capture assign=gCalendar}{crmURL p=\'civicrm/event/ical\' q="gCalendar=1&reset=1&id=`$event.id`" h=0 a=1 fe=1}{/capture}
+ {capture assign=gCalendar}{crmURL p=\'civicrm/event/ical\' q="gCalendar=1&reset=1&id={event.id}" h=0 a=1 fe=1}{/capture}
{ts}Add event to Google Calendar{/ts}
@@ -14571,13 +14223,13 @@ INSERT INTO civicrm_option_group
{/if}
- {if $register_date}
+ {if {participant.register_date|boolean}}
{ts}Registration Date{/ts}
- {$participant.register_date|crmDate}
+ {participant.register_date}
{/if}
@@ -14585,11 +14237,11 @@ INSERT INTO civicrm_option_group
- {if $event.allow_selfcancelxfer}
+ {if {event.allow_selfcancelxfer|boolean}}
- {ts 1=$selfcancelxfer_time 2=$selfservice_preposition}You may transfer your registration to another participant or cancel your registration up to %1 hours %2 the event.{/ts} {if $totalAmount}{ts}Cancellations are not refundable.{/ts}{/if}
- {capture assign=selfService}{crmURL p=\'civicrm/event/selfsvcupdate\' q="reset=1&pid=`$participant.id`&{contact.checksum}" h=0 a=1 fe=1}{/capture}
+ {ts 1=$selfcancelxfer_time 2=$selfservice_preposition}You may transfer your registration to another participant or cancel your registration up to %1 hours %2 the event.{/ts}
+ {capture assign=selfService}{crmURL p=\'civicrm/event/selfsvcupdate\' q="reset=1&pid={participant.id}&{contact.checksum}" h=0 a=1 fe=1}{/capture}
{ts}Click here to transfer or cancel your registration.{/ts}
@@ -14637,7 +14289,7 @@ INSERT INTO civicrm_option_group
{assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}{$greeting},
{/if}
- {ts 1=$event.event_title}Your pending event registration for %1 has expired
+
{ts 1="{event.title}"}Your pending event registration for %1 has expired
because you did not confirm your registration.{/ts}
{ts 1=\'{domain.phone}\' 2=\'{domain.email}\'}Please contact us at %1 or send email to %2 if you have questions
or want to inquire about reinstating your registration for this event.{/ts}
@@ -14653,8 +14305,8 @@ or want to inquire about reinstating your registration for this event.{/ts}
- {$event.event_title}
- {$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|crmDate:"%Y%m%d" == $event.event_start_date|crmDate:"%Y%m%d"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate}{/if}{/if}
+ {event.title}
+ {event.start_date|crmDate:"%A"} {event.start_date|crmDate}{if {event.end_date|boolean}}-{if \'{event.end_date|crmDate:"%Y%m%d"}\' === \'{event.start_date|crmDate:"%Y%m%d"}\'}{event.end_date|crmDate:"Time"}{else}{event.end_date|crmDate:"%A"} {event.end_date|crmDate}{/if}{/if}
@@ -14662,70 +14314,84 @@ or want to inquire about reinstating your registration for this event.{/ts}
{ts}Participant Role{/ts}:
- {$participant.role}
+ {participant.role_id:label}
- {if $isShowLocation}
-
-
- {$event.location.address.1.display|nl2br}
-
-
- {/if}
-
- {if !empty($event.location.phone.1.phone) || !empty($event.location.email.1.email)}
-
-
- {ts}Event Contacts:{/ts}
-
-
- {foreach from=$event.location.phone item=phone}
- {if $phone.phone}
+ {if {event.is_show_location|boolean}}
-
- {if $phone.phone_type}{$phone.phone_type_display}{else}{ts}Phone{/ts}{/if}
-
-
- {$phone.phone}
-
+
+ {event.location}
+
- {/if}
- {/foreach}
- {foreach from=$event.location.email item=eventEmail}
- {if $eventEmail.email}
+ {/if}
+
+ {if {event.loc_block_id.phone_id.phone|boolean} || {event.loc_block_id.email_id.email|boolean}}
-
- {ts}Email{/ts}
-
-
- {$eventEmail.email}
-
+
+ {ts}Event Contacts:{/ts}
+
- {/if}
- {/foreach}
- {/if}
- {if \'{contact.email}\'}
-
-
- {ts}Registered Email{/ts}
-
-
-
-
- {contact.email}
-
-
- {/if}
+ {if {event.loc_block_id.phone_id.phone|boolean}}
+
+
+ {if {event.loc_block_id.phone_id.phone_type_id|boolean}}
+ {event.loc_block_id.phone_id.phone_type_id:label}
+ {else}
+ {ts}Phone{/ts}
+ {/if}
+
+
+ {event.loc_block_id.phone_id.phone} {if {event.loc_block_id.phone_id.phone_ext|boolean}} {ts}ext.{/ts} {event.loc_block_id.phone_id.phone_ext}{/if}
+
+
+ {/if}
+ {if {event.loc_block_id.phone_2_id.phone|boolean}}
+
+
+ {if {event.loc_block_id.phone_2_id.phone_type_id|boolean}}
+ {event.loc_block_id.phone_2_id.phone_type_id:label}
+ {else}
+ {ts}Phone{/ts}
+ {/if}
+
+
+ {event.loc_block_id.phone_2_id.phone} {if {event.loc_block_id.phone_2_id.phone_ext|boolean}} {ts}ext.{/ts} {event.loc_block_id.phone_2_id.phone_ext}{/if}
+
+
+ {/if}
+
+ {if {event.loc_block_id.email_id.email|boolean}}
+
+
+ {ts}Email{/ts}
+
+
+ {event.loc_block_id.email_id.email}
+
+
+ {/if}
+
+ {if {event.loc_block_id.email_2_id.email|boolean}}
+
+
+ {ts}Email{/ts}
+
+
+ {event.loc_block_id.email_2_id.email}
+
+
+ {/if}
+ {/if}
- {if $register_date}
+ {if {participant.register_date|boolean}}
{ts}Registration Date{/ts}
- {$participant.register_date|crmDate}
+ {participant.register_date}
{/if}
@@ -14773,7 +14439,7 @@ or want to inquire about reinstating your registration for this event.{/ts}
{assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}{$greeting},
{/if}
- {ts 1=$event.event_title}Your pending event registration for %1 has expired
+
{ts 1="{event.title}"}Your pending event registration for %1 has expired
because you did not confirm your registration.{/ts}
{ts 1=\'{domain.phone}\' 2=\'{domain.email}\'}Please contact us at %1 or send email to %2 if you have questions
or want to inquire about reinstating your registration for this event.{/ts}
@@ -14789,8 +14455,8 @@ or want to inquire about reinstating your registration for this event.{/ts}
- {$event.event_title}
- {$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|crmDate:"%Y%m%d" == $event.event_start_date|crmDate:"%Y%m%d"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate}{/if}{/if}
+ {event.title}
+ {event.start_date|crmDate:"%A"} {event.start_date|crmDate}{if {event.end_date|boolean}}-{if \'{event.end_date|crmDate:"%Y%m%d"}\' === \'{event.start_date|crmDate:"%Y%m%d"}\'}{event.end_date|crmDate:"Time"}{else}{event.end_date|crmDate:"%A"} {event.end_date|crmDate}{/if}{/if}
@@ -14798,70 +14464,84 @@ or want to inquire about reinstating your registration for this event.{/ts}
{ts}Participant Role{/ts}:
- {$participant.role}
+ {participant.role_id:label}
- {if $isShowLocation}
-
-
- {$event.location.address.1.display|nl2br}
-
-
- {/if}
-
- {if !empty($event.location.phone.1.phone) || !empty($event.location.email.1.email)}
-
-
- {ts}Event Contacts:{/ts}
-
-
- {foreach from=$event.location.phone item=phone}
- {if $phone.phone}
+ {if {event.is_show_location|boolean}}
-
- {if $phone.phone_type}{$phone.phone_type_display}{else}{ts}Phone{/ts}{/if}
-
-
- {$phone.phone}
-
+
+ {event.location}
+
- {/if}
- {/foreach}
- {foreach from=$event.location.email item=eventEmail}
- {if $eventEmail.email}
+ {/if}
+
+ {if {event.loc_block_id.phone_id.phone|boolean} || {event.loc_block_id.email_id.email|boolean}}
-
- {ts}Email{/ts}
-
-
- {$eventEmail.email}
-
+
+ {ts}Event Contacts:{/ts}
+
- {/if}
- {/foreach}
- {/if}
- {if \'{contact.email}\'}
-
-
- {ts}Registered Email{/ts}
-
-
-
-
- {contact.email}
-
-
- {/if}
+ {if {event.loc_block_id.phone_id.phone|boolean}}
+
+
+ {if {event.loc_block_id.phone_id.phone_type_id|boolean}}
+ {event.loc_block_id.phone_id.phone_type_id:label}
+ {else}
+ {ts}Phone{/ts}
+ {/if}
+
+
+ {event.loc_block_id.phone_id.phone} {if {event.loc_block_id.phone_id.phone_ext|boolean}} {ts}ext.{/ts} {event.loc_block_id.phone_id.phone_ext}{/if}
+
+
+ {/if}
+ {if {event.loc_block_id.phone_2_id.phone|boolean}}
+
+
+ {if {event.loc_block_id.phone_2_id.phone_type_id|boolean}}
+ {event.loc_block_id.phone_2_id.phone_type_id:label}
+ {else}
+ {ts}Phone{/ts}
+ {/if}
+
+
+ {event.loc_block_id.phone_2_id.phone} {if {event.loc_block_id.phone_2_id.phone_ext|boolean}} {ts}ext.{/ts} {event.loc_block_id.phone_2_id.phone_ext}{/if}
+
+
+ {/if}
- {if $register_date}
+ {if {event.loc_block_id.email_id.email|boolean}}
+
+
+ {ts}Email{/ts}
+
+
+ {event.loc_block_id.email_id.email}
+
+
+ {/if}
+
+ {if {event.loc_block_id.email_2_id.email|boolean}}
+
+
+ {ts}Email{/ts}
+
+
+ {event.loc_block_id.email_2_id.email}
+
+
+ {/if}
+ {/if}
+
+ {if {participant.register_date|boolean}}
{ts}Registration Date{/ts}
- {$participant.register_date|crmDate}
+ {participant.register_date}
{/if}
@@ -14926,8 +14606,8 @@ or want to inquire about reinstating your registration for this event.{/ts}
- {$event.event_title}
- {$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|crmDate:"%Y%m%d" == $event.event_start_date|crmDate:"%Y%m%d"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate}{/if}{/if}
+ {event.title}
+ {event.start_date|crmDate:"%A"} {event.start_date|crmDate}{if {event.end_date|boolean}}-{if \'{event.end_date|crmDate:"%Y%m%d"}\' === \'{event.start_date|crmDate:"%Y%m%d"}\'}{event.end_date|crmDate:"Time"}{else}{event.end_date|crmDate:"%A"} {event.end_date|crmDate}{/if}{/if}
@@ -14935,49 +14615,76 @@ or want to inquire about reinstating your registration for this event.{/ts}
{ts}Participant Role{/ts}:
- {$participant.role}
+ {participant.role_id:label}
- {if $isShowLocation}
-
-
- {$event.location.address.1.display|nl2br}
-
-
- {/if}
-
- {if !empty($event.location.phone.1.phone) || !empty($event.location.email.1.email)}
-
-
- {ts}Event Contacts:{/ts}
-
-
- {foreach from=$event.location.phone item=phone}
- {if $phone.phone}
+ {if {event.is_show_location|boolean}}
-
- {if $phone.phone_type}{$phone.phone_type_display}{else}{ts}Phone{/ts}{/if}
-
-
- {$phone.phone}
-
+
+ {event.location}
+
- {/if}
- {/foreach}
- {foreach from=$event.location.email item=eventEmail}
- {if $eventEmail.email}
+ {/if}
+
+ {if {event.loc_block_id.phone_id.phone|boolean} || {event.loc_block_id.email_id.email|boolean}}
-
- {ts}Email{/ts}
-
-
- {$eventEmail.email}
-
+
+ {ts}Event Contacts:{/ts}
+
- {/if}
- {/foreach}
- {/if}
+
+ {if {event.loc_block_id.phone_id.phone|boolean}}
+
+
+ {if {event.loc_block_id.phone_id.phone_type_id|boolean}}
+ {event.loc_block_id.phone_id.phone_type_id:label}
+ {else}
+ {ts}Phone{/ts}
+ {/if}
+
+
+ {event.loc_block_id.phone_id.phone} {if {event.loc_block_id.phone_id.phone_ext|boolean}} {ts}ext.{/ts} {event.loc_block_id.phone_id.phone_ext}{/if}
+
+
+ {/if}
+ {if {event.loc_block_id.phone_2_id.phone|boolean}}
+
+
+ {if {event.loc_block_id.phone_2_id.phone_type_id|boolean}}
+ {event.loc_block_id.phone_2_id.phone_type_id:label}
+ {else}
+ {ts}Phone{/ts}
+ {/if}
+
+
+ {event.loc_block_id.phone_2_id.phone} {if {event.loc_block_id.phone_2_id.phone_ext|boolean}} {ts}ext.{/ts} {event.loc_block_id.phone_2_id.phone_ext}{/if}
+
+
+ {/if}
+
+ {if {event.loc_block_id.email_id.email|boolean}}
+
+
+ {ts}Email{/ts}
+
+
+ {event.loc_block_id.email_id.email}
+
+
+ {/if}
+
+ {if {event.loc_block_id.email_2_id.email|boolean}}
+
+
+ {ts}Email{/ts}
+
+
+ {event.loc_block_id.email_2_id.email}
+
+
+ {/if}
+ {/if}
{if \'{contact.email}\'}
@@ -14992,13 +14699,13 @@ or want to inquire about reinstating your registration for this event.{/ts}
{/if}
- {if $register_date}
+ {if {participant.register_date|boolean}}
{ts}Registration Date{/ts}
- {$participant.register_date|crmDate}
+ {participant.register_date}
{/if}
@@ -15059,8 +14766,8 @@ or want to inquire about reinstating your registration for this event.{/ts}
- {$event.event_title}
- {$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|crmDate:"%Y%m%d" == $event.event_start_date|crmDate:"%Y%m%d"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate}{/if}{/if}
+ {event.title}
+ {event.start_date|crmDate:"%A"} {event.start_date|crmDate}{if {event.end_date|boolean}}-{if \'{event.end_date|crmDate:"%Y%m%d"}\' === \'{event.start_date|crmDate:"%Y%m%d"}\'}{event.end_date|crmDate:"Time"}{else}{event.end_date|crmDate:"%A"} {event.end_date|crmDate}{/if}{/if}
@@ -15068,49 +14775,76 @@ or want to inquire about reinstating your registration for this event.{/ts}
{ts}Participant Role{/ts}:
- {$participant.role}
+ {participant.role_id:label}
- {if $isShowLocation}
-
-
- {$event.location.address.1.display|nl2br}
-
-
- {/if}
-
- {if !empty($event.location.phone.1.phone) || !empty($event.location.email.1.email)}
-
-
- {ts}Event Contacts:{/ts}
-
-
- {foreach from=$event.location.phone item=phone}
- {if $phone.phone}
+ {if {event.is_show_location|boolean}}
-
- {if $phone.phone_type}{$phone.phone_type_display}{else}{ts}Phone{/ts}{/if}
-
-
- {$phone.phone}
-
+
+ {event.location}
+
- {/if}
- {/foreach}
- {foreach from=$event.location.email item=eventEmail}
- {if $eventEmail.email}
+ {/if}
+
+ {if {event.loc_block_id.phone_id.phone|boolean} || {event.loc_block_id.email_id.email|boolean}}
-
- {ts}Email{/ts}
-
-
- {$eventEmail.email}
-
+
+ {ts}Event Contacts:{/ts}
+
- {/if}
- {/foreach}
- {/if}
+
+ {if {event.loc_block_id.phone_id.phone|boolean}}
+
+
+ {if {event.loc_block_id.phone_id.phone_type_id|boolean}}
+ {event.loc_block_id.phone_id.phone_type_id:label}
+ {else}
+ {ts}Phone{/ts}
+ {/if}
+
+
+ {event.loc_block_id.phone_id.phone} {if {event.loc_block_id.phone_id.phone_ext|boolean}} {ts}ext.{/ts} {event.loc_block_id.phone_id.phone_ext}{/if}
+
+
+ {/if}
+ {if {event.loc_block_id.phone_2_id.phone|boolean}}
+
+
+ {if {event.loc_block_id.phone_2_id.phone_type_id|boolean}}
+ {event.loc_block_id.phone_2_id.phone_type_id:label}
+ {else}
+ {ts}Phone{/ts}
+ {/if}
+
+
+ {event.loc_block_id.phone_2_id.phone} {if {event.loc_block_id.phone_2_id.phone_ext|boolean}} {ts}ext.{/ts} {event.loc_block_id.phone_2_id.phone_ext}{/if}
+
+
+ {/if}
+
+ {if {event.loc_block_id.email_id.email|boolean}}
+
+
+ {ts}Email{/ts}
+
+
+ {event.loc_block_id.email_id.email}
+
+
+ {/if}
+
+ {if {event.loc_block_id.email_2_id.email|boolean}}
+
+
+ {ts}Email{/ts}
+
+
+ {event.loc_block_id.email_2_id.email}
+
+
+ {/if}
+ {/if}
{if \'{contact.email}\'}
@@ -15125,13 +14859,13 @@ or want to inquire about reinstating your registration for this event.{/ts}
{/if}
- {if $register_date}
+ {if {participant.register_date|boolean}}
{ts}Registration Date{/ts}
- {$participant.register_date|crmDate}
+ {participant.register_date}
{/if}
@@ -15160,22 +14894,7 @@ or want to inquire about reinstating your registration for this event.{/ts}
(msg_title, msg_subject, msg_text, msg_html, workflow_name, workflow_id, is_default, is_reserved)
VALUES
('Tell-a-Friend Email', '{ts 1=$senderContactName 2=$title}%1 wants you to know about %2{/ts}
-', '{$senderMessage}
-
-{if $generalLink}{ts}For more information, visit:{/ts}
->> {$generalLink}
-
-{/if}
-{if $contribute}{ts}To make a contribution, go to:{/ts}
->> {$pageURL}
-
-{/if}
-{if $event}{ts}To find out more about this event, go to:{/ts}
->> {$pageURL}
-{/if}
-
-
-', '
+', '', '
@@ -15219,22 +14938,7 @@ or want to inquire about reinstating your registration for this event.{/ts}
(msg_title, msg_subject, msg_text, msg_html, workflow_name, workflow_id, is_default, is_reserved)
VALUES
('Tell-a-Friend Email', '{ts 1=$senderContactName 2=$title}%1 wants you to know about %2{/ts}
-', '{$senderMessage}
-
-{if $generalLink}{ts}For more information, visit:{/ts}
->> {$generalLink}
-
-{/if}
-{if $contribute}{ts}To make a contribution, go to:{/ts}
->> {$pageURL}
-
-{/if}
-{if $event}{ts}To find out more about this event, go to:{/ts}
->> {$pageURL}
-{/if}
-
-
-', '
+', '', '
@@ -15286,110 +14990,7 @@ or want to inquire about reinstating your registration for this event.{/ts}
{elseif $receiptType EQ \'membership renewal\'}
{ts}Membership Renewal Confirmation and Receipt{/ts}
{/if} - {contact.display_name}
-', '{assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}{$greeting},{/if}
-
-{if $userTextPlain}
-{$userTextPlain}
-{else}{ts}Thank you for this contribution.{/ts}{/if}
-
-{if !$isShowLineItems}
-===========================================================
-{ts}Membership Information{/ts}
-
-===========================================================
-{ts}Membership Type{/ts}: {membership.membership_type_id:name}
-{/if}
-{if \'{membership.status_id:name}\' !== \'Cancelled\'}
-{if !$isShowLineItems}
-{ts}Membership Start Date{/ts}: {membership.start_date|crmDate:"Full"}
-{ts}Membership Expiration Date{/ts}: {membership.end_date|crmDate:"Full"}
-{/if}
-
-{if {contribution.total_amount|boolean}}
-===========================================================
-{ts}Membership Fee{/ts}
-
-===========================================================
-{if {contribution.financial_type_id|boolean}}
-{ts}Financial Type{/ts}: {contribution.financial_type_id:label}
-{/if}
-{if $isShowLineItems}
-{capture assign=ts_item}{ts}Item{/ts}{/capture}
-{capture assign=ts_total}{ts}Fee{/ts}{/capture}
-{if $isShowTax && \'{contribution.tax_amount|boolean}\'}
-{capture assign=ts_subtotal}{ts}Subtotal{/ts}{/capture}
-{capture assign=ts_taxRate}{ts}Tax Rate{/ts}{/capture}
-{capture assign=ts_taxAmount}{ts}Tax Amount{/ts}{/capture}
-{capture assign=ts_total}{ts}Total{/ts}{/capture}
-{/if}
-{capture assign=ts_start_date}{ts}Membership Start Date{/ts}{/capture}
-{capture assign=ts_end_date}{ts}Membership Expiration Date{/ts}{/capture}
-{$ts_item|string_format:"%-30s"} {$ts_total|string_format:"%10s"} {if $isShowTax && {contribution.tax_amount|boolean}} {$ts_subtotal|string_format:"%10s"} {$ts_taxRate|string_format:"%10s"} {$ts_taxAmount|string_format:"%10s"} {$ts_total|string_format:"%10s"} {/if} {$ts_start_date|string_format:"%20s"} {$ts_end_date|string_format:"%20s"}
---------------------------------------------------------------------------------------------------
-
-{foreach from=$lineItems item=line}
-{line.title} {$line.line_total|crmMoney|string_format:"%10s"} {if $isShowTax && {contribution.tax_amount|boolean}} {$line.line_total|crmMoney:\'{contribution.currency}\'|string_format:"%10s"} {if $line.tax_rate || $line.tax_amount != ""} {$line.tax_rate|string_format:"%.2f"} % {$line.tax_amount|crmMoney:\'{contribution.currency}\'|string_format:"%10s"} {else} {/if} {$line.line_total_inclusive|crmMoney|string_format:"%10s"} {/if} {$line.membership.start_date|string_format:"%20s"} {$line.membership.end_date|string_format:"%20s"}
-{/foreach}
-
-{if $isShowTax && {contribution.tax_amount|boolean}}
-{ts}Amount before Tax:{/ts} {contribution.tax_exclusive_amount}
-
-{foreach from=$taxRateBreakdown item=taxDetail key=taxRate}
-{if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else} {$taxTerm} {$taxDetail.percentage}%{/if}: {$taxDetail.amount|crmMoney:\'{contribution.currency}\'}
-{/foreach}
-{/if}
---------------------------------------------------------------------------------------------------
-{/if}
-
-{if {contribution.tax_amount|boolean}}
-{ts}Total Tax Amount{/ts}: {contribution.tax_amount}
-{/if}
-
-{ts}Amount{/ts}: {contribution.total_amount}
-{if {contribution.receive_date|boolean}}
-{ts}Contribution Date{/ts}: {contribution.receive_date}
-{/if}
-{if {contribution.payment_instrument_id|boolean}}
-{ts}Paid By{/ts}: {contribution.payment_instrument_id:label}
-{if {contribution.check_number|boolean}}
-{ts}Check Number{/ts}: {contribution.check_number|boolean}
-{/if}
-{/if}
-{/if}
-{/if}
-
-{if !empty($isPrimary)}
-{if !empty($billingName)}
-
-===========================================================
-{ts}Billing Name and Address{/ts}
-
-===========================================================
-{$billingName}
-{$address}
-{/if}
-
-{if !empty($credit_card_type)}
-===========================================================
-{ts}Credit Card Information{/ts}
-
-===========================================================
-{$credit_card_type}
-{$credit_card_number}
-{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}
-{/if}
-{/if}
-
-{if !empty($customValues)}
-===========================================================
-{ts}Membership Options{/ts}
-
-===========================================================
-{foreach from=$customValues item=value key=customName}
- {$customName} : {$value}
-{/foreach}
-{/if}
-', '
@@ -15683,110 +15284,7 @@ or want to inquire about reinstating your registration for this event.{/ts}
{elseif $receiptType EQ \'membership renewal\'}
{ts}Membership Renewal Confirmation and Receipt{/ts}
{/if} - {contact.display_name}
-', '{assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}{$greeting},{/if}
-
-{if $userTextPlain}
-{$userTextPlain}
-{else}{ts}Thank you for this contribution.{/ts}{/if}
-
-{if !$isShowLineItems}
-===========================================================
-{ts}Membership Information{/ts}
-
-===========================================================
-{ts}Membership Type{/ts}: {membership.membership_type_id:name}
-{/if}
-{if \'{membership.status_id:name}\' !== \'Cancelled\'}
-{if !$isShowLineItems}
-{ts}Membership Start Date{/ts}: {membership.start_date|crmDate:"Full"}
-{ts}Membership Expiration Date{/ts}: {membership.end_date|crmDate:"Full"}
-{/if}
-
-{if {contribution.total_amount|boolean}}
-===========================================================
-{ts}Membership Fee{/ts}
-
-===========================================================
-{if {contribution.financial_type_id|boolean}}
-{ts}Financial Type{/ts}: {contribution.financial_type_id:label}
-{/if}
-{if $isShowLineItems}
-{capture assign=ts_item}{ts}Item{/ts}{/capture}
-{capture assign=ts_total}{ts}Fee{/ts}{/capture}
-{if $isShowTax && \'{contribution.tax_amount|boolean}\'}
-{capture assign=ts_subtotal}{ts}Subtotal{/ts}{/capture}
-{capture assign=ts_taxRate}{ts}Tax Rate{/ts}{/capture}
-{capture assign=ts_taxAmount}{ts}Tax Amount{/ts}{/capture}
-{capture assign=ts_total}{ts}Total{/ts}{/capture}
-{/if}
-{capture assign=ts_start_date}{ts}Membership Start Date{/ts}{/capture}
-{capture assign=ts_end_date}{ts}Membership Expiration Date{/ts}{/capture}
-{$ts_item|string_format:"%-30s"} {$ts_total|string_format:"%10s"} {if $isShowTax && {contribution.tax_amount|boolean}} {$ts_subtotal|string_format:"%10s"} {$ts_taxRate|string_format:"%10s"} {$ts_taxAmount|string_format:"%10s"} {$ts_total|string_format:"%10s"} {/if} {$ts_start_date|string_format:"%20s"} {$ts_end_date|string_format:"%20s"}
---------------------------------------------------------------------------------------------------
-
-{foreach from=$lineItems item=line}
-{line.title} {$line.line_total|crmMoney|string_format:"%10s"} {if $isShowTax && {contribution.tax_amount|boolean}} {$line.line_total|crmMoney:\'{contribution.currency}\'|string_format:"%10s"} {if $line.tax_rate || $line.tax_amount != ""} {$line.tax_rate|string_format:"%.2f"} % {$line.tax_amount|crmMoney:\'{contribution.currency}\'|string_format:"%10s"} {else} {/if} {$line.line_total_inclusive|crmMoney|string_format:"%10s"} {/if} {$line.membership.start_date|string_format:"%20s"} {$line.membership.end_date|string_format:"%20s"}
-{/foreach}
-
-{if $isShowTax && {contribution.tax_amount|boolean}}
-{ts}Amount before Tax:{/ts} {contribution.tax_exclusive_amount}
-
-{foreach from=$taxRateBreakdown item=taxDetail key=taxRate}
-{if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else} {$taxTerm} {$taxDetail.percentage}%{/if}: {$taxDetail.amount|crmMoney:\'{contribution.currency}\'}
-{/foreach}
-{/if}
---------------------------------------------------------------------------------------------------
-{/if}
-
-{if {contribution.tax_amount|boolean}}
-{ts}Total Tax Amount{/ts}: {contribution.tax_amount}
-{/if}
-
-{ts}Amount{/ts}: {contribution.total_amount}
-{if {contribution.receive_date|boolean}}
-{ts}Contribution Date{/ts}: {contribution.receive_date}
-{/if}
-{if {contribution.payment_instrument_id|boolean}}
-{ts}Paid By{/ts}: {contribution.payment_instrument_id:label}
-{if {contribution.check_number|boolean}}
-{ts}Check Number{/ts}: {contribution.check_number|boolean}
-{/if}
-{/if}
-{/if}
-{/if}
-
-{if !empty($isPrimary)}
-{if !empty($billingName)}
-
-===========================================================
-{ts}Billing Name and Address{/ts}
-
-===========================================================
-{$billingName}
-{$address}
-{/if}
-
-{if !empty($credit_card_type)}
-===========================================================
-{ts}Credit Card Information{/ts}
-
-===========================================================
-{$credit_card_type}
-{$credit_card_number}
-{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}
-{/if}
-{/if}
-
-{if !empty($customValues)}
-===========================================================
-{ts}Membership Options{/ts}
-
-===========================================================
-{foreach from=$customValues item=value key=customName}
- {$customName} : {$value}
-{/foreach}
-{/if}
-', '
@@ -16103,9 +15601,11 @@ or want to inquire about reinstating your registration for this event.{/ts}
{assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}{$greeting},
{/if}
- {if $userText}
- {$userText}
- {/if}
+ {if $userText}
+ {$userText}
+ {elseif {contribution.contribution_page_id.receipt_text|boolean}}
+ {contribution.contribution_page_id.receipt_text}
+ {/if}
{if {contribution.balance_amount|boolean} && {contribution.is_pay_later|boolean}}
{contribution.contribution_page_id.pay_later_receipt}
{/if}
@@ -16544,9 +16044,11 @@ or want to inquire about reinstating your registration for this event.{/ts}
{assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}{$greeting},
{/if}
- {if $userText}
- {$userText}
- {/if}
+ {if $userText}
+ {$userText}
+ {elseif {contribution.contribution_page_id.receipt_text|boolean}}
+ {contribution.contribution_page_id.receipt_text}
+ {/if}
{if {contribution.balance_amount|boolean} && {contribution.is_pay_later|boolean}}
{contribution.contribution_page_id.pay_later_receipt}
{/if}
@@ -16966,21 +16468,7 @@ or want to inquire about reinstating your registration for this event.{/ts}
(msg_title, msg_subject, msg_text, msg_html, workflow_name, workflow_id, is_default, is_reserved)
VALUES
('Memberships - Auto-renew Cancellation Notification', '{ts}Autorenew Membership Cancellation Notification{/ts} - {contact.display_name}
-', '{assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}{$greeting},{/if}
-
-{ts 1=$membershipType}The automatic renewal of your %1 membership has been cancelled as requested. This does not affect the status of your membership - you will receive a separate notification when your membership is up for renewal.{/ts}
-
-===========================================================
-{ts}Membership Information{/ts}
-
-===========================================================
-{ts}Membership Status{/ts}: {$membership_status}
-{if $mem_start_date}{ts}Membership Start Date{/ts}: {$mem_start_date|crmDate}
-{/if}
-{if $mem_end_date}{ts}Membership Expiration Date{/ts}: {$mem_end_date|crmDate}
-{/if}
-
-', '
+', '', '
@@ -17054,21 +16542,7 @@ or want to inquire about reinstating your registration for this event.{/ts}
(msg_title, msg_subject, msg_text, msg_html, workflow_name, workflow_id, is_default, is_reserved)
VALUES
('Memberships - Auto-renew Cancellation Notification', '{ts}Autorenew Membership Cancellation Notification{/ts} - {contact.display_name}
-', '{assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}{$greeting},{/if}
-
-{ts 1=$membershipType}The automatic renewal of your %1 membership has been cancelled as requested. This does not affect the status of your membership - you will receive a separate notification when your membership is up for renewal.{/ts}
-
-===========================================================
-{ts}Membership Information{/ts}
-
-===========================================================
-{ts}Membership Status{/ts}: {$membership_status}
-{if $mem_start_date}{ts}Membership Start Date{/ts}: {$mem_start_date|crmDate}
-{/if}
-{if $mem_end_date}{ts}Membership Expiration Date{/ts}: {$mem_end_date|crmDate}
-{/if}
-
-', '
+', '', '
@@ -17146,30 +16620,7 @@ or want to inquire about reinstating your registration for this event.{/ts}
(msg_title, msg_subject, msg_text, msg_html, workflow_name, workflow_id, is_default, is_reserved)
VALUES
('Memberships - Auto-renew Billing Updates', '{ts}Membership Autorenewal Billing Updates{/ts} - {contact.display_name}
-', '{assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}{$greeting},{/if}
-
-{ts 1=$membershipType}Billing details for your automatically renewed %1 membership have been updated.{/ts}
-
-===========================================================
-{ts}Billing Name and Address{/ts}
-
-===========================================================
-{$billingName}
-{$address}
-
-{$email}
-
-===========================================================
-{ts}Credit Card Information{/ts}
-
-===========================================================
-{$credit_card_type}
-{$credit_card_number}
-{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}
-
-
-{ts 1=$receipt_from_email}If you have questions please contact us at %1{/ts}
-', '
+', '', '
@@ -17239,30 +16690,7 @@ or want to inquire about reinstating your registration for this event.{/ts}
(msg_title, msg_subject, msg_text, msg_html, workflow_name, workflow_id, is_default, is_reserved)
VALUES
('Memberships - Auto-renew Billing Updates', '{ts}Membership Autorenewal Billing Updates{/ts} - {contact.display_name}
-', '{assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}{$greeting},{/if}
-
-{ts 1=$membershipType}Billing details for your automatically renewed %1 membership have been updated.{/ts}
-
-===========================================================
-{ts}Billing Name and Address{/ts}
-
-===========================================================
-{$billingName}
-{$address}
-
-{$email}
-
-===========================================================
-{ts}Credit Card Information{/ts}
-
-===========================================================
-{$credit_card_type}
-{$credit_card_number}
-{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}
-
-
-{ts 1=$receipt_from_email}If you have questions please contact us at %1{/ts}
-', '
+', '', '
@@ -17839,7 +17267,7 @@ or need to modify your payment schedule.{/ts}
INSERT INTO civicrm_msg_template
(msg_title, msg_subject, msg_text, msg_html, workflow_name, workflow_id, is_default, is_reserved)
VALUES
- ('Profiles - Admin Notification', '{$grouptitle} {ts 1=$displayName}Submitted by %1{/ts} - {contact.display_name}
+ ('Profiles - Admin Notification', '{$grouptitle} {ts 1=$userDisplayName}Submitted by %1{/ts} - {contact.display_name}
', '', '
@@ -17868,7 +17296,7 @@ or need to modify your payment schedule.{/ts}
{ts}Submitted For{/ts}
- {$displayName}
+ {contact.display_name}
@@ -17876,7 +17304,7 @@ or need to modify your payment schedule.{/ts}
{ts}Date{/ts}
- {$currentDate}
+ {domain.now|crmDate:"Full"}
@@ -17917,7 +17345,7 @@ or need to modify your payment schedule.{/ts}
INSERT INTO civicrm_msg_template
(msg_title, msg_subject, msg_text, msg_html, workflow_name, workflow_id, is_default, is_reserved)
VALUES
- ('Profiles - Admin Notification', '{$grouptitle} {ts 1=$displayName}Submitted by %1{/ts} - {contact.display_name}
+ ('Profiles - Admin Notification', '{$grouptitle} {ts 1=$userDisplayName}Submitted by %1{/ts} - {contact.display_name}
', '', '
@@ -17946,7 +17374,7 @@ or need to modify your payment schedule.{/ts}
{ts}Submitted For{/ts}
- {$displayName}
+ {contact.display_name}
@@ -17954,7 +17382,7 @@ or need to modify your payment schedule.{/ts}
{ts}Date{/ts}
- {$currentDate}
+ {domain.now|crmDate:"Full"}
@@ -19559,6 +18987,7 @@ INSERT INTO civicrm_option_value (`color`,`component_id`,`description`,`domain_i
(NULL,NULL,"",NULL,NULL,NULL,NULL,"1","0","0","1","Campaigns","Campaign",@this_option_group_id,"Campaign",NULL,"1")
;
+
-- +--------------------------------------------------------------------+
-- | Copyright CiviCRM LLC. All rights reserved. |
-- | |
@@ -19715,7 +19144,7 @@ VALUES
( @domainID, 'civicrm/participant/add?reset=1&action=add&context=standalone', 'Register Event Participant', 'Register Event Participant', 'access CiviEvent,edit event participants', 'AND', @eventlastID, '1', NULL, 2 ),
( @domainID, 'civicrm/event/search?reset=1', 'Find Participants', 'Find Participants', 'access CiviEvent', '', @eventlastID, '1', NULL, 3 ),
( @domainID, 'civicrm/report/list?compid=1&reset=1', 'Event Reports', 'Event Reports', 'access CiviEvent', '', @eventlastID, '1', 1, 4 ),
- ( @domainID, 'civicrm/event/import?reset=1', 'Import Participants','Import Participants', 'access CiviEvent,edit event participants', 'AND', @eventlastID, '1', '1', 5 ),
+ ( @domainID, 'civicrm/import/participant?reset=1', 'Import Participants','Import Participants', 'access CiviEvent,edit event participants', 'AND', @eventlastID, '1', '1', 5 ),
( @domainID, 'civicrm/event/add?reset=1&action=add', 'New Event', 'New Event', 'access CiviEvent,edit all events', 'AND', @eventlastID, '0', NULL, 6 ),
( @domainID, 'civicrm/event/manage?reset=1', 'Manage Events', 'Manage Events', 'access CiviEvent,edit all events', 'AND', @eventlastID, '1', 1, 7 ),
( @domainID, 'civicrm/admin/pcp?reset=1&page_type=event', 'Personal Campaign Pages', 'Personal Campaign Pages', 'access CiviEvent,administer CiviCRM', 'AND', @eventlastID, '1', 1, 8 ),
@@ -19759,7 +19188,7 @@ VALUES
( @domainID, 'civicrm/member/search?reset=1', 'Find Memberships', 'Find Memberships','access CiviMember', '', @memberlastID, '1', NULL, 3 ),
( @domainID, 'civicrm/report/list?compid=3&reset=1', 'Membership Reports', 'Membership Reports', 'access CiviMember', '', @memberlastID, '1', 1, 4 ),
( @domainID, 'civicrm/batch?reset=1', 'Batch Data Entry', 'Batch Data Entry','access CiviContribute', '', @memberlastID, '1', NULL, 5 ),
- ( @domainID, 'civicrm/member/import?reset=1', 'Import Memberships', 'Import Members', 'access CiviMember,edit memberships', 'AND', @memberlastID, '1', 1, 6 ),
+ ( @domainID, 'civicrm/import/membership?reset=1', 'Import Memberships', 'Import Members', 'access CiviMember,edit memberships', 'AND', @memberlastID, '1', 1, 6 ),
( @domainID, 'civicrm/admin/price/edit?reset=1&action=add', 'New Price Set', 'New Price Set', 'access CiviMember,administer CiviCRM', 'AND', @memberlastID, '0', NULL, 7 ),
( @domainID, 'civicrm/admin/price?reset=1', 'Manage Price Sets', 'Manage Price Sets', 'access CiviMember,administer CiviCRM', 'AND', @memberlastID, '1', NULL, 8 );
@@ -20088,7 +19517,7 @@ SET @reportlastID:=LAST_INSERT_ID();
INSERT INTO civicrm_navigation
( domain_id, url, label, name, permission, permission_operator, parent_id, is_active, has_separator, weight )
VALUES
- ( @domainID, 'civicrm/report/list?compid=99&reset=1', 'Contact Reports', 'Contact Reports', 'administer CiviCRM', '', @reportlastID, '1', 0, 1 );
+ ( @domainID, 'civicrm/report/list?compid=99&reset=1', 'Contact Reports', 'Contact Reports', 'access CiviReport', '', @reportlastID, '1', 0, 1 );
INSERT INTO civicrm_navigation
( domain_id, url, label, name, permission, permission_operator, parent_id, is_active, has_separator, weight )
VALUES
@@ -20304,4 +19733,6 @@ INSERT INTO `civicrm_report_instance`
( `domain_id`, `title`, `report_id`, `description`, `permission`, `form_values`)
VALUES
( @domainID, 'Survey Details', 'survey/detail', 'Detailed report for canvassing, phone-banking, walk lists or other surveys.', 'access CiviReport', 'a:39:{s:6:"fields";a:2:{s:9:"sort_name";s:1:"1";s:6:"result";s:1:"1";}s:22:"assignee_contact_id_op";s:2:"eq";s:25:"assignee_contact_id_value";s:0:"";s:12:"sort_name_op";s:3:"has";s:15:"sort_name_value";s:0:"";s:17:"street_number_min";s:0:"";s:17:"street_number_max";s:0:"";s:16:"street_number_op";s:3:"lte";s:19:"street_number_value";s:0:"";s:14:"street_name_op";s:3:"has";s:17:"street_name_value";s:0:"";s:15:"postal_code_min";s:0:"";s:15:"postal_code_max";s:0:"";s:14:"postal_code_op";s:3:"lte";s:17:"postal_code_value";s:0:"";s:7:"city_op";s:3:"has";s:10:"city_value";s:0:"";s:20:"state_province_id_op";s:2:"in";s:23:"state_province_id_value";a:0:{}s:13:"country_id_op";s:2:"in";s:16:"country_id_value";a:0:{}s:12:"survey_id_op";s:2:"in";s:15:"survey_id_value";a:0:{}s:12:"status_id_op";s:2:"eq";s:15:"status_id_value";s:1:"1";s:11:"custom_1_op";s:2:"in";s:14:"custom_1_value";a:0:{}s:11:"custom_2_op";s:2:"in";s:14:"custom_2_value";a:0:{}s:17:"custom_3_relative";s:1:"0";s:13:"custom_3_from";s:0:"";s:11:"custom_3_to";s:0:"";s:11:"description";s:75:"Detailed report for canvassing, phone-banking, walk lists or other surveys.";s:13:"email_subject";s:0:"";s:8:"email_to";s:0:"";s:8:"email_cc";s:0:"";s:10:"permission";s:17:"access CiviReport";s:6:"groups";s:0:"";s:9:"domain_id";i:1;}');
-UPDATE civicrm_domain SET version = '5.70.2';
+
+UPDATE civicrm_domain SET version = '5.74.4';
+
diff --git a/www/modules/civicrm/sql/civicrm_drop.mysql b/www/modules/civicrm/sql/civicrm_drop.mysql
index 43dd062fd..ee4eb4551 100644
--- a/www/modules/civicrm/sql/civicrm_drop.mysql
+++ b/www/modules/civicrm/sql/civicrm_drop.mysql
@@ -1,174 +1,155 @@
--- +--------------------------------------------------------------------+
--- | Copyright CiviCRM LLC. All rights reserved. |
--- | |
--- | This work is published under the GNU AGPLv3 license with some |
--- | permitted exceptions and without any warranty. For full license |
--- | and copyright information, see https://civicrm.org/licensing |
--- +--------------------------------------------------------------------+
---
--- Generated from drop.tpl
--- DO NOT EDIT. Generated by CRM_Core_CodeGen
---
--- /*******************************************************
--- *
--- * Clean up the existing tables
--- *
--- *******************************************************/
-
SET FOREIGN_KEY_CHECKS=0;
-
-DROP TABLE IF EXISTS `civicrm_line_item`;
-DROP TABLE IF EXISTS `civicrm_pledge_payment`;
-DROP TABLE IF EXISTS `civicrm_events_in_carts`;
-DROP TABLE IF EXISTS `civicrm_participant_payment`;
-DROP TABLE IF EXISTS `civicrm_participant`;
-DROP TABLE IF EXISTS `civicrm_event`;
-DROP TABLE IF EXISTS `civicrm_membership_payment`;
-DROP TABLE IF EXISTS `civicrm_entity_financial_trxn`;
-DROP TABLE IF EXISTS `civicrm_contribution_soft`;
-DROP TABLE IF EXISTS `civicrm_contribution_product`;
-DROP TABLE IF EXISTS `civicrm_contribution`;
-DROP TABLE IF EXISTS `civicrm_group_contact`;
-DROP TABLE IF EXISTS `civicrm_loc_block`;
-DROP TABLE IF EXISTS `civicrm_address`;
-DROP TABLE IF EXISTS `civicrm_pcp_block`;
-DROP TABLE IF EXISTS `civicrm_price_field_value`;
-DROP TABLE IF EXISTS `civicrm_price_field`;
-DROP TABLE IF EXISTS `civicrm_case_activity`;
-DROP TABLE IF EXISTS `civicrm_activity_contact`;
+DROP TABLE IF EXISTS `civicrm_acl`;
+DROP TABLE IF EXISTS `civicrm_acl_cache`;
+DROP TABLE IF EXISTS `civicrm_acl_entity_role`;
DROP TABLE IF EXISTS `civicrm_activity`;
-DROP TABLE IF EXISTS `civicrm_membership_log`;
-DROP TABLE IF EXISTS `civicrm_membership`;
-DROP TABLE IF EXISTS `civicrm_financial_trxn`;
-DROP TABLE IF EXISTS `civicrm_contribution_recur`;
-DROP TABLE IF EXISTS `civicrm_mailing_event_unsubscribe`;
-DROP TABLE IF EXISTS `civicrm_mailing_event_trackable_url_open`;
-DROP TABLE IF EXISTS `civicrm_mailing_event_reply`;
-DROP TABLE IF EXISTS `civicrm_mailing_event_opened`;
-DROP TABLE IF EXISTS `civicrm_mailing_event_forward`;
-DROP TABLE IF EXISTS `civicrm_mailing_event_delivered`;
-DROP TABLE IF EXISTS `civicrm_mailing_event_bounce`;
-DROP TABLE IF EXISTS `civicrm_mailing_event_queue`;
-DROP TABLE IF EXISTS `civicrm_mailing_spool`;
-DROP TABLE IF EXISTS `civicrm_mailing_recipients`;
-DROP TABLE IF EXISTS `civicrm_mailing_job`;
-DROP TABLE IF EXISTS `civicrm_mailing_trackable_url`;
-DROP TABLE IF EXISTS `civicrm_mailing_group`;
-DROP TABLE IF EXISTS `civicrm_mailing`;
-DROP TABLE IF EXISTS `civicrm_relationship_cache`;
-DROP TABLE IF EXISTS `civicrm_relationship`;
+DROP TABLE IF EXISTS `civicrm_activity_contact`;
+DROP TABLE IF EXISTS `civicrm_batch`;
+DROP TABLE IF EXISTS `civicrm_entity_batch`;
+DROP TABLE IF EXISTS `civicrm_campaign`;
+DROP TABLE IF EXISTS `civicrm_campaign_group`;
+DROP TABLE IF EXISTS `civicrm_survey`;
+DROP TABLE IF EXISTS `civicrm_case`;
+DROP TABLE IF EXISTS `civicrm_case_activity`;
+DROP TABLE IF EXISTS `civicrm_case_contact`;
+DROP TABLE IF EXISTS `civicrm_case_type`;
+DROP TABLE IF EXISTS `civicrm_acl_contact_cache`;
+DROP TABLE IF EXISTS `civicrm_contact`;
+DROP TABLE IF EXISTS `civicrm_contact_type`;
DROP TABLE IF EXISTS `civicrm_dashboard_contact`;
+DROP TABLE IF EXISTS `civicrm_group`;
+DROP TABLE IF EXISTS `civicrm_group_contact`;
+DROP TABLE IF EXISTS `civicrm_group_contact_cache`;
+DROP TABLE IF EXISTS `civicrm_group_nesting`;
+DROP TABLE IF EXISTS `civicrm_group_organization`;
+DROP TABLE IF EXISTS `civicrm_relationship`;
+DROP TABLE IF EXISTS `civicrm_relationship_cache`;
+DROP TABLE IF EXISTS `civicrm_relationship_type`;
+DROP TABLE IF EXISTS `civicrm_saved_search`;
+DROP TABLE IF EXISTS `civicrm_subscription_history`;
+DROP TABLE IF EXISTS `civicrm_contribution`;
+DROP TABLE IF EXISTS `civicrm_contribution_page`;
+DROP TABLE IF EXISTS `civicrm_contribution_product`;
+DROP TABLE IF EXISTS `civicrm_contribution_recur`;
+DROP TABLE IF EXISTS `civicrm_contribution_soft`;
+DROP TABLE IF EXISTS `civicrm_premiums`;
+DROP TABLE IF EXISTS `civicrm_premiums_product`;
+DROP TABLE IF EXISTS `civicrm_product`;
+DROP TABLE IF EXISTS `civicrm_contribution_widget`;
DROP TABLE IF EXISTS `civicrm_action_log`;
DROP TABLE IF EXISTS `civicrm_action_schedule`;
-DROP TABLE IF EXISTS `civicrm_uf_join`;
-DROP TABLE IF EXISTS `civicrm_uf_field`;
-DROP TABLE IF EXISTS `civicrm_uf_group`;
-DROP TABLE IF EXISTS `civicrm_entity_tag`;
-DROP TABLE IF EXISTS `civicrm_entity_file`;
-DROP TABLE IF EXISTS `civicrm_discount`;
-DROP TABLE IF EXISTS `civicrm_dashboard`;
+DROP TABLE IF EXISTS `civicrm_address`;
+DROP TABLE IF EXISTS `civicrm_address_format`;
+DROP TABLE IF EXISTS `civicrm_cache`;
+DROP TABLE IF EXISTS `civicrm_component`;
+DROP TABLE IF EXISTS `civicrm_country`;
DROP TABLE IF EXISTS `civicrm_county`;
-DROP TABLE IF EXISTS `civicrm_price_set_entity`;
-DROP TABLE IF EXISTS `civicrm_price_set`;
-DROP TABLE IF EXISTS `civicrm_report_instance`;
-DROP TABLE IF EXISTS `civicrm_pledge`;
-DROP TABLE IF EXISTS `civicrm_case_contact`;
-DROP TABLE IF EXISTS `civicrm_case`;
-DROP TABLE IF EXISTS `civicrm_membership_block`;
-DROP TABLE IF EXISTS `civicrm_membership_type`;
-DROP TABLE IF EXISTS `civicrm_sms_provider`;
-DROP TABLE IF EXISTS `civicrm_payment_token`;
-DROP TABLE IF EXISTS `civicrm_payment_processor`;
-DROP TABLE IF EXISTS `civicrm_contribution_widget`;
-DROP TABLE IF EXISTS `civicrm_premiums_product`;
-DROP TABLE IF EXISTS `civicrm_product`;
-DROP TABLE IF EXISTS `civicrm_contribution_page`;
-DROP TABLE IF EXISTS `civicrm_mailing_event_confirm`;
-DROP TABLE IF EXISTS `civicrm_mailing_event_subscribe`;
-DROP TABLE IF EXISTS `civicrm_group_organization`;
-DROP TABLE IF EXISTS `civicrm_group_nesting`;
-DROP TABLE IF EXISTS `civicrm_group_contact_cache`;
-DROP TABLE IF EXISTS `civicrm_subscription_history`;
-DROP TABLE IF EXISTS `civicrm_group`;
-DROP TABLE IF EXISTS `civicrm_status_pref`;
-DROP TABLE IF EXISTS `civicrm_word_replacement`;
+DROP TABLE IF EXISTS `civicrm_custom_field`;
+DROP TABLE IF EXISTS `civicrm_custom_group`;
+DROP TABLE IF EXISTS `civicrm_dashboard`;
+DROP TABLE IF EXISTS `civicrm_discount`;
+DROP TABLE IF EXISTS `civicrm_domain`;
+DROP TABLE IF EXISTS `civicrm_email`;
+DROP TABLE IF EXISTS `civicrm_entity_file`;
+DROP TABLE IF EXISTS `civicrm_entity_tag`;
+DROP TABLE IF EXISTS `civicrm_extension`;
+DROP TABLE IF EXISTS `civicrm_file`;
+DROP TABLE IF EXISTS `civicrm_im`;
+DROP TABLE IF EXISTS `civicrm_job`;
+DROP TABLE IF EXISTS `civicrm_job_log`;
+DROP TABLE IF EXISTS `civicrm_loc_block`;
+DROP TABLE IF EXISTS `civicrm_location_type`;
+DROP TABLE IF EXISTS `civicrm_log`;
+DROP TABLE IF EXISTS `civicrm_mail_settings`;
+DROP TABLE IF EXISTS `civicrm_managed`;
+DROP TABLE IF EXISTS `civicrm_mapping`;
+DROP TABLE IF EXISTS `civicrm_mapping_field`;
+DROP TABLE IF EXISTS `civicrm_menu`;
+DROP TABLE IF EXISTS `civicrm_msg_template`;
+DROP TABLE IF EXISTS `civicrm_navigation`;
+DROP TABLE IF EXISTS `civicrm_note`;
+DROP TABLE IF EXISTS `civicrm_openid`;
+DROP TABLE IF EXISTS `civicrm_option_group`;
+DROP TABLE IF EXISTS `civicrm_option_value`;
+DROP TABLE IF EXISTS `civicrm_phone`;
+DROP TABLE IF EXISTS `civicrm_preferences_date`;
+DROP TABLE IF EXISTS `civicrm_prevnext_cache`;
DROP TABLE IF EXISTS `civicrm_print_label`;
+DROP TABLE IF EXISTS `civicrm_recurring_entity`;
DROP TABLE IF EXISTS `civicrm_setting`;
-DROP TABLE IF EXISTS `civicrm_website`;
-DROP TABLE IF EXISTS `civicrm_openid`;
+DROP TABLE IF EXISTS `civicrm_state_province`;
+DROP TABLE IF EXISTS `civicrm_status_pref`;
+DROP TABLE IF EXISTS `civicrm_system_log`;
+DROP TABLE IF EXISTS `civicrm_tag`;
DROP TABLE IF EXISTS `civicrm_timezone`;
-DROP TABLE IF EXISTS `civicrm_user_job`;
+DROP TABLE IF EXISTS `civicrm_translation`;
+DROP TABLE IF EXISTS `civicrm_uf_field`;
+DROP TABLE IF EXISTS `civicrm_uf_group`;
+DROP TABLE IF EXISTS `civicrm_uf_join`;
DROP TABLE IF EXISTS `civicrm_uf_match`;
-DROP TABLE IF EXISTS `civicrm_tag`;
-DROP TABLE IF EXISTS `civicrm_state_province`;
-DROP TABLE IF EXISTS `civicrm_phone`;
-DROP TABLE IF EXISTS `civicrm_option_value`;
-DROP TABLE IF EXISTS `civicrm_note`;
-DROP TABLE IF EXISTS `civicrm_navigation`;
-DROP TABLE IF EXISTS `civicrm_menu`;
-DROP TABLE IF EXISTS `civicrm_mapping_field`;
-DROP TABLE IF EXISTS `civicrm_mail_settings`;
-DROP TABLE IF EXISTS `civicrm_log`;
-DROP TABLE IF EXISTS `civicrm_job_log`;
-DROP TABLE IF EXISTS `civicrm_job`;
-DROP TABLE IF EXISTS `civicrm_im`;
-DROP TABLE IF EXISTS `civicrm_file`;
-DROP TABLE IF EXISTS `civicrm_email`;
-DROP TABLE IF EXISTS `civicrm_domain`;
-DROP TABLE IF EXISTS `civicrm_custom_field`;
-DROP TABLE IF EXISTS `civicrm_custom_group`;
-DROP TABLE IF EXISTS `civicrm_country`;
-DROP TABLE IF EXISTS `civicrm_cache`;
+DROP TABLE IF EXISTS `civicrm_user_job`;
+DROP TABLE IF EXISTS `civicrm_website`;
+DROP TABLE IF EXISTS `civicrm_word_replacement`;
+DROP TABLE IF EXISTS `civicrm_worldregion`;
DROP TABLE IF EXISTS `civicrm_cxn`;
-DROP TABLE IF EXISTS `civicrm_pcp`;
-DROP TABLE IF EXISTS `civicrm_queue_item`;
-DROP TABLE IF EXISTS `civicrm_queue`;
-DROP TABLE IF EXISTS `civicrm_pledge_block`;
-DROP TABLE IF EXISTS `civicrm_tell_friend`;
-DROP TABLE IF EXISTS `civicrm_case_type`;
DROP TABLE IF EXISTS `civicrm_dedupe_exception`;
DROP TABLE IF EXISTS `civicrm_dedupe_rule`;
DROP TABLE IF EXISTS `civicrm_dedupe_rule_group`;
DROP TABLE IF EXISTS `civicrm_event_carts`;
+DROP TABLE IF EXISTS `civicrm_event`;
+DROP TABLE IF EXISTS `civicrm_events_in_carts`;
+DROP TABLE IF EXISTS `civicrm_participant`;
+DROP TABLE IF EXISTS `civicrm_participant_payment`;
DROP TABLE IF EXISTS `civicrm_participant_status_type`;
-DROP TABLE IF EXISTS `civicrm_survey`;
-DROP TABLE IF EXISTS `civicrm_campaign_group`;
-DROP TABLE IF EXISTS `civicrm_campaign`;
-DROP TABLE IF EXISTS `civicrm_membership_status`;
-DROP TABLE IF EXISTS `civicrm_financial_item`;
+DROP TABLE IF EXISTS `civicrm_currency`;
DROP TABLE IF EXISTS `civicrm_entity_financial_account`;
+DROP TABLE IF EXISTS `civicrm_entity_financial_trxn`;
+DROP TABLE IF EXISTS `civicrm_financial_account`;
+DROP TABLE IF EXISTS `civicrm_financial_item`;
+DROP TABLE IF EXISTS `civicrm_financial_trxn`;
DROP TABLE IF EXISTS `civicrm_financial_type`;
+DROP TABLE IF EXISTS `civicrm_payment_processor`;
DROP TABLE IF EXISTS `civicrm_payment_processor_type`;
-DROP TABLE IF EXISTS `civicrm_financial_account`;
-DROP TABLE IF EXISTS `civicrm_currency`;
-DROP TABLE IF EXISTS `civicrm_premiums`;
+DROP TABLE IF EXISTS `civicrm_payment_token`;
+DROP TABLE IF EXISTS `civicrm_tell_friend`;
DROP TABLE IF EXISTS `civicrm_mailing_bounce_pattern`;
DROP TABLE IF EXISTS `civicrm_mailing_bounce_type`;
+DROP TABLE IF EXISTS `civicrm_mailing`;
DROP TABLE IF EXISTS `civicrm_mailing_abtest`;
DROP TABLE IF EXISTS `civicrm_mailing_component`;
-DROP TABLE IF EXISTS `civicrm_entity_batch`;
-DROP TABLE IF EXISTS `civicrm_batch`;
-DROP TABLE IF EXISTS `civicrm_contact_type`;
-DROP TABLE IF EXISTS `civicrm_saved_search`;
-DROP TABLE IF EXISTS `civicrm_relationship_type`;
-DROP TABLE IF EXISTS `civicrm_acl_contact_cache`;
-DROP TABLE IF EXISTS `civicrm_contact`;
-DROP TABLE IF EXISTS `civicrm_acl_entity_role`;
-DROP TABLE IF EXISTS `civicrm_acl_cache`;
-DROP TABLE IF EXISTS `civicrm_acl`;
-DROP TABLE IF EXISTS `civicrm_recurring_entity`;
-DROP TABLE IF EXISTS `civicrm_prevnext_cache`;
-DROP TABLE IF EXISTS `civicrm_component`;
-DROP TABLE IF EXISTS `civicrm_worldregion`;
-DROP TABLE IF EXISTS `civicrm_translation`;
-DROP TABLE IF EXISTS `civicrm_system_log`;
-DROP TABLE IF EXISTS `civicrm_preferences_date`;
-DROP TABLE IF EXISTS `civicrm_option_group`;
-DROP TABLE IF EXISTS `civicrm_msg_template`;
-DROP TABLE IF EXISTS `civicrm_mapping`;
-DROP TABLE IF EXISTS `civicrm_managed`;
-DROP TABLE IF EXISTS `civicrm_location_type`;
-DROP TABLE IF EXISTS `civicrm_extension`;
-DROP TABLE IF EXISTS `civicrm_address_format`;
-
+DROP TABLE IF EXISTS `civicrm_mailing_event_bounce`;
+DROP TABLE IF EXISTS `civicrm_mailing_event_confirm`;
+DROP TABLE IF EXISTS `civicrm_mailing_event_delivered`;
+DROP TABLE IF EXISTS `civicrm_mailing_event_forward`;
+DROP TABLE IF EXISTS `civicrm_mailing_event_opened`;
+DROP TABLE IF EXISTS `civicrm_mailing_event_queue`;
+DROP TABLE IF EXISTS `civicrm_mailing_event_reply`;
+DROP TABLE IF EXISTS `civicrm_mailing_event_subscribe`;
+DROP TABLE IF EXISTS `civicrm_mailing_event_trackable_url_open`;
+DROP TABLE IF EXISTS `civicrm_mailing_event_unsubscribe`;
+DROP TABLE IF EXISTS `civicrm_mailing_group`;
+DROP TABLE IF EXISTS `civicrm_mailing_job`;
+DROP TABLE IF EXISTS `civicrm_mailing_recipients`;
+DROP TABLE IF EXISTS `civicrm_mailing_trackable_url`;
+DROP TABLE IF EXISTS `civicrm_mailing_spool`;
+DROP TABLE IF EXISTS `civicrm_membership`;
+DROP TABLE IF EXISTS `civicrm_membership_block`;
+DROP TABLE IF EXISTS `civicrm_membership_log`;
+DROP TABLE IF EXISTS `civicrm_membership_payment`;
+DROP TABLE IF EXISTS `civicrm_membership_status`;
+DROP TABLE IF EXISTS `civicrm_membership_type`;
+DROP TABLE IF EXISTS `civicrm_pcp`;
+DROP TABLE IF EXISTS `civicrm_pcp_block`;
+DROP TABLE IF EXISTS `civicrm_pledge`;
+DROP TABLE IF EXISTS `civicrm_pledge_block`;
+DROP TABLE IF EXISTS `civicrm_pledge_payment`;
+DROP TABLE IF EXISTS `civicrm_line_item`;
+DROP TABLE IF EXISTS `civicrm_price_field`;
+DROP TABLE IF EXISTS `civicrm_price_field_value`;
+DROP TABLE IF EXISTS `civicrm_price_set`;
+DROP TABLE IF EXISTS `civicrm_price_set_entity`;
+DROP TABLE IF EXISTS `civicrm_queue`;
+DROP TABLE IF EXISTS `civicrm_queue_item`;
+DROP TABLE IF EXISTS `civicrm_report_instance`;
+DROP TABLE IF EXISTS `civicrm_sms_provider`;
SET FOREIGN_KEY_CHECKS=1;
diff --git a/www/modules/civicrm/sql/civicrm_generated.mysql b/www/modules/civicrm/sql/civicrm_generated.mysql
index 2190f7fc9..2eb8d3786 100644
--- a/www/modules/civicrm/sql/civicrm_generated.mysql
+++ b/www/modules/civicrm/sql/civicrm_generated.mysql
@@ -1,15 +1,16 @@
--- MariaDB dump 10.19 Distrib 10.5.15-MariaDB, for debian-linux-gnu (x86_64)
+-- MySQL dump 10.13 Distrib 8.0.36, for Linux (x86_64)
--
--- Host: database Database: dmastercivicrm
+-- Host: 127.0.0.1 Database: db
-- ------------------------------------------------------
--- Server version 10.4.32-MariaDB-1:10.4.32+maria~ubu2004
+-- Server version 8.0.36
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
-/*!40101 SET NAMES utf8mb4 */;
+/*!50503 SET NAMES utf8mb4 */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
+/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
@@ -81,647 +82,647 @@ UNLOCK TABLES;
LOCK TABLES `civicrm_activity` WRITE;
/*!40000 ALTER TABLE `civicrm_activity` DISABLE KEYS */;
INSERT INTO `civicrm_activity` (`id`, `source_record_id`, `activity_type_id`, `subject`, `activity_date_time`, `duration`, `location`, `phone_id`, `phone_number`, `details`, `status_id`, `priority_id`, `parent_id`, `is_test`, `medium_id`, `is_auto`, `relationship_id`, `is_current_revision`, `original_id`, `result`, `is_deleted`, `campaign_id`, `engagement_level`, `weight`, `is_star`, `created_date`, `modified_date`) VALUES
- (1,NULL,56,'Subject for Interview','2023-12-08 20:02:13',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29'),
- (2,NULL,1,'Subject for Meeting','2023-08-31 16:31:31',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29'),
- (3,NULL,9,'Subject for Tell a Friend','2023-04-20 23:09:00',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29'),
- (4,NULL,56,'Subject for Interview','2023-11-19 20:00:13',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29'),
- (5,NULL,1,'Subject for Meeting','2023-05-22 16:08:47',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29'),
- (6,NULL,1,'Subject for Meeting','2023-07-03 00:18:29',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29'),
- (7,NULL,56,'Subject for Interview','2023-01-08 23:17:12',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29'),
- (8,NULL,2,'Subject for Phone Call','2023-08-23 04:58:41',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29'),
- (9,NULL,2,'Subject for Phone Call','2023-04-24 18:50:53',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29'),
- (10,NULL,2,'Subject for Phone Call','2023-09-06 03:25:21',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29'),
- (11,NULL,2,'Subject for Phone Call','2023-02-21 14:47:42',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29'),
- (12,NULL,56,'Subject for Interview','2023-07-14 16:07:39',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29'),
- (13,NULL,1,'Subject for Meeting','2023-08-11 12:02:39',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29'),
- (14,NULL,56,'Subject for Interview','2023-03-01 02:51:35',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29'),
- (15,NULL,22,'Subject for Print/Merge Document','2023-01-19 19:44:22',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29'),
- (16,NULL,1,'Subject for Meeting','2023-10-15 10:14:27',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29'),
- (17,NULL,56,'Subject for Interview','2023-08-12 17:24:05',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29'),
- (18,NULL,2,'Subject for Phone Call','2023-04-02 02:08:57',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29'),
- (19,NULL,22,'Subject for Print/Merge Document','2023-04-23 04:59:41',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29'),
- (20,NULL,22,'Subject for Print/Merge Document','2023-09-15 15:19:37',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29'),
- (21,NULL,56,'Subject for Interview','2023-02-26 08:45:07',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29'),
- (22,NULL,2,'Subject for Phone Call','2023-08-09 12:36:10',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29'),
- (23,NULL,22,'Subject for Print/Merge Document','2023-05-24 05:18:06',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29'),
- (24,NULL,1,'Subject for Meeting','2023-07-11 11:44:25',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29'),
- (25,NULL,56,'Subject for Interview','2023-11-27 21:29:46',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29'),
- (26,NULL,9,'Subject for Tell a Friend','2023-07-23 11:15:38',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29'),
- (27,NULL,22,'Subject for Print/Merge Document','2023-06-14 05:21:52',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29'),
- (28,NULL,2,'Subject for Phone Call','2023-07-18 10:21:10',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29'),
- (29,NULL,22,'Subject for Print/Merge Document','2023-06-30 05:54:30',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29'),
- (30,NULL,2,'Subject for Phone Call','2023-01-13 16:17:40',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29'),
- (31,NULL,2,'Subject for Phone Call','2023-01-12 21:50:25',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29'),
- (32,NULL,9,'Subject for Tell a Friend','2023-07-30 22:12:41',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29'),
- (33,NULL,2,'Subject for Phone Call','2023-01-14 13:39:32',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29'),
- (34,NULL,1,'Subject for Meeting','2023-10-30 12:32:29',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29'),
- (35,NULL,1,'Subject for Meeting','2023-05-18 11:51:15',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29'),
- (36,NULL,22,'Subject for Print/Merge Document','2023-11-04 20:51:54',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29'),
- (37,NULL,1,'Subject for Meeting','2023-02-18 10:23:44',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29'),
- (38,NULL,9,'Subject for Tell a Friend','2023-06-13 15:33:53',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29'),
- (39,NULL,2,'Subject for Phone Call','2023-06-03 05:16:11',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29'),
- (40,NULL,1,'Subject for Meeting','2023-12-16 19:06:33',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29'),
- (41,NULL,9,'Subject for Tell a Friend','2023-10-31 06:34:52',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29'),
- (42,NULL,9,'Subject for Tell a Friend','2023-05-10 21:32:51',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29'),
- (43,NULL,2,'Subject for Phone Call','2023-05-16 09:11:00',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29'),
- (44,NULL,1,'Subject for Meeting','2023-07-01 03:37:49',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29'),
- (45,NULL,22,'Subject for Print/Merge Document','2023-10-06 19:18:08',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29'),
- (46,NULL,22,'Subject for Print/Merge Document','2023-06-09 14:58:32',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29'),
- (47,NULL,22,'Subject for Print/Merge Document','2023-08-24 07:29:01',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29'),
- (48,NULL,56,'Subject for Interview','2023-06-14 20:22:18',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29'),
- (49,NULL,9,'Subject for Tell a Friend','2023-12-05 22:26:45',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29'),
- (50,NULL,1,'Subject for Meeting','2023-02-02 17:44:30',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29'),
- (51,NULL,22,'Subject for Print/Merge Document','2023-04-18 03:00:32',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29'),
- (52,NULL,9,'Subject for Tell a Friend','2023-04-24 08:38:24',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29'),
- (53,NULL,9,'Subject for Tell a Friend','2023-12-24 17:45:23',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29'),
- (54,NULL,1,'Subject for Meeting','2023-08-29 00:00:35',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29'),
- (55,NULL,1,'Subject for Meeting','2023-06-28 12:35:52',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29'),
- (56,NULL,22,'Subject for Print/Merge Document','2023-11-22 23:47:26',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29'),
- (57,NULL,9,'Subject for Tell a Friend','2023-12-11 12:58:23',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29'),
- (58,NULL,2,'Subject for Phone Call','2023-09-14 13:41:44',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29'),
- (59,NULL,1,'Subject for Meeting','2023-06-23 01:24:08',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29'),
- (60,NULL,1,'Subject for Meeting','2023-03-07 18:42:07',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29'),
- (61,NULL,9,'Subject for Tell a Friend','2023-07-07 20:26:44',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29'),
- (62,NULL,2,'Subject for Phone Call','2023-05-19 08:48:03',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29'),
- (63,NULL,22,'Subject for Print/Merge Document','2023-05-28 01:15:31',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29'),
- (64,NULL,9,'Subject for Tell a Friend','2023-11-03 08:48:20',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29'),
- (65,NULL,9,'Subject for Tell a Friend','2023-12-18 22:10:31',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29'),
- (66,NULL,2,'Subject for Phone Call','2023-03-18 12:22:54',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29'),
- (67,NULL,56,'Subject for Interview','2023-11-01 14:07:03',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29'),
- (68,NULL,9,'Subject for Tell a Friend','2023-07-25 15:05:26',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29'),
- (69,NULL,2,'Subject for Phone Call','2023-08-15 22:47:24',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29'),
- (70,NULL,2,'Subject for Phone Call','2023-11-04 22:54:46',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29'),
- (71,NULL,1,'Subject for Meeting','2023-11-13 07:02:14',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29'),
- (72,NULL,56,'Subject for Interview','2023-04-25 17:46:30',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29'),
- (73,NULL,1,'Subject for Meeting','2023-11-17 13:13:09',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29'),
- (74,NULL,1,'Subject for Meeting','2023-04-01 10:12:35',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29'),
- (75,NULL,2,'Subject for Phone Call','2023-11-28 06:57:38',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29'),
- (76,NULL,22,'Subject for Print/Merge Document','2023-11-12 19:32:46',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29'),
- (77,NULL,56,'Subject for Interview','2023-04-12 13:49:37',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29'),
- (78,NULL,9,'Subject for Tell a Friend','2023-12-30 12:22:18',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29'),
- (79,NULL,9,'Subject for Tell a Friend','2023-10-10 06:23:36',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29'),
- (80,NULL,22,'Subject for Print/Merge Document','2023-05-12 12:26:32',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29'),
- (81,NULL,22,'Subject for Print/Merge Document','2023-06-29 19:34:27',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29'),
- (82,NULL,22,'Subject for Print/Merge Document','2023-04-27 14:41:22',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29'),
- (83,NULL,22,'Subject for Print/Merge Document','2023-07-31 08:04:26',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29'),
- (84,NULL,22,'Subject for Print/Merge Document','2023-02-24 05:24:59',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29'),
- (85,NULL,22,'Subject for Print/Merge Document','2023-10-07 14:20:53',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29'),
- (86,NULL,9,'Subject for Tell a Friend','2023-08-18 05:18:02',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29'),
- (87,NULL,1,'Subject for Meeting','2023-05-14 18:32:35',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29'),
- (88,NULL,2,'Subject for Phone Call','2023-05-16 07:58:55',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29'),
- (89,NULL,2,'Subject for Phone Call','2023-06-13 14:52:36',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29'),
- (90,NULL,22,'Subject for Print/Merge Document','2023-05-02 12:12:45',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29'),
- (91,NULL,2,'Subject for Phone Call','2023-11-03 02:04:27',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29'),
- (92,NULL,9,'Subject for Tell a Friend','2023-07-11 05:11:15',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29'),
- (93,NULL,22,'Subject for Print/Merge Document','2023-12-16 11:33:40',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29'),
- (94,NULL,9,'Subject for Tell a Friend','2023-06-07 10:52:05',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29'),
- (95,NULL,56,'Subject for Interview','2023-03-23 08:11:38',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29'),
- (96,NULL,1,'Subject for Meeting','2023-07-23 07:30:25',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29'),
- (97,NULL,9,'Subject for Tell a Friend','2023-09-28 21:51:25',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29'),
- (98,NULL,1,'Subject for Meeting','2023-09-03 15:08:29',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29'),
- (99,NULL,1,'Subject for Meeting','2023-07-30 07:52:57',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29'),
- (100,NULL,56,'Subject for Interview','2023-10-12 23:10:13',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29'),
- (101,NULL,1,'Subject for Meeting','2023-04-19 03:03:37',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29'),
- (102,NULL,9,'Subject for Tell a Friend','2023-09-01 18:40:23',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29'),
- (103,NULL,56,'Subject for Interview','2023-08-29 02:50:54',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29'),
- (104,NULL,2,'Subject for Phone Call','2023-05-23 19:43:49',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29'),
- (105,NULL,2,'Subject for Phone Call','2023-12-28 10:55:33',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29'),
- (106,NULL,56,'Subject for Interview','2023-08-26 04:12:32',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29'),
- (107,NULL,56,'Subject for Interview','2023-09-08 19:07:13',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29'),
- (108,NULL,1,'Subject for Meeting','2023-06-28 20:12:54',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29'),
- (109,NULL,9,'Subject for Tell a Friend','2023-04-14 10:25:54',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29'),
- (110,NULL,9,'Subject for Tell a Friend','2023-04-20 21:54:39',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29'),
- (111,NULL,2,'Subject for Phone Call','2023-01-28 09:06:15',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29'),
- (112,NULL,22,'Subject for Print/Merge Document','2023-08-30 11:18:02',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29'),
- (113,NULL,1,'Subject for Meeting','2023-04-04 17:04:46',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29'),
- (114,NULL,9,'Subject for Tell a Friend','2023-03-29 22:31:52',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29'),
- (115,NULL,56,'Subject for Interview','2023-07-30 18:24:47',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29'),
- (116,NULL,56,'Subject for Interview','2023-08-31 03:05:18',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29'),
- (117,NULL,1,'Subject for Meeting','2023-09-28 23:55:34',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29'),
- (118,NULL,56,'Subject for Interview','2023-02-01 05:10:50',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29'),
- (119,NULL,56,'Subject for Interview','2023-07-02 17:10:17',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29'),
- (120,NULL,56,'Subject for Interview','2023-10-22 11:00:34',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29'),
- (121,NULL,22,'Subject for Print/Merge Document','2023-05-07 03:59:51',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29'),
- (122,NULL,1,'Subject for Meeting','2023-06-05 13:00:47',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29'),
- (123,NULL,2,'Subject for Phone Call','2023-06-05 11:37:22',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29'),
- (124,NULL,1,'Subject for Meeting','2023-03-05 09:21:15',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29'),
- (125,NULL,56,'Subject for Interview','2023-07-07 16:43:28',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29'),
- (126,NULL,2,'Subject for Phone Call','2023-06-19 13:52:02',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29'),
- (127,NULL,1,'Subject for Meeting','2023-02-15 16:12:59',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29'),
- (128,NULL,56,'Subject for Interview','2023-03-07 22:10:09',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29'),
- (129,NULL,56,'Subject for Interview','2023-01-25 03:39:41',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29'),
- (130,NULL,1,'Subject for Meeting','2023-03-22 17:19:17',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29'),
- (131,NULL,1,'Subject for Meeting','2023-03-11 07:40:17',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29'),
- (132,NULL,1,'Subject for Meeting','2023-01-18 09:59:06',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29'),
- (133,NULL,1,'Subject for Meeting','2023-10-05 13:03:16',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29'),
- (134,NULL,1,'Subject for Meeting','2023-07-25 18:18:45',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29'),
- (135,NULL,22,'Subject for Print/Merge Document','2023-02-23 06:08:35',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29'),
- (136,NULL,2,'Subject for Phone Call','2023-12-19 21:49:00',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29'),
- (137,NULL,56,'Subject for Interview','2023-06-03 05:53:24',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29'),
- (138,NULL,9,'Subject for Tell a Friend','2023-04-10 21:32:25',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29'),
- (139,NULL,1,'Subject for Meeting','2023-09-29 08:44:45',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29'),
- (140,NULL,9,'Subject for Tell a Friend','2023-04-25 19:53:07',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29'),
- (141,NULL,9,'Subject for Tell a Friend','2023-09-04 03:55:59',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29'),
- (142,NULL,9,'Subject for Tell a Friend','2023-05-09 03:50:41',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29'),
- (143,NULL,2,'Subject for Phone Call','2023-02-20 06:36:19',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29'),
- (144,NULL,9,'Subject for Tell a Friend','2023-02-28 02:42:30',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29'),
- (145,NULL,9,'Subject for Tell a Friend','2023-05-07 10:21:13',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29'),
- (146,NULL,56,'Subject for Interview','2023-10-09 17:48:12',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29'),
- (147,NULL,1,'Subject for Meeting','2023-03-24 01:57:47',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29'),
- (148,NULL,2,'Subject for Phone Call','2023-09-21 17:11:04',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29'),
- (149,NULL,56,'Subject for Interview','2023-12-18 16:15:15',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29'),
- (150,NULL,1,'Subject for Meeting','2023-05-30 02:05:26',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29'),
- (151,NULL,1,'Subject for Meeting','2023-07-23 16:49:15',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29'),
- (152,NULL,1,'Subject for Meeting','2023-11-25 16:54:44',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29'),
- (153,NULL,22,'Subject for Print/Merge Document','2023-12-31 10:09:30',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29'),
- (154,NULL,56,'Subject for Interview','2023-06-17 07:12:05',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29'),
- (155,NULL,1,'Subject for Meeting','2023-10-26 07:29:22',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29'),
- (156,NULL,56,'Subject for Interview','2023-11-20 08:33:00',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29'),
- (157,NULL,56,'Subject for Interview','2023-12-09 16:37:17',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29'),
- (158,NULL,9,'Subject for Tell a Friend','2024-01-01 09:40:28',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29'),
- (159,NULL,9,'Subject for Tell a Friend','2023-01-19 22:41:51',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29'),
- (160,NULL,1,'Subject for Meeting','2023-03-20 08:29:19',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29'),
- (161,NULL,9,'Subject for Tell a Friend','2023-12-03 21:05:24',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29'),
- (162,NULL,22,'Subject for Print/Merge Document','2023-02-03 12:17:32',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29'),
- (163,NULL,2,'Subject for Phone Call','2023-07-26 12:16:33',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29'),
- (164,NULL,2,'Subject for Phone Call','2023-12-27 01:31:10',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29'),
- (165,NULL,56,'Subject for Interview','2023-05-01 03:48:45',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29'),
- (166,NULL,2,'Subject for Phone Call','2023-04-20 15:02:33',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29'),
- (167,NULL,1,'Subject for Meeting','2023-08-12 06:07:22',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29'),
- (168,NULL,2,'Subject for Phone Call','2023-05-10 04:17:33',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29'),
- (169,NULL,22,'Subject for Print/Merge Document','2023-01-22 06:32:25',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29'),
- (170,NULL,9,'Subject for Tell a Friend','2023-08-08 10:23:42',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29'),
- (171,NULL,9,'Subject for Tell a Friend','2023-03-17 09:45:13',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29'),
- (172,NULL,22,'Subject for Print/Merge Document','2023-08-06 17:03:42',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29'),
- (173,NULL,9,'Subject for Tell a Friend','2023-11-22 23:11:34',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29'),
- (174,NULL,2,'Subject for Phone Call','2023-12-03 01:03:45',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29'),
- (175,NULL,22,'Subject for Print/Merge Document','2023-07-02 11:17:57',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29'),
- (176,NULL,1,'Subject for Meeting','2023-09-22 01:12:31',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29'),
- (177,NULL,2,'Subject for Phone Call','2023-07-16 00:45:01',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29'),
- (178,NULL,9,'Subject for Tell a Friend','2023-07-29 22:06:27',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29'),
- (179,NULL,1,'Subject for Meeting','2023-11-23 09:55:47',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29'),
- (180,NULL,22,'Subject for Print/Merge Document','2023-09-12 09:44:53',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29'),
- (181,NULL,2,'Subject for Phone Call','2023-11-16 11:10:21',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29'),
- (182,NULL,2,'Subject for Phone Call','2023-01-18 02:46:06',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29'),
- (183,NULL,56,'Subject for Interview','2023-06-11 10:04:13',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29'),
- (184,NULL,56,'Subject for Interview','2023-02-05 16:20:44',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29'),
- (185,NULL,56,'Subject for Interview','2023-06-11 22:09:04',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (186,NULL,22,'Subject for Print/Merge Document','2023-06-27 13:37:04',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (187,NULL,56,'Subject for Interview','2023-02-12 02:40:53',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (188,NULL,2,'Subject for Phone Call','2023-03-07 10:52:39',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (189,NULL,1,'Subject for Meeting','2023-03-14 07:12:00',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (190,NULL,9,'Subject for Tell a Friend','2023-03-25 01:23:11',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (191,NULL,9,'Subject for Tell a Friend','2023-02-16 01:57:20',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (192,NULL,9,'Subject for Tell a Friend','2023-08-07 10:00:15',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (193,NULL,9,'Subject for Tell a Friend','2023-06-19 14:56:07',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (194,NULL,1,'Subject for Meeting','2023-08-08 13:48:36',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (195,NULL,2,'Subject for Phone Call','2023-10-07 15:52:20',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (196,NULL,9,'Subject for Tell a Friend','2023-07-21 23:53:01',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (197,NULL,1,'Subject for Meeting','2023-04-21 06:18:03',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (198,NULL,22,'Subject for Print/Merge Document','2023-11-17 10:27:15',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (199,NULL,2,'Subject for Phone Call','2023-09-29 03:50:04',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (200,NULL,9,'Subject for Tell a Friend','2023-08-08 07:24:11',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (201,NULL,1,'Subject for Meeting','2023-07-17 08:01:39',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (202,NULL,1,'Subject for Meeting','2023-06-21 16:58:34',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (203,NULL,56,'Subject for Interview','2023-10-03 05:05:50',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (204,NULL,56,'Subject for Interview','2023-04-06 21:45:30',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (205,NULL,22,'Subject for Print/Merge Document','2023-02-08 04:12:52',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (206,NULL,56,'Subject for Interview','2023-04-21 23:57:21',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (207,NULL,1,'Subject for Meeting','2023-01-09 06:20:34',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (208,NULL,22,'Subject for Print/Merge Document','2023-06-06 15:09:23',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (209,NULL,22,'Subject for Print/Merge Document','2023-04-09 17:17:10',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (210,NULL,2,'Subject for Phone Call','2023-07-23 13:14:55',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (211,NULL,56,'Subject for Interview','2023-12-27 08:47:27',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (212,NULL,22,'Subject for Print/Merge Document','2024-01-02 04:11:54',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (213,NULL,2,'Subject for Phone Call','2023-10-21 15:23:47',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (214,NULL,1,'Subject for Meeting','2024-01-03 18:15:04',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (215,NULL,22,'Subject for Print/Merge Document','2023-04-25 20:47:03',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (216,NULL,22,'Subject for Print/Merge Document','2023-08-05 00:54:31',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (217,NULL,9,'Subject for Tell a Friend','2023-02-24 10:44:26',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (218,NULL,56,'Subject for Interview','2023-11-27 18:58:41',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (219,NULL,2,'Subject for Phone Call','2023-12-19 03:16:32',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (220,NULL,2,'Subject for Phone Call','2023-09-05 13:58:02',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (221,NULL,1,'Subject for Meeting','2023-12-11 23:27:28',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (222,NULL,2,'Subject for Phone Call','2023-07-23 13:18:31',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (223,NULL,22,'Subject for Print/Merge Document','2023-10-15 09:56:59',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (224,NULL,9,'Subject for Tell a Friend','2023-04-29 11:21:59',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (225,NULL,9,'Subject for Tell a Friend','2023-03-28 22:22:11',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (226,NULL,56,'Subject for Interview','2023-06-30 03:16:21',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (227,NULL,22,'Subject for Print/Merge Document','2023-12-23 12:09:55',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (228,NULL,9,'Subject for Tell a Friend','2023-01-12 05:47:14',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (229,NULL,56,'Subject for Interview','2023-09-05 01:28:02',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (230,NULL,1,'Subject for Meeting','2023-06-08 17:56:57',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (231,NULL,56,'Subject for Interview','2023-05-15 06:51:05',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (232,NULL,56,'Subject for Interview','2023-06-11 08:57:11',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (233,NULL,2,'Subject for Phone Call','2023-12-22 23:33:21',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (234,NULL,56,'Subject for Interview','2023-10-17 11:38:23',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (235,NULL,2,'Subject for Phone Call','2023-09-06 13:27:16',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (236,NULL,9,'Subject for Tell a Friend','2023-02-15 23:58:49',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (237,NULL,9,'Subject for Tell a Friend','2023-05-06 18:48:05',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (238,NULL,22,'Subject for Print/Merge Document','2024-01-01 21:18:07',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (239,NULL,1,'Subject for Meeting','2023-11-22 20:36:56',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (240,NULL,1,'Subject for Meeting','2023-08-16 21:19:14',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (241,NULL,56,'Subject for Interview','2023-08-08 03:41:44',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (242,NULL,22,'Subject for Print/Merge Document','2023-05-30 09:31:44',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (243,NULL,1,'Subject for Meeting','2023-10-25 03:28:04',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (244,NULL,2,'Subject for Phone Call','2023-05-04 19:47:23',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (245,NULL,2,'Subject for Phone Call','2023-03-20 16:29:44',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (246,NULL,1,'Subject for Meeting','2023-10-04 20:39:36',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (247,NULL,1,'Subject for Meeting','2023-08-23 16:16:44',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (248,NULL,1,'Subject for Meeting','2023-09-17 20:05:45',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (249,NULL,1,'Subject for Meeting','2023-08-17 02:08:44',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (250,NULL,22,'Subject for Print/Merge Document','2023-02-08 15:00:45',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (251,NULL,1,'Subject for Meeting','2023-11-03 07:55:22',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (252,NULL,1,'Subject for Meeting','2023-03-01 22:12:29',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (253,NULL,22,'Subject for Print/Merge Document','2023-11-26 04:46:58',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (254,NULL,1,'Subject for Meeting','2023-02-13 05:24:44',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (255,NULL,2,'Subject for Phone Call','2023-12-27 02:40:50',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (256,NULL,9,'Subject for Tell a Friend','2023-08-04 20:19:15',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (257,NULL,9,'Subject for Tell a Friend','2023-11-02 14:50:10',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (258,NULL,1,'Subject for Meeting','2023-02-13 03:00:11',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (259,NULL,2,'Subject for Phone Call','2023-02-27 22:39:06',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (260,NULL,56,'Subject for Interview','2023-02-21 19:09:48',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (261,NULL,56,'Subject for Interview','2023-04-28 16:18:34',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (262,NULL,22,'Subject for Print/Merge Document','2023-10-23 00:51:03',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (263,NULL,2,'Subject for Phone Call','2023-01-20 00:58:31',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (264,NULL,1,'Subject for Meeting','2023-01-29 14:16:12',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (265,NULL,1,'Subject for Meeting','2023-08-30 00:26:44',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (266,NULL,9,'Subject for Tell a Friend','2024-01-02 00:35:33',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (267,NULL,9,'Subject for Tell a Friend','2023-10-10 09:49:12',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (268,NULL,1,'Subject for Meeting','2023-11-01 11:12:31',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (269,NULL,56,'Subject for Interview','2023-12-22 04:12:25',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (270,NULL,1,'Subject for Meeting','2023-06-16 23:56:32',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (271,NULL,9,'Subject for Tell a Friend','2023-08-09 02:39:12',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (272,NULL,2,'Subject for Phone Call','2023-05-04 02:37:06',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (273,NULL,9,'Subject for Tell a Friend','2023-04-21 19:03:34',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (274,NULL,2,'Subject for Phone Call','2023-02-07 12:09:39',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (275,NULL,1,'Subject for Meeting','2023-09-21 08:37:11',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (276,NULL,9,'Subject for Tell a Friend','2023-04-28 01:58:30',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (277,NULL,1,'Subject for Meeting','2023-08-02 09:27:10',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (278,NULL,9,'Subject for Tell a Friend','2023-11-21 11:15:13',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (279,NULL,22,'Subject for Print/Merge Document','2023-04-20 16:17:40',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (280,NULL,22,'Subject for Print/Merge Document','2023-05-08 14:23:39',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (281,NULL,1,'Subject for Meeting','2023-05-15 16:18:09',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (282,NULL,9,'Subject for Tell a Friend','2023-05-25 07:58:36',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (283,NULL,22,'Subject for Print/Merge Document','2023-08-28 19:56:46',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (284,NULL,1,'Subject for Meeting','2023-05-18 09:32:41',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (285,NULL,9,'Subject for Tell a Friend','2023-01-09 00:16:12',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (286,NULL,2,'Subject for Phone Call','2023-06-12 05:53:19',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (287,NULL,2,'Subject for Phone Call','2023-02-10 05:05:26',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (288,NULL,9,'Subject for Tell a Friend','2023-11-30 14:20:29',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (289,NULL,9,'Subject for Tell a Friend','2023-03-14 06:12:03',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (290,NULL,22,'Subject for Print/Merge Document','2023-02-18 19:10:08',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (291,NULL,22,'Subject for Print/Merge Document','2023-10-03 19:17:29',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (292,NULL,56,'Subject for Interview','2023-01-23 06:16:26',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (293,NULL,56,'Subject for Interview','2023-11-03 18:10:56',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (294,NULL,1,'Subject for Meeting','2023-11-28 21:07:57',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (295,NULL,22,'Subject for Print/Merge Document','2023-10-09 12:09:02',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (296,NULL,9,'Subject for Tell a Friend','2023-12-08 00:44:30',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (297,NULL,22,'Subject for Print/Merge Document','2023-09-29 20:01:38',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (298,NULL,56,'Subject for Interview','2023-09-08 07:16:13',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (299,NULL,56,'Subject for Interview','2023-07-29 16:03:01',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (300,NULL,1,'Subject for Meeting','2023-02-21 23:11:19',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (301,NULL,22,'Subject for Print/Merge Document','2023-03-19 10:12:26',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (302,NULL,1,'Subject for Meeting','2023-08-27 16:32:17',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (303,NULL,1,'Subject for Meeting','2023-10-21 07:30:14',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (304,NULL,1,'Subject for Meeting','2023-01-25 12:51:49',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (305,NULL,22,'Subject for Print/Merge Document','2023-10-09 08:00:54',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (306,NULL,2,'Subject for Phone Call','2023-10-10 06:36:53',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (307,NULL,56,'Subject for Interview','2023-11-18 10:23:59',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (308,NULL,9,'Subject for Tell a Friend','2023-07-06 00:43:52',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (309,NULL,9,'Subject for Tell a Friend','2023-08-07 11:08:12',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (310,NULL,1,'Subject for Meeting','2023-12-23 20:35:21',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (311,NULL,9,'Subject for Tell a Friend','2023-04-22 15:23:52',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (312,NULL,56,'Subject for Interview','2023-12-11 17:21:17',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (313,NULL,9,'Subject for Tell a Friend','2024-01-04 02:52:31',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (314,NULL,9,'Subject for Tell a Friend','2023-03-17 14:01:54',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (315,NULL,1,'Subject for Meeting','2023-10-08 01:36:00',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (316,NULL,1,'Subject for Meeting','2023-04-04 08:13:49',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (317,NULL,1,'Subject for Meeting','2023-05-03 17:35:14',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (318,NULL,9,'Subject for Tell a Friend','2023-09-17 13:10:20',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (319,NULL,22,'Subject for Print/Merge Document','2023-01-12 04:48:40',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (320,NULL,1,'Subject for Meeting','2023-03-28 17:30:18',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (321,NULL,22,'Subject for Print/Merge Document','2023-05-22 09:35:54',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (322,NULL,56,'Subject for Interview','2023-04-08 20:27:55',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (323,NULL,2,'Subject for Phone Call','2023-02-05 18:46:47',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (324,NULL,9,'Subject for Tell a Friend','2023-06-28 16:07:33',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (325,NULL,2,'Subject for Phone Call','2023-05-09 19:30:35',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (326,NULL,22,'Subject for Print/Merge Document','2023-02-08 22:13:41',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (327,NULL,56,'Subject for Interview','2023-10-01 01:38:47',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (328,NULL,56,'Subject for Interview','2023-01-08 05:09:48',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (329,NULL,9,'Subject for Tell a Friend','2023-04-26 21:59:12',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (330,NULL,22,'Subject for Print/Merge Document','2023-04-20 22:55:32',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (331,NULL,1,'Subject for Meeting','2023-07-02 23:06:49',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (332,NULL,22,'Subject for Print/Merge Document','2023-05-16 12:17:42',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (333,NULL,9,'Subject for Tell a Friend','2023-07-03 04:22:07',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (334,NULL,2,'Subject for Phone Call','2023-12-24 17:51:09',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (335,NULL,1,'Subject for Meeting','2023-03-31 11:25:08',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (336,NULL,56,'Subject for Interview','2023-06-10 15:37:30',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (337,NULL,2,'Subject for Phone Call','2023-10-14 18:36:53',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (338,NULL,22,'Subject for Print/Merge Document','2023-02-25 11:36:05',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (339,NULL,22,'Subject for Print/Merge Document','2023-12-21 18:51:11',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (340,NULL,22,'Subject for Print/Merge Document','2023-08-06 04:47:06',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (341,NULL,9,'Subject for Tell a Friend','2023-01-11 08:02:41',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (342,NULL,1,'Subject for Meeting','2023-06-18 02:03:07',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (343,NULL,2,'Subject for Phone Call','2023-05-24 07:07:01',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (344,NULL,56,'Subject for Interview','2023-12-23 04:46:49',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (345,NULL,9,'Subject for Tell a Friend','2023-02-06 01:43:17',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (346,NULL,22,'Subject for Print/Merge Document','2023-11-18 14:02:58',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (347,NULL,9,'Subject for Tell a Friend','2023-09-17 22:43:11',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (348,NULL,9,'Subject for Tell a Friend','2023-09-12 21:37:27',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (349,NULL,9,'Subject for Tell a Friend','2023-10-02 21:18:48',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (350,NULL,1,'Subject for Meeting','2023-06-07 12:25:15',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (351,NULL,56,'Subject for Interview','2023-09-23 18:49:33',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (352,NULL,2,'Subject for Phone Call','2023-07-18 22:18:48',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (353,NULL,1,'Subject for Meeting','2023-03-14 09:17:30',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (354,NULL,56,'Subject for Interview','2023-06-27 05:12:45',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (355,NULL,1,'Subject for Meeting','2023-10-29 14:21:13',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (356,NULL,22,'Subject for Print/Merge Document','2023-11-13 07:07:12',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (357,NULL,22,'Subject for Print/Merge Document','2023-12-26 21:40:50',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (358,NULL,22,'Subject for Print/Merge Document','2023-11-27 17:22:08',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (359,NULL,1,'Subject for Meeting','2023-10-27 09:43:26',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (360,NULL,1,'Subject for Meeting','2023-04-27 21:02:14',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (361,NULL,2,'Subject for Phone Call','2023-04-17 10:53:36',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (362,NULL,1,'Subject for Meeting','2023-06-04 15:41:18',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (363,NULL,9,'Subject for Tell a Friend','2023-09-12 02:02:17',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (364,NULL,2,'Subject for Phone Call','2023-11-30 21:20:54',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (365,NULL,9,'Subject for Tell a Friend','2023-11-25 02:40:53',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (366,NULL,2,'Subject for Phone Call','2023-10-09 02:33:27',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (367,NULL,56,'Subject for Interview','2023-01-07 11:54:54',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (368,NULL,22,'Subject for Print/Merge Document','2023-06-15 18:13:13',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (369,NULL,1,'Subject for Meeting','2023-03-07 13:27:43',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (370,NULL,9,'Subject for Tell a Friend','2023-02-09 09:40:27',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (371,NULL,1,'Subject for Meeting','2023-08-19 07:29:44',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (372,NULL,1,'Subject for Meeting','2023-03-23 14:37:14',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (373,NULL,22,'Subject for Print/Merge Document','2023-12-01 22:07:50',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (374,NULL,9,'Subject for Tell a Friend','2023-02-13 18:28:42',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (375,NULL,2,'Subject for Phone Call','2023-01-18 16:09:05',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (376,NULL,9,'Subject for Tell a Friend','2023-01-17 12:40:56',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (377,NULL,1,'Subject for Meeting','2023-09-25 03:21:41',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (378,NULL,22,'Subject for Print/Merge Document','2023-11-23 04:33:41',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (379,NULL,2,'Subject for Phone Call','2023-07-27 21:33:12',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (380,NULL,2,'Subject for Phone Call','2023-03-15 00:45:36',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (381,NULL,9,'Subject for Tell a Friend','2023-04-13 15:32:28',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (382,NULL,56,'Subject for Interview','2023-02-11 11:21:57',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (383,NULL,56,'Subject for Interview','2023-12-02 19:02:23',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (384,NULL,22,'Subject for Print/Merge Document','2023-05-27 17:40:45',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (385,NULL,9,'Subject for Tell a Friend','2023-05-04 06:27:40',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (386,NULL,56,'Subject for Interview','2024-01-02 09:28:03',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (387,NULL,9,'Subject for Tell a Friend','2023-04-16 21:31:56',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (388,NULL,9,'Subject for Tell a Friend','2023-09-30 20:46:57',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (389,NULL,9,'Subject for Tell a Friend','2023-01-23 21:27:00',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (390,NULL,22,'Subject for Print/Merge Document','2023-04-19 04:42:14',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (391,NULL,56,'Subject for Interview','2023-10-14 22:23:21',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (392,NULL,56,'Subject for Interview','2023-11-03 01:16:18',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (393,NULL,1,'Subject for Meeting','2023-03-21 15:54:34',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (394,NULL,9,'Subject for Tell a Friend','2023-08-22 17:26:31',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (395,NULL,9,'Subject for Tell a Friend','2023-07-23 14:57:41',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (396,NULL,1,'Subject for Meeting','2023-10-03 22:22:48',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (397,NULL,1,'Subject for Meeting','2023-09-17 18:19:05',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (398,NULL,56,'Subject for Interview','2023-08-12 11:55:32',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (399,NULL,1,'Subject for Meeting','2023-10-31 11:34:24',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (400,NULL,1,'Subject for Meeting','2023-12-05 18:46:20',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (401,NULL,22,'Subject for Print/Merge Document','2023-05-26 12:29:20',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (402,NULL,2,'Subject for Phone Call','2023-04-20 20:26:49',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (403,NULL,22,'Subject for Print/Merge Document','2023-11-05 19:48:57',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (404,NULL,22,'Subject for Print/Merge Document','2023-09-27 18:46:37',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (405,NULL,56,'Subject for Interview','2023-08-11 16:45:27',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (406,NULL,22,'Subject for Print/Merge Document','2023-02-15 04:45:26',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (407,NULL,1,'Subject for Meeting','2023-10-30 00:03:34',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (408,NULL,2,'Subject for Phone Call','2023-10-18 04:20:02',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (409,NULL,56,'Subject for Interview','2023-09-25 11:35:31',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (410,NULL,56,'Subject for Interview','2023-01-22 11:32:12',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (411,NULL,2,'Subject for Phone Call','2023-07-10 14:35:14',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (412,NULL,2,'Subject for Phone Call','2023-06-20 18:32:11',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (413,NULL,9,'Subject for Tell a Friend','2023-02-12 16:05:09',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (414,NULL,22,'Subject for Print/Merge Document','2023-12-14 02:02:02',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (415,NULL,9,'Subject for Tell a Friend','2023-02-22 17:43:41',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (416,NULL,2,'Subject for Phone Call','2023-05-03 04:10:54',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (417,NULL,9,'Subject for Tell a Friend','2023-06-19 17:53:42',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (418,NULL,9,'Subject for Tell a Friend','2023-04-29 11:50:49',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (419,NULL,9,'Subject for Tell a Friend','2023-05-22 10:56:35',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (420,NULL,56,'Subject for Interview','2023-12-30 17:18:56',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (421,NULL,56,'Subject for Interview','2023-03-03 13:25:21',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (422,NULL,2,'Subject for Phone Call','2023-10-26 17:43:09',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (423,NULL,2,'Subject for Phone Call','2023-11-01 20:33:08',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (424,NULL,9,'Subject for Tell a Friend','2023-06-25 07:37:18',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (425,NULL,1,'Subject for Meeting','2023-09-11 05:16:59',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (426,NULL,9,'Subject for Tell a Friend','2023-12-15 22:30:04',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (427,NULL,2,'Subject for Phone Call','2023-10-21 04:59:02',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (428,NULL,1,'Subject for Meeting','2023-09-20 15:39:35',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (429,NULL,22,'Subject for Print/Merge Document','2023-03-06 12:14:37',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (430,NULL,56,'Subject for Interview','2023-11-26 23:03:37',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (431,NULL,9,'Subject for Tell a Friend','2023-05-10 01:00:35',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (432,NULL,56,'Subject for Interview','2023-12-28 00:20:07',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (433,NULL,22,'Subject for Print/Merge Document','2023-02-28 13:04:58',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (434,NULL,2,'Subject for Phone Call','2023-12-25 22:04:10',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (435,NULL,22,'Subject for Print/Merge Document','2023-03-09 11:58:28',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (436,NULL,56,'Subject for Interview','2023-07-27 00:17:36',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (437,NULL,9,'Subject for Tell a Friend','2023-01-27 01:46:42',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (438,NULL,22,'Subject for Print/Merge Document','2023-08-11 18:33:31',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (439,NULL,2,'Subject for Phone Call','2023-08-09 21:52:27',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (440,NULL,22,'Subject for Print/Merge Document','2023-02-13 23:19:46',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (441,NULL,9,'Subject for Tell a Friend','2023-07-30 23:37:16',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (442,NULL,1,'Subject for Meeting','2023-12-31 21:26:28',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (443,NULL,22,'Subject for Print/Merge Document','2023-02-19 00:27:08',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (444,NULL,22,'Subject for Print/Merge Document','2023-12-23 13:41:15',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (445,NULL,22,'Subject for Print/Merge Document','2023-06-28 11:16:44',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (446,NULL,2,'Subject for Phone Call','2023-07-08 19:24:53',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (447,NULL,22,'Subject for Print/Merge Document','2023-10-14 09:33:18',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (448,NULL,22,'Subject for Print/Merge Document','2023-04-28 06:28:06',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (449,NULL,22,'Subject for Print/Merge Document','2023-12-30 16:12:06',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (450,NULL,22,'Subject for Print/Merge Document','2023-05-07 12:23:14',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (451,1,6,'$ 125 April Mailer 1','2024-03-06 04:30:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (452,2,6,'$ 50 Online: Save the Penguins','2024-03-06 04:30:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (453,3,6,'£ 25 April Mailer 1','2024-03-06 04:30:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (454,4,6,'$ 50 Online: Save the Penguins','2024-03-06 04:30:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (455,5,6,'$ 50 Online: Save the Penguins','2024-03-06 04:30:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (456,6,6,'$ 500 April Mailer 1','2024-03-06 04:30:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (457,7,6,'$ 1750 Online: Save the Penguins','2024-03-06 04:30:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (458,8,6,'$ 50 Online: Save the Penguins','2024-03-06 04:30:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (459,9,6,'$ 10 Online: Help CiviCRM','2024-03-06 04:30:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (460,10,6,'$ 250 Online: Help CiviCRM','2024-03-06 04:30:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (461,11,6,'Â¥ 500 ','2024-03-06 04:30:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (462,12,6,'$ 50 Online: Save the Penguins','2024-03-06 04:30:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (463,13,6,'$ 50 ','2024-03-06 04:30:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (464,14,6,'$ 50 ','2024-03-06 04:30:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (465,15,6,'$ 25 Recurring contribution','2024-03-06 04:30:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (466,16,6,'$ 25 Recurring contribution','2024-03-06 04:30:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (467,17,6,'$ 25 Recurring contribution','2024-03-06 04:30:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (468,18,6,'$ 25 Recurring contribution','2024-03-06 04:30:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (469,19,6,'$ 25 Recurring contribution','2024-03-06 04:30:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (470,20,6,'$ 25 Recurring contribution','2024-03-06 04:30:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (471,21,6,'$ 25 Recurring contribution','2024-03-06 04:30:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (472,22,6,'$ 25 Recurring contribution','2024-03-06 04:30:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (473,23,6,'$ 25 Recurring contribution','2024-03-06 04:30:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (474,24,6,'$ 25 Recurring contribution','2024-03-06 04:30:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (475,25,6,'$ 25 Recurring contribution','2024-03-06 04:30:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (476,26,6,'$ 10 Recurring contribution','2024-03-06 04:30:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (477,27,6,'$ 10 Recurring contribution','2024-03-06 04:30:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (478,28,6,'$ 10 Recurring contribution','2024-03-06 04:30:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (479,29,6,'$ 10 Recurring contribution','2024-03-06 04:30:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (480,30,6,'$ 10 Recurring contribution','2024-03-06 04:30:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (481,31,6,'€ 5 Recurring contribution','2024-03-06 04:30:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (482,1,7,'General','2024-01-06 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (483,2,7,'Student','2024-01-05 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (484,3,7,'General','2024-01-04 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (485,4,7,'Student','2024-01-03 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (486,5,7,'General','2021-12-05 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (487,6,7,'Student','2024-01-01 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (488,7,7,'General','2023-12-31 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (489,8,7,'Student','2023-12-30 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (490,9,7,'General','2023-12-29 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (491,10,7,'Student','2022-12-28 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (492,11,7,'Lifetime','2023-12-27 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (493,12,7,'Student','2023-12-26 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (494,13,7,'General','2023-12-25 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (495,14,7,'Student','2023-12-24 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (496,15,7,'General','2021-09-16 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (497,16,7,'Student','2023-12-22 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (498,17,7,'General','2023-12-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (499,18,7,'Student','2023-12-20 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (500,19,7,'General','2023-12-19 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (501,20,7,'Student','2022-12-18 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (502,21,7,'General','2023-12-17 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (503,22,7,'Lifetime','2023-12-16 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (504,23,7,'General','2023-12-15 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (505,24,7,'Student','2023-12-14 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (506,25,7,'Student','2022-12-13 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (507,26,7,'Student','2023-12-12 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (508,27,7,'General','2023-12-11 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (509,28,7,'Student','2023-12-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (510,29,7,'General','2023-12-09 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (511,30,7,'General','2021-05-19 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (512,32,6,'$ 100.00 - General Membership: Offline signup','2024-01-06 04:30:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (513,33,6,'$ 50.00 - Student Membership: Offline signup','2024-01-06 04:30:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (514,34,6,'$ 100.00 - General Membership: Offline signup','2024-01-06 04:30:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (515,35,6,'$ 50.00 - Student Membership: Offline signup','2024-01-06 04:30:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (516,36,6,'$ 100.00 - General Membership: Offline signup','2024-01-06 04:30:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (517,37,6,'$ 50.00 - Student Membership: Offline signup','2024-01-06 04:30:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (518,38,6,'$ 100.00 - General Membership: Offline signup','2024-01-06 04:30:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (519,39,6,'$ 50.00 - Student Membership: Offline signup','2024-01-06 04:30:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (520,40,6,'$ 100.00 - General Membership: Offline signup','2024-01-06 04:30:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (521,41,6,'$ 50.00 - Student Membership: Offline signup','2024-01-06 04:30:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (522,42,6,'$ 1200.00 - Lifetime Membership: Offline signup','2024-01-06 04:30:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (523,43,6,'$ 50.00 - Student Membership: Offline signup','2024-01-06 04:30:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (524,44,6,'$ 100.00 - General Membership: Offline signup','2024-01-06 04:30:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (525,45,6,'$ 50.00 - Student Membership: Offline signup','2024-01-06 04:30:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (526,46,6,'$ 100.00 - General Membership: Offline signup','2024-01-06 04:30:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (527,47,6,'$ 50.00 - Student Membership: Offline signup','2024-01-06 04:30:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (528,48,6,'$ 100.00 - General Membership: Offline signup','2024-01-06 04:30:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (529,49,6,'$ 50.00 - Student Membership: Offline signup','2024-01-06 04:30:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (530,50,6,'$ 100.00 - General Membership: Offline signup','2024-01-06 04:30:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (531,51,6,'$ 50.00 - Student Membership: Offline signup','2024-01-06 04:30:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (532,52,6,'$ 100.00 - General Membership: Offline signup','2024-01-06 04:30:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (533,53,6,'$ 1200.00 - Lifetime Membership: Offline signup','2024-01-06 04:30:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (534,54,6,'$ 100.00 - General Membership: Offline signup','2024-01-06 04:30:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (535,55,6,'$ 50.00 - Student Membership: Offline signup','2024-01-06 04:30:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (536,56,6,'$ 50.00 - Student Membership: Offline signup','2024-01-06 04:30:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (537,57,6,'$ 50.00 - Student Membership: Offline signup','2024-01-06 04:30:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (538,58,6,'$ 100.00 - General Membership: Offline signup','2024-01-06 04:30:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (539,59,6,'$ 50.00 - Student Membership: Offline signup','2024-01-06 04:30:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (540,60,6,'$ 100.00 - General Membership: Offline signup','2024-01-06 04:30:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (541,61,6,'$ 100.00 - General Membership: Offline signup','2024-01-06 04:30:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (543,1,5,'NULL','2009-01-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (544,2,5,'NULL','2008-05-07 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (545,3,5,'NULL','2008-05-05 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (546,4,5,'NULL','2008-10-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (547,5,5,'NULL','2008-01-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (548,6,5,'NULL','2008-03-05 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (549,7,5,'NULL','2009-07-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (550,8,5,'NULL','2009-03-07 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (551,9,5,'NULL','2008-02-05 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (552,10,5,'NULL','2008-02-01 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (553,11,5,'NULL','2009-01-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (554,12,5,'NULL','2009-03-06 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (555,13,5,'NULL','2008-06-04 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (556,14,5,'NULL','2008-01-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (557,15,5,'NULL','2008-07-04 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (558,16,5,'NULL','2009-01-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (559,17,5,'NULL','2008-01-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (560,18,5,'NULL','2009-03-05 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (561,19,5,'NULL','2008-10-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (562,20,5,'NULL','2009-01-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (563,21,5,'NULL','2008-03-25 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (564,22,5,'NULL','2009-10-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (565,23,5,'NULL','2008-01-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (566,24,5,'NULL','2008-03-11 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (567,25,5,'NULL','2008-04-05 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (568,26,5,'NULL','2009-01-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (569,27,5,'NULL','2008-05-07 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (570,28,5,'NULL','2009-12-12 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (571,29,5,'NULL','2009-12-13 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (572,30,5,'NULL','2009-12-14 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (573,31,5,'NULL','2009-12-15 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (574,32,5,'NULL','2009-07-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (575,33,5,'NULL','2009-03-07 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (576,34,5,'NULL','2009-12-15 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (577,35,5,'NULL','2009-12-13 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (578,36,5,'NULL','2009-01-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (579,37,5,'NULL','2009-03-06 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (580,38,5,'NULL','2009-12-13 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (581,39,5,'NULL','2008-01-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (582,40,5,'NULL','2009-12-14 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (583,41,5,'NULL','2009-01-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (584,42,5,'NULL','2009-12-15 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (585,43,5,'NULL','2009-03-05 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (586,44,5,'NULL','2009-12-13 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (587,45,5,'NULL','2009-01-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (588,46,5,'NULL','2009-12-13 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (589,47,5,'NULL','2009-10-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (590,48,5,'NULL','2009-12-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (591,49,5,'NULL','2009-03-11 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (592,50,5,'NULL','2009-04-05 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (593,63,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2024-01-06 04:30:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (594,64,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2024-01-06 04:30:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (595,65,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2024-01-06 04:30:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (596,66,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2024-01-06 04:30:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (597,67,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2024-01-06 04:30:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (598,68,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2024-01-06 04:30:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (599,69,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2024-01-06 04:30:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (600,70,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2024-01-06 04:30:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (601,71,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2024-01-06 04:30:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (602,72,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2024-01-06 04:30:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (603,73,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2024-01-06 04:30:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (604,74,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2024-01-06 04:30:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (605,75,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2024-01-06 04:30:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (606,76,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2024-01-06 04:30:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (607,77,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2024-01-06 04:30:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (608,78,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2024-01-06 04:30:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (609,79,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2024-01-06 04:30:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (610,80,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2024-01-06 04:30:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (611,81,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2024-01-06 04:30:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (612,82,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2024-01-06 04:30:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (613,83,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2024-01-06 04:30:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (614,84,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2024-01-06 04:30:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (615,85,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2024-01-06 04:30:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (616,86,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2024-01-06 04:30:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (617,87,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2024-01-06 04:30:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (618,88,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2024-01-06 04:30:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (619,89,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2024-01-06 04:30:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (620,90,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2024-01-06 04:30:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (621,91,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2024-01-06 04:30:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (622,92,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2024-01-06 04:30:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (623,93,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2024-01-06 04:30:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (624,94,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2024-01-06 04:30:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (625,95,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2024-01-06 04:30:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (626,96,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2024-01-06 04:30:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (627,97,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2024-01-06 04:30:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (628,98,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2024-01-06 04:30:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (629,99,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2024-01-06 04:30:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (630,100,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2024-01-06 04:30:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (631,101,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2024-01-06 04:30:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (632,102,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2024-01-06 04:30:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (633,103,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2024-01-06 04:30:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (634,104,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2024-01-06 04:30:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (635,105,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2024-01-06 04:30:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (636,106,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2024-01-06 04:30:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (637,107,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2024-01-06 04:30:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (638,108,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2024-01-06 04:30:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (639,109,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2024-01-06 04:30:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (640,110,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2024-01-06 04:30:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (641,111,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2024-01-06 04:30:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30'),
- (642,112,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2024-01-06 04:30:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-01-06 04:30:30','2024-01-06 04:30:30');
+ (1,NULL,22,'Subject for Print/Merge Document','2023-06-23 04:02:21',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (2,NULL,56,'Subject for Interview','2024-02-12 00:53:28',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (3,NULL,9,'Subject for Tell a Friend','2023-11-03 09:34:31',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (4,NULL,9,'Subject for Tell a Friend','2023-04-28 07:23:29',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (5,NULL,22,'Subject for Print/Merge Document','2023-09-28 09:27:04',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (6,NULL,22,'Subject for Print/Merge Document','2023-10-31 18:57:35',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (7,NULL,22,'Subject for Print/Merge Document','2024-02-11 22:14:37',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (8,NULL,1,'Subject for Meeting','2023-05-01 03:52:43',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (9,NULL,9,'Subject for Tell a Friend','2023-06-01 22:15:17',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (10,NULL,22,'Subject for Print/Merge Document','2023-10-04 10:31:38',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (11,NULL,22,'Subject for Print/Merge Document','2023-10-28 00:47:25',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (12,NULL,22,'Subject for Print/Merge Document','2023-07-20 12:52:42',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (13,NULL,1,'Subject for Meeting','2024-04-10 19:16:44',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (14,NULL,2,'Subject for Phone Call','2024-03-22 17:21:34',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (15,NULL,22,'Subject for Print/Merge Document','2023-08-06 07:52:22',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (16,NULL,1,'Subject for Meeting','2024-01-27 14:03:32',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (17,NULL,2,'Subject for Phone Call','2023-09-22 16:38:28',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (18,NULL,1,'Subject for Meeting','2024-02-07 11:39:45',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (19,NULL,1,'Subject for Meeting','2023-12-21 00:53:27',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (20,NULL,9,'Subject for Tell a Friend','2024-01-15 15:55:10',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (21,NULL,9,'Subject for Tell a Friend','2023-12-22 13:38:15',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (22,NULL,1,'Subject for Meeting','2024-03-26 23:45:44',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (23,NULL,9,'Subject for Tell a Friend','2023-08-21 01:19:54',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (24,NULL,2,'Subject for Phone Call','2023-11-25 17:39:47',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (25,NULL,56,'Subject for Interview','2024-03-23 02:36:33',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (26,NULL,9,'Subject for Tell a Friend','2023-09-20 08:31:32',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (27,NULL,2,'Subject for Phone Call','2023-04-30 17:18:44',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (28,NULL,56,'Subject for Interview','2023-11-15 09:06:01',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (29,NULL,22,'Subject for Print/Merge Document','2023-09-21 01:01:18',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (30,NULL,9,'Subject for Tell a Friend','2023-12-17 22:03:16',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (31,NULL,9,'Subject for Tell a Friend','2024-02-08 21:17:51',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (32,NULL,2,'Subject for Phone Call','2023-10-07 18:20:42',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (33,NULL,2,'Subject for Phone Call','2024-03-22 02:53:11',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (34,NULL,22,'Subject for Print/Merge Document','2024-03-14 13:51:01',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (35,NULL,56,'Subject for Interview','2023-09-11 02:03:54',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (36,NULL,1,'Subject for Meeting','2023-08-31 22:02:36',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (37,NULL,9,'Subject for Tell a Friend','2024-03-17 21:33:48',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (38,NULL,22,'Subject for Print/Merge Document','2024-03-17 06:48:15',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (39,NULL,2,'Subject for Phone Call','2024-02-27 08:46:25',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (40,NULL,9,'Subject for Tell a Friend','2023-07-28 01:25:17',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (41,NULL,56,'Subject for Interview','2023-10-21 16:08:13',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (42,NULL,56,'Subject for Interview','2024-03-22 01:54:10',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (43,NULL,56,'Subject for Interview','2023-08-01 05:35:08',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (44,NULL,2,'Subject for Phone Call','2023-11-21 15:18:25',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (45,NULL,56,'Subject for Interview','2024-03-22 15:22:47',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (46,NULL,22,'Subject for Print/Merge Document','2023-07-19 20:26:40',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (47,NULL,1,'Subject for Meeting','2023-10-31 07:08:31',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (48,NULL,2,'Subject for Phone Call','2024-01-25 16:08:22',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (49,NULL,1,'Subject for Meeting','2023-05-12 20:29:42',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (50,NULL,56,'Subject for Interview','2024-02-08 11:50:43',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (51,NULL,56,'Subject for Interview','2023-05-24 22:43:29',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (52,NULL,2,'Subject for Phone Call','2024-02-04 19:37:28',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (53,NULL,2,'Subject for Phone Call','2023-08-14 01:42:10',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (54,NULL,22,'Subject for Print/Merge Document','2023-10-20 06:24:34',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (55,NULL,1,'Subject for Meeting','2024-02-18 09:55:53',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (56,NULL,2,'Subject for Phone Call','2023-12-19 08:57:40',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (57,NULL,2,'Subject for Phone Call','2024-01-01 04:33:12',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (58,NULL,9,'Subject for Tell a Friend','2024-04-10 10:05:45',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (59,NULL,56,'Subject for Interview','2023-12-15 19:51:33',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (60,NULL,56,'Subject for Interview','2023-05-08 11:22:07',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (61,NULL,22,'Subject for Print/Merge Document','2023-11-30 11:09:58',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (62,NULL,1,'Subject for Meeting','2023-12-13 23:48:08',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (63,NULL,56,'Subject for Interview','2023-12-27 03:07:06',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (64,NULL,2,'Subject for Phone Call','2024-02-07 04:15:22',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (65,NULL,9,'Subject for Tell a Friend','2024-03-23 16:51:46',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (66,NULL,56,'Subject for Interview','2024-04-20 02:24:17',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (67,NULL,2,'Subject for Phone Call','2024-04-10 12:26:34',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (68,NULL,1,'Subject for Meeting','2023-12-28 16:43:53',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (69,NULL,1,'Subject for Meeting','2024-03-30 00:27:10',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (70,NULL,2,'Subject for Phone Call','2023-08-28 12:37:11',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (71,NULL,9,'Subject for Tell a Friend','2023-08-14 16:51:41',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (72,NULL,22,'Subject for Print/Merge Document','2023-05-26 02:45:32',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (73,NULL,1,'Subject for Meeting','2023-10-21 01:03:30',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (74,NULL,22,'Subject for Print/Merge Document','2023-06-27 04:43:12',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (75,NULL,22,'Subject for Print/Merge Document','2023-11-05 22:03:32',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (76,NULL,56,'Subject for Interview','2023-06-28 08:41:14',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (77,NULL,2,'Subject for Phone Call','2023-12-10 01:46:08',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (78,NULL,56,'Subject for Interview','2024-01-10 06:43:14',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (79,NULL,22,'Subject for Print/Merge Document','2023-11-14 06:33:30',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (80,NULL,1,'Subject for Meeting','2023-06-17 21:06:50',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (81,NULL,9,'Subject for Tell a Friend','2023-05-13 20:55:12',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (82,NULL,9,'Subject for Tell a Friend','2023-08-23 05:40:53',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (83,NULL,9,'Subject for Tell a Friend','2023-11-03 20:30:07',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (84,NULL,9,'Subject for Tell a Friend','2023-10-27 10:07:11',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (85,NULL,56,'Subject for Interview','2023-06-28 12:28:39',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (86,NULL,56,'Subject for Interview','2023-10-31 17:49:38',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (87,NULL,56,'Subject for Interview','2024-03-01 15:21:23',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (88,NULL,1,'Subject for Meeting','2023-10-12 18:01:53',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (89,NULL,56,'Subject for Interview','2023-11-10 02:32:19',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (90,NULL,22,'Subject for Print/Merge Document','2024-01-02 22:17:04',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (91,NULL,2,'Subject for Phone Call','2023-07-30 16:50:23',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (92,NULL,22,'Subject for Print/Merge Document','2023-10-13 03:54:04',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (93,NULL,1,'Subject for Meeting','2023-06-08 23:52:27',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (94,NULL,56,'Subject for Interview','2023-11-17 10:50:00',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (95,NULL,56,'Subject for Interview','2023-12-25 01:05:43',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (96,NULL,2,'Subject for Phone Call','2024-02-25 02:30:22',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (97,NULL,1,'Subject for Meeting','2023-06-16 09:20:12',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (98,NULL,9,'Subject for Tell a Friend','2023-08-05 22:26:56',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (99,NULL,1,'Subject for Meeting','2024-01-17 21:59:06',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (100,NULL,56,'Subject for Interview','2023-05-07 23:00:37',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (101,NULL,1,'Subject for Meeting','2023-05-04 19:21:59',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (102,NULL,56,'Subject for Interview','2024-02-12 06:02:36',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (103,NULL,2,'Subject for Phone Call','2023-10-24 23:18:28',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (104,NULL,22,'Subject for Print/Merge Document','2024-03-18 23:12:52',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (105,NULL,22,'Subject for Print/Merge Document','2023-10-01 13:03:00',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (106,NULL,56,'Subject for Interview','2023-07-14 13:36:03',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (107,NULL,22,'Subject for Print/Merge Document','2023-07-13 18:45:58',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (108,NULL,9,'Subject for Tell a Friend','2024-03-15 21:05:42',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (109,NULL,2,'Subject for Phone Call','2024-04-21 09:57:07',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (110,NULL,22,'Subject for Print/Merge Document','2023-10-26 00:02:43',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (111,NULL,2,'Subject for Phone Call','2023-07-18 03:46:29',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (112,NULL,2,'Subject for Phone Call','2024-04-16 13:00:42',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (113,NULL,22,'Subject for Print/Merge Document','2023-08-17 10:42:47',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (114,NULL,9,'Subject for Tell a Friend','2024-03-11 09:53:47',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (115,NULL,9,'Subject for Tell a Friend','2023-10-29 19:59:09',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (116,NULL,9,'Subject for Tell a Friend','2023-07-18 07:29:19',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (117,NULL,1,'Subject for Meeting','2023-08-22 14:52:20',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (118,NULL,22,'Subject for Print/Merge Document','2023-07-23 05:56:20',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (119,NULL,22,'Subject for Print/Merge Document','2024-01-17 05:37:23',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (120,NULL,22,'Subject for Print/Merge Document','2023-07-30 04:28:20',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (121,NULL,56,'Subject for Interview','2023-12-26 20:03:03',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (122,NULL,2,'Subject for Phone Call','2023-11-15 11:16:04',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (123,NULL,56,'Subject for Interview','2024-02-16 17:03:32',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (124,NULL,22,'Subject for Print/Merge Document','2023-05-15 06:07:32',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (125,NULL,1,'Subject for Meeting','2023-05-15 02:11:32',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (126,NULL,2,'Subject for Phone Call','2023-09-09 22:18:46',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (127,NULL,22,'Subject for Print/Merge Document','2023-08-08 10:14:37',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (128,NULL,56,'Subject for Interview','2023-09-20 14:49:48',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (129,NULL,22,'Subject for Print/Merge Document','2023-06-03 21:41:39',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (130,NULL,56,'Subject for Interview','2023-09-28 17:44:01',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (131,NULL,2,'Subject for Phone Call','2023-09-25 11:49:08',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (132,NULL,9,'Subject for Tell a Friend','2024-01-03 14:35:46',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (133,NULL,56,'Subject for Interview','2023-05-16 22:04:48',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (134,NULL,9,'Subject for Tell a Friend','2023-12-11 13:59:37',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (135,NULL,9,'Subject for Tell a Friend','2023-12-22 01:36:44',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (136,NULL,9,'Subject for Tell a Friend','2024-01-13 20:45:26',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (137,NULL,9,'Subject for Tell a Friend','2024-01-07 22:54:25',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (138,NULL,2,'Subject for Phone Call','2024-01-04 11:05:26',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (139,NULL,2,'Subject for Phone Call','2023-11-13 22:18:27',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (140,NULL,22,'Subject for Print/Merge Document','2024-01-01 23:40:04',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (141,NULL,2,'Subject for Phone Call','2023-06-12 15:06:25',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (142,NULL,1,'Subject for Meeting','2023-11-16 12:04:03',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (143,NULL,1,'Subject for Meeting','2023-12-02 03:59:07',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (144,NULL,1,'Subject for Meeting','2024-01-19 17:54:31',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (145,NULL,9,'Subject for Tell a Friend','2023-05-31 07:59:31',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (146,NULL,56,'Subject for Interview','2023-05-26 09:22:28',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (147,NULL,2,'Subject for Phone Call','2023-06-29 07:57:53',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (148,NULL,9,'Subject for Tell a Friend','2023-05-21 23:35:27',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (149,NULL,56,'Subject for Interview','2024-03-22 03:46:25',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (150,NULL,56,'Subject for Interview','2023-09-14 08:16:55',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (151,NULL,22,'Subject for Print/Merge Document','2023-05-09 09:36:51',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (152,NULL,1,'Subject for Meeting','2023-11-22 09:19:42',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (153,NULL,2,'Subject for Phone Call','2023-12-23 00:10:53',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (154,NULL,9,'Subject for Tell a Friend','2024-03-30 07:03:40',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (155,NULL,1,'Subject for Meeting','2023-09-01 05:46:47',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (156,NULL,9,'Subject for Tell a Friend','2024-02-17 08:02:21',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (157,NULL,22,'Subject for Print/Merge Document','2023-07-14 13:53:15',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (158,NULL,1,'Subject for Meeting','2023-07-21 02:48:35',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (159,NULL,22,'Subject for Print/Merge Document','2024-02-24 12:43:17',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (160,NULL,22,'Subject for Print/Merge Document','2023-07-22 01:36:33',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (161,NULL,22,'Subject for Print/Merge Document','2024-02-17 21:23:47',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (162,NULL,1,'Subject for Meeting','2023-09-16 02:06:39',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (163,NULL,1,'Subject for Meeting','2024-03-25 02:42:24',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (164,NULL,9,'Subject for Tell a Friend','2023-06-20 06:35:00',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (165,NULL,9,'Subject for Tell a Friend','2024-02-07 10:41:29',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (166,NULL,2,'Subject for Phone Call','2023-10-08 21:37:33',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (167,NULL,9,'Subject for Tell a Friend','2023-12-28 07:57:59',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (168,NULL,2,'Subject for Phone Call','2023-11-10 05:40:07',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (169,NULL,22,'Subject for Print/Merge Document','2023-12-03 01:49:22',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (170,NULL,56,'Subject for Interview','2024-01-21 20:31:06',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (171,NULL,2,'Subject for Phone Call','2023-11-18 02:37:21',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (172,NULL,22,'Subject for Print/Merge Document','2023-12-30 20:09:50',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (173,NULL,56,'Subject for Interview','2023-11-01 08:53:40',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (174,NULL,9,'Subject for Tell a Friend','2023-11-21 08:34:03',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (175,NULL,9,'Subject for Tell a Friend','2023-12-12 03:01:03',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (176,NULL,2,'Subject for Phone Call','2023-05-12 15:41:04',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (177,NULL,9,'Subject for Tell a Friend','2024-02-12 06:13:41',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (178,NULL,56,'Subject for Interview','2024-01-16 21:47:21',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (179,NULL,2,'Subject for Phone Call','2023-05-20 08:02:01',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (180,NULL,9,'Subject for Tell a Friend','2023-07-09 00:09:17',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (181,NULL,2,'Subject for Phone Call','2024-02-12 10:28:08',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (182,NULL,22,'Subject for Print/Merge Document','2024-03-04 21:50:51',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (183,NULL,2,'Subject for Phone Call','2024-01-21 02:43:43',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (184,NULL,2,'Subject for Phone Call','2023-11-26 13:41:35',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (185,NULL,56,'Subject for Interview','2024-04-05 10:55:53',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (186,NULL,56,'Subject for Interview','2023-10-03 01:35:11',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (187,NULL,2,'Subject for Phone Call','2023-06-04 16:29:21',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (188,NULL,1,'Subject for Meeting','2023-11-23 09:17:55',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (189,NULL,56,'Subject for Interview','2023-12-27 05:11:26',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (190,NULL,9,'Subject for Tell a Friend','2023-06-01 13:45:09',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (191,NULL,22,'Subject for Print/Merge Document','2023-06-04 18:57:32',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (192,NULL,1,'Subject for Meeting','2023-06-23 14:04:07',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (193,NULL,22,'Subject for Print/Merge Document','2023-08-28 02:26:09',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (194,NULL,2,'Subject for Phone Call','2023-07-20 16:50:08',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (195,NULL,22,'Subject for Print/Merge Document','2023-07-29 01:23:15',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (196,NULL,56,'Subject for Interview','2023-12-07 13:25:48',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (197,NULL,56,'Subject for Interview','2023-12-25 11:13:40',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (198,NULL,9,'Subject for Tell a Friend','2023-07-22 09:47:22',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (199,NULL,56,'Subject for Interview','2023-08-06 01:20:14',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (200,NULL,2,'Subject for Phone Call','2023-08-26 20:59:44',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10'),
+ (201,NULL,22,'Subject for Print/Merge Document','2024-03-16 22:43:37',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (202,NULL,1,'Subject for Meeting','2023-08-19 19:31:57',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (203,NULL,2,'Subject for Phone Call','2023-07-25 09:13:46',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (204,NULL,1,'Subject for Meeting','2023-12-14 04:44:53',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (205,NULL,1,'Subject for Meeting','2023-05-17 07:58:34',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (206,NULL,56,'Subject for Interview','2023-06-20 12:02:03',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (207,NULL,56,'Subject for Interview','2024-01-25 15:55:41',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (208,NULL,56,'Subject for Interview','2024-03-07 06:01:47',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (209,NULL,9,'Subject for Tell a Friend','2024-01-23 13:12:28',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (210,NULL,56,'Subject for Interview','2024-03-16 00:30:29',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (211,NULL,9,'Subject for Tell a Friend','2023-10-23 10:23:44',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (212,NULL,22,'Subject for Print/Merge Document','2023-09-04 12:03:13',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (213,NULL,1,'Subject for Meeting','2023-08-30 01:38:39',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (214,NULL,9,'Subject for Tell a Friend','2023-12-09 21:56:59',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (215,NULL,2,'Subject for Phone Call','2023-06-01 01:24:12',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (216,NULL,2,'Subject for Phone Call','2023-08-15 23:23:03',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (217,NULL,22,'Subject for Print/Merge Document','2024-01-11 13:47:09',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (218,NULL,56,'Subject for Interview','2024-03-02 21:14:29',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (219,NULL,1,'Subject for Meeting','2023-11-21 19:19:05',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (220,NULL,9,'Subject for Tell a Friend','2023-05-16 04:31:39',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (221,NULL,56,'Subject for Interview','2024-01-01 19:54:41',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (222,NULL,1,'Subject for Meeting','2024-04-08 16:19:01',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (223,NULL,9,'Subject for Tell a Friend','2023-10-07 16:32:28',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (224,NULL,56,'Subject for Interview','2023-09-18 05:40:32',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (225,NULL,56,'Subject for Interview','2024-03-04 03:20:19',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (226,NULL,2,'Subject for Phone Call','2023-10-12 22:42:56',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (227,NULL,56,'Subject for Interview','2023-11-30 14:03:35',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (228,NULL,56,'Subject for Interview','2023-12-30 19:31:07',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (229,NULL,9,'Subject for Tell a Friend','2023-09-26 04:28:58',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (230,NULL,1,'Subject for Meeting','2023-08-29 09:57:57',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (231,NULL,56,'Subject for Interview','2023-10-25 12:59:51',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (232,NULL,2,'Subject for Phone Call','2023-10-22 04:26:29',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (233,NULL,56,'Subject for Interview','2024-02-15 19:36:53',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (234,NULL,9,'Subject for Tell a Friend','2024-03-29 04:13:40',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (235,NULL,1,'Subject for Meeting','2023-07-23 20:38:39',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (236,NULL,9,'Subject for Tell a Friend','2023-07-28 15:29:33',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (237,NULL,2,'Subject for Phone Call','2023-09-21 01:08:44',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (238,NULL,9,'Subject for Tell a Friend','2023-08-13 05:25:09',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (239,NULL,1,'Subject for Meeting','2023-11-24 21:23:53',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (240,NULL,22,'Subject for Print/Merge Document','2024-03-05 11:50:05',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (241,NULL,9,'Subject for Tell a Friend','2024-03-23 15:14:42',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (242,NULL,1,'Subject for Meeting','2024-03-18 21:35:15',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (243,NULL,1,'Subject for Meeting','2024-02-21 18:06:32',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (244,NULL,22,'Subject for Print/Merge Document','2023-06-06 01:48:03',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (245,NULL,1,'Subject for Meeting','2023-11-27 11:07:34',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (246,NULL,1,'Subject for Meeting','2024-02-15 19:15:59',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (247,NULL,1,'Subject for Meeting','2023-06-19 07:19:01',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (248,NULL,9,'Subject for Tell a Friend','2024-01-03 05:20:59',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (249,NULL,9,'Subject for Tell a Friend','2023-06-16 11:28:14',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (250,NULL,9,'Subject for Tell a Friend','2023-07-26 06:01:15',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (251,NULL,56,'Subject for Interview','2023-11-30 17:02:40',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (252,NULL,9,'Subject for Tell a Friend','2023-07-02 22:30:55',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (253,NULL,9,'Subject for Tell a Friend','2024-04-13 04:19:05',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (254,NULL,56,'Subject for Interview','2024-02-28 08:36:06',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (255,NULL,56,'Subject for Interview','2023-07-26 06:01:25',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (256,NULL,22,'Subject for Print/Merge Document','2023-12-08 00:42:43',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (257,NULL,56,'Subject for Interview','2023-05-16 03:16:57',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (258,NULL,56,'Subject for Interview','2024-01-06 11:55:25',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (259,NULL,1,'Subject for Meeting','2023-11-21 04:10:21',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (260,NULL,9,'Subject for Tell a Friend','2023-12-02 15:10:24',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (261,NULL,9,'Subject for Tell a Friend','2024-02-12 05:56:13',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (262,NULL,1,'Subject for Meeting','2023-10-11 19:35:21',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (263,NULL,1,'Subject for Meeting','2024-02-01 12:30:24',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (264,NULL,56,'Subject for Interview','2023-06-03 19:01:55',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (265,NULL,22,'Subject for Print/Merge Document','2024-03-16 20:51:23',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (266,NULL,22,'Subject for Print/Merge Document','2023-07-01 03:21:08',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (267,NULL,22,'Subject for Print/Merge Document','2024-04-03 06:08:01',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (268,NULL,2,'Subject for Phone Call','2024-03-18 20:27:50',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (269,NULL,1,'Subject for Meeting','2023-10-25 14:07:52',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (270,NULL,9,'Subject for Tell a Friend','2023-04-29 03:40:00',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (271,NULL,2,'Subject for Phone Call','2023-05-18 12:48:25',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (272,NULL,1,'Subject for Meeting','2023-10-28 21:40:44',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (273,NULL,9,'Subject for Tell a Friend','2023-07-24 20:36:10',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (274,NULL,56,'Subject for Interview','2024-02-09 22:46:37',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (275,NULL,22,'Subject for Print/Merge Document','2023-06-24 04:22:13',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (276,NULL,9,'Subject for Tell a Friend','2023-11-25 16:28:13',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (277,NULL,1,'Subject for Meeting','2023-09-10 14:22:40',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (278,NULL,2,'Subject for Phone Call','2023-09-13 08:27:21',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (279,NULL,56,'Subject for Interview','2023-09-02 16:47:13',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (280,NULL,56,'Subject for Interview','2024-03-12 19:11:40',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (281,NULL,56,'Subject for Interview','2024-02-08 17:45:56',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (282,NULL,2,'Subject for Phone Call','2024-02-25 03:49:38',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (283,NULL,22,'Subject for Print/Merge Document','2023-11-30 11:43:10',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (284,NULL,9,'Subject for Tell a Friend','2023-11-28 01:24:29',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (285,NULL,9,'Subject for Tell a Friend','2023-12-22 20:17:40',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (286,NULL,1,'Subject for Meeting','2023-07-05 03:05:00',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (287,NULL,56,'Subject for Interview','2024-01-07 20:16:04',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (288,NULL,1,'Subject for Meeting','2023-09-23 17:50:42',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (289,NULL,1,'Subject for Meeting','2023-12-08 11:32:43',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (290,NULL,2,'Subject for Phone Call','2023-09-03 15:10:49',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (291,NULL,1,'Subject for Meeting','2023-11-22 16:43:12',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (292,NULL,9,'Subject for Tell a Friend','2024-03-22 05:23:13',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (293,NULL,56,'Subject for Interview','2024-04-14 06:08:44',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (294,NULL,22,'Subject for Print/Merge Document','2023-12-17 13:13:42',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (295,NULL,22,'Subject for Print/Merge Document','2023-10-21 04:23:24',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (296,NULL,9,'Subject for Tell a Friend','2024-02-22 13:01:19',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (297,NULL,9,'Subject for Tell a Friend','2023-12-10 04:41:04',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (298,NULL,56,'Subject for Interview','2023-09-10 00:14:10',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (299,NULL,22,'Subject for Print/Merge Document','2023-07-13 12:32:29',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (300,NULL,56,'Subject for Interview','2023-05-25 17:54:05',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (301,NULL,56,'Subject for Interview','2023-05-07 00:14:51',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (302,NULL,9,'Subject for Tell a Friend','2023-09-12 15:22:36',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (303,NULL,2,'Subject for Phone Call','2023-07-16 12:18:26',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (304,NULL,1,'Subject for Meeting','2023-11-17 07:00:15',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (305,NULL,9,'Subject for Tell a Friend','2023-08-31 08:58:52',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (306,NULL,2,'Subject for Phone Call','2023-12-03 08:43:13',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (307,NULL,1,'Subject for Meeting','2024-03-18 09:03:53',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (308,NULL,56,'Subject for Interview','2024-01-04 22:57:06',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (309,NULL,2,'Subject for Phone Call','2023-09-04 16:09:33',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (310,NULL,56,'Subject for Interview','2024-03-21 01:56:57',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (311,NULL,9,'Subject for Tell a Friend','2023-05-17 11:23:19',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (312,NULL,1,'Subject for Meeting','2024-04-07 17:53:00',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (313,NULL,56,'Subject for Interview','2023-07-24 12:35:02',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (314,NULL,9,'Subject for Tell a Friend','2024-04-18 06:55:10',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (315,NULL,9,'Subject for Tell a Friend','2024-02-28 14:35:10',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (316,NULL,1,'Subject for Meeting','2023-11-12 18:36:11',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (317,NULL,22,'Subject for Print/Merge Document','2023-11-20 03:14:20',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (318,NULL,9,'Subject for Tell a Friend','2023-08-23 18:19:36',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (319,NULL,22,'Subject for Print/Merge Document','2023-10-07 15:29:06',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (320,NULL,56,'Subject for Interview','2023-08-31 12:09:20',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (321,NULL,9,'Subject for Tell a Friend','2023-09-13 15:53:50',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (322,NULL,2,'Subject for Phone Call','2023-12-28 04:00:43',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (323,NULL,2,'Subject for Phone Call','2023-07-19 04:00:18',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (324,NULL,9,'Subject for Tell a Friend','2023-08-12 07:46:13',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (325,NULL,22,'Subject for Print/Merge Document','2023-10-04 17:02:27',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (326,NULL,2,'Subject for Phone Call','2023-10-11 02:37:01',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (327,NULL,22,'Subject for Print/Merge Document','2024-01-24 00:07:08',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (328,NULL,1,'Subject for Meeting','2024-01-01 04:58:25',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (329,NULL,1,'Subject for Meeting','2023-08-09 11:36:36',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (330,NULL,1,'Subject for Meeting','2023-06-16 14:16:34',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (331,NULL,56,'Subject for Interview','2024-01-13 01:16:17',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (332,NULL,1,'Subject for Meeting','2023-06-28 01:57:33',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (333,NULL,56,'Subject for Interview','2023-06-22 09:35:46',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (334,NULL,2,'Subject for Phone Call','2024-02-02 15:43:56',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (335,NULL,56,'Subject for Interview','2023-09-19 20:06:43',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (336,NULL,2,'Subject for Phone Call','2023-06-06 02:11:50',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (337,NULL,1,'Subject for Meeting','2023-07-31 22:10:31',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (338,NULL,22,'Subject for Print/Merge Document','2023-12-26 01:16:38',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (339,NULL,9,'Subject for Tell a Friend','2023-09-22 03:47:38',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (340,NULL,2,'Subject for Phone Call','2024-03-28 17:09:19',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (341,NULL,22,'Subject for Print/Merge Document','2023-04-30 10:17:01',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (342,NULL,22,'Subject for Print/Merge Document','2024-04-17 22:21:06',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (343,NULL,2,'Subject for Phone Call','2023-09-12 00:42:50',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (344,NULL,22,'Subject for Print/Merge Document','2024-01-29 16:49:42',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (345,NULL,1,'Subject for Meeting','2024-01-12 11:59:51',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (346,NULL,56,'Subject for Interview','2023-08-30 23:46:34',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (347,NULL,9,'Subject for Tell a Friend','2023-11-10 17:37:32',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (348,NULL,22,'Subject for Print/Merge Document','2023-09-21 01:11:47',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (349,NULL,2,'Subject for Phone Call','2023-10-23 01:54:29',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (350,NULL,2,'Subject for Phone Call','2024-02-02 10:11:13',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (351,NULL,9,'Subject for Tell a Friend','2023-07-03 19:30:21',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (352,NULL,9,'Subject for Tell a Friend','2023-10-13 11:55:33',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (353,NULL,1,'Subject for Meeting','2024-02-29 10:25:03',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (354,NULL,9,'Subject for Tell a Friend','2024-03-19 23:47:05',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (355,NULL,56,'Subject for Interview','2024-01-22 10:26:24',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (356,NULL,56,'Subject for Interview','2023-08-09 02:01:16',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (357,NULL,2,'Subject for Phone Call','2024-04-06 14:56:18',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (358,NULL,22,'Subject for Print/Merge Document','2023-05-03 15:27:26',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (359,NULL,2,'Subject for Phone Call','2023-05-19 15:57:50',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (360,NULL,1,'Subject for Meeting','2023-04-30 09:35:16',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (361,NULL,2,'Subject for Phone Call','2023-08-30 09:29:05',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (362,NULL,56,'Subject for Interview','2023-09-19 07:16:21',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (363,NULL,2,'Subject for Phone Call','2024-03-26 05:45:50',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (364,NULL,2,'Subject for Phone Call','2023-06-23 18:46:55',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (365,NULL,2,'Subject for Phone Call','2023-09-03 18:26:51',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (366,NULL,9,'Subject for Tell a Friend','2023-10-12 14:19:55',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (367,NULL,22,'Subject for Print/Merge Document','2023-08-06 18:47:42',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (368,NULL,22,'Subject for Print/Merge Document','2023-07-21 14:25:27',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (369,NULL,22,'Subject for Print/Merge Document','2023-09-22 09:32:37',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (370,NULL,9,'Subject for Tell a Friend','2024-01-24 08:09:48',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (371,NULL,56,'Subject for Interview','2023-12-31 15:04:09',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (372,NULL,9,'Subject for Tell a Friend','2024-02-14 15:18:15',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (373,NULL,9,'Subject for Tell a Friend','2023-11-02 16:48:11',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (374,NULL,1,'Subject for Meeting','2023-11-29 13:31:26',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (375,NULL,1,'Subject for Meeting','2023-06-22 18:20:04',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (376,NULL,22,'Subject for Print/Merge Document','2024-02-20 05:06:58',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (377,NULL,22,'Subject for Print/Merge Document','2023-11-25 08:11:41',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (378,NULL,2,'Subject for Phone Call','2023-11-04 16:45:23',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (379,NULL,22,'Subject for Print/Merge Document','2023-05-27 19:03:22',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (380,NULL,56,'Subject for Interview','2023-05-06 21:42:36',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (381,NULL,2,'Subject for Phone Call','2023-09-23 16:24:18',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (382,NULL,9,'Subject for Tell a Friend','2023-10-03 12:58:23',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (383,NULL,1,'Subject for Meeting','2024-01-19 16:00:06',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (384,NULL,1,'Subject for Meeting','2023-12-05 17:47:13',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (385,NULL,1,'Subject for Meeting','2023-09-21 05:44:05',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (386,NULL,1,'Subject for Meeting','2023-12-16 21:04:22',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (387,NULL,9,'Subject for Tell a Friend','2023-07-16 06:05:53',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (388,NULL,56,'Subject for Interview','2023-05-28 10:26:03',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (389,NULL,1,'Subject for Meeting','2023-08-19 07:14:29',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (390,NULL,1,'Subject for Meeting','2024-04-12 16:16:23',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (391,NULL,56,'Subject for Interview','2023-08-03 08:57:42',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (392,NULL,1,'Subject for Meeting','2023-06-28 16:58:29',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (393,NULL,56,'Subject for Interview','2024-03-28 21:24:40',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (394,NULL,22,'Subject for Print/Merge Document','2023-05-10 06:02:25',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (395,NULL,2,'Subject for Phone Call','2023-06-27 00:51:53',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (396,NULL,56,'Subject for Interview','2023-05-14 00:58:32',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (397,NULL,2,'Subject for Phone Call','2023-09-24 11:06:01',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (398,NULL,2,'Subject for Phone Call','2024-04-07 16:50:44',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (399,NULL,1,'Subject for Meeting','2024-03-31 18:06:05',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (400,NULL,1,'Subject for Meeting','2023-07-14 16:17:22',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (401,NULL,1,'Subject for Meeting','2024-04-08 09:28:46',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (402,NULL,1,'Subject for Meeting','2023-07-28 12:02:44',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (403,NULL,22,'Subject for Print/Merge Document','2023-07-15 05:21:19',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (404,NULL,1,'Subject for Meeting','2023-12-09 23:30:50',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (405,NULL,22,'Subject for Print/Merge Document','2023-06-15 00:44:59',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (406,NULL,9,'Subject for Tell a Friend','2023-10-30 00:59:40',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (407,NULL,22,'Subject for Print/Merge Document','2023-11-21 03:14:02',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (408,NULL,22,'Subject for Print/Merge Document','2024-04-25 01:32:05',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (409,NULL,9,'Subject for Tell a Friend','2023-10-27 13:04:56',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (410,NULL,1,'Subject for Meeting','2024-01-21 09:17:42',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (411,NULL,1,'Subject for Meeting','2024-03-07 19:33:45',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (412,NULL,22,'Subject for Print/Merge Document','2023-09-16 04:14:10',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (413,NULL,2,'Subject for Phone Call','2023-10-17 01:28:03',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (414,NULL,9,'Subject for Tell a Friend','2023-05-10 07:47:38',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (415,NULL,22,'Subject for Print/Merge Document','2023-06-22 15:12:47',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (416,NULL,2,'Subject for Phone Call','2023-06-01 23:05:47',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (417,NULL,1,'Subject for Meeting','2023-06-06 16:03:23',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (418,NULL,1,'Subject for Meeting','2023-11-28 22:07:28',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (419,NULL,22,'Subject for Print/Merge Document','2024-01-29 22:15:55',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (420,NULL,56,'Subject for Interview','2024-01-05 14:54:52',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (421,NULL,9,'Subject for Tell a Friend','2023-11-24 22:46:55',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (422,NULL,22,'Subject for Print/Merge Document','2023-08-19 17:38:59',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (423,NULL,9,'Subject for Tell a Friend','2023-06-29 12:52:32',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (424,NULL,22,'Subject for Print/Merge Document','2023-12-27 03:50:38',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (425,NULL,9,'Subject for Tell a Friend','2023-10-22 13:19:52',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (426,NULL,22,'Subject for Print/Merge Document','2024-04-17 13:38:13',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (427,NULL,2,'Subject for Phone Call','2023-05-10 02:32:05',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (428,NULL,56,'Subject for Interview','2023-09-28 16:55:29',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (429,NULL,56,'Subject for Interview','2023-06-24 16:03:31',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (430,NULL,1,'Subject for Meeting','2023-04-28 06:06:45',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (431,NULL,9,'Subject for Tell a Friend','2023-09-25 09:09:47',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (432,NULL,9,'Subject for Tell a Friend','2023-12-11 09:41:18',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (433,NULL,9,'Subject for Tell a Friend','2024-03-26 00:16:53',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (434,NULL,2,'Subject for Phone Call','2024-01-23 01:54:53',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (435,NULL,1,'Subject for Meeting','2023-05-26 06:58:19',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (436,NULL,1,'Subject for Meeting','2023-12-18 06:53:14',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (437,NULL,56,'Subject for Interview','2023-12-27 03:02:26',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (438,NULL,9,'Subject for Tell a Friend','2024-04-16 21:30:08',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (439,NULL,56,'Subject for Interview','2023-08-25 17:31:51',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (440,NULL,22,'Subject for Print/Merge Document','2023-10-14 18:16:01',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (441,NULL,1,'Subject for Meeting','2023-11-26 09:05:50',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (442,NULL,1,'Subject for Meeting','2024-02-07 05:03:56',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (443,NULL,22,'Subject for Print/Merge Document','2023-07-21 20:17:13',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (444,NULL,56,'Subject for Interview','2024-04-24 17:52:33',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (445,NULL,56,'Subject for Interview','2023-12-11 13:17:57',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (446,NULL,2,'Subject for Phone Call','2023-08-13 12:04:26',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (447,NULL,9,'Subject for Tell a Friend','2023-10-10 01:20:11',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (448,NULL,9,'Subject for Tell a Friend','2024-04-08 15:29:14',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (449,NULL,1,'Subject for Meeting','2023-09-14 11:19:51',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (450,NULL,22,'Subject for Print/Merge Document','2023-12-01 05:05:39',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (451,1,6,'$ 125 April Mailer 1','2024-06-26 15:50:11',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (452,2,6,'$ 50 Online: Save the Penguins','2024-06-26 15:50:11',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (453,3,6,'£ 25 April Mailer 1','2024-06-26 15:50:11',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (454,4,6,'$ 50 Online: Save the Penguins','2024-06-26 15:50:11',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (455,5,6,'$ 50 Online: Save the Penguins','2024-06-26 15:50:11',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (456,6,6,'$ 500 April Mailer 1','2024-06-26 15:50:11',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (457,7,6,'$ 1750 Online: Save the Penguins','2024-06-26 15:50:11',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (458,8,6,'$ 50 Online: Save the Penguins','2024-06-26 15:50:11',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (459,9,6,'$ 10 Online: Help CiviCRM','2024-06-26 15:50:11',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (460,10,6,'$ 250 Online: Help CiviCRM','2024-06-26 15:50:11',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (461,11,6,'Â¥ 500 ','2024-06-26 15:50:11',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (462,12,6,'$ 50 Online: Save the Penguins','2024-06-26 15:50:11',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (463,13,6,'$ 50 ','2024-06-26 15:50:11',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (464,14,6,'$ 50 ','2024-06-26 15:50:11',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (465,15,6,'$ 25 Recurring contribution','2024-06-26 15:50:11',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (466,16,6,'$ 25 Recurring contribution','2024-06-26 15:50:11',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (467,17,6,'$ 25 Recurring contribution','2024-06-26 15:50:11',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (468,18,6,'$ 25 Recurring contribution','2024-06-26 15:50:11',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (469,19,6,'$ 25 Recurring contribution','2024-06-26 15:50:11',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (470,20,6,'$ 25 Recurring contribution','2024-06-26 15:50:11',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (471,21,6,'$ 25 Recurring contribution','2024-06-26 15:50:11',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (472,22,6,'$ 25 Recurring contribution','2024-06-26 15:50:11',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (473,23,6,'$ 25 Recurring contribution','2024-06-26 15:50:11',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (474,24,6,'$ 25 Recurring contribution','2024-06-26 15:50:11',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (475,25,6,'$ 25 Recurring contribution','2024-06-26 15:50:11',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (476,26,6,'$ 10 Recurring contribution','2024-06-26 15:50:11',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (477,27,6,'$ 10 Recurring contribution','2024-06-26 15:50:11',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (478,28,6,'$ 10 Recurring contribution','2024-06-26 15:50:11',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (479,29,6,'$ 10 Recurring contribution','2024-06-26 15:50:11',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (480,30,6,'$ 10 Recurring contribution','2024-06-26 15:50:11',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (481,31,6,'€ 5 Recurring contribution','2024-06-26 15:50:11',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (482,1,7,'General','2024-04-26 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (483,2,7,'Student','2024-04-25 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (484,3,7,'General','2024-04-24 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (485,4,7,'Student','2024-04-23 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (486,5,7,'Student','2023-04-22 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (487,6,7,'Student','2024-04-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (488,7,7,'General','2024-04-20 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (489,8,7,'Student','2024-04-19 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (490,9,7,'General','2024-04-18 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (491,10,7,'General','2022-02-13 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (492,11,7,'Lifetime','2024-04-16 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (493,12,7,'Student','2024-04-15 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (494,13,7,'General','2024-04-14 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (495,14,7,'Student','2024-04-13 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (496,15,7,'General','2022-01-04 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (497,16,7,'Student','2024-04-11 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (498,17,7,'General','2024-04-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (499,18,7,'Student','2024-04-09 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (500,19,7,'General','2024-04-08 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (501,20,7,'General','2021-11-25 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (502,21,7,'General','2024-04-06 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (503,22,7,'Lifetime','2024-04-05 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (504,23,7,'General','2024-04-04 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (505,24,7,'Student','2024-04-03 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (506,25,7,'Student','2023-04-02 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (507,26,7,'Student','2024-04-01 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (508,27,7,'General','2024-03-31 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (509,28,7,'Student','2024-03-30 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (510,29,7,'General','2024-03-29 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (511,30,7,'Student','2023-03-28 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (512,32,6,'$ 100.00 - General Membership: Offline signup','2024-04-26 15:50:11',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (513,33,6,'$ 50.00 - Student Membership: Offline signup','2024-04-26 15:50:11',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (514,34,6,'$ 100.00 - General Membership: Offline signup','2024-04-26 15:50:11',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (515,35,6,'$ 50.00 - Student Membership: Offline signup','2024-04-26 15:50:11',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (516,36,6,'$ 50.00 - Student Membership: Offline signup','2024-04-26 15:50:11',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (517,37,6,'$ 50.00 - Student Membership: Offline signup','2024-04-26 15:50:11',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (518,38,6,'$ 100.00 - General Membership: Offline signup','2024-04-26 15:50:11',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (519,39,6,'$ 50.00 - Student Membership: Offline signup','2024-04-26 15:50:11',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (520,40,6,'$ 100.00 - General Membership: Offline signup','2024-04-26 15:50:11',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (521,41,6,'$ 100.00 - General Membership: Offline signup','2024-04-26 15:50:11',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (522,42,6,'$ 1200.00 - Lifetime Membership: Offline signup','2024-04-26 15:50:11',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (523,43,6,'$ 50.00 - Student Membership: Offline signup','2024-04-26 15:50:11',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (524,44,6,'$ 100.00 - General Membership: Offline signup','2024-04-26 15:50:11',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (525,45,6,'$ 50.00 - Student Membership: Offline signup','2024-04-26 15:50:11',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (526,46,6,'$ 100.00 - General Membership: Offline signup','2024-04-26 15:50:11',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (527,47,6,'$ 50.00 - Student Membership: Offline signup','2024-04-26 15:50:11',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (528,48,6,'$ 100.00 - General Membership: Offline signup','2024-04-26 15:50:11',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (529,49,6,'$ 50.00 - Student Membership: Offline signup','2024-04-26 15:50:11',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (530,50,6,'$ 100.00 - General Membership: Offline signup','2024-04-26 15:50:11',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (531,51,6,'$ 100.00 - General Membership: Offline signup','2024-04-26 15:50:11',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (532,52,6,'$ 100.00 - General Membership: Offline signup','2024-04-26 15:50:11',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (533,53,6,'$ 1200.00 - Lifetime Membership: Offline signup','2024-04-26 15:50:11',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (534,54,6,'$ 100.00 - General Membership: Offline signup','2024-04-26 15:50:11',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (535,55,6,'$ 50.00 - Student Membership: Offline signup','2024-04-26 15:50:11',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (536,56,6,'$ 50.00 - Student Membership: Offline signup','2024-04-26 15:50:11',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (537,57,6,'$ 50.00 - Student Membership: Offline signup','2024-04-26 15:50:11',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (538,58,6,'$ 100.00 - General Membership: Offline signup','2024-04-26 15:50:11',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (539,59,6,'$ 50.00 - Student Membership: Offline signup','2024-04-26 15:50:11',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (540,60,6,'$ 100.00 - General Membership: Offline signup','2024-04-26 15:50:11',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (541,61,6,'$ 50.00 - Student Membership: Offline signup','2024-04-26 15:50:11',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (543,1,5,'NULL','2009-01-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (544,2,5,'NULL','2008-05-07 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (545,3,5,'NULL','2008-05-05 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (546,4,5,'NULL','2008-10-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (547,5,5,'NULL','2008-01-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (548,6,5,'NULL','2008-03-05 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (549,7,5,'NULL','2009-07-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (550,8,5,'NULL','2009-03-07 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (551,9,5,'NULL','2008-02-05 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (552,10,5,'NULL','2008-02-01 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (553,11,5,'NULL','2009-01-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (554,12,5,'NULL','2009-03-06 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (555,13,5,'NULL','2008-06-04 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (556,14,5,'NULL','2008-01-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (557,15,5,'NULL','2008-07-04 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (558,16,5,'NULL','2009-01-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (559,17,5,'NULL','2008-01-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (560,18,5,'NULL','2009-03-05 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (561,19,5,'NULL','2008-10-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (562,20,5,'NULL','2009-01-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (563,21,5,'NULL','2008-03-25 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (564,22,5,'NULL','2009-10-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (565,23,5,'NULL','2008-01-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (566,24,5,'NULL','2008-03-11 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (567,25,5,'NULL','2008-04-05 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (568,26,5,'NULL','2009-01-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (569,27,5,'NULL','2008-05-07 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (570,28,5,'NULL','2009-12-12 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (571,29,5,'NULL','2009-12-13 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (572,30,5,'NULL','2009-12-14 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (573,31,5,'NULL','2009-12-15 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (574,32,5,'NULL','2009-07-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (575,33,5,'NULL','2009-03-07 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (576,34,5,'NULL','2009-12-15 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (577,35,5,'NULL','2009-12-13 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (578,36,5,'NULL','2009-01-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (579,37,5,'NULL','2009-03-06 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (580,38,5,'NULL','2009-12-13 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (581,39,5,'NULL','2008-01-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (582,40,5,'NULL','2009-12-14 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (583,41,5,'NULL','2009-01-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (584,42,5,'NULL','2009-12-15 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (585,43,5,'NULL','2009-03-05 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (586,44,5,'NULL','2009-12-13 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (587,45,5,'NULL','2009-01-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (588,46,5,'NULL','2009-12-13 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (589,47,5,'NULL','2009-10-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (590,48,5,'NULL','2009-12-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (591,49,5,'NULL','2009-03-11 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (592,50,5,'NULL','2009-04-05 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (593,63,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2024-04-26 15:50:11',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (594,64,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2024-04-26 15:50:11',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (595,65,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2024-04-26 15:50:11',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (596,66,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2024-04-26 15:50:11',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (597,67,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2024-04-26 15:50:11',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (598,68,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2024-04-26 15:50:11',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (599,69,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2024-04-26 15:50:11',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (600,70,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2024-04-26 15:50:11',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (601,71,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2024-04-26 15:50:11',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (602,72,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2024-04-26 15:50:11',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (603,73,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2024-04-26 15:50:11',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (604,74,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2024-04-26 15:50:11',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (605,75,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2024-04-26 15:50:11',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (606,76,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2024-04-26 15:50:11',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (607,77,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2024-04-26 15:50:11',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (608,78,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2024-04-26 15:50:11',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (609,79,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2024-04-26 15:50:11',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (610,80,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2024-04-26 15:50:11',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (611,81,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2024-04-26 15:50:11',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (612,82,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2024-04-26 15:50:11',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (613,83,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2024-04-26 15:50:11',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (614,84,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2024-04-26 15:50:11',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (615,85,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2024-04-26 15:50:11',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (616,86,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2024-04-26 15:50:11',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (617,87,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2024-04-26 15:50:11',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (618,88,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2024-04-26 15:50:11',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (619,89,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2024-04-26 15:50:11',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (620,90,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2024-04-26 15:50:11',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (621,91,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2024-04-26 15:50:11',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (622,92,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2024-04-26 15:50:11',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (623,93,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2024-04-26 15:50:11',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (624,94,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2024-04-26 15:50:11',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (625,95,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2024-04-26 15:50:11',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (626,96,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2024-04-26 15:50:11',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (627,97,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2024-04-26 15:50:11',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (628,98,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2024-04-26 15:50:11',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (629,99,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2024-04-26 15:50:11',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (630,100,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2024-04-26 15:50:11',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (631,101,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2024-04-26 15:50:11',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (632,102,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2024-04-26 15:50:11',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (633,103,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2024-04-26 15:50:11',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (634,104,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2024-04-26 15:50:11',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (635,105,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2024-04-26 15:50:11',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (636,106,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2024-04-26 15:50:11',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (637,107,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2024-04-26 15:50:11',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (638,108,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2024-04-26 15:50:11',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (639,109,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2024-04-26 15:50:11',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (640,110,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2024-04-26 15:50:11',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (641,111,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2024-04-26 15:50:11',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11'),
+ (642,112,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2024-04-26 15:50:11',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2024-04-26 15:50:11','2024-04-26 15:50:11');
/*!40000 ALTER TABLE `civicrm_activity` ENABLE KEYS */;
UNLOCK TABLES;
@@ -732,958 +733,960 @@ UNLOCK TABLES;
LOCK TABLES `civicrm_activity_contact` WRITE;
/*!40000 ALTER TABLE `civicrm_activity_contact` DISABLE KEYS */;
INSERT INTO `civicrm_activity_contact` (`id`, `activity_id`, `contact_id`, `record_type_id`) VALUES
- (33,17,1,3),
- (663,365,1,3),
- (563,309,2,3),
- (593,325,2,3),
- (779,428,2,3),
- (812,451,2,2),
- (946,585,2,2),
- (41,22,3,3),
- (433,237,3,3),
- (707,389,3,3),
- (853,492,3,2),
- (873,522,3,2),
- (144,79,4,3),
- (174,98,4,3),
- (813,452,4,2),
- (816,455,4,2),
- (865,504,4,2),
- (874,534,4,2),
- (161,91,5,3),
- (724,398,5,3),
- (62,34,6,3),
- (117,65,6,3),
- (133,73,6,3),
- (198,110,6,3),
- (814,453,6,2),
- (928,567,6,2),
- (75,41,7,3),
- (936,575,7,2),
- (142,78,8,3),
- (194,108,8,3),
- (224,124,8,3),
- (463,254,8,3),
- (486,266,8,3),
- (815,454,8,2),
- (425,233,9,3),
- (469,257,9,3),
- (863,502,9,2),
- (875,532,9,2),
- (20,10,10,3),
- (265,145,10,3),
- (415,228,10,3),
- (540,296,10,3),
- (661,364,10,3),
- (740,408,10,3),
- (238,131,11,3),
- (561,308,11,3),
- (731,402,11,3),
- (771,424,11,3),
- (854,493,11,2),
- (876,523,11,2),
- (16,8,12,3),
- (168,95,12,3),
- (284,155,12,3),
- (405,222,12,3),
- (447,245,12,3),
- (638,351,12,3),
- (949,588,12,2),
- (56,31,13,3),
- (67,37,13,3),
- (465,255,13,3),
- (784,431,13,3),
- (399,219,14,3),
- (703,387,14,3),
- (104,58,15,3),
- (222,123,15,3),
- (714,393,15,3),
- (750,413,15,3),
- (944,583,15,2),
- (71,39,16,3),
- (123,68,16,3),
- (354,193,16,3),
- (573,314,16,3),
- (581,318,16,3),
- (782,430,16,3),
- (817,456,16,2),
- (242,133,17,3),
- (674,371,17,3),
- (777,427,17,3),
- (48,26,18,3),
- (97,54,18,3),
- (203,113,18,3),
- (335,183,18,3),
- (679,374,18,3),
- (683,376,18,3),
- (773,425,18,3),
- (935,574,18,2),
- (112,62,19,3),
- (449,246,19,3),
- (484,265,19,3),
- (545,299,19,3),
- (818,457,19,2),
- (14,7,20,3),
- (182,102,20,3),
- (190,106,20,3),
- (735,405,20,3),
- (755,416,20,3),
- (4,2,21,3),
- (64,35,21,3),
- (125,69,21,3),
- (180,101,21,3),
- (342,187,21,3),
- (356,194,21,3),
- (362,197,21,3),
- (371,202,21,3),
- (477,261,21,3),
- (482,264,21,3),
- (373,203,22,3),
- (767,422,22,3),
- (775,426,22,3),
- (849,488,22,2),
- (877,518,22,2),
- (88,49,23,3),
- (521,285,23,3),
- (565,310,23,3),
- (608,334,23,3),
- (119,66,24,3),
- (166,94,24,3),
- (244,134,24,3),
- (699,385,24,3),
- (871,510,24,2),
- (878,540,24,2),
- (907,546,24,2),
- (99,55,25,3),
- (257,141,25,3),
- (263,144,25,3),
- (397,218,25,3),
- (942,581,25,2),
- (121,67,26,3),
- (253,139,26,3),
- (271,148,26,3),
- (475,260,26,3),
- (672,370,26,3),
- (688,379,26,3),
- (712,392,26,3),
- (527,288,27,3),
- (554,304,27,3),
- (596,327,27,3),
- (646,355,27,3),
- (738,407,27,3),
- (742,409,27,3),
- (870,509,27,2),
- (879,539,27,2),
- (261,143,28,3),
- (575,315,28,3),
- (869,508,28,2),
- (880,538,28,2),
- (296,161,29,3),
- (508,277,29,3),
- (176,99,30,3),
- (480,263,30,3),
- (337,184,31,3),
- (344,188,31,3),
- (794,437,31,3),
- (163,92,32,3),
- (352,192,32,3),
- (792,436,32,3),
- (824,463,32,2),
- (825,464,32,2),
- (941,580,32,2),
- (188,105,33,3),
- (348,190,33,3),
- (705,388,33,3),
- (718,395,33,3),
- (769,423,33,3),
- (299,163,34,3),
- (765,421,34,3),
- (800,441,34,3),
- (821,460,34,2),
- (391,214,35,3),
- (429,235,35,3),
- (453,248,35,3),
- (627,345,35,3),
- (685,377,35,3),
- (867,506,35,2),
- (881,536,35,2),
- (292,159,36,3),
- (500,273,36,3),
- (603,331,36,3),
- (612,336,36,3),
- (200,111,37,3),
- (331,181,37,3),
- (403,221,37,3),
- (910,549,37,2),
- (60,33,38,3),
- (378,206,38,3),
- (861,500,38,2),
- (882,530,38,2),
- (932,571,38,2),
- (236,130,39,3),
- (303,165,39,3),
- (384,210,39,3),
- (473,259,39,3),
- (502,274,39,3),
- (634,349,39,3),
- (694,382,39,3),
- (423,232,40,3),
- (205,114,41,3),
- (569,312,41,3),
- (848,487,41,2),
- (883,517,41,2),
- (923,562,41,2),
- (131,72,42,3),
- (386,211,42,3),
- (421,231,42,3),
- (753,415,42,3),
- (802,442,42,3),
- (855,494,42,2),
- (884,524,42,2),
- (249,137,43,3),
- (823,462,43,2),
- (589,323,44,3),
- (623,343,44,3),
- (625,344,44,3),
- (8,4,45,3),
- (93,52,45,3),
- (273,149,45,3),
- (301,164,45,3),
- (350,191,45,3),
- (621,342,45,3),
- (681,375,45,3),
- (234,129,46,3),
- (339,185,46,3),
- (720,396,46,3),
- (952,591,46,2),
- (360,196,47,3),
- (577,316,47,3),
- (692,381,47,3),
- (759,418,47,3),
- (920,559,47,2),
- (215,119,48,3),
- (494,270,48,3),
- (498,272,48,3),
- (135,74,49,3),
- (213,118,49,3),
- (317,173,49,3),
- (488,267,49,3),
- (529,289,49,3),
- (746,411,49,3),
- (319,174,50,3),
- (443,243,50,3),
- (445,244,50,3),
- (552,303,50,3),
- (940,579,50,2),
- (358,195,51,3),
- (419,230,51,3),
- (490,268,51,3),
- (110,61,52,3),
- (6,3,53,3),
- (192,107,53,3),
- (230,127,53,3),
- (251,138,53,3),
- (286,156,53,3),
- (314,171,54,3),
- (510,278,54,3),
- (667,367,54,3),
- (18,9,55,3),
- (127,70,55,3),
- (375,204,55,3),
- (170,96,56,3),
- (172,97,56,3),
- (196,109,56,3),
- (267,146,56,3),
- (651,359,56,3),
- (710,391,56,3),
- (845,484,56,2),
- (885,514,56,2),
- (22,11,57,3),
- (95,53,57,3),
- (178,100,57,3),
- (276,151,57,2),
- (278,152,57,2),
- (280,153,57,2),
- (281,154,57,2),
- (283,155,57,2),
- (285,156,57,2),
- (287,157,57,2),
- (289,158,57,2),
- (291,159,57,2),
- (293,160,57,2),
- (295,161,57,2),
- (297,162,57,2),
- (298,163,57,2),
- (300,164,57,2),
- (302,165,57,2),
- (304,166,57,2),
- (306,167,57,2),
- (308,168,57,2),
- (310,169,57,2),
- (311,170,57,2),
- (313,171,57,2),
- (315,172,57,2),
- (316,173,57,2),
- (318,174,57,2),
- (320,175,57,2),
- (321,176,57,2),
- (323,177,57,2),
- (325,178,57,2),
- (327,179,57,2),
- (329,180,57,2),
- (330,181,57,2),
- (332,182,57,2),
- (334,183,57,2),
- (336,184,57,2),
- (338,185,57,2),
- (340,186,57,2),
- (341,187,57,2),
- (343,188,57,2),
- (345,189,57,2),
- (347,190,57,2),
- (349,191,57,2),
- (351,192,57,2),
- (353,193,57,2),
- (355,194,57,2),
- (357,195,57,2),
- (359,196,57,2),
- (361,197,57,2),
- (363,198,57,2),
- (364,199,57,2),
- (366,200,57,2),
- (368,201,57,2),
- (370,202,57,2),
- (372,203,57,2),
- (374,204,57,2),
- (376,205,57,2),
- (377,206,57,2),
- (379,207,57,2),
- (381,208,57,2),
- (382,209,57,2),
- (383,210,57,2),
- (385,211,57,2),
- (387,212,57,2),
- (388,213,57,2),
- (390,214,57,2),
- (392,215,57,2),
- (393,216,57,2),
- (394,217,57,2),
- (396,218,57,2),
- (398,219,57,2),
- (400,220,57,2),
- (402,221,57,2),
- (404,222,57,2),
- (406,223,57,2),
- (407,224,57,2),
- (409,225,57,2),
- (410,225,57,3),
- (411,226,57,2),
- (413,227,57,2),
- (414,228,57,2),
- (416,229,57,2),
- (418,230,57,2),
- (420,231,57,2),
- (422,232,57,2),
- (424,233,57,2),
- (426,234,57,2),
- (428,235,57,2),
- (430,236,57,2),
- (432,237,57,2),
- (434,238,57,2),
- (435,239,57,2),
- (437,240,57,2),
- (439,241,57,2),
- (441,242,57,2),
- (442,243,57,2),
- (444,244,57,2),
- (446,245,57,2),
- (448,246,57,2),
- (450,247,57,2),
- (452,248,57,2),
- (454,249,57,2),
- (456,250,57,2),
- (457,251,57,2),
- (459,252,57,2),
- (461,253,57,2),
- (462,254,57,2),
- (464,255,57,2),
- (466,256,57,2),
- (468,257,57,2),
- (470,258,57,2),
- (472,259,57,2),
- (474,260,57,2),
- (476,261,57,2),
- (478,262,57,2),
- (479,263,57,2),
- (481,264,57,2),
- (483,265,57,2),
- (485,266,57,2),
- (487,267,57,2),
- (489,268,57,2),
- (491,269,57,2),
- (493,270,57,2),
- (495,271,57,2),
- (497,272,57,2),
- (499,273,57,2),
- (501,274,57,2),
- (503,275,57,2),
- (505,276,57,2),
- (507,277,57,2),
- (509,278,57,2),
- (511,279,57,2),
- (512,280,57,2),
- (513,281,57,2),
- (515,282,57,2),
- (517,283,57,2),
- (518,284,57,2),
- (520,285,57,2),
- (522,286,57,2),
- (524,287,57,2),
- (526,288,57,2),
- (528,289,57,2),
- (530,290,57,2),
- (531,291,57,2),
- (532,292,57,2),
- (534,293,57,2),
- (536,294,57,2),
- (538,295,57,2),
- (539,296,57,2),
- (541,297,57,2),
- (542,298,57,2),
- (544,299,57,2),
- (546,300,57,2),
- (598,328,57,3),
- (220,122,58,3),
- (467,256,58,3),
- (523,286,58,3),
- (571,313,58,3),
- (58,32,59,3),
- (460,252,59,3),
- (826,465,59,2),
- (827,466,59,2),
- (828,467,59,2),
- (829,468,59,2),
- (830,469,59,2),
- (831,470,59,2),
- (832,471,59,2),
- (833,472,59,2),
- (834,473,59,2),
- (835,474,59,2),
- (836,475,59,2),
- (81,44,60,3),
- (137,75,60,3),
- (184,103,62,3),
- (269,147,62,3),
- (535,293,62,3),
- (690,380,62,3),
- (911,550,62,2),
- (158,89,63,3),
- (217,120,63,3),
- (427,234,63,3),
- (655,361,63,3),
- (676,372,63,3),
- (701,386,63,3),
- (417,229,64,3),
- (492,269,64,3),
- (548,301,64,2),
- (549,302,64,2),
- (551,303,64,2),
- (553,304,64,2),
- (555,305,64,2),
- (556,306,64,2),
- (558,307,64,2),
- (560,308,64,2),
- (562,309,64,2),
- (564,310,64,2),
- (566,311,64,2),
- (568,312,64,2),
- (570,313,64,2),
- (572,314,64,2),
- (574,315,64,2),
- (576,316,64,2),
- (578,317,64,2),
- (580,318,64,2),
- (582,319,64,2),
- (583,320,64,2),
- (585,321,64,2),
- (586,322,64,2),
- (588,323,64,2),
- (590,324,64,2),
- (592,325,64,2),
- (594,326,64,2),
- (595,327,64,2),
- (597,328,64,2),
- (599,329,64,2),
- (601,330,64,2),
- (602,331,64,2),
- (604,332,64,2),
- (605,333,64,2),
- (607,334,64,2),
- (609,335,64,2),
- (611,336,64,2),
- (613,337,64,2),
- (615,338,64,2),
- (616,339,64,2),
- (617,340,64,2),
- (618,341,64,2),
- (620,342,64,2),
- (622,343,64,2),
- (624,344,64,2),
- (626,345,64,2),
- (628,346,64,2),
- (629,347,64,2),
- (631,348,64,2),
- (633,349,64,2),
- (635,350,64,2),
- (637,351,64,2),
- (639,352,64,2),
- (641,353,64,2),
- (643,354,64,2),
- (645,355,64,2),
- (647,356,64,2),
- (648,357,64,2),
- (649,358,64,2),
- (650,359,64,2),
- (652,360,64,2),
- (654,361,64,2),
- (656,362,64,2),
- (658,363,64,2),
- (660,364,64,2),
- (662,365,64,2),
- (664,366,64,2),
- (666,367,64,2),
- (668,368,64,2),
- (669,369,64,2),
- (671,370,64,2),
- (673,371,64,2),
- (675,372,64,2),
- (677,373,64,2),
- (678,374,64,2),
- (680,375,64,2),
- (682,376,64,2),
- (684,377,64,2),
- (686,378,64,2),
- (687,379,64,2),
- (689,380,64,2),
- (691,381,64,2),
- (693,382,64,2),
- (695,383,64,2),
- (697,384,64,2),
- (698,385,64,2),
- (700,386,64,2),
- (702,387,64,2),
- (704,388,64,2),
- (706,389,64,2),
- (708,390,64,2),
- (709,391,64,2),
- (711,392,64,2),
- (713,393,64,2),
- (715,394,64,2),
- (717,395,64,2),
- (719,396,64,2),
- (721,397,64,2),
- (723,398,64,2),
- (725,399,64,2),
- (727,400,64,2),
- (729,401,64,2),
- (730,402,64,2),
- (732,403,64,2),
- (733,404,64,2),
- (734,405,64,2),
- (736,406,64,2),
- (737,407,64,2),
- (739,408,64,2),
- (741,409,64,2),
- (743,410,64,2),
- (745,411,64,2),
- (747,412,64,2),
- (749,413,64,2),
- (751,414,64,2),
- (752,415,64,2),
- (754,416,64,2),
- (756,417,64,2),
- (758,418,64,2),
- (760,419,64,2),
- (762,420,64,2),
- (764,421,64,2),
- (766,422,64,2),
- (768,423,64,2),
- (770,424,64,2),
- (772,425,64,2),
- (774,426,64,2),
- (776,427,64,2),
- (778,428,64,2),
- (780,429,64,2),
- (781,430,64,2),
- (783,431,64,2),
- (785,432,64,2),
- (787,433,64,2),
- (788,434,64,2),
- (790,435,64,2),
- (791,436,64,2),
- (793,437,64,2),
- (795,438,64,2),
- (796,439,64,2),
- (798,440,64,2),
- (799,441,64,2),
- (801,442,64,2),
- (803,443,64,2),
- (804,444,64,2),
- (805,445,64,2),
- (806,446,64,2),
- (808,447,64,2),
- (809,448,64,2),
- (810,449,64,2),
- (811,450,64,2),
- (247,136,65,3),
- (504,275,65,3),
- (506,276,65,3),
- (857,496,65,2),
- (886,526,65,2),
- (938,577,65,2),
- (39,21,66,3),
- (77,42,66,3),
- (140,77,66,3),
- (438,240,66,3),
- (728,400,66,3),
- (868,507,66,2),
- (887,537,66,2),
- (943,582,66,2),
- (10,5,67,3),
- (69,38,67,3),
- (186,104,67,3),
- (228,126,67,3),
- (259,142,67,3),
- (389,213,67,3),
- (610,335,67,3),
- (908,547,67,2),
- (211,117,68,3),
- (305,166,68,3),
- (431,236,68,3),
- (630,347,68,3),
- (79,43,69,3),
- (408,224,69,3),
- (559,307,69,3),
- (2,1,70,3),
- (26,13,70,3),
- (232,128,70,3),
- (322,176,70,3),
- (12,6,71,3),
- (279,152,71,3),
- (401,220,71,3),
- (644,354,71,3),
- (822,461,71,2),
- (207,115,72,3),
- (294,160,72,3),
- (380,207,72,3),
- (934,573,72,2),
- (115,64,73,3),
- (275,150,73,3),
- (324,177,73,3),
- (642,353,73,3),
- (761,419,74,3),
- (312,170,75,3),
- (326,178,75,3),
- (471,258,75,3),
- (757,417,75,3),
- (909,548,75,2),
- (152,86,76,3),
- (255,140,76,3),
- (309,168,76,3),
- (369,201,76,3),
- (557,306,76,3),
- (636,350,76,3),
- (716,394,76,3),
- (333,182,77,3),
- (458,251,77,3),
- (619,341,77,3),
- (930,569,77,2),
- (73,40,78,3),
- (862,501,78,2),
- (888,531,78,2),
- (665,366,79,3),
- (28,14,80,3),
- (31,16,80,3),
- (451,247,80,3),
- (579,317,80,3),
- (640,352,80,3),
- (913,552,80,2),
- (600,329,81,3),
- (670,369,81,3),
- (789,434,81,3),
- (395,217,82,3),
- (455,249,82,3),
- (547,300,82,3),
- (657,362,82,3),
- (819,458,82,2),
- (108,60,83,3),
- (290,158,83,3),
- (797,439,84,3),
- (44,24,85,3),
- (46,25,85,3),
- (102,57,85,3),
- (367,200,85,3),
- (496,271,85,3),
- (550,302,85,3),
- (763,420,85,3),
- (748,412,86,3),
- (24,12,87,3),
- (744,410,87,3),
- (926,565,87,2),
- (346,189,88,3),
- (567,311,88,3),
- (591,324,88,3),
- (90,50,89,3),
- (154,87,89,3),
- (226,125,89,3),
- (277,151,89,3),
- (919,558,89,2),
- (35,18,91,3),
- (51,28,91,3),
- (86,48,91,3),
- (307,167,91,3),
- (659,363,91,3),
- (807,446,91,3),
- (726,399,92,3),
- (820,459,92,2),
- (129,71,93,3),
- (519,284,93,3),
- (533,292,93,3),
- (587,322,93,3),
- (606,333,93,3),
- (786,432,93,3),
- (856,495,93,2),
- (889,525,93,2),
- (282,154,94,3),
- (866,505,94,2),
- (890,535,94,2),
- (904,543,94,2),
- (240,132,95,3),
- (440,241,95,3),
- (584,320,95,3),
- (696,383,95,3),
- (722,397,95,3),
- (106,59,96,3),
- (365,199,96,3),
- (514,281,96,3),
- (525,287,96,3),
+ (426,236,1,3),
+ (484,268,1,3),
+ (678,374,1,3),
+ (806,446,1,3),
+ (372,208,2,3),
+ (569,313,2,3),
+ (754,417,2,3),
+ (761,421,2,3),
+ (814,451,2,2),
+ (71,41,3,3),
+ (374,209,3,3),
+ (632,349,3,3),
+ (672,371,3,3),
+ (947,584,3,2),
+ (148,83,4,3),
+ (622,343,4,3),
+ (638,352,4,3),
+ (697,385,4,3),
+ (815,452,4,2),
+ (818,455,4,2),
+ (856,493,4,2),
+ (886,523,4,2),
+ (326,183,5,3),
+ (849,486,5,2),
+ (879,516,5,2),
+ (287,162,6,3),
+ (661,364,6,3),
+ (816,453,6,2),
+ (941,578,6,2),
+ (84,48,7,3),
+ (124,69,7,3),
+ (137,77,7,3),
+ (648,357,7,3),
+ (7,4,8,3),
+ (86,49,8,3),
+ (776,430,8,3),
+ (817,454,8,2),
+ (928,565,8,2),
+ (437,242,9,3),
+ (716,395,9,3),
+ (258,145,10,3),
+ (428,237,10,3),
+ (925,562,10,2),
+ (103,58,11,3),
+ (144,81,11,3),
+ (163,91,11,3),
+ (378,211,11,3),
+ (923,560,11,2),
+ (90,51,12,3),
+ (262,147,12,3),
+ (674,372,12,3),
+ (486,269,13,3),
+ (494,273,13,3),
+ (812,449,13,3),
+ (850,487,13,2),
+ (880,517,13,2),
+ (330,185,14,3),
+ (524,289,14,3),
+ (532,293,14,3),
+ (724,399,14,3),
+ (819,456,16,2),
+ (42,25,17,3),
+ (293,165,17,3),
+ (522,288,17,3),
+ (747,413,17,3),
+ (135,76,18,3),
+ (218,123,18,3),
+ (311,175,18,3),
+ (406,226,18,3),
+ (613,337,18,3),
+ (950,587,18,2),
+ (67,39,19,3),
+ (176,98,19,3),
+ (820,457,19,2),
+ (402,224,20,3),
+ (861,498,20,2),
+ (891,528,20,2),
+ (955,592,20,2),
+ (150,84,21,3),
+ (178,99,21,3),
+ (273,153,21,3),
+ (744,411,21,3),
+ (767,425,21,3),
+ (944,581,21,2),
+ (14,9,22,3),
+ (118,66,22,3),
+ (931,568,22,2),
+ (170,95,24,3),
+ (239,135,24,3),
+ (592,326,24,3),
+ (784,434,24,3),
+ (112,63,25,3),
+ (209,117,25,3),
+ (268,150,25,3),
+ (383,214,25,3),
+ (538,297,25,3),
+ (526,290,26,3),
+ (680,375,26,3),
+ (935,572,26,2),
+ (38,23,27,3),
+ (229,130,27,3),
+ (231,131,27,3),
+ (808,447,27,3),
+ (82,47,28,3),
+ (245,138,28,3),
+ (469,259,28,3),
+ (496,274,28,3),
+ (810,448,28,3),
+ (939,576,28,2),
+ (21,14,29,3),
+ (57,33,29,3),
+ (553,305,29,3),
+ (152,85,30,3),
+ (291,164,30,3),
+ (299,168,30,3),
+ (505,279,30,3),
+ (778,431,30,3),
+ (302,170,31,3),
+ (410,228,31,3),
+ (511,282,32,3),
+ (547,302,32,3),
+ (826,463,32,2),
+ (827,464,32,2),
+ (53,31,33,3),
+ (69,40,33,3),
+ (381,213,33,3),
+ (460,254,33,3),
+ (475,262,33,3),
+ (625,345,33,3),
+ (670,370,33,3),
+ (726,400,33,3),
+ (338,189,34,3),
+ (398,222,34,3),
+ (823,460,34,2),
+ (907,544,34,2),
+ (131,73,35,3),
+ (687,380,35,3),
+ (912,549,35,2),
+ (60,35,36,3),
+ (277,155,36,3),
+ (543,300,36,3),
+ (693,383,36,3),
+ (728,401,36,3),
+ (730,402,36,3),
+ (250,141,37,3),
+ (256,144,37,3),
+ (404,225,37,3),
+ (699,386,37,3),
+ (736,406,37,3),
+ (12,8,38,3),
+ (116,65,38,3),
+ (271,152,38,3),
+ (444,246,38,3),
+ (571,314,38,3),
+ (629,347,38,3),
+ (186,103,39,3),
+ (422,234,39,3),
+ (555,306,39,3),
+ (618,340,39,3),
+ (870,507,39,2),
+ (900,537,39,2),
+ (94,53,40,3),
+ (128,71,40,3),
+ (400,223,40,3),
+ (99,56,41,3),
+ (368,206,41,3),
+ (385,215,41,3),
+ (452,250,41,3),
+ (733,404,41,3),
+ (740,409,41,3),
+ (943,580,41,2),
+ (203,114,42,3),
+ (205,115,42,3),
+ (439,243,42,3),
+ (488,270,42,3),
+ (567,312,42,3),
+ (627,346,42,3),
+ (665,366,42,3),
+ (709,391,42,3),
+ (711,392,42,3),
+ (64,37,43,3),
+ (172,96,43,3),
+ (462,255,43,3),
+ (825,462,43,2),
+ (855,492,43,2),
+ (885,522,43,2),
+ (24,16,44,3),
+ (36,22,44,3),
+ (120,67,44,3),
+ (237,134,44,3),
+ (351,197,44,3),
+ (786,435,44,3),
+ (634,350,45,3),
+ (77,44,46,3),
+ (195,109,46,3),
+ (718,396,46,3),
+ (756,418,46,3),
+ (139,78,47,3),
+ (275,154,47,3),
+ (465,257,47,3),
+ (595,328,47,3),
+ (644,355,47,3),
+ (343,192,48,3),
+ (545,301,48,3),
+ (349,196,49,3),
+ (551,304,49,3),
+ (689,381,49,3),
+ (44,26,50,3),
+ (223,126,50,3),
+ (254,143,50,3),
+ (655,361,50,3),
+ (874,511,50,2),
+ (904,541,50,2),
+ (266,149,51,3),
+ (319,179,51,3),
+ (364,204,51,3),
+ (601,331,51,3),
+ (636,351,51,3),
+ (691,382,51,3),
+ (906,543,51,2),
+ (190,106,52,3),
+ (260,146,52,3),
+ (573,315,52,3),
+ (607,334,52,3),
+ (780,432,53,3),
+ (609,335,54,3),
+ (916,553,54,2),
+ (166,93,55,3),
+ (315,177,55,3),
+ (530,292,55,3),
+ (295,166,56,3),
+ (456,252,56,3),
+ (79,45,57,3),
+ (336,188,57,3),
+ (420,233,57,3),
+ (492,272,57,3),
+ (722,398,57,3),
+ (742,410,57,3),
+ (749,414,57,3),
+ (938,575,57,2),
+ (182,101,58,3),
+ (458,253,58,3),
+ (802,444,58,3),
+ (107,60,59,3),
+ (114,64,59,3),
+ (828,465,59,2),
+ (829,466,59,2),
+ (830,467,59,2),
+ (831,468,59,2),
+ (832,469,59,2),
+ (833,470,59,2),
+ (834,471,59,2),
+ (835,472,59,2),
+ (836,473,59,2),
+ (837,474,59,2),
+ (838,475,59,2),
+ (51,30,60,3),
+ (174,97,60,3),
+ (184,102,60,3),
+ (198,111,60,3),
+ (390,218,60,3),
+ (450,249,60,3),
+ (528,291,60,3),
+ (703,388,60,3),
+ (847,484,60,2),
+ (877,514,60,2),
+ (932,569,60,2),
+ (282,158,61,3),
+ (394,220,61,3),
+ (501,277,61,3),
+ (605,333,61,3),
+ (792,438,61,3),
+ (207,116,62,3),
+ (321,180,62,3),
+ (479,264,62,3),
+ (788,436,62,3),
+ (865,502,62,2),
+ (895,532,62,2),
+ (910,547,62,2),
+ (499,276,63,3),
+ (19,13,64,3),
+ (46,27,64,3),
+ (328,184,64,3),
+ (392,219,64,3),
+ (430,238,64,3),
+ (30,19,65,3),
+ (247,139,65,3),
+ (536,296,65,3),
+ (705,389,65,3),
+ (859,496,65,2),
+ (889,526,65,2),
+ (34,21,66,3),
+ (156,87,66,3),
+ (233,132,66,3),
+ (264,148,66,3),
+ (340,190,66,3),
+ (589,324,66,3),
+ (611,336,66,3),
+ (355,199,67,3),
+ (518,286,67,3),
+ (707,390,67,3),
+ (954,591,67,2),
+ (88,50,68,3),
+ (376,210,68,3),
+ (597,329,68,3),
+ (713,393,68,3),
+ (770,427,68,3),
+ (3,2,69,3),
+ (40,24,69,3),
+ (105,59,69,3),
+ (221,125,69,3),
+ (759,420,69,3),
+ (797,441,69,3),
+ (146,82,70,3),
+ (408,227,70,3),
+ (516,285,70,3),
+ (559,308,70,3),
+ (720,397,70,3),
+ (937,574,70,2),
+ (122,68,71,3),
+ (243,137,71,3),
+ (366,205,71,3),
+ (752,416,71,3),
+ (824,461,71,2),
+ (869,506,71,2),
+ (899,536,71,2),
+ (73,42,72,3),
+ (252,142,72,3),
+ (782,433,72,3),
+ (945,582,72,2),
+ (32,20,73,3),
+ (110,62,74,3),
+ (168,94,74,3),
+ (334,187,74,3),
+ (790,437,74,3),
+ (62,36,75,3),
+ (241,136,75,3),
+ (304,171,75,3),
+ (701,387,75,3),
+ (772,428,75,3),
+ (867,504,75,2),
+ (897,534,75,2),
+ (915,552,75,2),
+ (180,100,76,3),
+ (446,247,76,3),
+ (695,384,76,3),
+ (193,108,77,3),
+ (226,128,77,3),
+ (424,235,77,3),
+ (583,321,77,3),
+ (764,423,77,3),
+ (414,230,78,3),
+ (490,271,78,3),
+ (657,362,78,3),
+ (953,590,78,2),
+ (26,17,79,3),
+ (307,173,79,3),
+ (313,176,79,3),
+ (477,263,79,3),
+ (514,284,79,3),
+ (936,573,79,2),
+ (370,207,80,3),
+ (587,323,80,3),
+ (616,339,80,3),
+ (799,442,80,3),
+ (154,86,81,3),
+ (235,133,81,3),
+ (387,216,81,3),
+ (442,245,81,3),
+ (471,260,81,3),
+ (914,551,81,2),
+ (5,3,82,3),
+ (642,354,82,3),
+ (821,458,82,2),
+ (160,89,83,3),
+ (578,318,84,3),
+ (585,322,84,3),
+ (200,112,85,3),
+ (684,378,85,3),
+ (55,32,86,3),
+ (75,43,86,3),
+ (317,178,86,3),
+ (362,203,86,3),
+ (432,239,86,3),
+ (214,121,87,3),
+ (507,280,87,3),
+ (520,287,87,3),
+ (846,483,87,2),
+ (876,513,87,2),
+ (924,561,87,2),
+ (216,122,88,3),
+ (599,330,88,3),
+ (158,88,89,3),
+ (396,221,89,3),
+ (435,241,89,3),
+ (603,332,89,3),
+ (28,18,90,3),
+ (509,281,90,3),
+ (563,310,90,3),
+ (575,316,90,3),
+ (646,356,90,3),
+ (323,181,91,3),
+ (540,298,91,3),
+ (332,186,92,3),
+ (794,439,92,3),
+ (822,459,92,2),
+ (142,80,93,3),
+ (289,163,93,3),
+ (930,567,93,2),
+ (92,52,94,3),
+ (297,167,94,3),
+ (467,258,94,3),
+ (473,261,94,3),
+ (774,429,94,3),
+ (101,57,95,3),
+ (360,202,95,3),
+ (418,232,95,3),
+ (561,309,95,3),
+ (581,320,95,3),
+ (913,550,95,2),
+ (279,156,96,3),
+ (357,200,96,3),
+ (412,229,96,3),
+ (416,231,96,3),
(653,360,96,3),
- (209,116,97,3),
- (436,239,98,3),
- (516,282,98,3),
- (537,294,98,3),
- (921,560,98,2),
- (288,157,99,3),
- (543,298,99,3),
- (837,476,99,2),
- (838,477,99,2),
- (839,478,99,2),
- (840,479,99,2),
- (841,480,99,2),
- (412,226,100,3),
- (632,348,100,3),
- (54,30,101,3),
- (156,88,101,3),
- (328,179,101,3),
- (614,337,101,3),
- (929,568,101,2),
- (847,486,102,2),
- (891,516,102,2),
- (842,481,103,2),
- (912,551,103,2),
- (915,554,111,2),
- (916,555,114,2),
- (924,563,118,2),
- (1,1,121,2),
- (3,2,121,2),
- (5,3,121,2),
- (7,4,121,2),
- (9,5,121,2),
- (11,6,121,2),
- (13,7,121,2),
- (15,8,121,2),
- (17,9,121,2),
- (19,10,121,2),
- (21,11,121,2),
- (23,12,121,2),
- (25,13,121,2),
- (27,14,121,2),
- (29,15,121,2),
- (30,16,121,2),
- (32,17,121,2),
- (34,18,121,2),
- (36,19,121,2),
- (37,20,121,2),
- (38,21,121,2),
- (40,22,121,2),
- (42,23,121,2),
- (43,24,121,2),
- (45,25,121,2),
- (47,26,121,2),
- (49,27,121,2),
- (50,28,121,2),
- (52,29,121,2),
- (53,30,121,2),
- (55,31,121,2),
- (57,32,121,2),
- (59,33,121,2),
- (61,34,121,2),
- (63,35,121,2),
- (65,36,121,2),
- (66,37,121,2),
- (68,38,121,2),
- (70,39,121,2),
- (72,40,121,2),
- (74,41,121,2),
- (76,42,121,2),
- (78,43,121,2),
- (80,44,121,2),
- (82,45,121,2),
- (83,46,121,2),
- (84,47,121,2),
- (85,48,121,2),
- (87,49,121,2),
- (89,50,121,2),
- (91,51,121,2),
- (92,52,121,2),
- (94,53,121,2),
- (96,54,121,2),
- (98,55,121,2),
- (100,56,121,2),
- (101,57,121,2),
- (103,58,121,2),
- (105,59,121,2),
- (107,60,121,2),
- (109,61,121,2),
- (111,62,121,2),
- (113,63,121,2),
- (114,64,121,2),
- (116,65,121,2),
- (118,66,121,2),
- (120,67,121,2),
- (122,68,121,2),
- (124,69,121,2),
- (126,70,121,2),
- (128,71,121,2),
- (130,72,121,2),
- (132,73,121,2),
- (134,74,121,2),
- (136,75,121,2),
- (138,76,121,2),
- (139,77,121,2),
- (141,78,121,2),
- (143,79,121,2),
- (145,80,121,2),
- (146,81,121,2),
- (147,82,121,2),
- (148,83,121,2),
- (149,84,121,2),
- (150,85,121,2),
- (151,86,121,2),
- (153,87,121,2),
- (155,88,121,2),
- (157,89,121,2),
- (159,90,121,2),
- (160,91,121,2),
- (162,92,121,2),
- (164,93,121,2),
- (165,94,121,2),
- (167,95,121,2),
- (169,96,121,2),
- (171,97,121,2),
- (173,98,121,2),
- (175,99,121,2),
- (177,100,121,2),
- (179,101,121,2),
- (181,102,121,2),
- (183,103,121,2),
- (185,104,121,2),
- (187,105,121,2),
- (189,106,121,2),
- (191,107,121,2),
- (193,108,121,2),
- (195,109,121,2),
- (197,110,121,2),
- (199,111,121,2),
- (201,112,121,2),
- (202,113,121,2),
- (204,114,121,2),
- (206,115,121,2),
- (208,116,121,2),
- (210,117,121,2),
- (212,118,121,2),
- (214,119,121,2),
- (216,120,121,2),
- (218,121,121,2),
- (219,122,121,2),
- (221,123,121,2),
- (223,124,121,2),
- (225,125,121,2),
- (227,126,121,2),
- (229,127,121,2),
- (231,128,121,2),
- (233,129,121,2),
- (235,130,121,2),
- (237,131,121,2),
- (239,132,121,2),
- (241,133,121,2),
- (243,134,121,2),
- (245,135,121,2),
- (246,136,121,2),
- (248,137,121,2),
- (250,138,121,2),
- (252,139,121,2),
- (254,140,121,2),
- (256,141,121,2),
- (258,142,121,2),
- (260,143,121,2),
- (262,144,121,2),
- (264,145,121,2),
- (266,146,121,2),
- (268,147,121,2),
- (270,148,121,2),
- (272,149,121,2),
- (274,150,121,2),
- (860,499,123,2),
- (892,529,123,2),
- (951,590,125,2),
- (852,491,129,2),
- (893,521,129,2),
- (905,544,138,2),
- (864,503,139,2),
- (894,533,139,2),
- (933,572,144,2),
- (953,592,147,2),
- (917,556,148,2),
- (851,490,150,2),
- (895,520,150,2),
- (947,586,152,2),
- (846,485,157,2),
- (896,515,157,2),
- (859,498,159,2),
- (897,528,159,2),
- (844,483,160,2),
- (898,513,160,2),
- (914,553,161,2),
- (945,584,162,2),
- (850,489,165,2),
- (899,519,165,2),
- (950,589,167,2),
- (843,482,183,2),
- (900,512,183,2),
- (906,545,183,2),
- (918,557,184,2),
- (939,578,185,2),
- (925,564,187,2),
- (872,511,188,2),
- (901,541,188,2),
- (937,576,189,2),
- (927,566,190,2),
- (922,561,192,2),
- (931,570,201,2),
- (858,497,202,2),
- (902,527,202,2),
- (948,587,202,2);
+ (663,365,96,3),
+ (97,55,97,3),
+ (549,303,97,3),
+ (640,353,97,3),
+ (651,359,97,3),
+ (676,373,97,3),
+ (48,28,98,3),
+ (448,248,98,3),
+ (503,278,98,3),
+ (557,307,98,3),
+ (659,363,98,3),
+ (309,174,99,3),
+ (353,198,99,3),
+ (565,311,99,3),
+ (839,476,99,2),
+ (840,477,99,2),
+ (841,478,99,2),
+ (842,479,99,2),
+ (843,480,99,2),
+ (346,194,100,3),
+ (126,70,101,3),
+ (454,251,101,3),
+ (804,445,101,3),
+ (920,557,101,2),
+ (844,481,103,2),
+ (871,508,107,2),
+ (901,538,107,2),
+ (851,488,112,2),
+ (881,518,112,2),
+ (917,554,113,2),
+ (942,579,114,2),
+ (269,151,115,2),
+ (270,152,115,2),
+ (272,153,115,2),
+ (274,154,115,2),
+ (276,155,115,2),
+ (278,156,115,2),
+ (280,157,115,2),
+ (281,158,115,2),
+ (283,159,115,2),
+ (284,160,115,2),
+ (285,161,115,2),
+ (286,162,115,2),
+ (288,163,115,2),
+ (290,164,115,2),
+ (292,165,115,2),
+ (294,166,115,2),
+ (296,167,115,2),
+ (298,168,115,2),
+ (300,169,115,2),
+ (301,170,115,2),
+ (303,171,115,2),
+ (305,172,115,2),
+ (306,173,115,2),
+ (308,174,115,2),
+ (310,175,115,2),
+ (312,176,115,2),
+ (314,177,115,2),
+ (316,178,115,2),
+ (318,179,115,2),
+ (320,180,115,2),
+ (322,181,115,2),
+ (324,182,115,2),
+ (325,183,115,2),
+ (327,184,115,2),
+ (329,185,115,2),
+ (331,186,115,2),
+ (333,187,115,2),
+ (335,188,115,2),
+ (337,189,115,2),
+ (339,190,115,2),
+ (341,191,115,2),
+ (342,192,115,2),
+ (344,193,115,2),
+ (345,194,115,2),
+ (347,195,115,2),
+ (348,196,115,2),
+ (350,197,115,2),
+ (352,198,115,2),
+ (354,199,115,2),
+ (356,200,115,2),
+ (358,201,115,2),
+ (359,202,115,2),
+ (361,203,115,2),
+ (363,204,115,2),
+ (365,205,115,2),
+ (367,206,115,2),
+ (369,207,115,2),
+ (371,208,115,2),
+ (373,209,115,2),
+ (375,210,115,2),
+ (377,211,115,2),
+ (379,212,115,2),
+ (380,213,115,2),
+ (382,214,115,2),
+ (384,215,115,2),
+ (386,216,115,2),
+ (388,217,115,2),
+ (389,218,115,2),
+ (391,219,115,2),
+ (393,220,115,2),
+ (395,221,115,2),
+ (397,222,115,2),
+ (399,223,115,2),
+ (401,224,115,2),
+ (403,225,115,2),
+ (405,226,115,2),
+ (407,227,115,2),
+ (409,228,115,2),
+ (411,229,115,2),
+ (413,230,115,2),
+ (415,231,115,2),
+ (417,232,115,2),
+ (419,233,115,2),
+ (421,234,115,2),
+ (423,235,115,2),
+ (425,236,115,2),
+ (427,237,115,2),
+ (429,238,115,2),
+ (431,239,115,2),
+ (433,240,115,2),
+ (434,241,115,2),
+ (436,242,115,2),
+ (438,243,115,2),
+ (440,244,115,2),
+ (441,245,115,2),
+ (443,246,115,2),
+ (445,247,115,2),
+ (447,248,115,2),
+ (449,249,115,2),
+ (451,250,115,2),
+ (453,251,115,2),
+ (455,252,115,2),
+ (457,253,115,2),
+ (459,254,115,2),
+ (461,255,115,2),
+ (463,256,115,2),
+ (464,257,115,2),
+ (466,258,115,2),
+ (468,259,115,2),
+ (470,260,115,2),
+ (472,261,115,2),
+ (474,262,115,2),
+ (476,263,115,2),
+ (478,264,115,2),
+ (480,265,115,2),
+ (481,266,115,2),
+ (482,267,115,2),
+ (483,268,115,2),
+ (485,269,115,2),
+ (487,270,115,2),
+ (489,271,115,2),
+ (491,272,115,2),
+ (493,273,115,2),
+ (495,274,115,2),
+ (497,275,115,2),
+ (498,276,115,2),
+ (500,277,115,2),
+ (502,278,115,2),
+ (504,279,115,2),
+ (506,280,115,2),
+ (508,281,115,2),
+ (510,282,115,2),
+ (512,283,115,2),
+ (513,284,115,2),
+ (515,285,115,2),
+ (517,286,115,2),
+ (519,287,115,2),
+ (521,288,115,2),
+ (523,289,115,2),
+ (525,290,115,2),
+ (527,291,115,2),
+ (529,292,115,2),
+ (531,293,115,2),
+ (533,294,115,2),
+ (534,295,115,2),
+ (535,296,115,2),
+ (537,297,115,2),
+ (539,298,115,2),
+ (541,299,115,2),
+ (542,300,115,2),
+ (852,489,115,2),
+ (882,519,115,2),
+ (872,509,116,2),
+ (902,539,116,2),
+ (862,499,120,2),
+ (892,529,120,2),
+ (544,301,123,2),
+ (546,302,123,2),
+ (548,303,123,2),
+ (550,304,123,2),
+ (552,305,123,2),
+ (554,306,123,2),
+ (556,307,123,2),
+ (558,308,123,2),
+ (560,309,123,2),
+ (562,310,123,2),
+ (564,311,123,2),
+ (566,312,123,2),
+ (568,313,123,2),
+ (570,314,123,2),
+ (572,315,123,2),
+ (574,316,123,2),
+ (576,317,123,2),
+ (577,318,123,2),
+ (579,319,123,2),
+ (580,320,123,2),
+ (582,321,123,2),
+ (584,322,123,2),
+ (586,323,123,2),
+ (588,324,123,2),
+ (590,325,123,2),
+ (591,326,123,2),
+ (593,327,123,2),
+ (594,328,123,2),
+ (596,329,123,2),
+ (598,330,123,2),
+ (600,331,123,2),
+ (602,332,123,2),
+ (604,333,123,2),
+ (606,334,123,2),
+ (608,335,123,2),
+ (610,336,123,2),
+ (612,337,123,2),
+ (614,338,123,2),
+ (615,339,123,2),
+ (617,340,123,2),
+ (619,341,123,2),
+ (620,342,123,2),
+ (621,343,123,2),
+ (623,344,123,2),
+ (624,345,123,2),
+ (626,346,123,2),
+ (628,347,123,2),
+ (630,348,123,2),
+ (631,349,123,2),
+ (633,350,123,2),
+ (635,351,123,2),
+ (637,352,123,2),
+ (639,353,123,2),
+ (641,354,123,2),
+ (643,355,123,2),
+ (645,356,123,2),
+ (647,357,123,2),
+ (649,358,123,2),
+ (650,359,123,2),
+ (652,360,123,2),
+ (654,361,123,2),
+ (656,362,123,2),
+ (658,363,123,2),
+ (660,364,123,2),
+ (662,365,123,2),
+ (664,366,123,2),
+ (666,367,123,2),
+ (667,368,123,2),
+ (668,369,123,2),
+ (669,370,123,2),
+ (671,371,123,2),
+ (673,372,123,2),
+ (675,373,123,2),
+ (677,374,123,2),
+ (679,375,123,2),
+ (681,376,123,2),
+ (682,377,123,2),
+ (683,378,123,2),
+ (685,379,123,2),
+ (686,380,123,2),
+ (688,381,123,2),
+ (690,382,123,2),
+ (692,383,123,2),
+ (694,384,123,2),
+ (696,385,123,2),
+ (698,386,123,2),
+ (700,387,123,2),
+ (702,388,123,2),
+ (704,389,123,2),
+ (706,390,123,2),
+ (708,391,123,2),
+ (710,392,123,2),
+ (712,393,123,2),
+ (714,394,123,2),
+ (715,395,123,2),
+ (717,396,123,2),
+ (719,397,123,2),
+ (721,398,123,2),
+ (723,399,123,2),
+ (725,400,123,2),
+ (727,401,123,2),
+ (729,402,123,2),
+ (731,403,123,2),
+ (732,404,123,2),
+ (734,405,123,2),
+ (735,406,123,2),
+ (737,407,123,2),
+ (738,408,123,2),
+ (739,409,123,2),
+ (741,410,123,2),
+ (743,411,123,2),
+ (745,412,123,2),
+ (746,413,123,2),
+ (748,414,123,2),
+ (750,415,123,2),
+ (751,416,123,2),
+ (753,417,123,2),
+ (755,418,123,2),
+ (757,419,123,2),
+ (758,420,123,2),
+ (760,421,123,2),
+ (762,422,123,2),
+ (763,423,123,2),
+ (765,424,123,2),
+ (766,425,123,2),
+ (768,426,123,2),
+ (769,427,123,2),
+ (771,428,123,2),
+ (773,429,123,2),
+ (775,430,123,2),
+ (777,431,123,2),
+ (779,432,123,2),
+ (781,433,123,2),
+ (783,434,123,2),
+ (785,435,123,2),
+ (787,436,123,2),
+ (789,437,123,2),
+ (791,438,123,2),
+ (793,439,123,2),
+ (795,440,123,2),
+ (796,441,123,2),
+ (798,442,123,2),
+ (800,443,123,2),
+ (801,444,123,2),
+ (803,445,123,2),
+ (805,446,123,2),
+ (807,447,123,2),
+ (809,448,123,2),
+ (811,449,123,2),
+ (813,450,123,2),
+ (919,556,123,2),
+ (854,491,128,2),
+ (884,521,128,2),
+ (927,564,129,2),
+ (911,548,132,2),
+ (864,501,140,2),
+ (894,531,140,2),
+ (857,494,142,2),
+ (887,524,142,2),
+ (921,558,146,2),
+ (934,571,152,2),
+ (909,546,153,2),
+ (866,503,155,2),
+ (896,533,155,2),
+ (918,555,156,2),
+ (929,566,158,2),
+ (860,497,159,2),
+ (890,527,159,2),
+ (858,495,160,2),
+ (888,525,160,2),
+ (922,559,163,2),
+ (873,510,166,2),
+ (903,540,166,2),
+ (946,583,171,2),
+ (949,586,176,2),
+ (948,585,177,2),
+ (1,1,181,2),
+ (2,2,181,2),
+ (4,3,181,2),
+ (6,4,181,2),
+ (8,5,181,2),
+ (9,6,181,2),
+ (10,7,181,2),
+ (11,8,181,2),
+ (13,9,181,2),
+ (15,10,181,2),
+ (16,11,181,2),
+ (17,12,181,2),
+ (18,13,181,2),
+ (20,14,181,2),
+ (22,15,181,2),
+ (23,16,181,2),
+ (25,17,181,2),
+ (27,18,181,2),
+ (29,19,181,2),
+ (31,20,181,2),
+ (33,21,181,2),
+ (35,22,181,2),
+ (37,23,181,2),
+ (39,24,181,2),
+ (41,25,181,2),
+ (43,26,181,2),
+ (45,27,181,2),
+ (47,28,181,2),
+ (49,29,181,2),
+ (50,30,181,2),
+ (52,31,181,2),
+ (54,32,181,2),
+ (56,33,181,2),
+ (58,34,181,2),
+ (59,35,181,2),
+ (61,36,181,2),
+ (63,37,181,2),
+ (65,38,181,2),
+ (66,39,181,2),
+ (68,40,181,2),
+ (70,41,181,2),
+ (72,42,181,2),
+ (74,43,181,2),
+ (76,44,181,2),
+ (78,45,181,2),
+ (80,46,181,2),
+ (81,47,181,2),
+ (83,48,181,2),
+ (85,49,181,2),
+ (87,50,181,2),
+ (89,51,181,2),
+ (91,52,181,2),
+ (93,53,181,2),
+ (95,54,181,2),
+ (96,55,181,2),
+ (98,56,181,2),
+ (100,57,181,2),
+ (102,58,181,2),
+ (104,59,181,2),
+ (106,60,181,2),
+ (108,61,181,2),
+ (109,62,181,2),
+ (111,63,181,2),
+ (113,64,181,2),
+ (115,65,181,2),
+ (117,66,181,2),
+ (119,67,181,2),
+ (121,68,181,2),
+ (123,69,181,2),
+ (125,70,181,2),
+ (127,71,181,2),
+ (129,72,181,2),
+ (130,73,181,2),
+ (132,74,181,2),
+ (133,75,181,2),
+ (134,76,181,2),
+ (136,77,181,2),
+ (138,78,181,2),
+ (140,79,181,2),
+ (141,80,181,2),
+ (143,81,181,2),
+ (145,82,181,2),
+ (147,83,181,2),
+ (149,84,181,2),
+ (151,85,181,2),
+ (153,86,181,2),
+ (155,87,181,2),
+ (157,88,181,2),
+ (159,89,181,2),
+ (161,90,181,2),
+ (162,91,181,2),
+ (164,92,181,2),
+ (165,93,181,2),
+ (167,94,181,2),
+ (169,95,181,2),
+ (171,96,181,2),
+ (173,97,181,2),
+ (175,98,181,2),
+ (177,99,181,2),
+ (179,100,181,2),
+ (181,101,181,2),
+ (183,102,181,2),
+ (185,103,181,2),
+ (187,104,181,2),
+ (188,105,181,2),
+ (189,106,181,2),
+ (191,107,181,2),
+ (192,108,181,2),
+ (194,109,181,2),
+ (196,110,181,2),
+ (197,111,181,2),
+ (199,112,181,2),
+ (201,113,181,2),
+ (202,114,181,2),
+ (204,115,181,2),
+ (206,116,181,2),
+ (208,117,181,2),
+ (210,118,181,2),
+ (211,119,181,2),
+ (212,120,181,2),
+ (213,121,181,2),
+ (215,122,181,2),
+ (217,123,181,2),
+ (219,124,181,2),
+ (220,125,181,2),
+ (222,126,181,2),
+ (224,127,181,2),
+ (225,128,181,2),
+ (227,129,181,2),
+ (228,130,181,2),
+ (230,131,181,2),
+ (232,132,181,2),
+ (234,133,181,2),
+ (236,134,181,2),
+ (238,135,181,2),
+ (240,136,181,2),
+ (242,137,181,2),
+ (244,138,181,2),
+ (246,139,181,2),
+ (248,140,181,2),
+ (249,141,181,2),
+ (251,142,181,2),
+ (253,143,181,2),
+ (255,144,181,2),
+ (257,145,181,2),
+ (259,146,181,2),
+ (261,147,181,2),
+ (263,148,181,2),
+ (265,149,181,2),
+ (267,150,181,2),
+ (952,589,181,2),
+ (933,570,182,2),
+ (940,577,186,2),
+ (848,485,190,2),
+ (878,515,190,2),
+ (908,545,193,2),
+ (845,482,194,2),
+ (875,512,194,2),
+ (951,588,194,2),
+ (926,563,195,2),
+ (863,500,200,2),
+ (893,530,200,2),
+ (853,490,201,2),
+ (883,520,201,2),
+ (868,505,202,2),
+ (898,535,202,2);
/*!40000 ALTER TABLE `civicrm_activity_contact` ENABLE KEYS */;
UNLOCK TABLES;
@@ -1694,186 +1697,188 @@ UNLOCK TABLES;
LOCK TABLES `civicrm_address` WRITE;
/*!40000 ALTER TABLE `civicrm_address` DISABLE KEYS */;
INSERT INTO `civicrm_address` (`id`, `contact_id`, `location_type_id`, `is_primary`, `is_billing`, `street_address`, `street_number`, `street_number_suffix`, `street_number_predirectional`, `street_name`, `street_type`, `street_number_postdirectional`, `street_unit`, `supplemental_address_1`, `supplemental_address_2`, `supplemental_address_3`, `city`, `county_id`, `state_province_id`, `postal_code_suffix`, `postal_code`, `usps_adc`, `country_id`, `geo_code_1`, `geo_code_2`, `manual_geo_code`, `timezone`, `name`, `master_id`) VALUES
- (1,130,1,1,0,'355I Dowlen Rd E',355,'I',NULL,'Dowlen','Rd','E',NULL,NULL,NULL,NULL,'Clarkston',1,1021,NULL,'48346',NULL,1228,42.720966,-83.4044,0,NULL,NULL,NULL),
- (2,99,1,1,0,'335E Northpoint Pl S',335,'E',NULL,'Northpoint','Pl','S',NULL,NULL,NULL,NULL,'Waterloo',1,1014,NULL,'50706',NULL,1228,42.407588,-92.26657,0,NULL,NULL,NULL),
- (3,92,1,1,0,'652I College Ave S',652,'I',NULL,'College','Ave','S',NULL,NULL,NULL,NULL,'Cass',1,1047,NULL,'24927',NULL,1228,38.380196,-79.93278,0,NULL,NULL,NULL),
- (4,53,1,1,0,'305C Maple Ave SW',305,'C',NULL,'Maple','Ave','SW',NULL,NULL,NULL,NULL,'Cleveland',1,1045,NULL,'24225',NULL,1228,36.968491,-82.1623,0,NULL,NULL,NULL),
- (5,46,1,1,0,'945X El Camino Dr SE',945,'X',NULL,'El Camino','Dr','SE',NULL,NULL,NULL,NULL,'Spring Creek',1,1041,NULL,'38378',NULL,1228,35.764637,-88.685,0,NULL,NULL,NULL),
- (6,137,1,1,0,'271U Jackson Blvd E',271,'U',NULL,'Jackson','Blvd','E',NULL,NULL,NULL,NULL,'Monticello',1,1008,NULL,'32345',NULL,1228,30.342161,-83.840177,0,NULL,NULL,NULL),
- (7,183,1,1,0,'993B Cadell Blvd NW',993,'B',NULL,'Cadell','Blvd','NW',NULL,NULL,NULL,NULL,'Mears',1,1021,NULL,'49436',NULL,1228,43.678258,-86.46576,0,NULL,NULL,NULL),
- (8,176,1,1,0,'409O Dowlen Dr N',409,'O',NULL,'Dowlen','Dr','N',NULL,NULL,NULL,NULL,'Port Alsworth',1,1001,NULL,'99653',NULL,1228,60.102331,-154.55708,0,NULL,NULL,NULL),
- (9,110,1,1,0,'986N Martin Luther King Way S',986,'N',NULL,'Martin Luther King','Way','S',NULL,NULL,NULL,NULL,'Tuscola',1,1021,NULL,'48769',NULL,1228,43.327048,-83.657355,0,NULL,NULL,NULL),
- (10,85,1,1,0,'781F Beech Rd N',781,'F',NULL,'Beech','Rd','N',NULL,NULL,NULL,NULL,'Valley Village',1,1004,NULL,'91607',NULL,1228,34.165706,-118.39986,0,NULL,NULL,NULL),
- (11,193,1,1,0,'391P Beech Pl N',391,'P',NULL,'Beech','Pl','N',NULL,NULL,NULL,NULL,'Weymouth',1,1020,NULL,'02190',NULL,1228,42.1711,-70.94597,0,NULL,NULL,NULL),
- (12,50,1,1,0,'429F Second Dr SW',429,'F',NULL,'Second','Dr','SW',NULL,NULL,NULL,NULL,'Plano',1,1042,NULL,'76025',NULL,1228,33.104374,-96.766109,0,NULL,NULL,NULL),
- (13,67,1,1,0,'307U Maple Rd SW',307,'U',NULL,'Maple','Rd','SW',NULL,NULL,NULL,NULL,'Tampa',1,1008,NULL,'33613',NULL,1228,28.077994,-82.44989,0,NULL,NULL,NULL),
- (14,121,1,1,0,'795M States Ave S',795,'M',NULL,'States','Ave','S',NULL,NULL,NULL,NULL,'Lansing',1,1021,NULL,'48937',NULL,1228,42.748734,-84.559029,0,NULL,NULL,NULL),
- (15,75,1,1,0,'82B Woodbridge Dr W',82,'B',NULL,'Woodbridge','Dr','W',NULL,NULL,NULL,NULL,'Verona',1,1024,NULL,'65769',NULL,1228,36.935443,-93.78328,0,NULL,NULL,NULL),
- (16,19,1,1,0,'37N Green Dr SE',37,'N',NULL,'Green','Dr','SE',NULL,NULL,NULL,NULL,'Arvonia',1,1045,NULL,'23004',NULL,1228,37.673369,-78.38899,0,NULL,NULL,NULL),
- (17,106,1,1,0,'198N Woodbridge Ave NE',198,'N',NULL,'Woodbridge','Ave','NE',NULL,NULL,NULL,NULL,'Sunbury',1,1032,NULL,'27979',NULL,1228,36.440509,-76.60411,0,NULL,NULL,NULL),
- (18,13,1,1,0,'51L Second Path N',51,'L',NULL,'Second','Path','N',NULL,NULL,NULL,NULL,'Manistique',1,1021,NULL,'49854',NULL,1228,46.042121,-86.33946,0,NULL,NULL,NULL),
- (19,14,1,1,0,'479F Jackson Ave S',479,'F',NULL,'Jackson','Ave','S',NULL,NULL,NULL,NULL,'Mikana',1,1048,NULL,'54857',NULL,1228,45.591546,-91.60046,0,NULL,NULL,NULL),
- (20,88,1,1,0,'523K Beech St W',523,'K',NULL,'Beech','St','W',NULL,NULL,NULL,NULL,'Harford',1,1037,NULL,'18823',NULL,1228,41.784395,-75.70091,0,NULL,NULL,NULL),
- (21,163,1,1,0,'826C Main Path N',826,'C',NULL,'Main','Path','N',NULL,NULL,NULL,NULL,'Goodland',1,1008,NULL,'34154',NULL,1228,25.925446,-81.644387,0,NULL,NULL,NULL),
- (22,27,1,1,0,'120W El Camino St E',120,'W',NULL,'El Camino','St','E',NULL,NULL,NULL,NULL,'Selkirk',1,1031,NULL,'12158',NULL,1228,42.539822,-73.81545,0,NULL,NULL,NULL),
- (23,4,1,1,0,'62U Lincoln Ave NE',62,'U',NULL,'Lincoln','Ave','NE',NULL,NULL,NULL,NULL,'Douglas',1,1049,NULL,'82633',NULL,1228,42.935874,-105.37303,0,NULL,NULL,NULL),
- (24,168,1,1,0,'937E Pine Way S',937,'E',NULL,'Pine','Way','S',NULL,NULL,NULL,NULL,'Canadensis',1,1037,NULL,'18325',NULL,1228,41.205738,-75.24344,0,NULL,NULL,NULL),
- (25,198,1,1,0,'514X Jackson Ln SW',514,'X',NULL,'Jackson','Ln','SW',NULL,NULL,NULL,NULL,'Houston',1,1024,NULL,'65483',NULL,1228,37.316088,-91.95471,0,NULL,NULL,NULL),
- (26,91,1,1,0,'300M Martin Luther King Dr W',300,'M',NULL,'Martin Luther King','Dr','W',NULL,NULL,NULL,NULL,'Uehling',1,1026,NULL,'68063',NULL,1228,41.733433,-96.50454,0,NULL,NULL,NULL),
- (27,60,1,1,0,'948G Lincoln Blvd NE',948,'G',NULL,'Lincoln','Blvd','NE',NULL,NULL,NULL,NULL,'Topeka',1,1015,NULL,'66647',NULL,1228,39.042939,-95.769657,0,NULL,NULL,NULL),
- (28,172,1,1,0,'972L Beech Ave SE',972,'L',NULL,'Beech','Ave','SE',NULL,NULL,NULL,NULL,'Winfield',1,1037,NULL,'17889',NULL,1228,40.884501,-76.91202,0,NULL,NULL,NULL),
- (29,102,1,1,0,'747R Second Pl E',747,'R',NULL,'Second','Pl','E',NULL,NULL,NULL,NULL,'Mooresville',1,1024,NULL,'64664',NULL,1228,39.743993,-93.71189,0,NULL,NULL,NULL),
- (30,128,1,1,0,'743S Lincoln Blvd N',743,'S',NULL,'Lincoln','Blvd','N',NULL,NULL,NULL,NULL,'Chase',1,1021,NULL,'49623',NULL,1228,43.889404,-85.67131,0,NULL,NULL,NULL),
- (31,52,1,1,0,'95E El Camino Pl SW',95,'E',NULL,'El Camino','Pl','SW',NULL,NULL,NULL,NULL,'Washington',1,1028,NULL,'03280',NULL,1228,43.173046,-72.09755,0,NULL,NULL,NULL),
- (32,76,1,1,0,'231Q Martin Luther King Rd NW',231,'Q',NULL,'Martin Luther King','Rd','NW',NULL,NULL,NULL,NULL,'Boise',1,1011,NULL,'83716',NULL,1228,43.601772,-116.02721,0,NULL,NULL,NULL),
- (33,17,1,1,0,'816H Main Way SW',816,'H',NULL,'Main','Way','SW',NULL,NULL,NULL,NULL,'Avondale',1,1005,NULL,'81022',NULL,1228,38.089719,-104.37807,0,NULL,NULL,NULL),
- (34,159,1,1,0,'775L Bay Way SW',775,'L',NULL,'Bay','Way','SW',NULL,NULL,NULL,NULL,'Springport',1,1021,NULL,'49284',NULL,1228,42.38806,-84.70868,0,NULL,NULL,NULL),
- (35,30,1,1,0,'172W Woodbridge St S',172,'W',NULL,'Woodbridge','St','S',NULL,NULL,NULL,NULL,'Omaha',1,1003,NULL,'72662',NULL,1228,36.427675,-93.19473,0,NULL,NULL,NULL),
- (36,109,1,1,0,'171S Maple Pl SW',171,'S',NULL,'Maple','Pl','SW',NULL,NULL,NULL,NULL,'Cripple Creek',1,1005,NULL,'80813',NULL,1228,38.75604,-105.1497,0,NULL,NULL,NULL),
- (37,90,1,1,0,'743Q Caulder Way SE',743,'Q',NULL,'Caulder','Way','SE',NULL,NULL,NULL,NULL,'Cochranton',1,1037,NULL,'16314',NULL,1228,41.517339,-80.05761,0,NULL,NULL,NULL),
- (38,155,1,1,0,'601H Northpoint St NE',601,'H',NULL,'Northpoint','St','NE',NULL,NULL,NULL,NULL,'Lansing',1,1021,NULL,'48924',NULL,1228,42.599184,-84.371973,0,NULL,NULL,NULL),
- (39,148,1,1,0,'419L Martin Luther King St E',419,'L',NULL,'Martin Luther King','St','E',NULL,NULL,NULL,NULL,'Tupman',1,1004,NULL,'93276',NULL,1228,35.305512,-119.38925,0,NULL,NULL,NULL),
- (40,125,1,1,0,'77T Dowlen Dr NW',77,'T',NULL,'Dowlen','Dr','NW',NULL,NULL,NULL,NULL,'Rainbow',1,1042,NULL,'76077',NULL,1228,32.28122,-97.70927,0,NULL,NULL,NULL),
- (41,189,1,1,0,'834D Jackson Rd NW',834,'D',NULL,'Jackson','Rd','NW',NULL,NULL,NULL,NULL,'Charlotte',1,1044,NULL,'05445',NULL,1228,44.309241,-73.23504,0,NULL,NULL,NULL),
- (42,57,1,1,0,'756S Bay Pl E',756,'S',NULL,'Bay','Pl','E',NULL,NULL,NULL,NULL,'Elkland',1,1037,NULL,'16920',NULL,1228,41.989863,-77.31123,0,NULL,NULL,NULL),
- (43,64,1,1,0,'850G College Rd SW',850,'G',NULL,'College','Rd','SW',NULL,NULL,NULL,NULL,'Roaring River',1,1032,NULL,'28669',NULL,1228,36.229983,-80.99639,0,NULL,NULL,NULL),
- (44,83,1,1,0,'440B El Camino Rd N',440,'B',NULL,'El Camino','Rd','N',NULL,NULL,NULL,NULL,'Bat Cave',1,1032,NULL,'28710',NULL,1228,35.464897,-82.28307,0,NULL,NULL,NULL),
- (45,152,1,1,0,'358X Lincoln Ave SW',358,'X',NULL,'Lincoln','Ave','SW',NULL,NULL,NULL,NULL,'Point Lay',1,1001,NULL,'99759',NULL,1228,69.741023,-163.00861,0,NULL,NULL,NULL),
- (46,89,1,1,0,'678D Beech Rd SW',678,'D',NULL,'Beech','Rd','SW',NULL,NULL,NULL,NULL,'Plymouth',1,1048,NULL,'53073',NULL,1228,43.758674,-87.98005,0,NULL,NULL,NULL),
- (47,177,1,1,0,'168N Main Blvd N',168,'N',NULL,'Main','Blvd','N',NULL,NULL,NULL,NULL,'Earth City',1,1024,NULL,'63045',NULL,1228,38.638318,-90.427118,0,NULL,NULL,NULL),
- (48,167,1,1,0,'108J Main Pl NW',108,'J',NULL,'Main','Pl','NW',NULL,NULL,NULL,NULL,'Stone Mountain',1,1009,NULL,'30088',NULL,1228,33.762106,-84.17938,0,NULL,NULL,NULL),
- (49,115,1,1,0,'63J Caulder Pl W',63,'J',NULL,'Caulder','Pl','W',NULL,NULL,NULL,NULL,'Salisbury',1,1032,NULL,'28146',NULL,1228,35.614422,-80.43115,0,NULL,NULL,NULL),
- (50,147,1,1,0,'665V Pine Ln SE',665,'V',NULL,'Pine','Ln','SE',NULL,NULL,NULL,NULL,'Pleasant Hill',1,1004,NULL,'94523',NULL,1228,37.951672,-122.07317,0,NULL,NULL,NULL),
- (51,161,1,1,0,'826F Pine Blvd NE',826,'F',NULL,'Pine','Blvd','NE',NULL,NULL,NULL,NULL,'Smith Mills',1,1016,NULL,'42457',NULL,1228,37.801347,-87.76586,0,NULL,NULL,NULL),
- (52,127,1,1,0,'13G Green Dr S',13,'G',NULL,'Green','Dr','S',NULL,NULL,NULL,NULL,'Spivey',1,1015,NULL,'67142',NULL,1228,37.468889,-98.21584,0,NULL,NULL,NULL),
- (53,6,1,1,0,'849L Van Ness Dr NE',849,'L',NULL,'Van Ness','Dr','NE',NULL,NULL,NULL,NULL,'Irving',1,1042,NULL,'75017',NULL,1228,32.767268,-96.777626,0,NULL,NULL,NULL),
- (54,5,1,1,0,'260S Martin Luther King Path SE',260,'S',NULL,'Martin Luther King','Path','SE',NULL,NULL,NULL,NULL,'Minneapolis',1,1022,NULL,'55483',NULL,1228,45.015914,-93.47188,0,NULL,NULL,NULL),
- (55,174,1,1,0,'545Y States Pl SE',545,'Y',NULL,'States','Pl','SE',NULL,NULL,NULL,NULL,'Bliss',1,1011,NULL,'83314',NULL,1228,42.937947,-114.95287,0,NULL,NULL,NULL),
- (56,80,1,1,0,'452E Pine Ln E',452,'E',NULL,'Pine','Ln','E',NULL,NULL,NULL,NULL,'Marion',1,1034,NULL,'43307',NULL,1228,40.56941,-83.139341,0,NULL,NULL,NULL),
- (57,55,1,1,0,'962V Jackson Dr SE',962,'V',NULL,'Jackson','Dr','SE',NULL,NULL,NULL,NULL,'Buxton',1,1036,NULL,'97109',NULL,1228,45.729085,-123.20234,0,NULL,NULL,NULL),
- (58,171,1,1,0,'953Q College Rd SE',953,'Q',NULL,'College','Rd','SE',NULL,NULL,NULL,NULL,'Des Moines',1,1014,NULL,'50396',NULL,1228,41.672687,-93.572173,0,NULL,NULL,NULL),
- (59,182,1,1,0,'87O States Path W',87,'O',NULL,'States','Path','W',NULL,NULL,NULL,NULL,'Lower Brule',1,1040,NULL,'57548',NULL,1228,44.057302,-99.54871,0,NULL,NULL,NULL),
- (60,45,1,1,0,'395Y Martin Luther King St N',395,'Y',NULL,'Martin Luther King','St','N',NULL,NULL,NULL,NULL,'La Vernia',1,1042,NULL,'78121',NULL,1228,29.351202,-98.11528,0,NULL,NULL,NULL),
- (61,156,1,1,0,'376N Cadell Pl E',376,'N',NULL,'Cadell','Pl','E',NULL,NULL,NULL,NULL,'Brittany',1,1017,NULL,'70718',NULL,1228,30.201004,-90.868876,0,NULL,NULL,NULL),
- (62,131,1,1,0,'435Y Jackson Ave W',435,'Y',NULL,'Jackson','Ave','W',NULL,NULL,NULL,NULL,'Fargo',1,1033,NULL,'58121',NULL,1228,46.934596,-97.229718,0,NULL,NULL,NULL),
- (63,116,1,1,0,'442U Dowlen Pl W',442,'U',NULL,'Dowlen','Pl','W',NULL,NULL,NULL,NULL,'Houston',1,1042,NULL,'77088',NULL,1228,29.879213,-95.45028,0,NULL,NULL,NULL),
- (64,184,1,1,0,'2Y Maple Pl NE',2,'Y',NULL,'Maple','Pl','NE',NULL,NULL,NULL,NULL,'Butler',1,1048,NULL,'53007',NULL,1228,43.10836,-88.06893,0,NULL,NULL,NULL),
- (65,21,3,1,0,'310F Woodbridge Path W',310,'F',NULL,'Woodbridge','Path','W',NULL,'Community Relations',NULL,NULL,'Longstreet',1,1017,NULL,'71050',NULL,1228,32.117539,-93.913834,0,NULL,NULL,NULL),
- (66,46,2,0,0,'310F Woodbridge Path W',310,'F',NULL,'Woodbridge','Path','W',NULL,'Community Relations',NULL,NULL,'Longstreet',1,1017,NULL,'71050',NULL,1228,32.117539,-93.913834,0,NULL,NULL,65),
- (67,51,3,1,0,'280C Dowlen Ln N',280,'C',NULL,'Dowlen','Ln','N',NULL,'c/o PO Plus',NULL,NULL,'South Montrose',1,1037,NULL,'18843',NULL,1228,41.8237,-75.88314,0,NULL,NULL,NULL),
- (68,57,2,0,0,'280C Dowlen Ln N',280,'C',NULL,'Dowlen','Ln','N',NULL,'c/o PO Plus',NULL,NULL,'South Montrose',1,1037,NULL,'18843',NULL,1228,41.8237,-75.88314,0,NULL,NULL,67),
- (69,87,3,1,0,'356W Woodbridge St N',356,'W',NULL,'Woodbridge','St','N',NULL,'Editorial Dept',NULL,NULL,'Prescott',1,1021,NULL,'48756',NULL,1228,44.206123,-83.99306,0,NULL,NULL,NULL),
- (70,50,2,0,0,'356W Woodbridge St N',356,'W',NULL,'Woodbridge','St','N',NULL,'Editorial Dept',NULL,NULL,'Prescott',1,1021,NULL,'48756',NULL,1228,44.206123,-83.99306,0,NULL,NULL,69),
- (71,154,3,1,0,'368U Caulder Ln SE',368,'U',NULL,'Caulder','Ln','SE',NULL,'Payables Dept.',NULL,NULL,'Graton',1,1004,NULL,'95444',NULL,1228,38.434663,-122.8689,0,NULL,NULL,NULL),
- (72,141,2,1,0,'368U Caulder Ln SE',368,'U',NULL,'Caulder','Ln','SE',NULL,'Payables Dept.',NULL,NULL,'Graton',1,1004,NULL,'95444',NULL,1228,38.434663,-122.8689,0,NULL,NULL,71),
- (73,138,3,1,0,'385G Beech St NW',385,'G',NULL,'Beech','St','NW',NULL,'Editorial Dept',NULL,NULL,'New Castle',1,1037,NULL,'16107',NULL,1228,40.989662,-80.308376,0,NULL,NULL,NULL),
- (74,82,2,1,0,'385G Beech St NW',385,'G',NULL,'Beech','St','NW',NULL,'Editorial Dept',NULL,NULL,'New Castle',1,1037,NULL,'16107',NULL,1228,40.989662,-80.308376,0,NULL,NULL,73),
- (75,135,3,1,0,'411H Cadell Ln NW',411,'H',NULL,'Cadell','Ln','NW',NULL,'Churchgate',NULL,NULL,'Corinth',1,1023,NULL,'38835',NULL,1228,34.920451,-88.521772,0,NULL,NULL,NULL),
- (76,100,3,1,0,'352G Jackson Ave S',352,'G',NULL,'Jackson','Ave','S',NULL,'Attn: Development',NULL,NULL,'Belleville',1,1015,NULL,'67630',NULL,1228,37.097273,-96.100176,0,NULL,NULL,NULL),
- (77,48,3,1,0,'734G El Camino Pl N',734,'G',NULL,'El Camino','Pl','N',NULL,'Attn: Accounting',NULL,NULL,'Maywood',1,1012,NULL,'60153',NULL,1228,41.880281,-87.84455,0,NULL,NULL,NULL),
- (78,165,2,1,0,'734G El Camino Pl N',734,'G',NULL,'El Camino','Pl','N',NULL,'Attn: Accounting',NULL,NULL,'Maywood',1,1012,NULL,'60153',NULL,1228,41.880281,-87.84455,0,NULL,NULL,77),
- (79,122,3,1,0,'708M Main Ln S',708,'M',NULL,'Main','Ln','S',NULL,'Editorial Dept',NULL,NULL,'Des Plaines',1,1012,NULL,'60018',NULL,1228,42.008429,-87.89234,0,NULL,NULL,NULL),
- (80,110,2,0,0,'708M Main Ln S',708,'M',NULL,'Main','Ln','S',NULL,'Editorial Dept',NULL,NULL,'Des Plaines',1,1012,NULL,'60018',NULL,1228,42.008429,-87.89234,0,NULL,NULL,79),
- (81,73,3,1,0,'41V Lincoln Way SW',41,'V',NULL,'Lincoln','Way','SW',NULL,'Cuffe Parade',NULL,NULL,'Anchorage',1,1001,NULL,'99519',NULL,1228,61.108864,-149.440311,0,NULL,NULL,NULL),
- (82,139,2,1,0,'41V Lincoln Way SW',41,'V',NULL,'Lincoln','Way','SW',NULL,'Cuffe Parade',NULL,NULL,'Anchorage',1,1001,NULL,'99519',NULL,1228,61.108864,-149.440311,0,NULL,NULL,81),
- (83,40,3,1,0,'459F Cadell Rd SE',459,'F',NULL,'Cadell','Rd','SE',NULL,'Attn: Accounting',NULL,NULL,'Ong',1,1026,NULL,'68452',NULL,1228,40.394354,-97.84507,0,NULL,NULL,NULL),
- (84,187,3,1,0,'321O Green St E',321,'O',NULL,'Green','St','E',NULL,'Churchgate',NULL,NULL,'Spencer',1,1034,NULL,'44275',NULL,1228,41.101909,-82.10234,0,NULL,NULL,NULL),
- (85,142,3,1,0,'274S Main Dr SW',274,'S',NULL,'Main','Dr','SW',NULL,'Editorial Dept',NULL,NULL,'Sparta',1,1045,NULL,'22552',NULL,1228,38.009438,-77.225139,0,NULL,NULL,NULL),
- (86,44,3,1,0,'145H Jackson Pl W',145,'H',NULL,'Jackson','Pl','W',NULL,'Attn: Development',NULL,NULL,'Maple Plain',1,1022,NULL,'55359',NULL,1228,45.002212,-93.69319,0,NULL,NULL,NULL),
- (87,145,3,1,0,'283F Lincoln Rd NW',283,'F',NULL,'Lincoln','Rd','NW',NULL,'Community Relations',NULL,NULL,'Little Rock',1,1003,NULL,'72221',NULL,1228,34.751918,-92.392487,0,NULL,NULL,NULL),
- (88,103,2,1,0,'283F Lincoln Rd NW',283,'F',NULL,'Lincoln','Rd','NW',NULL,'Community Relations',NULL,NULL,'Little Rock',1,1003,NULL,'72221',NULL,1228,34.751918,-92.392487,0,NULL,NULL,87),
- (89,173,3,1,0,'354V Caulder Way W',354,'V',NULL,'Caulder','Way','W',NULL,'Mailstop 101',NULL,NULL,'Verbena',1,1000,NULL,'36091',NULL,1228,32.759543,-86.51111,0,NULL,NULL,NULL),
- (90,160,2,1,0,'354V Caulder Way W',354,'V',NULL,'Caulder','Way','W',NULL,'Mailstop 101',NULL,NULL,'Verbena',1,1000,NULL,'36091',NULL,1228,32.759543,-86.51111,0,NULL,NULL,89),
- (91,180,3,1,0,'367R Jackson Way S',367,'R',NULL,'Jackson','Way','S',NULL,'c/o OPDC',NULL,NULL,'Forestport',1,1031,NULL,'13338',NULL,1228,43.506153,-75.07355,0,NULL,NULL,NULL),
- (92,109,2,0,0,'367R Jackson Way S',367,'R',NULL,'Jackson','Way','S',NULL,'c/o OPDC',NULL,NULL,'Forestport',1,1031,NULL,'13338',NULL,1228,43.506153,-75.07355,0,NULL,NULL,91),
- (93,118,3,1,0,'737P Caulder Ave SW',737,'P',NULL,'Caulder','Ave','SW',NULL,'Community Relations',NULL,NULL,'Charleston',1,1041,NULL,'37310',NULL,1228,35.275808,-84.76927,0,NULL,NULL,NULL),
- (94,52,2,0,0,'737P Caulder Ave SW',737,'P',NULL,'Caulder','Ave','SW',NULL,'Community Relations',NULL,NULL,'Charleston',1,1041,NULL,'37310',NULL,1228,35.275808,-84.76927,0,NULL,NULL,93),
- (95,36,3,1,0,'126J Jackson Ave NE',126,'J',NULL,'Jackson','Ave','NE',NULL,'Attn: Development',NULL,NULL,'Youngstown',1,1034,NULL,'44512',NULL,1228,41.032675,-80.66467,0,NULL,NULL,NULL),
- (96,49,2,1,0,'126J Jackson Ave NE',126,'J',NULL,'Jackson','Ave','NE',NULL,'Attn: Development',NULL,NULL,'Youngstown',1,1034,NULL,'44512',NULL,1228,41.032675,-80.66467,0,NULL,NULL,95),
- (97,170,3,1,0,'204E Beech Way SE',204,'E',NULL,'Beech','Way','SE',NULL,'Payables Dept.',NULL,NULL,'New Concord',1,1034,NULL,'43762',NULL,1228,40.018953,-81.73657,0,NULL,NULL,NULL),
- (98,114,1,1,0,'358X Lincoln Ave SW',358,'X',NULL,'Lincoln','Ave','SW',NULL,NULL,NULL,NULL,'Point Lay',1,1001,NULL,'99759',NULL,1228,69.741023,-163.00861,0,NULL,NULL,45),
- (99,175,1,1,0,'358X Lincoln Ave SW',358,'X',NULL,'Lincoln','Ave','SW',NULL,NULL,NULL,NULL,'Point Lay',1,1001,NULL,'99759',NULL,1228,69.741023,-163.00861,0,NULL,NULL,45),
- (100,49,1,0,0,'358X Lincoln Ave SW',358,'X',NULL,'Lincoln','Ave','SW',NULL,NULL,NULL,NULL,'Point Lay',1,1001,NULL,'99759',NULL,1228,69.741023,-163.00861,0,NULL,NULL,45),
- (101,83,1,0,0,'340G Woodbridge Rd NW',340,'G',NULL,'Woodbridge','Rd','NW',NULL,NULL,NULL,NULL,'Long Lake',1,1031,NULL,'12847',NULL,1228,43.97643,-74.56669,0,NULL,NULL,NULL),
- (102,3,1,1,0,'678D Beech Rd SW',678,'D',NULL,'Beech','Rd','SW',NULL,NULL,NULL,NULL,'Plymouth',1,1048,NULL,'53073',NULL,1228,43.758674,-87.98005,0,NULL,NULL,46),
- (103,68,1,1,0,'678D Beech Rd SW',678,'D',NULL,'Beech','Rd','SW',NULL,NULL,NULL,NULL,'Plymouth',1,1048,NULL,'53073',NULL,1228,43.758674,-87.98005,0,NULL,NULL,46),
- (104,69,1,1,0,'678D Beech Rd SW',678,'D',NULL,'Beech','Rd','SW',NULL,NULL,NULL,NULL,'Plymouth',1,1048,NULL,'53073',NULL,1228,43.758674,-87.98005,0,NULL,NULL,46),
- (105,124,1,1,0,'742C Beech Blvd W',742,'C',NULL,'Beech','Blvd','W',NULL,NULL,NULL,NULL,'Marksville',1,1017,NULL,'71351',NULL,1228,31.140727,-92.08056,0,NULL,NULL,NULL),
- (106,2,1,1,0,'168N Main Blvd N',168,'N',NULL,'Main','Blvd','N',NULL,NULL,NULL,NULL,'Earth City',1,1024,NULL,'63045',NULL,1228,38.638318,-90.427118,0,NULL,NULL,47),
- (107,56,1,1,0,'168N Main Blvd N',168,'N',NULL,'Main','Blvd','N',NULL,NULL,NULL,NULL,'Earth City',1,1024,NULL,'63045',NULL,1228,38.638318,-90.427118,0,NULL,NULL,47),
- (108,140,1,1,0,'168N Main Blvd N',168,'N',NULL,'Main','Blvd','N',NULL,NULL,NULL,NULL,'Earth City',1,1024,NULL,'63045',NULL,1228,38.638318,-90.427118,0,NULL,NULL,47),
- (109,58,1,1,0,'912O Pine St NE',912,'O',NULL,'Pine','St','NE',NULL,NULL,NULL,NULL,'Eureka',1,1004,NULL,'95503',NULL,1228,40.757091,-124.1513,0,NULL,NULL,NULL),
- (110,24,1,1,0,'108J Main Pl NW',108,'J',NULL,'Main','Pl','NW',NULL,NULL,NULL,NULL,'Stone Mountain',1,1009,NULL,'30088',NULL,1228,33.762106,-84.17938,0,NULL,NULL,48),
- (111,107,1,1,0,'108J Main Pl NW',108,'J',NULL,'Main','Pl','NW',NULL,NULL,NULL,NULL,'Stone Mountain',1,1009,NULL,'30088',NULL,1228,33.762106,-84.17938,0,NULL,NULL,48),
- (112,134,1,1,0,'108J Main Pl NW',108,'J',NULL,'Main','Pl','NW',NULL,NULL,NULL,NULL,'Stone Mountain',1,1009,NULL,'30088',NULL,1228,33.762106,-84.17938,0,NULL,NULL,48),
- (113,38,1,1,0,'108J Main Pl NW',108,'J',NULL,'Main','Pl','NW',NULL,NULL,NULL,NULL,'Stone Mountain',1,1009,NULL,'30088',NULL,1228,33.762106,-84.17938,0,NULL,NULL,48),
- (114,123,1,1,0,'63J Caulder Pl W',63,'J',NULL,'Caulder','Pl','W',NULL,NULL,NULL,NULL,'Salisbury',1,1032,NULL,'28146',NULL,1228,35.614422,-80.43115,0,NULL,NULL,49),
- (115,79,1,1,0,'63J Caulder Pl W',63,'J',NULL,'Caulder','Pl','W',NULL,NULL,NULL,NULL,'Salisbury',1,1032,NULL,'28146',NULL,1228,35.614422,-80.43115,0,NULL,NULL,49),
- (116,32,1,1,0,'63J Caulder Pl W',63,'J',NULL,'Caulder','Pl','W',NULL,NULL,NULL,NULL,'Salisbury',1,1032,NULL,'28146',NULL,1228,35.614422,-80.43115,0,NULL,NULL,49),
- (117,149,1,1,0,'63J Caulder Pl W',63,'J',NULL,'Caulder','Pl','W',NULL,NULL,NULL,NULL,'Salisbury',1,1032,NULL,'28146',NULL,1228,35.614422,-80.43115,0,NULL,NULL,49),
- (118,143,1,1,0,'665V Pine Ln SE',665,'V',NULL,'Pine','Ln','SE',NULL,NULL,NULL,NULL,'Pleasant Hill',1,1004,NULL,'94523',NULL,1228,37.951672,-122.07317,0,NULL,NULL,50),
- (119,132,1,1,0,'665V Pine Ln SE',665,'V',NULL,'Pine','Ln','SE',NULL,NULL,NULL,NULL,'Pleasant Hill',1,1004,NULL,'94523',NULL,1228,37.951672,-122.07317,0,NULL,NULL,50),
- (120,199,1,1,0,'665V Pine Ln SE',665,'V',NULL,'Pine','Ln','SE',NULL,NULL,NULL,NULL,'Pleasant Hill',1,1004,NULL,'94523',NULL,1228,37.951672,-122.07317,0,NULL,NULL,50),
- (121,42,1,1,0,'665V Pine Ln SE',665,'V',NULL,'Pine','Ln','SE',NULL,NULL,NULL,NULL,'Pleasant Hill',1,1004,NULL,'94523',NULL,1228,37.951672,-122.07317,0,NULL,NULL,50),
- (122,160,1,0,0,'826F Pine Blvd NE',826,'F',NULL,'Pine','Blvd','NE',NULL,NULL,NULL,NULL,'Smith Mills',1,1016,NULL,'42457',NULL,1228,37.801347,-87.76586,0,NULL,NULL,51),
- (123,188,1,1,0,'826F Pine Blvd NE',826,'F',NULL,'Pine','Blvd','NE',NULL,NULL,NULL,NULL,'Smith Mills',1,1016,NULL,'42457',NULL,1228,37.801347,-87.76586,0,NULL,NULL,51),
- (124,8,1,1,0,'826F Pine Blvd NE',826,'F',NULL,'Pine','Blvd','NE',NULL,NULL,NULL,NULL,'Smith Mills',1,1016,NULL,'42457',NULL,1228,37.801347,-87.76586,0,NULL,NULL,51),
- (125,144,1,1,0,'324T Woodbridge St SE',324,'T',NULL,'Woodbridge','St','SE',NULL,NULL,NULL,NULL,'Campton',1,1028,NULL,'03223',NULL,1228,43.887682,-71.65161,0,NULL,NULL,NULL),
- (126,11,1,1,0,'13G Green Dr S',13,'G',NULL,'Green','Dr','S',NULL,NULL,NULL,NULL,'Spivey',1,1015,NULL,'67142',NULL,1228,37.468889,-98.21584,0,NULL,NULL,52),
- (127,185,1,1,0,'13G Green Dr S',13,'G',NULL,'Green','Dr','S',NULL,NULL,NULL,NULL,'Spivey',1,1015,NULL,'67142',NULL,1228,37.468889,-98.21584,0,NULL,NULL,52),
- (128,158,1,1,0,'13G Green Dr S',13,'G',NULL,'Green','Dr','S',NULL,NULL,NULL,NULL,'Spivey',1,1015,NULL,'67142',NULL,1228,37.468889,-98.21584,0,NULL,NULL,52),
- (129,96,1,1,0,'13G Green Dr S',13,'G',NULL,'Green','Dr','S',NULL,NULL,NULL,NULL,'Spivey',1,1015,NULL,'67142',NULL,1228,37.468889,-98.21584,0,NULL,NULL,52),
- (130,103,1,0,0,'849L Van Ness Dr NE',849,'L',NULL,'Van Ness','Dr','NE',NULL,NULL,NULL,NULL,'Irving',1,1042,NULL,'75017',NULL,1228,32.767268,-96.777626,0,NULL,NULL,53),
- (131,112,1,1,0,'849L Van Ness Dr NE',849,'L',NULL,'Van Ness','Dr','NE',NULL,NULL,NULL,NULL,'Irving',1,1042,NULL,'75017',NULL,1228,32.767268,-96.777626,0,NULL,NULL,53),
- (132,150,1,1,0,'849L Van Ness Dr NE',849,'L',NULL,'Van Ness','Dr','NE',NULL,NULL,NULL,NULL,'Irving',1,1042,NULL,'75017',NULL,1228,32.767268,-96.777626,0,NULL,NULL,53),
- (133,119,1,1,0,'849L Van Ness Dr NE',849,'L',NULL,'Van Ness','Dr','NE',NULL,NULL,NULL,NULL,'Irving',1,1042,NULL,'75017',NULL,1228,32.767268,-96.777626,0,NULL,NULL,53),
- (134,108,1,1,0,'260S Martin Luther King Path SE',260,'S',NULL,'Martin Luther King','Path','SE',NULL,NULL,NULL,NULL,'Minneapolis',1,1022,NULL,'55483',NULL,1228,45.015914,-93.47188,0,NULL,NULL,54),
- (135,191,1,1,0,'260S Martin Luther King Path SE',260,'S',NULL,'Martin Luther King','Path','SE',NULL,NULL,NULL,NULL,'Minneapolis',1,1022,NULL,'55483',NULL,1228,45.015914,-93.47188,0,NULL,NULL,54),
- (136,105,1,1,0,'260S Martin Luther King Path SE',260,'S',NULL,'Martin Luther King','Path','SE',NULL,NULL,NULL,NULL,'Minneapolis',1,1022,NULL,'55483',NULL,1228,45.015914,-93.47188,0,NULL,NULL,54),
- (137,95,1,1,0,'260S Martin Luther King Path SE',260,'S',NULL,'Martin Luther King','Path','SE',NULL,NULL,NULL,NULL,'Minneapolis',1,1022,NULL,'55483',NULL,1228,45.015914,-93.47188,0,NULL,NULL,54),
- (138,33,1,1,0,'545Y States Pl SE',545,'Y',NULL,'States','Pl','SE',NULL,NULL,NULL,NULL,'Bliss',1,1011,NULL,'83314',NULL,1228,42.937947,-114.95287,0,NULL,NULL,55),
- (139,104,1,1,0,'545Y States Pl SE',545,'Y',NULL,'States','Pl','SE',NULL,NULL,NULL,NULL,'Bliss',1,1011,NULL,'83314',NULL,1228,42.937947,-114.95287,0,NULL,NULL,55),
- (140,151,1,1,0,'545Y States Pl SE',545,'Y',NULL,'States','Pl','SE',NULL,NULL,NULL,NULL,'Bliss',1,1011,NULL,'83314',NULL,1228,42.937947,-114.95287,0,NULL,NULL,55),
- (141,153,1,1,0,'545Y States Pl SE',545,'Y',NULL,'States','Pl','SE',NULL,NULL,NULL,NULL,'Bliss',1,1011,NULL,'83314',NULL,1228,42.937947,-114.95287,0,NULL,NULL,55),
- (142,29,1,1,0,'452E Pine Ln E',452,'E',NULL,'Pine','Ln','E',NULL,NULL,NULL,NULL,'Marion',1,1034,NULL,'43307',NULL,1228,40.56941,-83.139341,0,NULL,NULL,56),
- (143,65,1,1,0,'452E Pine Ln E',452,'E',NULL,'Pine','Ln','E',NULL,NULL,NULL,NULL,'Marion',1,1034,NULL,'43307',NULL,1228,40.56941,-83.139341,0,NULL,NULL,56),
- (144,43,1,1,0,'452E Pine Ln E',452,'E',NULL,'Pine','Ln','E',NULL,NULL,NULL,NULL,'Marion',1,1034,NULL,'43307',NULL,1228,40.56941,-83.139341,0,NULL,NULL,56),
- (145,7,1,1,0,'452E Pine Ln E',452,'E',NULL,'Pine','Ln','E',NULL,NULL,NULL,NULL,'Marion',1,1034,NULL,'43307',NULL,1228,40.56941,-83.139341,0,NULL,NULL,56),
- (146,9,1,1,0,'962V Jackson Dr SE',962,'V',NULL,'Jackson','Dr','SE',NULL,NULL,NULL,NULL,'Buxton',1,1036,NULL,'97109',NULL,1228,45.729085,-123.20234,0,NULL,NULL,57),
- (147,179,1,1,0,'962V Jackson Dr SE',962,'V',NULL,'Jackson','Dr','SE',NULL,NULL,NULL,NULL,'Buxton',1,1036,NULL,'97109',NULL,1228,45.729085,-123.20234,0,NULL,NULL,57),
- (148,39,1,1,0,'962V Jackson Dr SE',962,'V',NULL,'Jackson','Dr','SE',NULL,NULL,NULL,NULL,'Buxton',1,1036,NULL,'97109',NULL,1228,45.729085,-123.20234,0,NULL,NULL,57),
- (149,197,1,1,0,'962V Jackson Dr SE',962,'V',NULL,'Jackson','Dr','SE',NULL,NULL,NULL,NULL,'Buxton',1,1036,NULL,'97109',NULL,1228,45.729085,-123.20234,0,NULL,NULL,57),
- (150,169,1,1,0,'953Q College Rd SE',953,'Q',NULL,'College','Rd','SE',NULL,NULL,NULL,NULL,'Des Moines',1,1014,NULL,'50396',NULL,1228,41.672687,-93.572173,0,NULL,NULL,58),
- (151,20,1,1,0,'953Q College Rd SE',953,'Q',NULL,'College','Rd','SE',NULL,NULL,NULL,NULL,'Des Moines',1,1014,NULL,'50396',NULL,1228,41.672687,-93.572173,0,NULL,NULL,58),
- (152,25,1,1,0,'953Q College Rd SE',953,'Q',NULL,'College','Rd','SE',NULL,NULL,NULL,NULL,'Des Moines',1,1014,NULL,'50396',NULL,1228,41.672687,-93.572173,0,NULL,NULL,58),
- (153,162,1,1,0,'953Q College Rd SE',953,'Q',NULL,'College','Rd','SE',NULL,NULL,NULL,NULL,'Des Moines',1,1014,NULL,'50396',NULL,1228,41.672687,-93.572173,0,NULL,NULL,58),
- (154,18,1,1,0,'87O States Path W',87,'O',NULL,'States','Path','W',NULL,NULL,NULL,NULL,'Lower Brule',1,1040,NULL,'57548',NULL,1228,44.057302,-99.54871,0,NULL,NULL,59),
- (155,61,1,1,0,'87O States Path W',87,'O',NULL,'States','Path','W',NULL,NULL,NULL,NULL,'Lower Brule',1,1040,NULL,'57548',NULL,1228,44.057302,-99.54871,0,NULL,NULL,59),
- (156,35,1,1,0,'87O States Path W',87,'O',NULL,'States','Path','W',NULL,NULL,NULL,NULL,'Lower Brule',1,1040,NULL,'57548',NULL,1228,44.057302,-99.54871,0,NULL,NULL,59),
- (157,97,1,1,0,'833Y Main Path S',833,'Y',NULL,'Main','Path','S',NULL,NULL,NULL,NULL,'Norene',1,1041,NULL,'37136',NULL,1228,36.156231,-86.304922,0,NULL,NULL,NULL),
- (158,178,1,1,0,'395Y Martin Luther King St N',395,'Y',NULL,'Martin Luther King','St','N',NULL,NULL,NULL,NULL,'La Vernia',1,1042,NULL,'78121',NULL,1228,29.351202,-98.11528,0,NULL,NULL,60),
- (159,31,1,1,0,'395Y Martin Luther King St N',395,'Y',NULL,'Martin Luther King','St','N',NULL,NULL,NULL,NULL,'La Vernia',1,1042,NULL,'78121',NULL,1228,29.351202,-98.11528,0,NULL,NULL,60),
- (160,74,1,1,0,'395Y Martin Luther King St N',395,'Y',NULL,'Martin Luther King','St','N',NULL,NULL,NULL,NULL,'La Vernia',1,1042,NULL,'78121',NULL,1228,29.351202,-98.11528,0,NULL,NULL,60),
- (161,111,1,1,0,'757P Woodbridge Pl S',757,'P',NULL,'Woodbridge','Pl','S',NULL,NULL,NULL,NULL,'Shandon',1,1004,NULL,'93461',NULL,1228,35.636185,-120.27185,0,NULL,NULL,NULL),
- (162,186,1,1,0,'376N Cadell Pl E',376,'N',NULL,'Cadell','Pl','E',NULL,NULL,NULL,NULL,'Brittany',1,1017,NULL,'70718',NULL,1228,30.201004,-90.868876,0,NULL,NULL,61),
- (163,26,1,1,0,'376N Cadell Pl E',376,'N',NULL,'Cadell','Pl','E',NULL,NULL,NULL,NULL,'Brittany',1,1017,NULL,'70718',NULL,1228,30.201004,-90.868876,0,NULL,NULL,61),
- (164,139,1,0,0,'376N Cadell Pl E',376,'N',NULL,'Cadell','Pl','E',NULL,NULL,NULL,NULL,'Brittany',1,1017,NULL,'70718',NULL,1228,30.201004,-90.868876,0,NULL,NULL,61),
- (165,126,1,1,0,'376N Cadell Pl E',376,'N',NULL,'Cadell','Pl','E',NULL,NULL,NULL,NULL,'Brittany',1,1017,NULL,'70718',NULL,1228,30.201004,-90.868876,0,NULL,NULL,61),
- (166,194,1,1,0,'435Y Jackson Ave W',435,'Y',NULL,'Jackson','Ave','W',NULL,NULL,NULL,NULL,'Fargo',1,1033,NULL,'58121',NULL,1228,46.934596,-97.229718,0,NULL,NULL,62),
- (167,28,1,1,0,'435Y Jackson Ave W',435,'Y',NULL,'Jackson','Ave','W',NULL,NULL,NULL,NULL,'Fargo',1,1033,NULL,'58121',NULL,1228,46.934596,-97.229718,0,NULL,NULL,62),
- (168,72,1,1,0,'435Y Jackson Ave W',435,'Y',NULL,'Jackson','Ave','W',NULL,NULL,NULL,NULL,'Fargo',1,1033,NULL,'58121',NULL,1228,46.934596,-97.229718,0,NULL,NULL,62),
- (169,201,1,1,0,'435Y Jackson Ave W',435,'Y',NULL,'Jackson','Ave','W',NULL,NULL,NULL,NULL,'Fargo',1,1033,NULL,'58121',NULL,1228,46.934596,-97.229718,0,NULL,NULL,62),
- (170,136,1,1,0,'442U Dowlen Pl W',442,'U',NULL,'Dowlen','Pl','W',NULL,NULL,NULL,NULL,'Houston',1,1042,NULL,'77088',NULL,1228,29.879213,-95.45028,0,NULL,NULL,63),
- (171,81,1,1,0,'442U Dowlen Pl W',442,'U',NULL,'Dowlen','Pl','W',NULL,NULL,NULL,NULL,'Houston',1,1042,NULL,'77088',NULL,1228,29.879213,-95.45028,0,NULL,NULL,63),
- (172,78,1,1,0,'442U Dowlen Pl W',442,'U',NULL,'Dowlen','Pl','W',NULL,NULL,NULL,NULL,'Houston',1,1042,NULL,'77088',NULL,1228,29.879213,-95.45028,0,NULL,NULL,63),
- (173,12,1,1,0,'879N Van Ness Pl NW',879,'N',NULL,'Van Ness','Pl','NW',NULL,NULL,NULL,NULL,'Leesburg',1,1008,NULL,'34788',NULL,1228,28.857425,-81.7845,0,NULL,NULL,NULL),
- (174,94,1,1,0,'2Y Maple Pl NE',2,'Y',NULL,'Maple','Pl','NE',NULL,NULL,NULL,NULL,'Butler',1,1048,NULL,'53007',NULL,1228,43.10836,-88.06893,0,NULL,NULL,64),
- (175,157,1,1,0,'2Y Maple Pl NE',2,'Y',NULL,'Maple','Pl','NE',NULL,NULL,NULL,NULL,'Butler',1,1048,NULL,'53007',NULL,1228,43.10836,-88.06893,0,NULL,NULL,64),
- (176,82,1,0,0,'2Y Maple Pl NE',2,'Y',NULL,'Maple','Pl','NE',NULL,NULL,NULL,NULL,'Butler',1,1048,NULL,'53007',NULL,1228,43.10836,-88.06893,0,NULL,NULL,64),
- (177,54,1,1,0,'547X Martin Luther King Way S',547,'X',NULL,'Martin Luther King','Way','S',NULL,NULL,NULL,NULL,'Neptune',1,1029,NULL,'07754',NULL,1228,40.302718,-74.24928,0,NULL,NULL,NULL),
- (178,NULL,1,1,1,'14S El Camino Way E',14,'S',NULL,'El Camino','Way',NULL,NULL,NULL,NULL,NULL,'Collinsville',NULL,1006,NULL,'6022',NULL,1228,41.8328,-72.9253,0,NULL,NULL,NULL),
- (179,NULL,1,1,1,'11B Woodbridge Path SW',11,'B',NULL,'Woodbridge','Path',NULL,NULL,NULL,NULL,NULL,'Dayton',NULL,1034,NULL,'45417',NULL,1228,39.7531,-84.2471,0,NULL,NULL,NULL),
- (180,NULL,1,1,1,'581O Lincoln Dr SW',581,'O',NULL,'Lincoln','Dr',NULL,NULL,NULL,NULL,NULL,'Santa Fe',NULL,1030,NULL,'87594',NULL,1228,35.5212,-105.982,0,NULL,NULL,NULL);
+ (1,8,1,1,0,'20N Northpoint Dr SE',20,'N',NULL,'Northpoint','Dr','SE',NULL,NULL,NULL,NULL,'Kremlin',1,1035,NULL,'73753',NULL,1228,36.56225,-97.83368,0,NULL,NULL,NULL),
+ (2,95,1,1,0,'65W Woodbridge Dr E',65,'W',NULL,'Woodbridge','Dr','E',NULL,NULL,NULL,NULL,'Glencross',1,1040,NULL,'57630',NULL,1228,45.098685,-100.879214,0,NULL,NULL,NULL),
+ (3,73,1,1,0,'666C Maple Blvd NW',666,'C',NULL,'Maple','Blvd','NW',NULL,NULL,NULL,NULL,'Midland',1,1021,NULL,'48674',NULL,1228,43.612884,-84.197125,0,NULL,NULL,NULL),
+ (4,85,1,1,0,'979K Northpoint Ln SW',979,'K',NULL,'Northpoint','Ln','SW',NULL,NULL,NULL,NULL,'Bishop',1,1009,NULL,'30621',NULL,1228,33.804849,-83.48164,0,NULL,NULL,NULL),
+ (5,200,1,1,0,'26X Van Ness Pl S',26,'X',NULL,'Van Ness','Pl','S',NULL,NULL,NULL,NULL,'Indianapolis',1,1013,NULL,'46205',NULL,1228,39.824858,-86.13817,0,NULL,NULL,NULL),
+ (6,20,1,1,0,'202O Woodbridge Path SW',202,'O',NULL,'Woodbridge','Path','SW',NULL,NULL,NULL,NULL,'Sweetwater',1,1035,NULL,'73666',NULL,1228,35.458562,-99.87143,0,NULL,NULL,NULL),
+ (7,111,1,1,0,'904Z Caulder Dr NE',904,'Z',NULL,'Caulder','Dr','NE',NULL,NULL,NULL,NULL,'Toledo',1,1036,NULL,'97391',NULL,1228,44.626888,-123.91515,0,NULL,NULL,NULL),
+ (8,42,1,1,0,'305G Lincoln Dr E',305,'G',NULL,'Lincoln','Dr','E',NULL,NULL,NULL,NULL,'Kaleva',1,1021,NULL,'49645',NULL,1228,44.371587,-86.0122,0,NULL,NULL,NULL),
+ (9,198,1,1,0,'811K Woodbridge Ave S',811,'K',NULL,'Woodbridge','Ave','S',NULL,NULL,NULL,NULL,'Scottsdale',1,1002,NULL,'85257',NULL,1228,33.467347,-111.91741,0,NULL,NULL,NULL),
+ (10,196,1,1,0,'808I El Camino Rd S',808,'I',NULL,'El Camino','Rd','S',NULL,NULL,NULL,NULL,'Geneva',1,1034,NULL,'44041',NULL,1228,41.802618,-80.94645,0,NULL,NULL,NULL),
+ (11,36,1,1,0,'185Y Pine Rd SW',185,'Y',NULL,'Pine','Rd','SW',NULL,NULL,NULL,NULL,'Blue Hill',1,1018,NULL,'04614',NULL,1228,44.413056,-68.58156,0,NULL,NULL,NULL),
+ (12,13,1,1,0,'787G College Ln W',787,'G',NULL,'College','Ln','W',NULL,NULL,NULL,NULL,'Phillipsville',1,1004,NULL,'95559',NULL,1228,40.196116,-123.77315,0,NULL,NULL,NULL),
+ (13,177,1,1,0,'528S Main Rd NE',528,'S',NULL,'Main','Rd','NE',NULL,NULL,NULL,NULL,'Anniston',1,1000,NULL,'36206',NULL,1228,33.719701,-85.83166,0,NULL,NULL,NULL),
+ (14,21,1,1,0,'599J Pine St SW',599,'J',NULL,'Pine','St','SW',NULL,NULL,NULL,NULL,'Bailey',1,1005,NULL,'80421',NULL,1228,39.460306,-105.476,0,NULL,NULL,NULL),
+ (15,58,1,1,0,'158U Jackson Path NE',158,'U',NULL,'Jackson','Path','NE',NULL,NULL,NULL,NULL,'Minturn',1,1005,NULL,'81645',NULL,1228,39.459323,-106.37859,0,NULL,NULL,NULL),
+ (16,22,1,1,0,'498T El Camino Ln S',498,'T',NULL,'El Camino','Ln','S',NULL,NULL,NULL,NULL,'Milton',1,1048,NULL,'53563',NULL,1228,42.778497,-88.95595,0,NULL,NULL,NULL),
+ (17,166,1,1,0,'309N Pine St N',309,'N',NULL,'Pine','St','N',NULL,NULL,NULL,NULL,'Baldwin Place',1,1031,NULL,'10505',NULL,1228,41.33431,-73.749244,0,NULL,NULL,NULL),
+ (18,4,1,1,0,'718M El Camino Ave NE',718,'M',NULL,'El Camino','Ave','NE',NULL,NULL,NULL,NULL,'Greenfield',1,1014,NULL,'50849',NULL,1228,41.308843,-94.42424,0,NULL,NULL,NULL),
+ (19,94,1,1,0,'764U Maple Dr E',764,'U',NULL,'Maple','Dr','E',NULL,NULL,NULL,NULL,'Shrewsbury',1,1020,NULL,'01546',NULL,1228,42.364807,-71.896868,0,NULL,NULL,NULL),
+ (20,74,1,1,0,'743L Lincoln Rd SE',743,'L',NULL,'Lincoln','Rd','SE',NULL,NULL,NULL,NULL,'Kewanee',1,1024,NULL,'63860',NULL,1228,36.67088,-89.57338,0,NULL,NULL,NULL),
+ (21,96,1,1,0,'598C Dowlen Path S',598,'C',NULL,'Dowlen','Path','S',NULL,NULL,NULL,NULL,'Great River',1,1031,NULL,'11739',NULL,1228,40.922326,-72.637078,0,NULL,NULL,NULL),
+ (22,35,1,1,0,'942Y Northpoint Blvd W',942,'Y',NULL,'Northpoint','Blvd','W',NULL,NULL,NULL,NULL,'Lopez Island',1,1046,NULL,'98261',NULL,1228,48.481655,-122.88271,0,NULL,NULL,NULL),
+ (23,76,1,1,0,'101Y Northpoint Dr NE',101,'Y',NULL,'Northpoint','Dr','NE',NULL,NULL,NULL,NULL,'Atomic City',1,1011,NULL,'83215',NULL,1228,43.442618,-112.81316,0,NULL,NULL,NULL),
+ (24,187,1,1,0,'812N Jackson Ln E',812,'N',NULL,'Jackson','Ln','E',NULL,NULL,NULL,NULL,'Kennewick',1,1046,NULL,'99338',NULL,1228,46.192356,-119.23982,0,NULL,NULL,NULL),
+ (25,122,1,1,0,'943G Dowlen Blvd N',943,'G',NULL,'Dowlen','Blvd','N',NULL,NULL,NULL,NULL,'Lexington',1,1016,NULL,'40579',NULL,1228,38.028269,-84.471505,0,NULL,NULL,NULL),
+ (26,93,1,1,0,'281Y Bay Rd W',281,'Y',NULL,'Bay','Rd','W',NULL,NULL,NULL,NULL,'State Line',1,1013,NULL,'47982',NULL,1228,40.196628,-87.5271,0,NULL,NULL,NULL),
+ (27,60,1,1,0,'754E Cadell Pl SE',754,'E',NULL,'Cadell','Pl','SE',NULL,NULL,NULL,NULL,'Mabton',1,1046,NULL,'98935',NULL,1228,46.177732,-120.02966,0,NULL,NULL,NULL),
+ (28,197,1,1,0,'28X Main Dr N',28,'X',NULL,'Main','Dr','N',NULL,NULL,NULL,NULL,'Poland',1,1013,NULL,'47868',NULL,1228,39.414547,-86.90202,0,NULL,NULL,NULL),
+ (29,66,1,1,0,'949N College Ave NE',949,'N',NULL,'College','Ave','NE',NULL,NULL,NULL,NULL,'Guaynabo',1,1054,NULL,'00971',NULL,1228,18.329688,-66.11876,0,NULL,NULL,NULL),
+ (30,131,1,1,0,'124G Caulder Pl S',124,'G',NULL,'Caulder','Pl','S',NULL,NULL,NULL,NULL,'Beaver',1,1036,NULL,'97108',NULL,1228,45.284763,-123.6908,0,NULL,NULL,NULL),
+ (31,128,1,1,0,'844L El Camino Dr S',844,'L',NULL,'El Camino','Dr','S',NULL,NULL,NULL,NULL,'Silver Creek',1,1026,NULL,'68663',NULL,1228,41.306574,-97.70019,0,NULL,NULL,NULL),
+ (32,201,1,1,0,'55X Martin Luther King Path SW',55,'X',NULL,'Martin Luther King','Path','SW',NULL,NULL,NULL,NULL,'Winnebago',1,1048,NULL,'54985',NULL,1228,44.075084,-88.51758,0,NULL,NULL,NULL),
+ (33,5,1,1,0,'526Q Martin Luther King Way E',526,'Q',NULL,'Martin Luther King','Way','E',NULL,NULL,NULL,NULL,'Spencerville',1,1034,NULL,'45887',NULL,1228,40.711394,-84.35509,0,NULL,NULL,NULL),
+ (34,112,1,1,0,'785A Main Ln SW',785,'A',NULL,'Main','Ln','SW',NULL,NULL,NULL,NULL,'Kennard',1,1042,NULL,'75847',NULL,1228,31.355453,-95.15421,0,NULL,NULL,NULL),
+ (35,194,1,1,0,'53V Van Ness Ln NE',53,'V',NULL,'Van Ness','Ln','NE',NULL,NULL,NULL,NULL,'Pittsburgh',1,1037,NULL,'15257',NULL,1228,40.434436,-80.024817,0,NULL,NULL,NULL),
+ (36,145,1,1,0,'625U Jackson Rd NE',625,'U',NULL,'Jackson','Rd','NE',NULL,NULL,NULL,NULL,'Henderson',1,1032,NULL,'27537',NULL,1228,36.33705,-78.387374,0,NULL,NULL,NULL),
+ (37,88,1,1,0,'944C College Ln NE',944,'C',NULL,'College','Ln','NE',NULL,NULL,NULL,NULL,'French Camp',1,1004,NULL,'95231',NULL,1228,37.882742,-121.27978,0,NULL,NULL,NULL),
+ (38,99,1,1,0,'426K Lincoln Blvd SW',426,'K',NULL,'Lincoln','Blvd','SW',NULL,NULL,NULL,NULL,'Minong',1,1048,NULL,'54859',NULL,1228,46.127976,-91.84389,0,NULL,NULL,NULL),
+ (39,125,1,1,0,'953F College Dr N',953,'F',NULL,'College','Dr','N',NULL,NULL,NULL,NULL,'Glouster',1,1034,NULL,'45732',NULL,1228,39.506243,-82.0779,0,NULL,NULL,NULL),
+ (40,189,1,1,0,'963B Martin Luther King Dr S',963,'B',NULL,'Martin Luther King','Dr','S',NULL,NULL,NULL,NULL,'Clintondale',1,1031,NULL,'12515',NULL,1228,41.681096,-74.06421,0,NULL,NULL,NULL),
+ (41,179,1,1,0,'684I Van Ness Rd SE',684,'I',NULL,'Van Ness','Rd','SE',NULL,NULL,NULL,NULL,'Washington',1,1050,NULL,'20411',NULL,1228,38.883962,-77.022098,0,NULL,NULL,NULL),
+ (42,65,1,1,0,'349I Maple Rd E',349,'I',NULL,'Maple','Rd','E',NULL,NULL,NULL,NULL,'Defuniak Springs',1,1008,NULL,'32435',NULL,1228,30.603777,-86.12111,0,NULL,NULL,NULL),
+ (43,114,1,1,0,'39O Maple Rd N',39,'O',NULL,'Maple','Rd','N',NULL,NULL,NULL,NULL,'Dewitt',1,1016,NULL,'40930',NULL,1228,36.855044,-83.739,0,NULL,NULL,NULL),
+ (44,54,1,1,0,'493K Second Ln W',493,'K',NULL,'Second','Ln','W',NULL,NULL,NULL,NULL,'Tioga',1,1042,NULL,'76271',NULL,1228,33.469076,-96.91632,0,NULL,NULL,NULL),
+ (45,52,1,1,0,'446N States St N',446,'N',NULL,'States','St','N',NULL,NULL,NULL,NULL,'Dearborn',1,1021,NULL,'48123',NULL,1228,42.239933,-83.150823,0,NULL,NULL,NULL),
+ (46,32,1,1,0,'558H Cadell St SE',558,'H',NULL,'Cadell','St','SE',NULL,NULL,NULL,NULL,'Angleton',1,1042,NULL,'77515',NULL,1228,29.16866,-95.44541,0,NULL,NULL,NULL),
+ (47,43,1,1,0,'300P Second Way W',300,'P',NULL,'Second','Way','W',NULL,NULL,NULL,NULL,'Providence',1,1038,NULL,'02909',NULL,1228,41.8191,-71.44775,0,NULL,NULL,NULL),
+ (48,19,1,1,0,'976N Lincoln Ave E',976,'N',NULL,'Lincoln','Ave','E',NULL,NULL,NULL,NULL,'Jackson',1,1023,NULL,'39217',NULL,1228,32.297396,-90.208088,0,NULL,NULL,NULL),
+ (49,162,1,1,0,'430S Bay Way S',430,'S',NULL,'Bay','Way','S',NULL,NULL,NULL,NULL,'Warne',1,1032,NULL,'28909',NULL,1228,34.994752,-83.90161,0,NULL,NULL,NULL),
+ (50,80,1,1,0,'513L Lincoln Ln NE',513,'L',NULL,'Lincoln','Ln','NE',NULL,NULL,NULL,NULL,'Allenhurst',1,1009,NULL,'31301',NULL,1228,31.764663,-81.6098,0,NULL,NULL,NULL),
+ (51,137,1,1,0,'537I Woodbridge Ln E',537,'I',NULL,'Woodbridge','Ln','E',NULL,NULL,NULL,NULL,'Ponce',1,1054,NULL,'00716',NULL,1228,17.999066,-66.59965,0,NULL,NULL,NULL),
+ (52,141,1,1,0,'691J College Rd NW',691,'J',NULL,'College','Rd','NW',NULL,NULL,NULL,NULL,'Champlain',1,1045,NULL,'22438',NULL,1228,38.041706,-77.005,0,NULL,NULL,NULL),
+ (53,98,1,1,0,'315A College Ave SW',315,'A',NULL,'College','Ave','SW',NULL,NULL,NULL,NULL,'Thonotosassa',1,1008,NULL,'33592',NULL,1228,28.077843,-82.29837,0,NULL,NULL,NULL),
+ (54,161,1,1,0,'291U College Dr SE',291,'U',NULL,'College','Dr','SE',NULL,NULL,NULL,NULL,'Musselshell',1,1025,NULL,'59059',NULL,1228,46.455469,-108.0903,0,NULL,NULL,NULL),
+ (55,10,1,1,0,'955T Caulder Ave NW',955,'T',NULL,'Caulder','Ave','NW',NULL,NULL,NULL,NULL,'Osborne',1,1015,NULL,'67473',NULL,1228,39.409385,-98.7059,0,NULL,NULL,NULL),
+ (56,199,1,1,0,'653Y Beech Pl SW',653,'Y',NULL,'Beech','Pl','SW',NULL,NULL,NULL,NULL,'Houston',1,1042,NULL,'77261',NULL,1228,29.83399,-95.434241,0,NULL,NULL,NULL),
+ (57,29,1,1,0,'653J Second Rd SE',653,'J',NULL,'Second','Rd','SE',NULL,NULL,NULL,NULL,'Wauconda',1,1012,NULL,'60084',NULL,1228,42.263181,-88.14328,0,NULL,NULL,NULL),
+ (58,59,1,1,0,'672E Main Dr NE',672,'E',NULL,'Main','Dr','NE',NULL,NULL,NULL,NULL,'Greenview',1,1004,NULL,'96037',NULL,1228,41.53101,-122.95666,0,NULL,NULL,NULL),
+ (59,46,1,1,0,'956N Beech Rd W',956,'N',NULL,'Beech','Rd','W',NULL,NULL,NULL,NULL,'Houston',1,1042,NULL,'77039',NULL,1228,29.909123,-95.33683,0,NULL,NULL,NULL),
+ (60,11,1,1,0,'878K Lincoln Ln N',878,'K',NULL,'Lincoln','Ln','N',NULL,NULL,NULL,NULL,'Ontario',1,1004,NULL,'91758',NULL,1228,34.839964,-115.967051,0,NULL,NULL,NULL),
+ (61,170,1,1,0,'547B Main Dr SE',547,'B',NULL,'Main','Dr','SE',NULL,NULL,NULL,NULL,'Marks',1,1023,NULL,'38646',NULL,1228,34.261893,-90.27443,0,NULL,NULL,NULL),
+ (62,41,1,1,0,'323I El Camino Dr SE',323,'I',NULL,'El Camino','Dr','SE',NULL,NULL,NULL,NULL,'Huggins',1,1024,NULL,'65484',NULL,1228,37.366219,-92.20608,0,NULL,NULL,NULL),
+ (63,102,1,1,0,'237N Maple Ln E',237,'N',NULL,'Maple','Ln','E',NULL,NULL,NULL,NULL,'McLain',1,1023,NULL,'39456',NULL,1228,31.072789,-88.80915,0,NULL,NULL,NULL),
+ (64,86,1,1,0,'731B Lincoln St N',731,'B',NULL,'Lincoln','St','N',NULL,NULL,NULL,NULL,'Pfeifer',1,1015,NULL,'67660',NULL,1228,38.704467,-99.1815,0,NULL,NULL,NULL),
+ (65,132,1,1,0,'23K Northpoint Rd SW',23,'K',NULL,'Northpoint','Rd','SW',NULL,NULL,NULL,NULL,'Tampa',1,1008,NULL,'33631',NULL,1228,27.871964,-82.438841,0,NULL,NULL,NULL),
+ (66,178,1,1,0,'150T Bay Pl E',150,'T',NULL,'Bay','Pl','E',NULL,NULL,NULL,NULL,'Fairfield',1,1033,NULL,'58627',NULL,1228,47.219032,-103.23327,0,NULL,NULL,NULL),
+ (67,152,1,1,0,'307H Cadell Pl N',307,'H',NULL,'Cadell','Pl','N',NULL,NULL,NULL,NULL,'Plano',1,1042,NULL,'75093',NULL,1228,33.03505,-96.80492,0,NULL,NULL,NULL),
+ (68,18,1,1,0,'252L Woodbridge St SE',252,'L',NULL,'Woodbridge','St','SE',NULL,NULL,NULL,NULL,'Mozelle',1,1016,NULL,'40858',NULL,1228,37.018413,-83.39768,0,NULL,NULL,NULL),
+ (69,193,3,1,0,'241B College Ln N',241,'B',NULL,'College','Ln','N',NULL,'Payables Dept.',NULL,NULL,'Shallowater',1,1042,NULL,'79363',NULL,1228,33.701024,-102.01948,0,NULL,NULL,NULL),
+ (70,108,2,1,0,'241B College Ln N',241,'B',NULL,'College','Ln','N',NULL,'Payables Dept.',NULL,NULL,'Shallowater',1,1042,NULL,'79363',NULL,1228,33.701024,-102.01948,0,NULL,NULL,69),
+ (71,17,3,1,0,'899M College Way NW',899,'M',NULL,'College','Way','NW',NULL,'Cuffe Parade',NULL,NULL,'Minneapolis',1,1022,NULL,'55431',NULL,1228,44.829564,-93.30982,0,NULL,NULL,NULL),
+ (72,78,2,1,0,'899M College Way NW',899,'M',NULL,'College','Way','NW',NULL,'Cuffe Parade',NULL,NULL,'Minneapolis',1,1022,NULL,'55431',NULL,1228,44.829564,-93.30982,0,NULL,NULL,71),
+ (73,9,3,1,0,'217H Main Dr NE',217,'H',NULL,'Main','Dr','NE',NULL,'Cuffe Parade',NULL,NULL,'Parks',1,1003,NULL,'72950',NULL,1228,34.779465,-93.90077,0,NULL,NULL,NULL),
+ (74,60,2,0,0,'217H Main Dr NE',217,'H',NULL,'Main','Dr','NE',NULL,'Cuffe Parade',NULL,NULL,'Parks',1,1003,NULL,'72950',NULL,1228,34.779465,-93.90077,0,NULL,NULL,73),
+ (75,23,3,1,0,'744L States Way W',744,'L',NULL,'States','Way','W',NULL,'Cuffe Parade',NULL,NULL,'Carlisle',1,1031,NULL,'12031',NULL,1228,42.770985,-74.44694,0,NULL,NULL,NULL),
+ (76,144,3,1,0,'457I El Camino Rd N',457,'I',NULL,'El Camino','Rd','N',NULL,'Churchgate',NULL,NULL,'Wyndmere',1,1033,NULL,'58081',NULL,1228,46.282064,-97.13477,0,NULL,NULL,NULL),
+ (77,129,3,1,0,'498U Cadell St W',498,'U',NULL,'Cadell','St','W',NULL,'Disbursements',NULL,NULL,'Valliant',1,1035,NULL,'74764',NULL,1228,34.038794,-95.07793,0,NULL,NULL,NULL),
+ (78,138,2,1,0,'498U Cadell St W',498,'U',NULL,'Cadell','St','W',NULL,'Disbursements',NULL,NULL,'Valliant',1,1035,NULL,'74764',NULL,1228,34.038794,-95.07793,0,NULL,NULL,77),
+ (79,174,3,1,0,'37M Caulder Blvd NE',37,'M',NULL,'Caulder','Blvd','NE',NULL,'Receiving',NULL,NULL,'Water Valley',1,1023,NULL,'38695',NULL,1228,34.164116,-89.625197,0,NULL,NULL,NULL),
+ (80,169,3,1,0,'239H Van Ness Rd S',239,'H',NULL,'Van Ness','Rd','S',NULL,'Editorial Dept',NULL,NULL,'Pocono Summit',1,1037,NULL,'18346',NULL,1228,41.118226,-75.39631,0,NULL,NULL,NULL),
+ (81,32,2,0,0,'239H Van Ness Rd S',239,'H',NULL,'Van Ness','Rd','S',NULL,'Editorial Dept',NULL,NULL,'Pocono Summit',1,1037,NULL,'18346',NULL,1228,41.118226,-75.39631,0,NULL,NULL,80),
+ (82,49,3,1,0,'400K Woodbridge Ln E',400,'K',NULL,'Woodbridge','Ln','E',NULL,'Urgent',NULL,NULL,'Toledo',1,1034,NULL,'43660',NULL,1228,41.654649,-83.532883,0,NULL,NULL,NULL),
+ (83,158,2,1,0,'400K Woodbridge Ln E',400,'K',NULL,'Woodbridge','Ln','E',NULL,'Urgent',NULL,NULL,'Toledo',1,1034,NULL,'43660',NULL,1228,41.654649,-83.532883,0,NULL,NULL,82),
+ (84,90,3,1,0,'276B Jackson Ln N',276,'B',NULL,'Jackson','Ln','N',NULL,'Community Relations',NULL,NULL,'Potsdam',1,1031,NULL,'13676',NULL,1228,44.651265,-74.95289,0,NULL,NULL,NULL),
+ (85,40,3,1,0,'206N Green Path S',206,'N',NULL,'Green','Path','S',NULL,'Community Relations',NULL,NULL,'Auxvasse',1,1024,NULL,'65231',NULL,1228,39.0159,-91.8983,0,NULL,NULL,NULL),
+ (86,146,2,1,0,'206N Green Path S',206,'N',NULL,'Green','Path','S',NULL,'Community Relations',NULL,NULL,'Auxvasse',1,1024,NULL,'65231',NULL,1228,39.0159,-91.8983,0,NULL,NULL,85),
+ (87,192,3,1,0,'366L Northpoint Rd SW',366,'L',NULL,'Northpoint','Rd','SW',NULL,'Community Relations',NULL,NULL,'Mobile',1,1000,NULL,'36693',NULL,1228,30.630441,-88.15397,0,NULL,NULL,NULL),
+ (88,121,3,1,0,'442N Pine Way S',442,'N',NULL,'Pine','Way','S',NULL,'Editorial Dept',NULL,NULL,'Meridian',1,1023,NULL,'39309',NULL,1228,32.337389,-88.726474,0,NULL,NULL,NULL),
+ (89,52,2,0,0,'442N Pine Way S',442,'N',NULL,'Pine','Way','S',NULL,'Editorial Dept',NULL,NULL,'Meridian',1,1023,NULL,'39309',NULL,1228,32.337389,-88.726474,0,NULL,NULL,88),
+ (90,184,3,1,0,'992Y Cadell Dr SW',992,'Y',NULL,'Cadell','Dr','SW',NULL,'Receiving',NULL,NULL,'Sunland Park',1,1030,NULL,'88063',NULL,1228,31.799253,-106.57771,0,NULL,NULL,NULL),
+ (91,130,3,1,0,'815B Second Ln SE',815,'B',NULL,'Second','Ln','SE',NULL,'Cuffe Parade',NULL,NULL,'Kenedy',1,1042,NULL,'78119',NULL,1228,28.779344,-97.85626,0,NULL,NULL,NULL),
+ (92,34,2,1,0,'815B Second Ln SE',815,'B',NULL,'Second','Ln','SE',NULL,'Cuffe Parade',NULL,NULL,'Kenedy',1,1042,NULL,'78119',NULL,1228,28.779344,-97.85626,0,NULL,NULL,91),
+ (93,124,3,1,0,'266Q Woodbridge Dr NW',266,'Q',NULL,'Woodbridge','Dr','NW',NULL,'Churchgate',NULL,NULL,'Saint Paul',1,1022,NULL,'55191',NULL,1228,45.005902,-93.105869,0,NULL,NULL,NULL),
+ (94,135,3,1,0,'263A Caulder Ave SW',263,'A',NULL,'Caulder','Ave','SW',NULL,'Payables Dept.',NULL,NULL,'Greensboro',1,1013,NULL,'47344',NULL,1228,39.876764,-85.46546,0,NULL,NULL,NULL),
+ (95,84,3,1,0,'21H El Camino Pl NE',21,'H',NULL,'El Camino','Pl','NE',NULL,'Mailstop 101',NULL,NULL,'Natchitoches',1,1017,NULL,'71497',NULL,1228,31.747563,-93.079055,0,NULL,NULL,NULL),
+ (96,166,2,0,0,'21H El Camino Pl NE',21,'H',NULL,'El Camino','Pl','NE',NULL,'Mailstop 101',NULL,NULL,'Natchitoches',1,1017,NULL,'71497',NULL,1228,31.747563,-93.079055,0,NULL,NULL,95),
+ (97,14,3,1,0,'197N Main Ave N',197,'N',NULL,'Main','Ave','N',NULL,'Attn: Accounting',NULL,NULL,'Memphis',1,1041,NULL,'38150',NULL,1228,35.201738,-89.971538,0,NULL,NULL,NULL),
+ (98,69,3,1,0,'848V Dowlen Path E',848,'V',NULL,'Dowlen','Path','E',NULL,'Attn: Development',NULL,NULL,'Lexington',1,1020,NULL,'02420',NULL,1228,42.452895,-71.21619,0,NULL,NULL,NULL),
+ (99,155,2,1,0,'848V Dowlen Path E',848,'V',NULL,'Dowlen','Path','E',NULL,'Attn: Development',NULL,NULL,'Lexington',1,1020,NULL,'02420',NULL,1228,42.452895,-71.21619,0,NULL,NULL,98),
+ (100,156,1,1,0,'430S Bay Way S',430,'S',NULL,'Bay','Way','S',NULL,NULL,NULL,NULL,'Warne',1,1032,NULL,'28909',NULL,1228,34.994752,-83.90161,0,NULL,NULL,49),
+ (101,77,1,1,0,'430S Bay Way S',430,'S',NULL,'Bay','Way','S',NULL,NULL,NULL,NULL,'Warne',1,1032,NULL,'28909',NULL,1228,34.994752,-83.90161,0,NULL,NULL,49),
+ (102,127,1,1,0,'430S Bay Way S',430,'S',NULL,'Bay','Way','S',NULL,NULL,NULL,NULL,'Warne',1,1032,NULL,'28909',NULL,1228,34.994752,-83.90161,0,NULL,NULL,49),
+ (103,67,1,1,0,'459D Green Way N',459,'D',NULL,'Green','Way','N',NULL,NULL,NULL,NULL,'Middlefield',1,1006,NULL,'06455',NULL,1228,41.514383,-72.7183,0,NULL,NULL,NULL),
+ (104,182,1,1,0,'513L Lincoln Ln NE',513,'L',NULL,'Lincoln','Ln','NE',NULL,NULL,NULL,NULL,'Allenhurst',1,1009,NULL,'31301',NULL,1228,31.764663,-81.6098,0,NULL,NULL,50),
+ (105,176,1,1,0,'513L Lincoln Ln NE',513,'L',NULL,'Lincoln','Ln','NE',NULL,NULL,NULL,NULL,'Allenhurst',1,1009,NULL,'31301',NULL,1228,31.764663,-81.6098,0,NULL,NULL,50),
+ (106,56,1,1,0,'513L Lincoln Ln NE',513,'L',NULL,'Lincoln','Ln','NE',NULL,NULL,NULL,NULL,'Allenhurst',1,1009,NULL,'31301',NULL,1228,31.764663,-81.6098,0,NULL,NULL,50),
+ (107,70,1,1,0,'66D Second Pl S',66,'D',NULL,'Second','Pl','S',NULL,NULL,NULL,NULL,'Bronx',1,1031,NULL,'10472',NULL,1228,40.830409,-73.86845,0,NULL,NULL,NULL),
+ (108,173,1,1,0,'537I Woodbridge Ln E',537,'I',NULL,'Woodbridge','Ln','E',NULL,NULL,NULL,NULL,'Ponce',1,1054,NULL,'00716',NULL,1228,17.999066,-66.59965,0,NULL,NULL,51),
+ (109,53,1,1,0,'537I Woodbridge Ln E',537,'I',NULL,'Woodbridge','Ln','E',NULL,NULL,NULL,NULL,'Ponce',1,1054,NULL,'00716',NULL,1228,17.999066,-66.59965,0,NULL,NULL,51),
+ (110,151,1,1,0,'537I Woodbridge Ln E',537,'I',NULL,'Woodbridge','Ln','E',NULL,NULL,NULL,NULL,'Ponce',1,1054,NULL,'00716',NULL,1228,17.999066,-66.59965,0,NULL,NULL,51),
+ (111,153,1,1,0,'537I Woodbridge Ln E',537,'I',NULL,'Woodbridge','Ln','E',NULL,NULL,NULL,NULL,'Ponce',1,1054,NULL,'00716',NULL,1228,17.999066,-66.59965,0,NULL,NULL,51),
+ (112,109,1,1,0,'691J College Rd NW',691,'J',NULL,'College','Rd','NW',NULL,NULL,NULL,NULL,'Champlain',1,1045,NULL,'22438',NULL,1228,38.041706,-77.005,0,NULL,NULL,52),
+ (113,51,1,1,0,'691J College Rd NW',691,'J',NULL,'College','Rd','NW',NULL,NULL,NULL,NULL,'Champlain',1,1045,NULL,'22438',NULL,1228,38.041706,-77.005,0,NULL,NULL,52),
+ (114,7,1,1,0,'691J College Rd NW',691,'J',NULL,'College','Rd','NW',NULL,NULL,NULL,NULL,'Champlain',1,1045,NULL,'22438',NULL,1228,38.041706,-77.005,0,NULL,NULL,52),
+ (115,101,1,1,0,'691J College Rd NW',691,'J',NULL,'College','Rd','NW',NULL,NULL,NULL,NULL,'Champlain',1,1045,NULL,'22438',NULL,1228,38.041706,-77.005,0,NULL,NULL,52),
+ (116,57,1,1,0,'315A College Ave SW',315,'A',NULL,'College','Ave','SW',NULL,NULL,NULL,NULL,'Thonotosassa',1,1008,NULL,'33592',NULL,1228,28.077843,-82.29837,0,NULL,NULL,53),
+ (117,62,1,1,0,'315A College Ave SW',315,'A',NULL,'College','Ave','SW',NULL,NULL,NULL,NULL,'Thonotosassa',1,1008,NULL,'33592',NULL,1228,28.077843,-82.29837,0,NULL,NULL,53),
+ (118,33,1,1,0,'315A College Ave SW',315,'A',NULL,'College','Ave','SW',NULL,NULL,NULL,NULL,'Thonotosassa',1,1008,NULL,'33592',NULL,1228,28.077843,-82.29837,0,NULL,NULL,53),
+ (119,24,1,1,0,'315A College Ave SW',315,'A',NULL,'College','Ave','SW',NULL,NULL,NULL,NULL,'Thonotosassa',1,1008,NULL,'33592',NULL,1228,28.077843,-82.29837,0,NULL,NULL,53),
+ (120,97,1,1,0,'291U College Dr SE',291,'U',NULL,'College','Dr','SE',NULL,NULL,NULL,NULL,'Musselshell',1,1025,NULL,'59059',NULL,1228,46.455469,-108.0903,0,NULL,NULL,54),
+ (121,106,1,1,0,'291U College Dr SE',291,'U',NULL,'College','Dr','SE',NULL,NULL,NULL,NULL,'Musselshell',1,1025,NULL,'59059',NULL,1228,46.455469,-108.0903,0,NULL,NULL,54),
+ (122,91,1,1,0,'291U College Dr SE',291,'U',NULL,'College','Dr','SE',NULL,NULL,NULL,NULL,'Musselshell',1,1025,NULL,'59059',NULL,1228,46.455469,-108.0903,0,NULL,NULL,54),
+ (123,191,1,1,0,'655R Jackson Ln NE',655,'R',NULL,'Jackson','Ln','NE',NULL,NULL,NULL,NULL,'Greenwood',1,1026,NULL,'68366',NULL,1228,40.974167,-96.43555,0,NULL,NULL,NULL),
+ (124,155,1,0,0,'955T Caulder Ave NW',955,'T',NULL,'Caulder','Ave','NW',NULL,NULL,NULL,NULL,'Osborne',1,1015,NULL,'67473',NULL,1228,39.409385,-98.7059,0,NULL,NULL,55),
+ (125,25,1,1,0,'955T Caulder Ave NW',955,'T',NULL,'Caulder','Ave','NW',NULL,NULL,NULL,NULL,'Osborne',1,1015,NULL,'67473',NULL,1228,39.409385,-98.7059,0,NULL,NULL,55),
+ (126,157,1,1,0,'955T Caulder Ave NW',955,'T',NULL,'Caulder','Ave','NW',NULL,NULL,NULL,NULL,'Osborne',1,1015,NULL,'67473',NULL,1228,39.409385,-98.7059,0,NULL,NULL,55),
+ (127,39,1,1,0,'955T Caulder Ave NW',955,'T',NULL,'Caulder','Ave','NW',NULL,NULL,NULL,NULL,'Osborne',1,1015,NULL,'67473',NULL,1228,39.409385,-98.7059,0,NULL,NULL,55),
+ (128,133,1,1,0,'653Y Beech Pl SW',653,'Y',NULL,'Beech','Pl','SW',NULL,NULL,NULL,NULL,'Houston',1,1042,NULL,'77261',NULL,1228,29.83399,-95.434241,0,NULL,NULL,56),
+ (129,50,1,1,0,'653Y Beech Pl SW',653,'Y',NULL,'Beech','Pl','SW',NULL,NULL,NULL,NULL,'Houston',1,1042,NULL,'77261',NULL,1228,29.83399,-95.434241,0,NULL,NULL,56),
+ (130,190,1,1,0,'653Y Beech Pl SW',653,'Y',NULL,'Beech','Pl','SW',NULL,NULL,NULL,NULL,'Houston',1,1042,NULL,'77261',NULL,1228,29.83399,-95.434241,0,NULL,NULL,56),
+ (131,148,1,1,0,'653Y Beech Pl SW',653,'Y',NULL,'Beech','Pl','SW',NULL,NULL,NULL,NULL,'Houston',1,1042,NULL,'77261',NULL,1228,29.83399,-95.434241,0,NULL,NULL,56),
+ (132,2,1,1,0,'653J Second Rd SE',653,'J',NULL,'Second','Rd','SE',NULL,NULL,NULL,NULL,'Wauconda',1,1012,NULL,'60084',NULL,1228,42.263181,-88.14328,0,NULL,NULL,57),
+ (133,117,1,1,0,'653J Second Rd SE',653,'J',NULL,'Second','Rd','SE',NULL,NULL,NULL,NULL,'Wauconda',1,1012,NULL,'60084',NULL,1228,42.263181,-88.14328,0,NULL,NULL,57),
+ (134,188,1,1,0,'653J Second Rd SE',653,'J',NULL,'Second','Rd','SE',NULL,NULL,NULL,NULL,'Wauconda',1,1012,NULL,'60084',NULL,1228,42.263181,-88.14328,0,NULL,NULL,57),
+ (135,16,1,1,0,'653J Second Rd SE',653,'J',NULL,'Second','Rd','SE',NULL,NULL,NULL,NULL,'Wauconda',1,1012,NULL,'60084',NULL,1228,42.263181,-88.14328,0,NULL,NULL,57),
+ (136,195,1,1,0,'672E Main Dr NE',672,'E',NULL,'Main','Dr','NE',NULL,NULL,NULL,NULL,'Greenview',1,1004,NULL,'96037',NULL,1228,41.53101,-122.95666,0,NULL,NULL,58),
+ (137,113,1,1,0,'672E Main Dr NE',672,'E',NULL,'Main','Dr','NE',NULL,NULL,NULL,NULL,'Greenview',1,1004,NULL,'96037',NULL,1228,41.53101,-122.95666,0,NULL,NULL,58),
+ (138,44,1,1,0,'672E Main Dr NE',672,'E',NULL,'Main','Dr','NE',NULL,NULL,NULL,NULL,'Greenview',1,1004,NULL,'96037',NULL,1228,41.53101,-122.95666,0,NULL,NULL,58),
+ (139,146,1,0,0,'734Q Maple Dr NW',734,'Q',NULL,'Maple','Dr','NW',NULL,NULL,NULL,NULL,'Weirton',1,1047,NULL,'26062',NULL,1228,40.412067,-80.57542,0,NULL,NULL,NULL),
+ (140,163,1,1,0,'956N Beech Rd W',956,'N',NULL,'Beech','Rd','W',NULL,NULL,NULL,NULL,'Houston',1,1042,NULL,'77039',NULL,1228,29.909123,-95.33683,0,NULL,NULL,59),
+ (141,82,1,1,0,'956N Beech Rd W',956,'N',NULL,'Beech','Rd','W',NULL,NULL,NULL,NULL,'Houston',1,1042,NULL,'77039',NULL,1228,29.909123,-95.33683,0,NULL,NULL,59),
+ (142,172,1,1,0,'956N Beech Rd W',956,'N',NULL,'Beech','Rd','W',NULL,NULL,NULL,NULL,'Houston',1,1042,NULL,'77039',NULL,1228,29.909123,-95.33683,0,NULL,NULL,59),
+ (143,110,1,1,0,'956N Beech Rd W',956,'N',NULL,'Beech','Rd','W',NULL,NULL,NULL,NULL,'Houston',1,1042,NULL,'77039',NULL,1228,29.909123,-95.33683,0,NULL,NULL,59),
+ (144,147,1,1,0,'878K Lincoln Ln N',878,'K',NULL,'Lincoln','Ln','N',NULL,NULL,NULL,NULL,'Ontario',1,1004,NULL,'91758',NULL,1228,34.839964,-115.967051,0,NULL,NULL,60),
+ (145,47,1,1,0,'878K Lincoln Ln N',878,'K',NULL,'Lincoln','Ln','N',NULL,NULL,NULL,NULL,'Ontario',1,1004,NULL,'91758',NULL,1228,34.839964,-115.967051,0,NULL,NULL,60),
+ (146,140,1,1,0,'878K Lincoln Ln N',878,'K',NULL,'Lincoln','Ln','N',NULL,NULL,NULL,NULL,'Ontario',1,1004,NULL,'91758',NULL,1228,34.839964,-115.967051,0,NULL,NULL,60),
+ (147,12,1,1,0,'878K Lincoln Ln N',878,'K',NULL,'Lincoln','Ln','N',NULL,NULL,NULL,NULL,'Ontario',1,1004,NULL,'91758',NULL,1228,34.839964,-115.967051,0,NULL,NULL,60),
+ (148,149,1,1,0,'547B Main Dr SE',547,'B',NULL,'Main','Dr','SE',NULL,NULL,NULL,NULL,'Marks',1,1023,NULL,'38646',NULL,1228,34.261893,-90.27443,0,NULL,NULL,61),
+ (149,38,1,1,0,'547B Main Dr SE',547,'B',NULL,'Main','Dr','SE',NULL,NULL,NULL,NULL,'Marks',1,1023,NULL,'38646',NULL,1228,34.261893,-90.27443,0,NULL,NULL,61),
+ (150,108,1,0,0,'547B Main Dr SE',547,'B',NULL,'Main','Dr','SE',NULL,NULL,NULL,NULL,'Marks',1,1023,NULL,'38646',NULL,1228,34.261893,-90.27443,0,NULL,NULL,61),
+ (151,48,1,1,0,'912Q States Path W',912,'Q',NULL,'States','Path','W',NULL,NULL,NULL,NULL,'Roanoke',1,1045,NULL,'24044',NULL,1228,37.274175,-79.95786,0,NULL,NULL,NULL),
+ (152,34,1,0,0,'323I El Camino Dr SE',323,'I',NULL,'El Camino','Dr','SE',NULL,NULL,NULL,NULL,'Huggins',1,1024,NULL,'65484',NULL,1228,37.366219,-92.20608,0,NULL,NULL,62),
+ (153,75,1,1,0,'323I El Camino Dr SE',323,'I',NULL,'El Camino','Dr','SE',NULL,NULL,NULL,NULL,'Huggins',1,1024,NULL,'65484',NULL,1228,37.366219,-92.20608,0,NULL,NULL,62),
+ (154,27,1,1,0,'323I El Camino Dr SE',323,'I',NULL,'El Camino','Dr','SE',NULL,NULL,NULL,NULL,'Huggins',1,1024,NULL,'65484',NULL,1228,37.366219,-92.20608,0,NULL,NULL,62),
+ (155,26,1,1,0,'323I El Camino Dr SE',323,'I',NULL,'El Camino','Dr','SE',NULL,NULL,NULL,NULL,'Huggins',1,1024,NULL,'65484',NULL,1228,37.366219,-92.20608,0,NULL,NULL,62),
+ (156,150,1,1,0,'237N Maple Ln E',237,'N',NULL,'Maple','Ln','E',NULL,NULL,NULL,NULL,'McLain',1,1023,NULL,'39456',NULL,1228,31.072789,-88.80915,0,NULL,NULL,63),
+ (157,168,1,1,0,'237N Maple Ln E',237,'N',NULL,'Maple','Ln','E',NULL,NULL,NULL,NULL,'McLain',1,1023,NULL,'39456',NULL,1228,31.072789,-88.80915,0,NULL,NULL,63),
+ (158,31,1,1,0,'237N Maple Ln E',237,'N',NULL,'Maple','Ln','E',NULL,NULL,NULL,NULL,'McLain',1,1023,NULL,'39456',NULL,1228,31.072789,-88.80915,0,NULL,NULL,63),
+ (159,83,1,1,0,'746F Pine Ave NE',746,'F',NULL,'Pine','Ave','NE',NULL,NULL,NULL,NULL,'Mineola',1,1042,NULL,'75773',NULL,1228,32.674657,-95.46982,0,NULL,NULL,NULL),
+ (160,64,1,1,0,'731B Lincoln St N',731,'B',NULL,'Lincoln','St','N',NULL,NULL,NULL,NULL,'Pfeifer',1,1015,NULL,'67660',NULL,1228,38.704467,-99.1815,0,NULL,NULL,64),
+ (161,72,1,1,0,'731B Lincoln St N',731,'B',NULL,'Lincoln','St','N',NULL,NULL,NULL,NULL,'Pfeifer',1,1015,NULL,'67660',NULL,1228,38.704467,-99.1815,0,NULL,NULL,64),
+ (162,15,1,1,0,'731B Lincoln St N',731,'B',NULL,'Lincoln','St','N',NULL,NULL,NULL,NULL,'Pfeifer',1,1015,NULL,'67660',NULL,1228,38.704467,-99.1815,0,NULL,NULL,64),
+ (163,183,1,1,0,'731B Lincoln St N',731,'B',NULL,'Lincoln','St','N',NULL,NULL,NULL,NULL,'Pfeifer',1,1015,NULL,'67660',NULL,1228,38.704467,-99.1815,0,NULL,NULL,64),
+ (164,71,1,1,0,'23K Northpoint Rd SW',23,'K',NULL,'Northpoint','Rd','SW',NULL,NULL,NULL,NULL,'Tampa',1,1008,NULL,'33631',NULL,1228,27.871964,-82.438841,0,NULL,NULL,65),
+ (165,181,1,1,0,'23K Northpoint Rd SW',23,'K',NULL,'Northpoint','Rd','SW',NULL,NULL,NULL,NULL,'Tampa',1,1008,NULL,'33631',NULL,1228,27.871964,-82.438841,0,NULL,NULL,65),
+ (166,175,1,1,0,'23K Northpoint Rd SW',23,'K',NULL,'Northpoint','Rd','SW',NULL,NULL,NULL,NULL,'Tampa',1,1008,NULL,'33631',NULL,1228,27.871964,-82.438841,0,NULL,NULL,65),
+ (167,115,1,1,0,'995Q Main St W',995,'Q',NULL,'Main','St','W',NULL,NULL,NULL,NULL,'Columbia',1,1039,NULL,'29233',NULL,1228,34.091966,-80.87343,0,NULL,NULL,NULL),
+ (168,87,1,1,0,'150T Bay Pl E',150,'T',NULL,'Bay','Pl','E',NULL,NULL,NULL,NULL,'Fairfield',1,1033,NULL,'58627',NULL,1228,47.219032,-103.23327,0,NULL,NULL,66),
+ (169,3,1,1,0,'150T Bay Pl E',150,'T',NULL,'Bay','Pl','E',NULL,NULL,NULL,NULL,'Fairfield',1,1033,NULL,'58627',NULL,1228,47.219032,-103.23327,0,NULL,NULL,66),
+ (170,103,1,1,0,'150T Bay Pl E',150,'T',NULL,'Bay','Pl','E',NULL,NULL,NULL,NULL,'Fairfield',1,1033,NULL,'58627',NULL,1228,47.219032,-103.23327,0,NULL,NULL,66),
+ (171,180,1,1,0,'150T Bay Pl E',150,'T',NULL,'Bay','Pl','E',NULL,NULL,NULL,NULL,'Fairfield',1,1033,NULL,'58627',NULL,1228,47.219032,-103.23327,0,NULL,NULL,66),
+ (172,126,1,1,0,'307H Cadell Pl N',307,'H',NULL,'Cadell','Pl','N',NULL,NULL,NULL,NULL,'Plano',1,1042,NULL,'75093',NULL,1228,33.03505,-96.80492,0,NULL,NULL,67),
+ (173,120,1,1,0,'307H Cadell Pl N',307,'H',NULL,'Cadell','Pl','N',NULL,NULL,NULL,NULL,'Plano',1,1042,NULL,'75093',NULL,1228,33.03505,-96.80492,0,NULL,NULL,67),
+ (174,164,1,1,0,'307H Cadell Pl N',307,'H',NULL,'Cadell','Pl','N',NULL,NULL,NULL,NULL,'Plano',1,1042,NULL,'75093',NULL,1228,33.03505,-96.80492,0,NULL,NULL,67),
+ (175,165,1,1,0,'297K El Camino Blvd NW',297,'K',NULL,'El Camino','Blvd','NW',NULL,NULL,NULL,NULL,'Kunkle',1,1034,NULL,'43531',NULL,1228,41.635979,-84.49453,0,NULL,NULL,NULL),
+ (176,139,1,1,0,'252L Woodbridge St SE',252,'L',NULL,'Woodbridge','St','SE',NULL,NULL,NULL,NULL,'Mozelle',1,1016,NULL,'40858',NULL,1228,37.018413,-83.39768,0,NULL,NULL,68),
+ (177,119,1,1,0,'252L Woodbridge St SE',252,'L',NULL,'Woodbridge','St','SE',NULL,NULL,NULL,NULL,'Mozelle',1,1016,NULL,'40858',NULL,1228,37.018413,-83.39768,0,NULL,NULL,68),
+ (178,45,1,1,0,'252L Woodbridge St SE',252,'L',NULL,'Woodbridge','St','SE',NULL,NULL,NULL,NULL,'Mozelle',1,1016,NULL,'40858',NULL,1228,37.018413,-83.39768,0,NULL,NULL,68),
+ (179,104,1,1,0,'252L Woodbridge St SE',252,'L',NULL,'Woodbridge','St','SE',NULL,NULL,NULL,NULL,'Mozelle',1,1016,NULL,'40858',NULL,1228,37.018413,-83.39768,0,NULL,NULL,68),
+ (180,NULL,1,1,1,'14S El Camino Way E',14,'S',NULL,'El Camino','Way',NULL,NULL,NULL,NULL,NULL,'Collinsville',NULL,1006,NULL,'6022',NULL,1228,41.8328,-72.9253,0,NULL,NULL,NULL),
+ (181,NULL,1,1,1,'11B Woodbridge Path SW',11,'B',NULL,'Woodbridge','Path',NULL,NULL,NULL,NULL,NULL,'Dayton',NULL,1034,NULL,'45417',NULL,1228,39.7531,-84.2471,0,NULL,NULL,NULL),
+ (182,NULL,1,1,1,'581O Lincoln Dr SW',581,'O',NULL,'Lincoln','Dr',NULL,NULL,NULL,NULL,NULL,'Santa Fe',NULL,1030,NULL,'87594',NULL,1228,35.5212,-105.982,0,NULL,NULL,NULL);
/*!40000 ALTER TABLE `civicrm_address` ENABLE KEYS */;
UNLOCK TABLES;
@@ -1983,208 +1988,208 @@ UNLOCK TABLES;
LOCK TABLES `civicrm_contact` WRITE;
/*!40000 ALTER TABLE `civicrm_contact` DISABLE KEYS */;
INSERT INTO `civicrm_contact` (`id`, `contact_type`, `external_identifier`, `display_name`, `organization_name`, `contact_sub_type`, `first_name`, `middle_name`, `last_name`, `do_not_email`, `do_not_phone`, `do_not_mail`, `do_not_sms`, `do_not_trade`, `is_opt_out`, `legal_identifier`, `sort_name`, `nick_name`, `legal_name`, `image_URL`, `preferred_communication_method`, `preferred_language`, `hash`, `api_key`, `source`, `prefix_id`, `suffix_id`, `formal_title`, `communication_style_id`, `email_greeting_id`, `email_greeting_custom`, `email_greeting_display`, `postal_greeting_id`, `postal_greeting_custom`, `postal_greeting_display`, `addressee_id`, `addressee_custom`, `addressee_display`, `job_title`, `gender_id`, `birth_date`, `is_deceased`, `deceased_date`, `household_name`, `primary_contact_id`, `sic_code`, `user_unique_id`, `employer_id`, `is_deleted`, `created_date`, `modified_date`, `preferred_mail_format`) VALUES
- (1,'Organization',NULL,'Default Organization','Default Organization',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Default Organization',NULL,'Default Organization',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,NULL,'2024-01-06 04:30:24','Both'),
- (2,'Individual',NULL,'Herminia Roberts',NULL,NULL,'Herminia','','Roberts',0,1,0,0,0,0,NULL,'Roberts, Herminia',NULL,NULL,NULL,'2',NULL,'3243130524',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Herminia',1,NULL,'Dear Herminia',1,NULL,'Herminia Roberts',NULL,NULL,'1973-10-30',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-01-06 04:30:27','2024-01-06 04:30:28','Both'),
- (3,'Individual',NULL,'brigettej90@lol.co.uk','Friends Legal Alliance',NULL,NULL,NULL,NULL,1,0,0,0,0,0,NULL,'brigettej90@lol.co.uk',NULL,NULL,NULL,NULL,NULL,'3060896841',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear brigettej90@lol.co.uk',1,NULL,'Dear brigettej90@lol.co.uk',1,NULL,'brigettej90@lol.co.uk',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,40,0,'2024-01-06 04:30:27','2024-01-06 04:30:28','Both'),
- (4,'Individual',NULL,'Mrs. Kiara Wilson',NULL,NULL,'Kiara','Q','Wilson',1,0,0,0,1,0,NULL,'Wilson, Kiara',NULL,NULL,NULL,NULL,NULL,'3345517320',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear Kiara',1,NULL,'Dear Kiara',1,NULL,'Mrs. Kiara Wilson',NULL,NULL,'1946-11-26',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-01-06 04:30:27','2024-01-06 04:30:27','Both'),
- (5,'Household',NULL,'Barkley-Yadav family',NULL,NULL,NULL,NULL,NULL,1,1,0,0,1,0,NULL,'Barkley-Yadav family',NULL,NULL,NULL,'3',NULL,'198512894',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Barkley-Yadav family',5,NULL,'Dear Barkley-Yadav family',2,NULL,'Barkley-Yadav family',NULL,NULL,NULL,0,NULL,'Barkley-Yadav family',NULL,NULL,NULL,NULL,0,'2024-01-06 04:30:27','2024-01-06 04:30:28','Both'),
- (6,'Household',NULL,'DÃaz family',NULL,NULL,NULL,NULL,NULL,0,1,0,0,0,0,NULL,'DÃaz family',NULL,NULL,NULL,'3',NULL,'2169249835',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear DÃaz family',5,NULL,'Dear DÃaz family',2,NULL,'DÃaz family',NULL,NULL,NULL,0,NULL,'DÃaz family',NULL,NULL,NULL,NULL,0,'2024-01-06 04:30:27','2024-01-06 04:30:28','Both'),
- (7,'Individual',NULL,'Rolando Robertson Sr.',NULL,NULL,'Rolando','','Robertson',1,0,0,0,1,0,NULL,'Robertson, Rolando',NULL,NULL,NULL,NULL,NULL,'865252280',NULL,'Sample Data',NULL,2,NULL,NULL,1,NULL,'Dear Rolando',1,NULL,'Dear Rolando',1,NULL,'Rolando Robertson Sr.',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-01-06 04:30:27','2024-01-06 04:30:28','Both'),
- (8,'Individual',NULL,'Shauna Blackwell',NULL,NULL,'Shauna','','Blackwell',0,1,0,0,0,0,NULL,'Blackwell, Shauna',NULL,NULL,NULL,'1',NULL,'1849682656',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Shauna',1,NULL,'Dear Shauna',1,NULL,'Shauna Blackwell',NULL,1,'1986-11-03',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-01-06 04:30:27','2024-01-06 04:30:28','Both'),
- (9,'Individual',NULL,'Ms. Juliann Yadav',NULL,NULL,'Juliann','','Yadav',1,0,0,0,1,0,NULL,'Yadav, Juliann',NULL,NULL,NULL,NULL,NULL,'4000352657',NULL,'Sample Data',2,NULL,NULL,NULL,1,NULL,'Dear Juliann',1,NULL,'Dear Juliann',1,NULL,'Ms. Juliann Yadav',NULL,1,'1988-05-19',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-01-06 04:30:27','2024-01-06 04:30:28','Both'),
- (10,'Individual',NULL,'Dr. Elizabeth Wagner',NULL,NULL,'Elizabeth','K','Wagner',0,0,0,0,0,0,NULL,'Wagner, Elizabeth',NULL,NULL,NULL,NULL,NULL,'1723956436',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Elizabeth',1,NULL,'Dear Elizabeth',1,NULL,'Dr. Elizabeth Wagner',NULL,1,'1955-07-19',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-01-06 04:30:27','2024-01-06 04:30:27','Both'),
- (11,'Individual',NULL,'Kenny Jensen',NULL,NULL,'Kenny','','Jensen',0,0,0,0,0,0,NULL,'Jensen, Kenny',NULL,NULL,NULL,NULL,NULL,'1218055932',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Kenny',1,NULL,'Dear Kenny',1,NULL,'Kenny Jensen',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-01-06 04:30:27','2024-01-06 04:30:28','Both'),
- (12,'Individual',NULL,'Bryon Zope',NULL,NULL,'Bryon','M','Zope',0,1,0,0,1,0,NULL,'Zope, Bryon',NULL,NULL,NULL,NULL,NULL,'1177115571',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Bryon',1,NULL,'Dear Bryon',1,NULL,'Bryon Zope',NULL,NULL,'1989-05-13',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-01-06 04:30:27','2024-01-06 04:30:28','Both'),
- (13,'Individual',NULL,'Dr. Jacob Grant Jr.',NULL,NULL,'Jacob','M','Grant',0,0,0,0,0,0,NULL,'Grant, Jacob',NULL,NULL,NULL,'4',NULL,'2396937477',NULL,'Sample Data',4,1,NULL,NULL,1,NULL,'Dear Jacob',1,NULL,'Dear Jacob',1,NULL,'Dr. Jacob Grant Jr.',NULL,NULL,'1981-04-14',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-01-06 04:30:27','2024-01-06 04:30:27','Both'),
- (14,'Individual',NULL,'Ivey Roberts',NULL,NULL,'Ivey','','Roberts',0,0,0,0,0,0,NULL,'Roberts, Ivey',NULL,NULL,NULL,'3',NULL,'507631333',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Ivey',1,NULL,'Dear Ivey',1,NULL,'Ivey Roberts',NULL,1,'1949-01-31',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-01-06 04:30:27','2024-01-06 04:30:27','Both'),
- (15,'Individual',NULL,'Lou Reynolds Jr.',NULL,NULL,'Lou','A','Reynolds',0,0,0,0,0,0,NULL,'Reynolds, Lou',NULL,NULL,NULL,'4',NULL,'1967816777',NULL,'Sample Data',NULL,1,NULL,NULL,1,NULL,'Dear Lou',1,NULL,'Dear Lou',1,NULL,'Lou Reynolds Jr.',NULL,2,'1939-10-24',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-01-06 04:30:27','2024-01-06 04:30:27','Both'),
- (16,'Individual',NULL,'Brzęczysław Jameson Jr.',NULL,NULL,'Brzęczysław','D','Jameson',0,0,0,0,1,0,NULL,'Jameson, Brzęczysław',NULL,NULL,NULL,'2',NULL,'3238208659',NULL,'Sample Data',NULL,1,NULL,NULL,1,NULL,'Dear Brzęczysław',1,NULL,'Dear Brzęczysław',1,NULL,'Brzęczysław Jameson Jr.',NULL,2,'1991-06-09',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-01-06 04:30:27','2024-01-06 04:30:27','Both'),
- (17,'Individual',NULL,'Lashawnda Jones',NULL,NULL,'Lashawnda','','Jones',0,0,0,0,1,0,NULL,'Jones, Lashawnda',NULL,NULL,NULL,'3',NULL,'3527587829',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Lashawnda',1,NULL,'Dear Lashawnda',1,NULL,'Lashawnda Jones',NULL,1,'1973-11-05',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-01-06 04:30:27','2024-01-06 04:30:27','Both'),
- (18,'Individual',NULL,'Dr. Elbert Terrell',NULL,NULL,'Elbert','M','Terrell',0,0,0,0,1,0,NULL,'Terrell, Elbert',NULL,NULL,NULL,'3',NULL,'1862258278',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Elbert',1,NULL,'Dear Elbert',1,NULL,'Dr. Elbert Terrell',NULL,2,'1970-10-27',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-01-06 04:30:27','2024-01-06 04:30:28','Both'),
- (19,'Individual',NULL,'Dr. Ashley Prentice III',NULL,NULL,'Ashley','','Prentice',0,0,0,0,0,0,NULL,'Prentice, Ashley',NULL,NULL,NULL,'4',NULL,'3283878025',NULL,'Sample Data',4,4,NULL,NULL,1,NULL,'Dear Ashley',1,NULL,'Dear Ashley',1,NULL,'Dr. Ashley Prentice III',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-01-06 04:30:27','2024-01-06 04:30:27','Both'),
- (20,'Individual',NULL,'Esta Dimitrov-Bachman',NULL,NULL,'Esta','X','Dimitrov-Bachman',0,0,0,0,0,0,NULL,'Dimitrov-Bachman, Esta',NULL,NULL,NULL,'3',NULL,'1702288138',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Esta',1,NULL,'Dear Esta',1,NULL,'Esta Dimitrov-Bachman',NULL,NULL,'1979-01-26',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-01-06 04:30:27','2024-01-06 04:30:28','Both'),
- (21,'Organization',NULL,'Louisiana Wellness Association','Louisiana Wellness Association',NULL,NULL,NULL,NULL,0,0,0,0,1,0,NULL,'Louisiana Wellness Association',NULL,NULL,NULL,NULL,NULL,'3053407297',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Louisiana Wellness Association',NULL,NULL,NULL,0,NULL,NULL,46,NULL,NULL,NULL,0,'2024-01-06 04:30:27','2024-01-06 04:30:28','Both'),
- (22,'Individual',NULL,'deforest.d.elbert31@notmail.co.uk',NULL,NULL,NULL,NULL,NULL,1,1,0,0,0,0,NULL,'deforest.d.elbert31@notmail.co.uk',NULL,NULL,NULL,'5',NULL,'1278238827',NULL,'Sample Data',NULL,3,NULL,NULL,1,NULL,'Dear deforest.d.elbert31@notmail.co.uk',1,NULL,'Dear deforest.d.elbert31@notmail.co.uk',1,NULL,'deforest.d.elbert31@notmail.co.uk',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-01-06 04:30:27','2024-01-06 04:30:27','Both'),
- (23,'Individual',NULL,'Dr. Alexia Reynolds',NULL,NULL,'Alexia','','Reynolds',0,0,0,0,1,0,NULL,'Reynolds, Alexia',NULL,NULL,NULL,NULL,NULL,'1389353396',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Alexia',1,NULL,'Dear Alexia',1,NULL,'Dr. Alexia Reynolds',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-01-06 04:30:27','2024-01-06 04:30:27','Both'),
- (24,'Individual',NULL,'Mrs. Valene González',NULL,NULL,'Valene','','González',0,0,0,0,1,0,NULL,'González, Valene',NULL,NULL,NULL,NULL,NULL,'970849646',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear Valene',1,NULL,'Dear Valene',1,NULL,'Mrs. Valene González',NULL,1,'1958-10-28',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-01-06 04:30:27','2024-01-06 04:30:28','Both'),
- (25,'Individual',NULL,'Teddy Dimitrov-Bachman',NULL,NULL,'Teddy','','Dimitrov-Bachman',0,0,0,0,0,0,NULL,'Dimitrov-Bachman, Teddy',NULL,NULL,NULL,'2',NULL,'1388861588',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Teddy',1,NULL,'Dear Teddy',1,NULL,'Teddy Dimitrov-Bachman',NULL,2,'2021-11-28',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-01-06 04:30:27','2024-01-06 04:30:28','Both'),
- (26,'Individual',NULL,'Lawerence Bachman Jr.',NULL,NULL,'Lawerence','W','Bachman',0,0,0,0,0,0,NULL,'Bachman, Lawerence',NULL,NULL,NULL,'3',NULL,'2961144560',NULL,'Sample Data',NULL,1,NULL,NULL,1,NULL,'Dear Lawerence',1,NULL,'Dear Lawerence',1,NULL,'Lawerence Bachman Jr.',NULL,2,'2016-02-24',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-01-06 04:30:27','2024-01-06 04:30:28','Both'),
- (27,'Individual',NULL,'lb.gonzlez@testmail.co.nz',NULL,NULL,NULL,NULL,NULL,0,0,0,0,1,0,NULL,'lb.gonzlez@testmail.co.nz',NULL,NULL,NULL,'4',NULL,'2501279014',NULL,'Sample Data',3,3,NULL,NULL,1,NULL,'Dear lb.gonzlez@testmail.co.nz',1,NULL,'Dear lb.gonzlez@testmail.co.nz',1,NULL,'lb.gonzlez@testmail.co.nz',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-01-06 04:30:27','2024-01-06 04:30:27','Both'),
- (28,'Individual',NULL,'Ashley Deforest-Roberts',NULL,NULL,'Ashley','','Deforest-Roberts',0,0,0,0,0,0,NULL,'Deforest-Roberts, Ashley',NULL,NULL,NULL,NULL,NULL,'855556630',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Ashley',1,NULL,'Dear Ashley',1,NULL,'Ashley Deforest-Roberts',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-01-06 04:30:27','2024-01-06 04:30:28','Both'),
- (29,'Individual',NULL,'Mr. Jackson Samuels-Robertson Jr.',NULL,NULL,'Jackson','X','Samuels-Robertson',1,1,0,0,0,0,NULL,'Samuels-Robertson, Jackson',NULL,NULL,NULL,NULL,NULL,'2567013134',NULL,'Sample Data',3,1,NULL,NULL,1,NULL,'Dear Jackson',1,NULL,'Dear Jackson',1,NULL,'Mr. Jackson Samuels-Robertson Jr.',NULL,NULL,'1990-05-12',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-01-06 04:30:27','2024-01-06 04:30:28','Both'),
- (30,'Individual',NULL,'Mr. Jacob DÃaz',NULL,NULL,'Jacob','C','DÃaz',0,0,0,0,0,0,NULL,'DÃaz, Jacob',NULL,NULL,NULL,NULL,NULL,'3488947578',NULL,'Sample Data',3,NULL,NULL,NULL,1,NULL,'Dear Jacob',1,NULL,'Dear Jacob',1,NULL,'Mr. Jacob DÃaz',NULL,2,'1976-02-19',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-01-06 04:30:27','2024-01-06 04:30:27','Both'),
- (31,'Individual',NULL,'Mr. Lincoln Ivanov-Olsen',NULL,NULL,'Lincoln','','Ivanov-Olsen',0,1,0,0,0,0,NULL,'Ivanov-Olsen, Lincoln',NULL,NULL,NULL,NULL,NULL,'1801038911',NULL,'Sample Data',3,NULL,NULL,NULL,1,NULL,'Dear Lincoln',1,NULL,'Dear Lincoln',1,NULL,'Mr. Lincoln Ivanov-Olsen',NULL,NULL,'2002-10-28',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-01-06 04:30:27','2024-01-06 04:30:28','Both'),
- (32,'Individual',NULL,'Teresa Robertson',NULL,NULL,'Teresa','M','Robertson',0,0,0,0,1,0,NULL,'Robertson, Teresa',NULL,NULL,NULL,'4',NULL,'988071547',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Teresa',1,NULL,'Dear Teresa',1,NULL,'Teresa Robertson',NULL,1,'1988-01-24',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-01-06 04:30:27','2024-01-06 04:30:28','Both'),
- (33,'Individual',NULL,'Arlyne Wilson',NULL,NULL,'Arlyne','','Wilson',1,0,0,0,0,0,NULL,'Wilson, Arlyne',NULL,NULL,NULL,'5',NULL,'785003749',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Arlyne',1,NULL,'Dear Arlyne',1,NULL,'Arlyne Wilson',NULL,1,'1993-05-29',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-01-06 04:30:27','2024-01-06 04:30:28','Both'),
- (34,'Individual',NULL,'Andrew González',NULL,NULL,'Andrew','S','González',0,0,0,0,0,0,NULL,'González, Andrew',NULL,NULL,NULL,NULL,NULL,'1775136005',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Andrew',1,NULL,'Dear Andrew',1,NULL,'Andrew González',NULL,2,'1943-08-26',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-01-06 04:30:27','2024-01-06 04:30:27','Both'),
- (35,'Individual',NULL,'Bob Terrell II',NULL,NULL,'Bob','H','Terrell',0,0,0,0,1,0,NULL,'Terrell, Bob',NULL,NULL,NULL,'4',NULL,'1949116278',NULL,'Sample Data',NULL,3,NULL,NULL,1,NULL,'Dear Bob',1,NULL,'Dear Bob',1,NULL,'Bob Terrell II',NULL,2,'1983-01-15',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-01-06 04:30:27','2024-01-06 04:30:28','Both'),
- (36,'Organization',NULL,'Ohio Software Partnership','Ohio Software Partnership',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Ohio Software Partnership',NULL,NULL,NULL,'2',NULL,'837016851',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Ohio Software Partnership',NULL,NULL,NULL,0,NULL,NULL,49,NULL,NULL,NULL,0,'2024-01-06 04:30:27','2024-01-06 04:30:28','Both'),
- (37,'Individual',NULL,'Dr. Allen Barkley II',NULL,NULL,'Allen','K','Barkley',1,0,0,0,0,0,NULL,'Barkley, Allen',NULL,NULL,NULL,NULL,NULL,'2669831068',NULL,'Sample Data',4,3,NULL,NULL,1,NULL,'Dear Allen',1,NULL,'Dear Allen',1,NULL,'Dr. Allen Barkley II',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-01-06 04:30:27','2024-01-06 04:30:27','Both'),
- (38,'Individual',NULL,'Dr. Miguel González II',NULL,NULL,'Miguel','','González',1,0,0,0,0,0,NULL,'González, Miguel',NULL,NULL,NULL,'2',NULL,'833815017',NULL,'Sample Data',4,3,NULL,NULL,1,NULL,'Dear Miguel',1,NULL,'Dear Miguel',1,NULL,'Dr. Miguel González II',NULL,2,'1977-09-01',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-01-06 04:30:27','2024-01-06 04:30:28','Both'),
- (39,'Individual',NULL,'Dr. Lawerence Cooper-Yadav',NULL,NULL,'Lawerence','','Cooper-Yadav',1,1,0,0,0,0,NULL,'Cooper-Yadav, Lawerence',NULL,NULL,NULL,NULL,NULL,'2440615526',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Lawerence',1,NULL,'Dear Lawerence',1,NULL,'Dr. Lawerence Cooper-Yadav',NULL,NULL,'1978-07-08',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-01-06 04:30:27','2024-01-06 04:30:28','Both'),
- (40,'Organization',NULL,'Friends Legal Alliance','Friends Legal Alliance',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Friends Legal Alliance',NULL,NULL,NULL,'2',NULL,'3531958958',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Friends Legal Alliance',NULL,NULL,NULL,0,NULL,NULL,3,NULL,NULL,NULL,0,'2024-01-06 04:30:27','2024-01-06 04:30:28','Both'),
- (41,'Individual',NULL,'arlyney@mymail.co.pl',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'arlyney@mymail.co.pl',NULL,NULL,NULL,'3',NULL,'545941080',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear arlyney@mymail.co.pl',1,NULL,'Dear arlyney@mymail.co.pl',1,NULL,'arlyney@mymail.co.pl',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-01-06 04:30:27','2024-01-06 04:30:27','Both'),
- (42,'Individual',NULL,'Bob Reynolds',NULL,NULL,'Bob','N','Reynolds',0,0,0,0,1,0,NULL,'Reynolds, Bob',NULL,NULL,NULL,'3',NULL,'4228327556',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Bob',1,NULL,'Dear Bob',1,NULL,'Bob Reynolds',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-01-06 04:30:27','2024-01-06 04:30:28','Both'),
- (43,'Individual',NULL,'Irvin Robertson',NULL,NULL,'Irvin','','Robertson',0,0,0,0,0,0,NULL,'Robertson, Irvin',NULL,NULL,NULL,'3',NULL,'3287904826',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Irvin',1,NULL,'Dear Irvin',1,NULL,'Irvin Robertson',NULL,2,'2015-11-26',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-01-06 04:30:27','2024-01-06 04:30:28','Both'),
- (44,'Organization',NULL,'Rural Wellness School','Rural Wellness School',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Rural Wellness School',NULL,NULL,NULL,NULL,NULL,'4052457731',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Rural Wellness School',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-01-06 04:30:27','2024-01-06 04:30:28','Both'),
- (45,'Household',NULL,'Ivanov-Olsen family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Ivanov-Olsen family',NULL,NULL,NULL,'2',NULL,'2664824787',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Ivanov-Olsen family',5,NULL,'Dear Ivanov-Olsen family',2,NULL,'Ivanov-Olsen family',NULL,NULL,NULL,0,NULL,'Ivanov-Olsen family',NULL,NULL,NULL,NULL,0,'2024-01-06 04:30:27','2024-01-06 04:30:28','Both'),
- (46,'Individual',NULL,'Kandace Roberts','Louisiana Wellness Association',NULL,'Kandace','','Roberts',0,1,0,0,0,0,NULL,'Roberts, Kandace',NULL,NULL,NULL,NULL,NULL,'3760408869',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Kandace',1,NULL,'Dear Kandace',1,NULL,'Kandace Roberts',NULL,1,'1990-11-16',0,NULL,NULL,NULL,NULL,NULL,21,0,'2024-01-06 04:30:27','2024-01-06 04:30:28','Both'),
- (47,'Individual',NULL,'Mrs. Tanya Bachman',NULL,NULL,'Tanya','','Bachman',0,0,0,0,0,0,NULL,'Bachman, Tanya',NULL,NULL,NULL,'4',NULL,'2047603331',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear Tanya',1,NULL,'Dear Tanya',1,NULL,'Mrs. Tanya Bachman',NULL,1,'1982-04-27',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-01-06 04:30:27','2024-01-06 04:30:27','Both'),
- (48,'Organization',NULL,'Urban Software Initiative','Urban Software Initiative',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Urban Software Initiative',NULL,NULL,NULL,NULL,NULL,'560302493',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Urban Software Initiative',NULL,NULL,NULL,0,NULL,NULL,165,NULL,NULL,NULL,0,'2024-01-06 04:30:27','2024-01-06 04:30:28','Both'),
- (49,'Individual',NULL,'Mr. Maria Parker III','Ohio Software Partnership',NULL,'Maria','G','Parker',0,1,0,0,0,0,NULL,'Parker, Maria',NULL,NULL,NULL,'2',NULL,'930508921',NULL,'Sample Data',3,4,NULL,NULL,1,NULL,'Dear Maria',1,NULL,'Dear Maria',1,NULL,'Mr. Maria Parker III',NULL,2,'1992-05-29',0,NULL,NULL,NULL,NULL,NULL,36,0,'2024-01-06 04:30:27','2024-01-06 04:30:28','Both'),
- (50,'Individual',NULL,'nielsen.q.ivey73@fishmail.org','Sierra Food Trust',NULL,NULL,NULL,NULL,0,0,0,0,1,0,NULL,'nielsen.q.ivey73@fishmail.org',NULL,NULL,NULL,NULL,NULL,'2842228638',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear nielsen.q.ivey73@fishmail.org',1,NULL,'Dear nielsen.q.ivey73@fishmail.org',1,NULL,'nielsen.q.ivey73@fishmail.org',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,87,0,'2024-01-06 04:30:27','2024-01-06 04:30:28','Both'),
- (51,'Organization',NULL,'Pennsylvania Poetry Fund','Pennsylvania Poetry Fund',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Pennsylvania Poetry Fund',NULL,NULL,NULL,NULL,NULL,'3714029261',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Pennsylvania Poetry Fund',NULL,NULL,NULL,0,NULL,NULL,57,NULL,NULL,NULL,0,'2024-01-06 04:30:27','2024-01-06 04:30:28','Both'),
- (52,'Individual',NULL,'Mrs. Laree Jacobs','Tennessee Agriculture Solutions',NULL,'Laree','J','Jacobs',0,0,0,0,0,0,NULL,'Jacobs, Laree',NULL,NULL,NULL,NULL,NULL,'3788424198',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear Laree',1,NULL,'Dear Laree',1,NULL,'Mrs. Laree Jacobs',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,118,0,'2024-01-06 04:30:27','2024-01-06 04:30:28','Both'),
- (53,'Individual',NULL,'Barry Reynolds Jr.',NULL,NULL,'Barry','','Reynolds',1,0,0,0,0,0,NULL,'Reynolds, Barry',NULL,NULL,NULL,'3',NULL,'3819576802',NULL,'Sample Data',NULL,1,NULL,NULL,1,NULL,'Dear Barry',1,NULL,'Dear Barry',1,NULL,'Barry Reynolds Jr.',NULL,NULL,'1948-01-02',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-01-06 04:30:27','2024-01-06 04:30:27','Both'),
- (54,'Individual',NULL,'Mr. Toby Blackwell',NULL,NULL,'Toby','','Blackwell',1,0,0,0,1,0,NULL,'Blackwell, Toby',NULL,NULL,NULL,'3',NULL,'3987770403',NULL,'Sample Data',3,NULL,NULL,NULL,1,NULL,'Dear Toby',1,NULL,'Dear Toby',1,NULL,'Mr. Toby Blackwell',NULL,NULL,'1972-12-06',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-01-06 04:30:27','2024-01-06 04:30:28','Both'),
- (55,'Household',NULL,'Cooper-Yadav family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Cooper-Yadav family',NULL,NULL,NULL,NULL,NULL,'3543369444',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Cooper-Yadav family',5,NULL,'Dear Cooper-Yadav family',2,NULL,'Cooper-Yadav family',NULL,NULL,NULL,0,NULL,'Cooper-Yadav family',NULL,NULL,NULL,NULL,0,'2024-01-06 04:30:27','2024-01-06 04:30:28','Both'),
- (56,'Individual',NULL,'Ashley Roberts II',NULL,NULL,'Ashley','I','Roberts',0,0,0,0,0,0,NULL,'Roberts, Ashley',NULL,NULL,NULL,NULL,NULL,'4027031255',NULL,'Sample Data',NULL,3,NULL,NULL,1,NULL,'Dear Ashley',1,NULL,'Dear Ashley',1,NULL,'Ashley Roberts II',NULL,2,'1994-07-24',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-01-06 04:30:27','2024-01-06 04:30:28','Both'),
- (57,'Individual',NULL,'Brzęczysław Adams Sr.','Pennsylvania Poetry Fund',NULL,'Brzęczysław','Z','Adams',0,1,0,0,1,0,NULL,'Adams, Brzęczysław',NULL,NULL,NULL,NULL,NULL,'3378454317',NULL,'Sample Data',NULL,2,NULL,NULL,1,NULL,'Dear Brzęczysław',1,NULL,'Dear Brzęczysław',1,NULL,'Brzęczysław Adams Sr.',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,51,0,'2024-01-06 04:30:27','2024-01-06 04:30:28','Both'),
- (58,'Individual',NULL,'Claudio Roberts Sr.',NULL,NULL,'Claudio','','Roberts',0,0,0,0,1,0,NULL,'Roberts, Claudio',NULL,NULL,NULL,NULL,NULL,'425095368',NULL,'Sample Data',NULL,2,NULL,NULL,1,NULL,'Dear Claudio',1,NULL,'Dear Claudio',1,NULL,'Claudio Roberts Sr.',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-01-06 04:30:27','2024-01-06 04:30:28','Both'),
- (59,'Individual',NULL,'Allan Zope',NULL,NULL,'Allan','','Zope',0,0,0,0,0,0,NULL,'Zope, Allan',NULL,NULL,NULL,'1',NULL,'891375066',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Allan',1,NULL,'Dear Allan',1,NULL,'Allan Zope',NULL,2,'1993-02-21',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-01-06 04:30:27','2024-01-06 04:30:27','Both'),
- (60,'Individual',NULL,'Mrs. Elina Lee',NULL,NULL,'Elina','C','Lee',0,1,0,0,0,0,NULL,'Lee, Elina',NULL,NULL,NULL,NULL,NULL,'2171390840',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear Elina',1,NULL,'Dear Elina',1,NULL,'Mrs. Elina Lee',NULL,NULL,'1991-06-10',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-01-06 04:30:27','2024-01-06 04:30:27','Both'),
- (61,'Individual',NULL,'Billy Terrell',NULL,NULL,'Billy','','Terrell',0,0,0,0,0,0,NULL,'Terrell, Billy',NULL,NULL,NULL,NULL,NULL,'1389531692',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Billy',1,NULL,'Dear Billy',1,NULL,'Billy Terrell',NULL,2,'2004-10-26',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-01-06 04:30:27','2024-01-06 04:30:28','Both'),
- (62,'Individual',NULL,'Dr. Bernadette Grant',NULL,NULL,'Bernadette','','Grant',0,0,0,0,0,0,NULL,'Grant, Bernadette',NULL,NULL,NULL,'5',NULL,'2386715823',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Bernadette',1,NULL,'Dear Bernadette',1,NULL,'Dr. Bernadette Grant',NULL,1,'1942-05-19',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-01-06 04:30:27','2024-01-06 04:30:27','Both'),
- (63,'Individual',NULL,'Dr. Billy Jensen III',NULL,NULL,'Billy','','Jensen',0,0,0,0,0,0,NULL,'Jensen, Billy',NULL,NULL,NULL,NULL,NULL,'1055811033',NULL,'Sample Data',4,4,NULL,NULL,1,NULL,'Dear Billy',1,NULL,'Dear Billy',1,NULL,'Dr. Billy Jensen III',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-01-06 04:30:27','2024-01-06 04:30:27','Both'),
- (64,'Individual',NULL,'Mrs. Kathleen Adams',NULL,NULL,'Kathleen','','Adams',1,0,0,0,0,0,NULL,'Adams, Kathleen',NULL,NULL,NULL,NULL,NULL,'163700750',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear Kathleen',1,NULL,'Dear Kathleen',1,NULL,'Mrs. Kathleen Adams',NULL,1,'1967-11-27',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-01-06 04:30:27','2024-01-06 04:30:28','Both'),
- (65,'Individual',NULL,'Scott Robertson Jr.',NULL,NULL,'Scott','O','Robertson',0,0,0,0,0,0,NULL,'Robertson, Scott',NULL,NULL,NULL,NULL,NULL,'284541050',NULL,'Sample Data',NULL,1,NULL,NULL,1,NULL,'Dear Scott',1,NULL,'Dear Scott',1,NULL,'Scott Robertson Jr.',NULL,2,'1986-04-16',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-01-06 04:30:27','2024-01-06 04:30:28','Both'),
- (66,'Individual',NULL,'Mrs. Heidi Zope',NULL,NULL,'Heidi','','Zope',0,1,0,0,0,0,NULL,'Zope, Heidi',NULL,NULL,NULL,NULL,NULL,'2699150124',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear Heidi',1,NULL,'Dear Heidi',1,NULL,'Mrs. Heidi Zope',NULL,1,'1984-08-07',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-01-06 04:30:27','2024-01-06 04:30:27','Both'),
- (67,'Individual',NULL,'Truman Grant',NULL,NULL,'Truman','Z','Grant',0,1,0,0,0,0,NULL,'Grant, Truman',NULL,NULL,NULL,NULL,NULL,'1269532759',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Truman',1,NULL,'Dear Truman',1,NULL,'Truman Grant',NULL,NULL,'1940-08-12',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-01-06 04:30:27','2024-01-06 04:30:27','Both'),
- (68,'Individual',NULL,'Alida Jones','Ohio Health Initiative',NULL,'Alida','Z','Jones',0,0,0,0,0,0,NULL,'Jones, Alida',NULL,NULL,NULL,'3',NULL,'4267244805',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Alida',1,NULL,'Dear Alida',1,NULL,'Alida Jones',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,187,0,'2024-01-06 04:30:27','2024-01-06 04:30:28','Both'),
- (69,'Individual',NULL,'Norris Jones',NULL,NULL,'Norris','','Jones',0,1,0,0,0,0,NULL,'Jones, Norris',NULL,NULL,NULL,'5',NULL,'2315660840',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Norris',1,NULL,'Dear Norris',1,NULL,'Norris Jones',NULL,2,'2019-04-07',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-01-06 04:30:27','2024-01-06 04:30:28','Both'),
- (70,'Individual',NULL,'Mr. Landon Samson',NULL,NULL,'Landon','Z','Samson',1,0,0,0,1,0,NULL,'Samson, Landon',NULL,NULL,NULL,'5',NULL,'1562429969',NULL,'Sample Data',3,NULL,NULL,NULL,1,NULL,'Dear Landon',1,NULL,'Dear Landon',1,NULL,'Mr. Landon Samson',NULL,NULL,NULL,1,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-01-06 04:30:27','2024-01-06 04:30:27','Both'),
- (71,'Individual',NULL,'Valene DÃaz',NULL,NULL,'Valene','','DÃaz',0,1,0,0,0,0,NULL,'DÃaz, Valene',NULL,NULL,NULL,NULL,NULL,'3532656393',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Valene',1,NULL,'Dear Valene',1,NULL,'Valene DÃaz',NULL,1,'1950-12-24',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-01-06 04:30:27','2024-01-06 04:30:27','Both'),
- (72,'Individual',NULL,'Ms. Kacey Deforest-Roberts',NULL,NULL,'Kacey','','Deforest-Roberts',1,0,0,0,0,0,NULL,'Deforest-Roberts, Kacey',NULL,NULL,NULL,NULL,NULL,'1358039585',NULL,'Sample Data',2,NULL,NULL,NULL,1,NULL,'Dear Kacey',1,NULL,'Dear Kacey',1,NULL,'Ms. Kacey Deforest-Roberts',NULL,1,'1977-10-02',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-01-06 04:30:27','2024-01-06 04:30:28','Both'),
- (73,'Organization',NULL,'Anchorage Sports Center','Anchorage Sports Center',NULL,NULL,NULL,NULL,1,0,0,0,1,0,NULL,'Anchorage Sports Center',NULL,NULL,NULL,NULL,NULL,'2956120288',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Anchorage Sports Center',NULL,NULL,NULL,0,NULL,NULL,139,NULL,NULL,NULL,0,'2024-01-06 04:30:27','2024-01-06 04:30:28','Both'),
- (74,'Individual',NULL,'Omar Ivanov-Olsen',NULL,NULL,'Omar','','Ivanov-Olsen',1,0,0,0,1,0,NULL,'Ivanov-Olsen, Omar',NULL,NULL,NULL,NULL,NULL,'1816789676',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Omar',1,NULL,'Dear Omar',1,NULL,'Omar Ivanov-Olsen',NULL,2,'2020-04-01',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-01-06 04:30:27','2024-01-06 04:30:28','Both'),
- (75,'Individual',NULL,'Omar Ivanov',NULL,NULL,'Omar','B','Ivanov',0,0,0,0,0,0,NULL,'Ivanov, Omar',NULL,NULL,NULL,'2',NULL,'474284391',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Omar',1,NULL,'Dear Omar',1,NULL,'Omar Ivanov',NULL,2,'1955-11-25',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-01-06 04:30:27','2024-01-06 04:30:27','Both'),
- (76,'Individual',NULL,'Ms. Felisha Cruz',NULL,NULL,'Felisha','T','Cruz',0,0,0,0,0,0,NULL,'Cruz, Felisha',NULL,NULL,NULL,NULL,NULL,'2429011594',NULL,'Sample Data',2,NULL,NULL,NULL,1,NULL,'Dear Felisha',1,NULL,'Dear Felisha',1,NULL,'Ms. Felisha Cruz',NULL,NULL,'1951-09-21',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-01-06 04:30:27','2024-01-06 04:30:27','Both'),
- (77,'Individual',NULL,'Mr. Teddy ÅÄ…chowski',NULL,NULL,'Teddy','O','ÅÄ…chowski',0,1,0,0,0,0,NULL,'ÅÄ…chowski, Teddy',NULL,NULL,NULL,'3',NULL,'4255944896',NULL,'Sample Data',3,NULL,NULL,NULL,1,NULL,'Dear Teddy',1,NULL,'Dear Teddy',1,NULL,'Mr. Teddy ÅÄ…chowski',NULL,2,'1976-06-23',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-01-06 04:30:27','2024-01-06 04:30:27','Both'),
- (78,'Individual',NULL,'zope-jensen.a.scott@example.org',NULL,NULL,NULL,NULL,NULL,1,0,0,0,0,0,NULL,'zope-jensen.a.scott@example.org',NULL,NULL,NULL,'4',NULL,'260430495',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear zope-jensen.a.scott@example.org',1,NULL,'Dear zope-jensen.a.scott@example.org',1,NULL,'zope-jensen.a.scott@example.org',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-01-06 04:30:27','2024-01-06 04:30:28','Both'),
- (79,'Individual',NULL,'Mr. Elbert Robertson III',NULL,NULL,'Elbert','A','Robertson',0,0,0,0,0,0,NULL,'Robertson, Elbert',NULL,NULL,NULL,'4',NULL,'3684824833',NULL,'Sample Data',3,4,NULL,NULL,1,NULL,'Dear Elbert',1,NULL,'Dear Elbert',1,NULL,'Mr. Elbert Robertson III',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-01-06 04:30:27','2024-01-06 04:30:28','Both'),
- (80,'Household',NULL,'Robertson family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Robertson family',NULL,NULL,NULL,NULL,NULL,'3444393980',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Robertson family',5,NULL,'Dear Robertson family',2,NULL,'Robertson family',NULL,NULL,NULL,0,NULL,'Robertson family',NULL,NULL,NULL,NULL,0,'2024-01-06 04:30:27','2024-01-06 04:30:28','Both'),
- (81,'Individual',NULL,'Clint Zope-Jensen III',NULL,NULL,'Clint','','Zope-Jensen',0,1,0,0,0,0,NULL,'Zope-Jensen, Clint',NULL,NULL,NULL,NULL,NULL,'4059964574',NULL,'Sample Data',NULL,4,NULL,NULL,1,NULL,'Dear Clint',1,NULL,'Dear Clint',1,NULL,'Clint Zope-Jensen III',NULL,2,'1995-05-13',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-01-06 04:30:27','2024-01-06 04:30:28','Both'),
- (82,'Individual',NULL,'Scott Blackwell-McReynolds','Pennsylvania Family Partnership',NULL,'Scott','J','Blackwell-McReynolds',0,0,0,0,0,0,NULL,'Blackwell-McReynolds, Scott',NULL,NULL,NULL,NULL,NULL,'392643299',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Scott',1,NULL,'Dear Scott',1,NULL,'Scott Blackwell-McReynolds',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,138,0,'2024-01-06 04:30:27','2024-01-06 04:30:28','Both'),
- (83,'Individual',NULL,'Mrs. Brigette Cruz',NULL,NULL,'Brigette','C','Cruz',1,0,0,0,0,0,NULL,'Cruz, Brigette',NULL,NULL,NULL,'3',NULL,'2081611913',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear Brigette',1,NULL,'Dear Brigette',1,NULL,'Mrs. Brigette Cruz',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-01-06 04:30:27','2024-01-06 04:30:28','Both'),
- (84,'Individual',NULL,'Miguel McReynolds III',NULL,NULL,'Miguel','','McReynolds',1,0,0,0,0,0,NULL,'McReynolds, Miguel',NULL,NULL,NULL,NULL,NULL,'2143406543',NULL,'Sample Data',NULL,4,NULL,NULL,1,NULL,'Dear Miguel',1,NULL,'Dear Miguel',1,NULL,'Miguel McReynolds III',NULL,2,'1983-12-18',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-01-06 04:30:27','2024-01-06 04:30:27','Both'),
- (85,'Individual',NULL,'Mrs. Justina Barkley',NULL,NULL,'Justina','Q','Barkley',0,0,0,0,0,0,NULL,'Barkley, Justina',NULL,NULL,NULL,NULL,NULL,'2698595915',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear Justina',1,NULL,'Dear Justina',1,NULL,'Mrs. Justina Barkley',NULL,1,'1965-07-02',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-01-06 04:30:27','2024-01-06 04:30:27','Both'),
- (86,'Individual',NULL,'Jina Zope',NULL,NULL,'Jina','D','Zope',1,0,0,0,1,0,NULL,'Zope, Jina',NULL,NULL,NULL,'3',NULL,'2020833032',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Jina',1,NULL,'Dear Jina',1,NULL,'Jina Zope',NULL,1,'1999-04-05',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-01-06 04:30:27','2024-01-06 04:30:27','Both'),
- (87,'Organization',NULL,'Sierra Food Trust','Sierra Food Trust',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Sierra Food Trust',NULL,NULL,NULL,NULL,NULL,'3441880548',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Sierra Food Trust',NULL,NULL,NULL,0,NULL,NULL,50,NULL,NULL,NULL,0,'2024-01-06 04:30:27','2024-01-06 04:30:28','Both'),
- (88,'Individual',NULL,'Norris McReynolds',NULL,NULL,'Norris','','McReynolds',0,0,0,0,0,0,NULL,'McReynolds, Norris',NULL,NULL,NULL,NULL,NULL,'891338000',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Norris',1,NULL,'Dear Norris',1,NULL,'Norris McReynolds',NULL,2,'1974-06-19',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-01-06 04:30:27','2024-01-06 04:30:27','Both'),
- (89,'Household',NULL,'Jones family',NULL,NULL,NULL,NULL,NULL,1,0,0,0,0,0,NULL,'Jones family',NULL,NULL,NULL,'3',NULL,'1110516799',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Jones family',5,NULL,'Dear Jones family',2,NULL,'Jones family',NULL,NULL,NULL,0,NULL,'Jones family',NULL,NULL,NULL,NULL,0,'2024-01-06 04:30:27','2024-01-06 04:30:28','Both'),
- (90,'Individual',NULL,'Ms. Heidi Smith',NULL,NULL,'Heidi','Z','Smith',0,0,0,0,1,0,NULL,'Smith, Heidi',NULL,NULL,NULL,NULL,NULL,'837834326',NULL,'Sample Data',2,NULL,NULL,NULL,1,NULL,'Dear Heidi',1,NULL,'Dear Heidi',1,NULL,'Ms. Heidi Smith',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-01-06 04:30:27','2024-01-06 04:30:27','Both'),
- (91,'Individual',NULL,'Ivey McReynolds',NULL,NULL,'Ivey','','McReynolds',1,0,0,0,0,0,NULL,'McReynolds, Ivey',NULL,NULL,NULL,NULL,NULL,'3543287446',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Ivey',1,NULL,'Dear Ivey',1,NULL,'Ivey McReynolds',NULL,1,'1982-05-11',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-01-06 04:30:27','2024-01-06 04:30:27','Both'),
- (92,'Individual',NULL,'Clint Blackwell Sr.',NULL,NULL,'Clint','','Blackwell',1,0,0,0,0,0,NULL,'Blackwell, Clint',NULL,NULL,NULL,'4',NULL,'3997373533',NULL,'Sample Data',NULL,2,NULL,NULL,1,NULL,'Dear Clint',1,NULL,'Dear Clint',1,NULL,'Clint Blackwell Sr.',NULL,NULL,NULL,1,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-01-06 04:30:27','2024-01-06 04:30:27','Both'),
- (93,'Individual',NULL,'Mr. Carlos Olsen Jr.',NULL,NULL,'Carlos','Q','Olsen',0,1,0,0,0,0,NULL,'Olsen, Carlos',NULL,NULL,NULL,'4',NULL,'2601969506',NULL,'Sample Data',3,1,NULL,NULL,1,NULL,'Dear Carlos',1,NULL,'Dear Carlos',1,NULL,'Mr. Carlos Olsen Jr.',NULL,2,'1955-02-27',1,'2024-01-04',NULL,NULL,NULL,NULL,NULL,0,'2024-01-06 04:30:27','2024-01-06 04:30:27','Both'),
- (94,'Individual',NULL,'Tanya McReynolds',NULL,NULL,'Tanya','B','McReynolds',0,0,0,0,0,0,NULL,'McReynolds, Tanya',NULL,NULL,NULL,NULL,NULL,'2833475968',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Tanya',1,NULL,'Dear Tanya',1,NULL,'Tanya McReynolds',NULL,NULL,'1984-07-06',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-01-06 04:30:27','2024-01-06 04:30:28','Both'),
- (95,'Individual',NULL,'Barry Barkley Sr.',NULL,NULL,'Barry','','Barkley',0,0,0,0,0,0,NULL,'Barkley, Barry',NULL,NULL,NULL,NULL,NULL,'3120582330',NULL,'Sample Data',NULL,2,NULL,NULL,1,NULL,'Dear Barry',1,NULL,'Dear Barry',1,NULL,'Barry Barkley Sr.',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-01-06 04:30:27','2024-01-06 04:30:28','Both'),
- (96,'Individual',NULL,'Dr. Kenny Wilson',NULL,NULL,'Kenny','E','Wilson',1,0,0,0,0,0,NULL,'Wilson, Kenny',NULL,NULL,NULL,'1',NULL,'1945745030',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Kenny',1,NULL,'Dear Kenny',1,NULL,'Dr. Kenny Wilson',NULL,2,'1961-10-03',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-01-06 04:30:27','2024-01-06 04:30:28','Both'),
- (97,'Individual',NULL,'Dr. Maria Terrell',NULL,NULL,'Maria','E','Terrell',0,0,0,0,0,0,NULL,'Terrell, Maria',NULL,NULL,NULL,NULL,NULL,'1838534523',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Maria',1,NULL,'Dear Maria',1,NULL,'Dr. Maria Terrell',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-01-06 04:30:27','2024-01-06 04:30:28','Both'),
- (98,'Individual',NULL,'fw.wagner22@notmail.co.nz',NULL,NULL,NULL,NULL,NULL,1,0,0,0,1,0,NULL,'fw.wagner22@notmail.co.nz',NULL,NULL,NULL,NULL,NULL,'2789997126',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear fw.wagner22@notmail.co.nz',1,NULL,'Dear fw.wagner22@notmail.co.nz',1,NULL,'fw.wagner22@notmail.co.nz',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-01-06 04:30:27','2024-01-06 04:30:27','Both'),
- (99,'Individual',NULL,'Margaret Blackwell',NULL,NULL,'Margaret','','Blackwell',0,0,0,0,0,0,NULL,'Blackwell, Margaret',NULL,NULL,NULL,NULL,NULL,'894595567',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Margaret',1,NULL,'Dear Margaret',1,NULL,'Margaret Blackwell',NULL,1,'1960-06-02',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-01-06 04:30:27','2024-01-06 04:30:27','Both'),
- (100,'Organization',NULL,'Global Music Alliance','Global Music Alliance',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Global Music Alliance',NULL,NULL,NULL,NULL,NULL,'1774451517',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Global Music Alliance',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-01-06 04:30:27','2024-01-06 04:30:28','Both'),
- (101,'Individual',NULL,'Dr. Valene Zope',NULL,NULL,'Valene','','Zope',0,0,0,0,0,0,NULL,'Zope, Valene',NULL,NULL,NULL,NULL,NULL,'1755528851',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Valene',1,NULL,'Dear Valene',1,NULL,'Dr. Valene Zope',NULL,1,'1980-12-22',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-01-06 04:30:27','2024-01-06 04:30:27','Both'),
- (102,'Individual',NULL,'Beula Roberts',NULL,NULL,'Beula','','Roberts',0,0,0,0,0,0,NULL,'Roberts, Beula',NULL,NULL,NULL,'5',NULL,'640050534',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Beula',1,NULL,'Dear Beula',1,NULL,'Beula Roberts',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-01-06 04:30:27','2024-01-06 04:30:27','Both'),
- (103,'Individual',NULL,'Sharyn DÃaz','Little Rock Sustainability Network',NULL,'Sharyn','T','DÃaz',0,0,0,0,0,0,NULL,'DÃaz, Sharyn',NULL,NULL,NULL,'1',NULL,'4129279229',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Sharyn',1,NULL,'Dear Sharyn',1,NULL,'Sharyn DÃaz',NULL,1,'1966-10-08',0,NULL,NULL,NULL,NULL,NULL,145,0,'2024-01-06 04:30:27','2024-01-06 04:30:28','Both'),
- (104,'Individual',NULL,'Dr. Alexia Wilson',NULL,NULL,'Alexia','G','Wilson',1,0,0,0,0,0,NULL,'Wilson, Alexia',NULL,NULL,NULL,'1',NULL,'3321653861',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Alexia',1,NULL,'Dear Alexia',1,NULL,'Dr. Alexia Wilson',NULL,1,'1984-04-08',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-01-06 04:30:27','2024-01-06 04:30:28','Both'),
- (105,'Individual',NULL,'Troy Barkley-Yadav III',NULL,NULL,'Troy','T','Barkley-Yadav',1,0,0,0,0,0,NULL,'Barkley-Yadav, Troy',NULL,NULL,NULL,'4',NULL,'1255959985',NULL,'Sample Data',NULL,4,NULL,NULL,1,NULL,'Dear Troy',1,NULL,'Dear Troy',1,NULL,'Troy Barkley-Yadav III',NULL,NULL,'1999-02-18',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-01-06 04:30:27','2024-01-06 04:30:28','Both'),
- (106,'Individual',NULL,'Angelika Olsen',NULL,NULL,'Angelika','X','Olsen',0,0,0,0,0,0,NULL,'Olsen, Angelika',NULL,NULL,NULL,NULL,NULL,'2107775792',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Angelika',1,NULL,'Dear Angelika',1,NULL,'Angelika Olsen',NULL,NULL,'1975-07-19',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-01-06 04:30:27','2024-01-06 04:30:27','Both'),
- (107,'Individual',NULL,'Jay González',NULL,NULL,'Jay','W','González',0,1,0,0,1,0,NULL,'González, Jay',NULL,NULL,NULL,'5',NULL,'431469491',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Jay',1,NULL,'Dear Jay',1,NULL,'Jay González',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-01-06 04:30:27','2024-01-06 04:30:28','Both'),
- (108,'Individual',NULL,'Dr. Jina Yadav',NULL,NULL,'Jina','','Yadav',1,0,0,0,0,0,NULL,'Yadav, Jina',NULL,NULL,NULL,NULL,NULL,'132914631',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Jina',1,NULL,'Dear Jina',1,NULL,'Dr. Jina Yadav',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-01-06 04:30:27','2024-01-06 04:30:28','Both'),
- (109,'Individual',NULL,'Mei Jones','Jackson Arts Collective',NULL,'Mei','','Jones',0,1,0,0,0,0,NULL,'Jones, Mei',NULL,NULL,NULL,'2',NULL,'2285120120',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Mei',1,NULL,'Dear Mei',1,NULL,'Mei Jones',NULL,NULL,'1953-10-19',0,NULL,NULL,NULL,NULL,NULL,180,0,'2024-01-06 04:30:27','2024-01-06 04:30:28','Both'),
- (110,'Individual',NULL,'Dr. Tanya Samuels','Creative Environmental Solutions',NULL,'Tanya','','Samuels',0,0,0,0,0,0,NULL,'Samuels, Tanya',NULL,NULL,NULL,NULL,NULL,'147060242',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Tanya',1,NULL,'Dear Tanya',1,NULL,'Dr. Tanya Samuels',NULL,1,'1990-08-04',0,NULL,NULL,NULL,NULL,NULL,122,0,'2024-01-06 04:30:27','2024-01-06 04:30:28','Both'),
- (111,'Individual',NULL,'Dr. Sanford Ivanov',NULL,NULL,'Sanford','','Ivanov',0,0,0,0,0,0,NULL,'Ivanov, Sanford',NULL,NULL,NULL,'1',NULL,'868143877',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Sanford',1,NULL,'Dear Sanford',1,NULL,'Dr. Sanford Ivanov',NULL,2,'1961-01-02',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-01-06 04:30:27','2024-01-06 04:30:28','Both'),
- (112,'Individual',NULL,'np.daz21@spamalot.co.nz',NULL,NULL,NULL,NULL,NULL,1,0,0,0,0,0,NULL,'np.daz21@spamalot.co.nz',NULL,NULL,NULL,NULL,NULL,'556623817',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear np.daz21@spamalot.co.nz',1,NULL,'Dear np.daz21@spamalot.co.nz',1,NULL,'np.daz21@spamalot.co.nz',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-01-06 04:30:27','2024-01-06 04:30:28','Both'),
- (113,'Individual',NULL,'Mr. Miguel Ivanov',NULL,NULL,'Miguel','','Ivanov',0,0,0,0,1,0,NULL,'Ivanov, Miguel',NULL,NULL,NULL,NULL,NULL,'3632283471',NULL,'Sample Data',3,NULL,NULL,NULL,1,NULL,'Dear Miguel',1,NULL,'Dear Miguel',1,NULL,'Mr. Miguel Ivanov',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-01-06 04:30:27','2024-01-06 04:30:27','Both'),
- (114,'Individual',NULL,'Angelika Parker',NULL,NULL,'Angelika','','Parker',0,0,0,0,0,0,NULL,'Parker, Angelika',NULL,NULL,NULL,'2',NULL,'216332122',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Angelika',1,NULL,'Dear Angelika',1,NULL,'Angelika Parker',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-01-06 04:30:27','2024-01-06 04:30:28','Both'),
- (115,'Household',NULL,'Robertson family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Robertson family',NULL,NULL,NULL,'3',NULL,'3444393980',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Robertson family',5,NULL,'Dear Robertson family',2,NULL,'Robertson family',NULL,NULL,NULL,0,NULL,'Robertson family',NULL,NULL,NULL,NULL,0,'2024-01-06 04:30:27','2024-01-06 04:30:28','Both'),
- (116,'Household',NULL,'Zope-Jensen family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Zope-Jensen family',NULL,NULL,NULL,NULL,NULL,'2691015333',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Zope-Jensen family',5,NULL,'Dear Zope-Jensen family',2,NULL,'Zope-Jensen family',NULL,NULL,NULL,0,NULL,'Zope-Jensen family',NULL,NULL,NULL,NULL,0,'2024-01-06 04:30:27','2024-01-06 04:30:28','Both'),
- (117,'Individual',NULL,'Dr. Princess Cooper',NULL,NULL,'Princess','','Cooper',1,1,0,0,0,0,NULL,'Cooper, Princess',NULL,NULL,NULL,NULL,NULL,'3515918144',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Princess',1,NULL,'Dear Princess',1,NULL,'Dr. Princess Cooper',NULL,1,'1960-04-12',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-01-06 04:30:27','2024-01-06 04:30:27','Both'),
- (118,'Organization',NULL,'Tennessee Agriculture Solutions','Tennessee Agriculture Solutions',NULL,NULL,NULL,NULL,0,1,0,0,0,0,NULL,'Tennessee Agriculture Solutions',NULL,NULL,NULL,NULL,NULL,'2741641450',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Tennessee Agriculture Solutions',NULL,NULL,NULL,0,NULL,NULL,52,NULL,NULL,NULL,0,'2024-01-06 04:30:27','2024-01-06 04:30:28','Both'),
- (119,'Individual',NULL,'daz.jay60@airmail.info',NULL,NULL,NULL,NULL,NULL,0,0,0,0,1,0,NULL,'daz.jay60@airmail.info',NULL,NULL,NULL,'4',NULL,'3037318446',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear daz.jay60@airmail.info',1,NULL,'Dear daz.jay60@airmail.info',1,NULL,'daz.jay60@airmail.info',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-01-06 04:30:27','2024-01-06 04:30:28','Both'),
- (120,'Individual',NULL,'Dr. Lou Blackwell III',NULL,NULL,'Lou','','Blackwell',0,0,0,0,0,0,NULL,'Blackwell, Lou',NULL,NULL,NULL,'2',NULL,'2525168848',NULL,'Sample Data',4,4,NULL,NULL,1,NULL,'Dear Lou',1,NULL,'Dear Lou',1,NULL,'Dr. Lou Blackwell III',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-01-06 04:30:27','2024-01-06 04:30:27','Both'),
- (121,'Individual',NULL,'Brittney Adams',NULL,NULL,'Brittney','Q','Adams',0,0,0,0,0,0,NULL,'Adams, Brittney',NULL,NULL,NULL,'1',NULL,'1087046630',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Brittney',1,NULL,'Dear Brittney',1,NULL,'Brittney Adams',NULL,1,'1991-03-15',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-01-06 04:30:27','2024-01-06 04:30:27','Both'),
- (122,'Organization',NULL,'Creative Environmental Solutions','Creative Environmental Solutions',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Creative Environmental Solutions',NULL,NULL,NULL,'2',NULL,'2917266163',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Creative Environmental Solutions',NULL,NULL,NULL,0,NULL,NULL,110,NULL,NULL,NULL,0,'2024-01-06 04:30:27','2024-01-06 04:30:28','Both'),
- (123,'Individual',NULL,'Brittney Robertson',NULL,NULL,'Brittney','','Robertson',0,1,0,0,0,0,NULL,'Robertson, Brittney',NULL,NULL,NULL,'2',NULL,'1961955547',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Brittney',1,NULL,'Dear Brittney',1,NULL,'Brittney Robertson',NULL,1,'1996-01-17',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-01-06 04:30:27','2024-01-06 04:30:28','Both'),
- (124,'Individual',NULL,'Dr. Irvin Jones II',NULL,NULL,'Irvin','','Jones',1,1,0,0,0,0,NULL,'Jones, Irvin',NULL,NULL,NULL,NULL,NULL,'1283789305',NULL,'Sample Data',4,3,NULL,NULL,1,NULL,'Dear Irvin',1,NULL,'Dear Irvin',1,NULL,'Dr. Irvin Jones II',NULL,2,'1950-04-26',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-01-06 04:30:27','2024-01-06 04:30:28','Both'),
- (125,'Individual',NULL,'Kathleen Jacobs',NULL,NULL,'Kathleen','O','Jacobs',0,0,0,0,0,0,NULL,'Jacobs, Kathleen',NULL,NULL,NULL,NULL,NULL,'2367611893',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Kathleen',1,NULL,'Dear Kathleen',1,NULL,'Kathleen Jacobs',NULL,1,'1985-10-05',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-01-06 04:30:27','2024-01-06 04:30:28','Both'),
- (126,'Individual',NULL,'Sanford Bachman Jr.',NULL,NULL,'Sanford','E','Bachman',0,0,0,0,0,0,NULL,'Bachman, Sanford',NULL,NULL,NULL,NULL,NULL,'2454837812',NULL,'Sample Data',NULL,1,NULL,NULL,1,NULL,'Dear Sanford',1,NULL,'Dear Sanford',1,NULL,'Sanford Bachman Jr.',NULL,2,'1974-01-29',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-01-06 04:30:27','2024-01-06 04:30:28','Both'),
- (127,'Household',NULL,'Wilson-Jensen family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Wilson-Jensen family',NULL,NULL,NULL,NULL,NULL,'16190207',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Wilson-Jensen family',5,NULL,'Dear Wilson-Jensen family',2,NULL,'Wilson-Jensen family',NULL,NULL,NULL,0,NULL,'Wilson-Jensen family',NULL,NULL,NULL,NULL,0,'2024-01-06 04:30:27','2024-01-06 04:30:28','Both'),
- (128,'Individual',NULL,'Mrs. Arlyne Cooper',NULL,NULL,'Arlyne','B','Cooper',1,0,0,0,1,0,NULL,'Cooper, Arlyne',NULL,NULL,NULL,NULL,NULL,'1117506834',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear Arlyne',1,NULL,'Dear Arlyne',1,NULL,'Mrs. Arlyne Cooper',NULL,NULL,'1962-07-01',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-01-06 04:30:27','2024-01-06 04:30:27','Both'),
- (129,'Individual',NULL,'Rodrigo ÅÄ…chowski III',NULL,NULL,'Rodrigo','','ÅÄ…chowski',0,0,0,0,1,0,NULL,'ÅÄ…chowski, Rodrigo',NULL,NULL,NULL,'4',NULL,'646092703',NULL,'Sample Data',NULL,4,NULL,NULL,1,NULL,'Dear Rodrigo',1,NULL,'Dear Rodrigo',1,NULL,'Rodrigo ÅÄ…chowski III',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-01-06 04:30:27','2024-01-06 04:30:27','Both'),
- (130,'Individual',NULL,'Dr. Nicole Patel','Mississippi Poetry Alliance',NULL,'Nicole','','Patel',0,0,0,0,0,0,NULL,'Patel, Nicole',NULL,NULL,NULL,'2',NULL,'687315016',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Nicole',1,NULL,'Dear Nicole',1,NULL,'Dr. Nicole Patel',NULL,1,'1981-09-24',0,NULL,NULL,NULL,NULL,NULL,135,0,'2024-01-06 04:30:27','2024-01-06 04:30:28','Both'),
- (131,'Household',NULL,'Deforest-Roberts family',NULL,NULL,NULL,NULL,NULL,0,1,0,0,1,0,NULL,'Deforest-Roberts family',NULL,NULL,NULL,NULL,NULL,'1403076518',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Deforest-Roberts family',5,NULL,'Dear Deforest-Roberts family',2,NULL,'Deforest-Roberts family',NULL,NULL,NULL,0,NULL,'Deforest-Roberts family',NULL,NULL,NULL,NULL,0,'2024-01-06 04:30:27','2024-01-06 04:30:28','Both'),
- (132,'Individual',NULL,'Craig Reynolds Sr.',NULL,NULL,'Craig','','Reynolds',0,0,0,0,0,0,NULL,'Reynolds, Craig',NULL,NULL,NULL,NULL,NULL,'3510577139',NULL,'Sample Data',NULL,2,NULL,NULL,1,NULL,'Dear Craig',1,NULL,'Dear Craig',1,NULL,'Craig Reynolds Sr.',NULL,NULL,'1980-07-22',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-01-06 04:30:27','2024-01-06 04:30:28','Both'),
- (133,'Individual',NULL,'Norris Wilson',NULL,NULL,'Norris','','Wilson',0,1,0,0,0,0,NULL,'Wilson, Norris',NULL,NULL,NULL,'4',NULL,'1089092056',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Norris',1,NULL,'Dear Norris',1,NULL,'Norris Wilson',NULL,2,'1997-08-05',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-01-06 04:30:27','2024-01-06 04:30:27','Both'),
- (134,'Individual',NULL,'Mrs. Ashlie González',NULL,NULL,'Ashlie','','González',0,1,0,0,0,0,NULL,'González, Ashlie',NULL,NULL,NULL,'5',NULL,'4074516912',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear Ashlie',1,NULL,'Dear Ashlie',1,NULL,'Mrs. Ashlie González',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-01-06 04:30:27','2024-01-06 04:30:28','Both'),
- (135,'Organization',NULL,'Mississippi Poetry Alliance','Mississippi Poetry Alliance',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Mississippi Poetry Alliance',NULL,NULL,NULL,'1',NULL,'3581684219',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Mississippi Poetry Alliance',NULL,NULL,NULL,0,NULL,NULL,130,NULL,NULL,NULL,0,'2024-01-06 04:30:27','2024-01-06 04:30:28','Both'),
- (136,'Individual',NULL,'Mrs. Kandace Jensen',NULL,NULL,'Kandace','C','Jensen',0,0,0,0,1,0,NULL,'Jensen, Kandace',NULL,NULL,NULL,NULL,NULL,'2339972314',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear Kandace',1,NULL,'Dear Kandace',1,NULL,'Mrs. Kandace Jensen',NULL,1,'1984-11-20',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-01-06 04:30:27','2024-01-06 04:30:28','Both'),
- (137,'Individual',NULL,'Brent Samuels II',NULL,NULL,'Brent','K','Samuels',1,0,0,0,0,0,NULL,'Samuels, Brent',NULL,NULL,NULL,NULL,NULL,'3250906077',NULL,'Sample Data',NULL,3,NULL,NULL,1,NULL,'Dear Brent',1,NULL,'Dear Brent',1,NULL,'Brent Samuels II',NULL,NULL,'1986-05-13',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-01-06 04:30:27','2024-01-06 04:30:27','Both'),
- (138,'Organization',NULL,'Pennsylvania Family Partnership','Pennsylvania Family Partnership',NULL,NULL,NULL,NULL,0,0,0,0,1,0,NULL,'Pennsylvania Family Partnership',NULL,NULL,NULL,'2',NULL,'399929164',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Pennsylvania Family Partnership',NULL,NULL,NULL,0,NULL,NULL,82,NULL,NULL,NULL,0,'2024-01-06 04:30:27','2024-01-06 04:30:28','Both'),
- (139,'Individual',NULL,'Mr. Ray Bachman Jr.','Anchorage Sports Center',NULL,'Ray','U','Bachman',0,0,0,0,0,0,NULL,'Bachman, Ray',NULL,NULL,NULL,NULL,NULL,'560571069',NULL,'Sample Data',3,1,NULL,NULL,1,NULL,'Dear Ray',1,NULL,'Dear Ray',1,NULL,'Mr. Ray Bachman Jr.',NULL,2,'1986-04-13',0,NULL,NULL,NULL,NULL,NULL,73,0,'2024-01-06 04:30:27','2024-01-06 04:30:28','Both'),
- (140,'Individual',NULL,'Dr. Scarlet Roberts',NULL,NULL,'Scarlet','B','Roberts',1,0,0,0,0,0,NULL,'Roberts, Scarlet',NULL,NULL,NULL,NULL,NULL,'986362162',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Scarlet',1,NULL,'Dear Scarlet',1,NULL,'Dr. Scarlet Roberts',NULL,NULL,'1984-01-08',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-01-06 04:30:27','2024-01-06 04:30:28','Both'),
- (141,'Individual',NULL,'Dr. Craig Wagner','Graton Software Solutions',NULL,'Craig','P','Wagner',0,0,0,0,0,0,NULL,'Wagner, Craig',NULL,NULL,NULL,NULL,NULL,'2031234016',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Craig',1,NULL,'Dear Craig',1,NULL,'Dr. Craig Wagner',NULL,2,'1950-10-29',0,NULL,NULL,NULL,NULL,NULL,154,0,'2024-01-06 04:30:27','2024-01-06 04:30:28','Both'),
- (142,'Organization',NULL,'Main Family Partners','Main Family Partners',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Main Family Partners',NULL,NULL,NULL,NULL,NULL,'2920270390',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Main Family Partners',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-01-06 04:30:27','2024-01-06 04:30:28','Both'),
- (143,'Individual',NULL,'Nicole Reynolds',NULL,NULL,'Nicole','','Reynolds',1,0,0,0,0,0,NULL,'Reynolds, Nicole',NULL,NULL,NULL,NULL,NULL,'761347684',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Nicole',1,NULL,'Dear Nicole',1,NULL,'Nicole Reynolds',NULL,NULL,'1954-11-22',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-01-06 04:30:27','2024-01-06 04:30:28','Both'),
- (144,'Individual',NULL,'Dr. Andrew Blackwell',NULL,NULL,'Andrew','U','Blackwell',0,1,0,0,0,0,NULL,'Blackwell, Andrew',NULL,NULL,NULL,NULL,NULL,'2328901373',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Andrew',1,NULL,'Dear Andrew',1,NULL,'Dr. Andrew Blackwell',NULL,2,'1956-12-29',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-01-06 04:30:27','2024-01-06 04:30:28','Both'),
- (145,'Organization',NULL,'Little Rock Sustainability Network','Little Rock Sustainability Network',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Little Rock Sustainability Network',NULL,NULL,NULL,NULL,NULL,'3227790967',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Little Rock Sustainability Network',NULL,NULL,NULL,0,NULL,NULL,103,NULL,NULL,NULL,0,'2024-01-06 04:30:27','2024-01-06 04:30:28','Both'),
- (146,'Individual',NULL,'Jay ÅÄ…chowski',NULL,NULL,'Jay','','ÅÄ…chowski',0,0,0,0,0,0,NULL,'ÅÄ…chowski, Jay',NULL,NULL,NULL,'4',NULL,'2087696859',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Jay',1,NULL,'Dear Jay',1,NULL,'Jay ÅÄ…chowski',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-01-06 04:30:27','2024-01-06 04:30:27','Both'),
- (147,'Household',NULL,'Reynolds family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Reynolds family',NULL,NULL,NULL,'3',NULL,'4119726021',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Reynolds family',5,NULL,'Dear Reynolds family',2,NULL,'Reynolds family',NULL,NULL,NULL,0,NULL,'Reynolds family',NULL,NULL,NULL,NULL,0,'2024-01-06 04:30:27','2024-01-06 04:30:28','Both'),
- (148,'Individual',NULL,'lareeb@spamalot.biz',NULL,NULL,NULL,NULL,NULL,1,0,0,0,0,0,NULL,'lareeb@spamalot.biz',NULL,NULL,NULL,NULL,NULL,'2680875030',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear lareeb@spamalot.biz',1,NULL,'Dear lareeb@spamalot.biz',1,NULL,'lareeb@spamalot.biz',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-01-06 04:30:27','2024-01-06 04:30:28','Both'),
- (149,'Individual',NULL,'Ivey Robertson',NULL,NULL,'Ivey','','Robertson',0,0,0,0,0,0,NULL,'Robertson, Ivey',NULL,NULL,NULL,NULL,NULL,'2177307295',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Ivey',1,NULL,'Dear Ivey',1,NULL,'Ivey Robertson',NULL,NULL,'1964-07-05',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-01-06 04:30:27','2024-01-06 04:30:28','Both'),
- (150,'Individual',NULL,'Mr. Lou DÃaz Jr.',NULL,NULL,'Lou','','DÃaz',0,0,0,0,0,0,NULL,'DÃaz, Lou',NULL,NULL,NULL,NULL,NULL,'1546158286',NULL,'Sample Data',3,1,NULL,NULL,1,NULL,'Dear Lou',1,NULL,'Dear Lou',1,NULL,'Mr. Lou DÃaz Jr.',NULL,2,'1989-07-13',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-01-06 04:30:27','2024-01-06 04:30:28','Both'),
- (151,'Individual',NULL,'Ms. Princess Wilson','New Concord Wellness Trust',NULL,'Princess','','Wilson',0,0,0,0,1,0,NULL,'Wilson, Princess',NULL,NULL,NULL,'4',NULL,'1309472467',NULL,'Sample Data',2,NULL,NULL,NULL,1,NULL,'Dear Princess',1,NULL,'Dear Princess',1,NULL,'Ms. Princess Wilson',NULL,NULL,'1988-04-10',0,NULL,NULL,NULL,NULL,NULL,170,0,'2024-01-06 04:30:27','2024-01-06 04:30:28','Both'),
- (152,'Household',NULL,'Parker family',NULL,NULL,NULL,NULL,NULL,1,0,0,0,0,0,NULL,'Parker family',NULL,NULL,NULL,'4',NULL,'425242179',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Parker family',5,NULL,'Dear Parker family',2,NULL,'Parker family',NULL,NULL,NULL,0,NULL,'Parker family',NULL,NULL,NULL,NULL,0,'2024-01-06 04:30:27','2024-01-06 04:30:28','Both'),
- (153,'Individual',NULL,'russellwilson25@lol.biz',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'russellwilson25@lol.biz',NULL,NULL,NULL,'4',NULL,'1779359194',NULL,'Sample Data',3,NULL,NULL,NULL,1,NULL,'Dear russellwilson25@lol.biz',1,NULL,'Dear russellwilson25@lol.biz',1,NULL,'russellwilson25@lol.biz',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-01-06 04:30:27','2024-01-06 04:30:28','Both'),
- (154,'Organization',NULL,'Graton Software Solutions','Graton Software Solutions',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Graton Software Solutions',NULL,NULL,NULL,'1',NULL,'1330180338',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Graton Software Solutions',NULL,NULL,NULL,0,NULL,NULL,141,NULL,NULL,NULL,0,'2024-01-06 04:30:27','2024-01-06 04:30:28','Both'),
- (155,'Individual',NULL,'Mrs. Nicole Ivanov',NULL,NULL,'Nicole','','Ivanov',1,0,0,0,1,0,NULL,'Ivanov, Nicole',NULL,NULL,NULL,NULL,NULL,'1759117309',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear Nicole',1,NULL,'Dear Nicole',1,NULL,'Mrs. Nicole Ivanov',NULL,1,'1994-07-18',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-01-06 04:30:27','2024-01-06 04:30:27','Both'),
- (156,'Household',NULL,'Bachman family',NULL,NULL,NULL,NULL,NULL,1,0,0,0,0,0,NULL,'Bachman family',NULL,NULL,NULL,'5',NULL,'1714131215',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Bachman family',5,NULL,'Dear Bachman family',2,NULL,'Bachman family',NULL,NULL,NULL,0,NULL,'Bachman family',NULL,NULL,NULL,NULL,0,'2024-01-06 04:30:27','2024-01-06 04:30:28','Both'),
- (157,'Individual',NULL,'Herminia Blackwell-McReynolds',NULL,NULL,'Herminia','C','Blackwell-McReynolds',0,0,0,0,0,0,NULL,'Blackwell-McReynolds, Herminia',NULL,NULL,NULL,'2',NULL,'3145038393',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Herminia',1,NULL,'Dear Herminia',1,NULL,'Herminia Blackwell-McReynolds',NULL,1,'2007-09-07',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-01-06 04:30:27','2024-01-06 04:30:28','Both'),
- (158,'Individual',NULL,'Elbert Wilson-Jensen',NULL,NULL,'Elbert','M','Wilson-Jensen',1,0,0,0,0,0,NULL,'Wilson-Jensen, Elbert',NULL,NULL,NULL,'4',NULL,'1113922806',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Elbert',1,NULL,'Dear Elbert',1,NULL,'Elbert Wilson-Jensen',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-01-06 04:30:27','2024-01-06 04:30:28','Both'),
- (159,'Individual',NULL,'mw.jones@sample.org',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'mw.jones@sample.org',NULL,NULL,NULL,NULL,NULL,'3650198856',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear mw.jones@sample.org',1,NULL,'Dear mw.jones@sample.org',1,NULL,'mw.jones@sample.org',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-01-06 04:30:27','2024-01-06 04:30:27','Both'),
- (160,'Individual',NULL,'Mr. Brzęczysław Blackwell','Alabama Education Services',NULL,'Brzęczysław','','Blackwell',1,0,0,0,0,0,NULL,'Blackwell, Brzęczysław',NULL,NULL,NULL,NULL,NULL,'3382098014',NULL,'Sample Data',3,NULL,NULL,NULL,1,NULL,'Dear Brzęczysław',1,NULL,'Dear Brzęczysław',1,NULL,'Mr. Brzęczysław Blackwell',NULL,2,'1987-06-13',0,NULL,NULL,NULL,NULL,NULL,173,0,'2024-01-06 04:30:27','2024-01-06 04:30:28','Both'),
- (161,'Household',NULL,'Blackwell family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Blackwell family',NULL,NULL,NULL,NULL,NULL,'3218641510',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Blackwell family',5,NULL,'Dear Blackwell family',2,NULL,'Blackwell family',NULL,NULL,NULL,0,NULL,'Blackwell family',NULL,NULL,NULL,NULL,0,'2024-01-06 04:30:27','2024-01-06 04:30:28','Both'),
- (162,'Individual',NULL,'Dr. Jackson Dimitrov',NULL,NULL,'Jackson','O','Dimitrov',0,0,0,0,0,0,NULL,'Dimitrov, Jackson',NULL,NULL,NULL,'1',NULL,'2271911049',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Jackson',1,NULL,'Dear Jackson',1,NULL,'Dr. Jackson Dimitrov',NULL,2,'1991-10-11',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-01-06 04:30:27','2024-01-06 04:30:28','Both'),
- (163,'Individual',NULL,'Ms. Betty Wagner',NULL,NULL,'Betty','S','Wagner',0,0,0,0,1,0,NULL,'Wagner, Betty',NULL,NULL,NULL,NULL,NULL,'2519883154',NULL,'Sample Data',2,NULL,NULL,NULL,1,NULL,'Dear Betty',1,NULL,'Dear Betty',1,NULL,'Ms. Betty Wagner',NULL,1,'1941-02-19',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-01-06 04:30:27','2024-01-06 04:30:27','Both'),
- (164,'Individual',NULL,'Ms. Merrie Grant',NULL,NULL,'Merrie','Z','Grant',0,0,0,0,0,0,NULL,'Grant, Merrie',NULL,NULL,NULL,'5',NULL,'1746149346',NULL,'Sample Data',2,NULL,NULL,NULL,1,NULL,'Dear Merrie',1,NULL,'Dear Merrie',1,NULL,'Ms. Merrie Grant',NULL,1,'1947-03-06',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-01-06 04:30:27','2024-01-06 04:30:27','Both'),
- (165,'Individual',NULL,'Dr. Lincoln Cooper III','Urban Software Initiative',NULL,'Lincoln','R','Cooper',1,0,0,0,1,0,NULL,'Cooper, Lincoln',NULL,NULL,NULL,NULL,NULL,'374468394',NULL,'Sample Data',4,4,NULL,NULL,1,NULL,'Dear Lincoln',1,NULL,'Dear Lincoln',1,NULL,'Dr. Lincoln Cooper III',NULL,2,'1973-11-12',0,NULL,NULL,NULL,NULL,NULL,48,0,'2024-01-06 04:30:27','2024-01-06 04:30:28','Both'),
- (166,'Individual',NULL,'Jina Zope',NULL,NULL,'Jina','','Zope',0,0,0,0,1,0,NULL,'Zope, Jina',NULL,NULL,NULL,'3',NULL,'2020833032',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Jina',1,NULL,'Dear Jina',1,NULL,'Jina Zope',NULL,1,'1961-07-29',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-01-06 04:30:27','2024-01-06 04:30:27','Both'),
- (167,'Household',NULL,'González family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'González family',NULL,NULL,NULL,NULL,NULL,'3263723758',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear González family',5,NULL,'Dear González family',2,NULL,'González family',NULL,NULL,NULL,0,NULL,'González family',NULL,NULL,NULL,NULL,0,'2024-01-06 04:30:27','2024-01-06 04:30:28','Both'),
- (168,'Individual',NULL,'Dr. Betty Zope',NULL,NULL,'Betty','E','Zope',0,0,0,0,0,0,NULL,'Zope, Betty',NULL,NULL,NULL,NULL,NULL,'2849696155',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Betty',1,NULL,'Dear Betty',1,NULL,'Dr. Betty Zope',NULL,1,'1984-04-24',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-01-06 04:30:27','2024-01-06 04:30:27','Both'),
- (169,'Individual',NULL,'Dr. Junko Bachman',NULL,NULL,'Junko','','Bachman',0,0,0,0,0,0,NULL,'Bachman, Junko',NULL,NULL,NULL,NULL,NULL,'3857467004',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Junko',1,NULL,'Dear Junko',1,NULL,'Dr. Junko Bachman',NULL,1,'1977-11-05',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-01-06 04:30:27','2024-01-06 04:30:28','Both'),
- (170,'Organization',NULL,'New Concord Wellness Trust','New Concord Wellness Trust',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'New Concord Wellness Trust',NULL,NULL,NULL,NULL,NULL,'747492774',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'New Concord Wellness Trust',NULL,NULL,NULL,0,NULL,NULL,151,NULL,NULL,NULL,0,'2024-01-06 04:30:27','2024-01-06 04:30:28','Both'),
- (171,'Household',NULL,'Dimitrov-Bachman family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Dimitrov-Bachman family',NULL,NULL,NULL,NULL,NULL,'538828243',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Dimitrov-Bachman family',5,NULL,'Dear Dimitrov-Bachman family',2,NULL,'Dimitrov-Bachman family',NULL,NULL,NULL,0,NULL,'Dimitrov-Bachman family',NULL,NULL,NULL,NULL,0,'2024-01-06 04:30:27','2024-01-06 04:30:28','Both'),
- (172,'Individual',NULL,'Carlos Terrell Sr.',NULL,NULL,'Carlos','U','Terrell',0,0,0,0,0,0,NULL,'Terrell, Carlos',NULL,NULL,NULL,'3',NULL,'2130082917',NULL,'Sample Data',NULL,2,NULL,NULL,1,NULL,'Dear Carlos',1,NULL,'Dear Carlos',1,NULL,'Carlos Terrell Sr.',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-01-06 04:30:27','2024-01-06 04:30:27','Both'),
- (173,'Organization',NULL,'Alabama Education Services','Alabama Education Services',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Alabama Education Services',NULL,NULL,NULL,'5',NULL,'117038200',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Alabama Education Services',NULL,NULL,NULL,0,NULL,NULL,160,NULL,NULL,NULL,0,'2024-01-06 04:30:27','2024-01-06 04:30:28','Both'),
- (174,'Household',NULL,'Wilson family',NULL,NULL,NULL,NULL,NULL,0,1,0,0,0,0,NULL,'Wilson family',NULL,NULL,NULL,'5',NULL,'350510798',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Wilson family',5,NULL,'Dear Wilson family',2,NULL,'Wilson family',NULL,NULL,NULL,0,NULL,'Wilson family',NULL,NULL,NULL,NULL,0,'2024-01-06 04:30:27','2024-01-06 04:30:28','Both'),
- (175,'Individual',NULL,'Dr. Omar Parker',NULL,NULL,'Omar','','Parker',0,0,0,0,0,0,NULL,'Parker, Omar',NULL,NULL,NULL,NULL,NULL,'3921166397',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Omar',1,NULL,'Dear Omar',1,NULL,'Dr. Omar Parker',NULL,2,'1992-08-09',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-01-06 04:30:27','2024-01-06 04:30:28','Both'),
- (176,'Individual',NULL,'Mrs. Kathlyn Terry',NULL,NULL,'Kathlyn','W','Terry',0,0,0,0,0,0,NULL,'Terry, Kathlyn',NULL,NULL,NULL,NULL,NULL,'1733215709',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear Kathlyn',1,NULL,'Dear Kathlyn',1,NULL,'Mrs. Kathlyn Terry',NULL,1,'1942-04-17',1,'2023-07-13',NULL,NULL,NULL,NULL,NULL,0,'2024-01-06 04:30:27','2024-01-06 04:30:27','Both'),
- (177,'Household',NULL,'Roberts family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Roberts family',NULL,NULL,NULL,'5',NULL,'2097305882',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Roberts family',5,NULL,'Dear Roberts family',2,NULL,'Roberts family',NULL,NULL,NULL,0,NULL,'Roberts family',NULL,NULL,NULL,NULL,0,'2024-01-06 04:30:27','2024-01-06 04:30:28','Both'),
- (178,'Individual',NULL,'Tanya Olsen',NULL,NULL,'Tanya','','Olsen',0,0,0,0,0,0,NULL,'Olsen, Tanya',NULL,NULL,NULL,NULL,NULL,'1790867456',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Tanya',1,NULL,'Dear Tanya',1,NULL,'Tanya Olsen',NULL,NULL,'1958-07-22',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-01-06 04:30:27','2024-01-06 04:30:28','Both'),
- (179,'Individual',NULL,'Elbert Cooper-Yadav',NULL,NULL,'Elbert','S','Cooper-Yadav',0,0,0,0,0,0,NULL,'Cooper-Yadav, Elbert',NULL,NULL,NULL,'1',NULL,'3369275798',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Elbert',1,NULL,'Dear Elbert',1,NULL,'Elbert Cooper-Yadav',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-01-06 04:30:27','2024-01-06 04:30:28','Both'),
- (180,'Organization',NULL,'Jackson Arts Collective','Jackson Arts Collective',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Jackson Arts Collective',NULL,NULL,NULL,'4',NULL,'2925724970',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Jackson Arts Collective',NULL,NULL,NULL,0,NULL,NULL,109,NULL,NULL,NULL,0,'2024-01-06 04:30:27','2024-01-06 04:30:28','Both'),
- (181,'Individual',NULL,'Lincoln Wilson',NULL,NULL,'Lincoln','G','Wilson',0,1,0,0,0,0,NULL,'Wilson, Lincoln',NULL,NULL,NULL,'4',NULL,'904190316',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Lincoln',1,NULL,'Dear Lincoln',1,NULL,'Lincoln Wilson',NULL,2,'1956-12-20',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-01-06 04:30:27','2024-01-06 04:30:27','Both'),
- (182,'Household',NULL,'Terrell family',NULL,NULL,NULL,NULL,NULL,1,0,0,0,0,0,NULL,'Terrell family',NULL,NULL,NULL,'3',NULL,'1136333121',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Terrell family',5,NULL,'Dear Terrell family',2,NULL,'Terrell family',NULL,NULL,NULL,0,NULL,'Terrell family',NULL,NULL,NULL,NULL,0,'2024-01-06 04:30:27','2024-01-06 04:30:28','Both'),
- (183,'Individual',NULL,'zopel@testmail.co.uk',NULL,NULL,NULL,NULL,NULL,1,1,0,0,0,0,NULL,'zopel@testmail.co.uk',NULL,NULL,NULL,'5',NULL,'2393052870',NULL,'Sample Data',NULL,2,NULL,NULL,1,NULL,'Dear zopel@testmail.co.uk',1,NULL,'Dear zopel@testmail.co.uk',1,NULL,'zopel@testmail.co.uk',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-01-06 04:30:27','2024-01-06 04:30:27','Both'),
- (184,'Household',NULL,'Blackwell-McReynolds family',NULL,NULL,NULL,NULL,NULL,1,0,0,0,0,0,NULL,'Blackwell-McReynolds family',NULL,NULL,NULL,'2',NULL,'3403662693',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Blackwell-McReynolds family',5,NULL,'Dear Blackwell-McReynolds family',2,NULL,'Blackwell-McReynolds family',NULL,NULL,NULL,0,NULL,'Blackwell-McReynolds family',NULL,NULL,NULL,NULL,0,'2024-01-06 04:30:27','2024-01-06 04:30:28','Both'),
- (185,'Individual',NULL,'Alida Wilson-Jensen',NULL,NULL,'Alida','','Wilson-Jensen',0,1,0,0,0,0,NULL,'Wilson-Jensen, Alida',NULL,NULL,NULL,NULL,NULL,'3164525509',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Alida',1,NULL,'Dear Alida',1,NULL,'Alida Wilson-Jensen',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-01-06 04:30:27','2024-01-06 04:30:28','Both'),
- (186,'Individual',NULL,'Carylon Bachman',NULL,NULL,'Carylon','','Bachman',0,0,0,0,0,0,NULL,'Bachman, Carylon',NULL,NULL,NULL,'5',NULL,'1159348459',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Carylon',1,NULL,'Dear Carylon',1,NULL,'Carylon Bachman',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-01-06 04:30:27','2024-01-06 04:30:28','Both'),
- (187,'Organization',NULL,'Ohio Health Initiative','Ohio Health Initiative',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Ohio Health Initiative',NULL,NULL,NULL,'3',NULL,'1613074060',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Ohio Health Initiative',NULL,NULL,NULL,0,NULL,NULL,68,NULL,NULL,NULL,0,'2024-01-06 04:30:27','2024-01-06 04:30:28','Both'),
- (188,'Individual',NULL,'Maxwell Blackwell',NULL,NULL,'Maxwell','T','Blackwell',0,0,0,0,1,0,NULL,'Blackwell, Maxwell',NULL,NULL,NULL,NULL,NULL,'1485702627',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Maxwell',1,NULL,'Dear Maxwell',1,NULL,'Maxwell Blackwell',NULL,2,'2002-01-26',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-01-06 04:30:27','2024-01-06 04:30:28','Both'),
- (189,'Individual',NULL,'Dr. Beula Wattson',NULL,NULL,'Beula','','Wattson',0,0,0,0,1,0,NULL,'Wattson, Beula',NULL,NULL,NULL,'5',NULL,'4074227652',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Beula',1,NULL,'Dear Beula',1,NULL,'Dr. Beula Wattson',NULL,1,'1940-05-09',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-01-06 04:30:27','2024-01-06 04:30:28','Both'),
- (190,'Individual',NULL,'Bernadette Grant',NULL,NULL,'Bernadette','','Grant',0,0,0,0,0,0,NULL,'Grant, Bernadette',NULL,NULL,NULL,'5',NULL,'2386715823',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Bernadette',1,NULL,'Dear Bernadette',1,NULL,'Bernadette Grant',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-01-06 04:30:27','2024-01-06 04:30:27','Both'),
- (191,'Individual',NULL,'Dr. Betty Barkley-Yadav',NULL,NULL,'Betty','','Barkley-Yadav',0,0,0,0,0,0,NULL,'Barkley-Yadav, Betty',NULL,NULL,NULL,'3',NULL,'3225700026',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Betty',1,NULL,'Dear Betty',1,NULL,'Dr. Betty Barkley-Yadav',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-01-06 04:30:27','2024-01-06 04:30:28','Both'),
- (192,'Individual',NULL,'Mr. Brzęczysław Terrell III',NULL,NULL,'Brzęczysław','M','Terrell',0,0,0,0,0,0,NULL,'Terrell, Brzęczysław',NULL,NULL,NULL,'5',NULL,'2155865046',NULL,'Sample Data',3,4,NULL,NULL,1,NULL,'Dear Brzęczysław',1,NULL,'Dear Brzęczysław',1,NULL,'Mr. Brzęczysław Terrell III',NULL,NULL,'1941-09-10',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-01-06 04:30:27','2024-01-06 04:30:27','Both'),
- (193,'Individual',NULL,'Mr. Elbert Patel',NULL,NULL,'Elbert','','Patel',1,0,0,0,0,0,NULL,'Patel, Elbert',NULL,NULL,NULL,NULL,NULL,'2164922981',NULL,'Sample Data',3,NULL,NULL,NULL,1,NULL,'Dear Elbert',1,NULL,'Dear Elbert',1,NULL,'Mr. Elbert Patel',NULL,NULL,'1959-02-18',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-01-06 04:30:27','2024-01-06 04:30:27','Both'),
- (194,'Individual',NULL,'Kathleen Roberts',NULL,NULL,'Kathleen','Q','Roberts',0,0,0,0,0,0,NULL,'Roberts, Kathleen',NULL,NULL,NULL,NULL,NULL,'2729851983',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Kathleen',1,NULL,'Dear Kathleen',1,NULL,'Kathleen Roberts',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-01-06 04:30:27','2024-01-06 04:30:28','Both'),
- (195,'Individual',NULL,'Shad Prentice',NULL,NULL,'Shad','T','Prentice',0,0,0,0,0,0,NULL,'Prentice, Shad',NULL,NULL,NULL,NULL,NULL,'237577358',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Shad',1,NULL,'Dear Shad',1,NULL,'Shad Prentice',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-01-06 04:30:27','2024-01-06 04:30:27','Both'),
- (196,'Individual',NULL,'Santina DÃaz',NULL,NULL,'Santina','','DÃaz',0,1,0,0,0,0,NULL,'DÃaz, Santina',NULL,NULL,NULL,'5',NULL,'3076461979',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Santina',1,NULL,'Dear Santina',1,NULL,'Santina DÃaz',NULL,NULL,'1953-08-22',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-01-06 04:30:27','2024-01-06 04:30:27','Both'),
- (197,'Individual',NULL,'Dr. Elbert Cooper III',NULL,NULL,'Elbert','M','Cooper',0,0,0,0,1,0,NULL,'Cooper, Elbert',NULL,NULL,NULL,'2',NULL,'2147415663',NULL,'Sample Data',4,4,NULL,NULL,1,NULL,'Dear Elbert',1,NULL,'Dear Elbert',1,NULL,'Dr. Elbert Cooper III',NULL,NULL,'1991-10-29',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-01-06 04:30:27','2024-01-06 04:30:28','Both'),
- (198,'Individual',NULL,'Landon Samson',NULL,NULL,'Landon','M','Samson',0,0,0,0,0,0,NULL,'Samson, Landon',NULL,NULL,NULL,NULL,NULL,'1562429969',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Landon',1,NULL,'Dear Landon',1,NULL,'Landon Samson',NULL,2,'1957-05-28',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-01-06 04:30:27','2024-01-06 04:30:27','Both'),
- (199,'Individual',NULL,'Dr. Billy Reynolds Sr.',NULL,NULL,'Billy','','Reynolds',0,0,0,0,1,0,NULL,'Reynolds, Billy',NULL,NULL,NULL,'1',NULL,'3840378024',NULL,'Sample Data',4,2,NULL,NULL,1,NULL,'Dear Billy',1,NULL,'Dear Billy',1,NULL,'Dr. Billy Reynolds Sr.',NULL,2,'1999-08-16',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-01-06 04:30:27','2024-01-06 04:30:28','Both'),
- (200,'Individual',NULL,'Dr. Ashley Samuels II',NULL,NULL,'Ashley','K','Samuels',0,0,0,0,1,0,NULL,'Samuels, Ashley',NULL,NULL,NULL,NULL,NULL,'448477218',NULL,'Sample Data',4,3,NULL,NULL,1,NULL,'Dear Ashley',1,NULL,'Dear Ashley',1,NULL,'Dr. Ashley Samuels II',NULL,2,'1983-10-26',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-01-06 04:30:27','2024-01-06 04:30:27','Both'),
- (201,'Individual',NULL,'deforestr@testmail.net',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'deforestr@testmail.net',NULL,NULL,NULL,NULL,NULL,'2990278986',NULL,'Sample Data',NULL,4,NULL,NULL,1,NULL,'Dear deforestr@testmail.net',1,NULL,'Dear deforestr@testmail.net',1,NULL,'deforestr@testmail.net',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-01-06 04:30:27','2024-01-06 04:30:28','Both'),
- (202,'Individual',NULL,'Jenny Lee',NULL,NULL,'Jenny',NULL,'Lee',0,0,0,0,0,0,NULL,'Lee, Jenny',NULL,NULL,NULL,NULL,'en_US','a04bf00bd1ad1fab82bd4cffa9ad39dd',NULL,NULL,NULL,NULL,NULL,1,1,NULL,'Dear Jenny',1,NULL,'Dear Jenny',1,NULL,'Jenny Lee','Volunteer coordinator',NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-01-06 04:30:29','2024-01-06 04:30:29','Both');
+ (1,'Organization',NULL,'Default Organization','Default Organization',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Default Organization',NULL,'Default Organization',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,NULL,'2024-04-26 15:50:04','Both'),
+ (2,'Individual',NULL,'Betty Samson',NULL,NULL,'Betty','U','Samson',0,0,0,0,0,0,NULL,'Samson, Betty',NULL,NULL,NULL,NULL,NULL,'3629042466',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Betty',1,NULL,'Dear Betty',1,NULL,'Betty Samson',NULL,1,'1970-07-15',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-04-26 15:50:08','2024-04-26 15:50:09','Both'),
+ (3,'Individual',NULL,'Justina Samuels-Samson',NULL,NULL,'Justina','J','Samuels-Samson',0,0,0,0,0,0,NULL,'Samuels-Samson, Justina',NULL,NULL,NULL,'1',NULL,'2669772966',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Justina',1,NULL,'Dear Justina',1,NULL,'Justina Samuels-Samson',NULL,1,'2007-01-05',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-04-26 15:50:08','2024-04-26 15:50:09','Both'),
+ (4,'Individual',NULL,'Mrs. Rebekah Robertson',NULL,NULL,'Rebekah','Q','Robertson',0,0,0,0,0,0,NULL,'Robertson, Rebekah',NULL,NULL,NULL,'1',NULL,'1199774437',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear Rebekah',1,NULL,'Dear Rebekah',1,NULL,'Mrs. Rebekah Robertson',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-04-26 15:50:08','2024-04-26 15:50:08','Both'),
+ (5,'Individual',NULL,'Maxwell Wagner',NULL,NULL,'Maxwell','','Wagner',0,0,0,0,0,0,NULL,'Wagner, Maxwell',NULL,NULL,NULL,'2',NULL,'899179200',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Maxwell',1,NULL,'Dear Maxwell',1,NULL,'Maxwell Wagner',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-04-26 15:50:08','2024-04-26 15:50:09','Both'),
+ (6,'Individual',NULL,'Irvin Prentice',NULL,NULL,'Irvin','W','Prentice',0,0,0,0,1,0,NULL,'Prentice, Irvin',NULL,NULL,NULL,NULL,NULL,'3409303473',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Irvin',1,NULL,'Dear Irvin',1,NULL,'Irvin Prentice',NULL,2,'1995-10-19',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-04-26 15:50:08','2024-04-26 15:50:08','Both'),
+ (7,'Individual',NULL,'Dr. Jay Patel',NULL,NULL,'Jay','','Patel',0,0,0,0,1,0,NULL,'Patel, Jay',NULL,NULL,NULL,'1',NULL,'320192131',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Jay',1,NULL,'Dear Jay',1,NULL,'Dr. Jay Patel',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-04-26 15:50:08','2024-04-26 15:50:09','Both'),
+ (8,'Individual',NULL,'Magan Ivanov',NULL,NULL,'Magan','W','Ivanov',1,0,0,0,0,0,NULL,'Ivanov, Magan',NULL,NULL,NULL,'5',NULL,'4273390544',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Magan',1,NULL,'Dear Magan',1,NULL,'Magan Ivanov',NULL,NULL,'1950-08-29',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-04-26 15:50:08','2024-04-26 15:50:08','Both'),
+ (9,'Organization',NULL,'Sierra Legal Systems','Sierra Legal Systems',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Sierra Legal Systems',NULL,NULL,NULL,NULL,NULL,'3171068980',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Sierra Legal Systems',NULL,NULL,NULL,0,NULL,NULL,60,NULL,NULL,NULL,0,'2024-04-26 15:50:08','2024-04-26 15:50:09','Both'),
+ (10,'Household',NULL,'Samson family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Samson family',NULL,NULL,NULL,NULL,NULL,'333421926',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Samson family',5,NULL,'Dear Samson family',2,NULL,'Samson family',NULL,NULL,NULL,0,NULL,'Samson family',NULL,NULL,NULL,NULL,0,'2024-04-26 15:50:08','2024-04-26 15:50:09','Both'),
+ (11,'Household',NULL,'Reynolds-Dimitrov family',NULL,NULL,NULL,NULL,NULL,1,0,0,0,1,0,NULL,'Reynolds-Dimitrov family',NULL,NULL,NULL,NULL,NULL,'1192435882',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Reynolds-Dimitrov family',5,NULL,'Dear Reynolds-Dimitrov family',2,NULL,'Reynolds-Dimitrov family',NULL,NULL,NULL,0,NULL,'Reynolds-Dimitrov family',NULL,NULL,NULL,NULL,0,'2024-04-26 15:50:08','2024-04-26 15:50:09','Both'),
+ (12,'Individual',NULL,'Dr. Shad Reynolds Jr.',NULL,NULL,'Shad','','Reynolds',0,0,0,0,0,0,NULL,'Reynolds, Shad',NULL,NULL,NULL,'1',NULL,'3023273825',NULL,'Sample Data',4,1,NULL,NULL,1,NULL,'Dear Shad',1,NULL,'Dear Shad',1,NULL,'Dr. Shad Reynolds Jr.',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-04-26 15:50:08','2024-04-26 15:50:09','Both'),
+ (13,'Individual',NULL,'Landon Parker II',NULL,NULL,'Landon','','Parker',0,0,0,0,0,0,NULL,'Parker, Landon',NULL,NULL,NULL,'3',NULL,'372152677',NULL,'Sample Data',NULL,3,NULL,NULL,1,NULL,'Dear Landon',1,NULL,'Dear Landon',1,NULL,'Landon Parker II',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-04-26 15:50:08','2024-04-26 15:50:08','Both'),
+ (14,'Organization',NULL,'Creative Technology Solutions','Creative Technology Solutions',NULL,NULL,NULL,NULL,1,0,0,0,0,0,NULL,'Creative Technology Solutions',NULL,NULL,NULL,'2',NULL,'1579374956',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Creative Technology Solutions',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-04-26 15:50:08','2024-04-26 15:50:09','Both'),
+ (15,'Individual',NULL,'Bryon Reynolds',NULL,NULL,'Bryon','','Reynolds',1,1,0,0,0,0,NULL,'Reynolds, Bryon',NULL,NULL,NULL,NULL,NULL,'3521962921',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Bryon',1,NULL,'Dear Bryon',1,NULL,'Bryon Reynolds',NULL,2,'1983-01-11',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-04-26 15:50:08','2024-04-26 15:50:09','Both'),
+ (16,'Individual',NULL,'samsont@fishmail.co.in',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'samsont@fishmail.co.in',NULL,NULL,NULL,'4',NULL,'571364509',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear samsont@fishmail.co.in',1,NULL,'Dear samsont@fishmail.co.in',1,NULL,'samsont@fishmail.co.in',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-04-26 15:50:08','2024-04-26 15:50:09','Both'),
+ (17,'Organization',NULL,'Community Peace Solutions','Community Peace Solutions',NULL,NULL,NULL,NULL,0,0,0,0,1,0,NULL,'Community Peace Solutions',NULL,NULL,NULL,'4',NULL,'2355790404',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Community Peace Solutions',NULL,NULL,NULL,0,NULL,NULL,78,NULL,NULL,NULL,0,'2024-04-26 15:50:08','2024-04-26 15:50:09','Both'),
+ (18,'Household',NULL,'McReynolds family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'McReynolds family',NULL,NULL,NULL,'3',NULL,'3032680972',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear McReynolds family',5,NULL,'Dear McReynolds family',2,NULL,'McReynolds family',NULL,NULL,NULL,0,NULL,'McReynolds family',NULL,NULL,NULL,NULL,0,'2024-04-26 15:50:08','2024-04-26 15:50:09','Both'),
+ (19,'Individual',NULL,'Ms. Shauna Jones',NULL,NULL,'Shauna','N','Jones',1,0,0,0,0,0,NULL,'Jones, Shauna',NULL,NULL,NULL,NULL,NULL,'2088102406',NULL,'Sample Data',2,NULL,NULL,NULL,1,NULL,'Dear Shauna',1,NULL,'Dear Shauna',1,NULL,'Ms. Shauna Jones',NULL,NULL,'1976-02-17',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-04-26 15:50:08','2024-04-26 15:50:09','Both'),
+ (20,'Individual',NULL,'Dr. Jed Parker Sr.',NULL,NULL,'Jed','C','Parker',1,1,0,0,1,0,NULL,'Parker, Jed',NULL,NULL,NULL,'3',NULL,'1794622526',NULL,'Sample Data',4,2,NULL,NULL,1,NULL,'Dear Jed',1,NULL,'Dear Jed',1,NULL,'Dr. Jed Parker Sr.',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-04-26 15:50:08','2024-04-26 15:50:08','Both'),
+ (21,'Individual',NULL,'Kenny Wattson Sr.',NULL,NULL,'Kenny','','Wattson',1,0,0,0,0,0,NULL,'Wattson, Kenny',NULL,NULL,NULL,'2',NULL,'3471709168',NULL,'Sample Data',NULL,2,NULL,NULL,1,NULL,'Dear Kenny',1,NULL,'Dear Kenny',1,NULL,'Kenny Wattson Sr.',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-04-26 15:50:08','2024-04-26 15:50:08','Both'),
+ (22,'Individual',NULL,'Mr. Jerome Grant III',NULL,NULL,'Jerome','','Grant',0,0,0,0,0,0,NULL,'Grant, Jerome',NULL,NULL,NULL,'2',NULL,'92527229',NULL,'Sample Data',3,4,NULL,NULL,1,NULL,'Dear Jerome',1,NULL,'Dear Jerome',1,NULL,'Mr. Jerome Grant III',NULL,NULL,'1985-02-18',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-04-26 15:50:08','2024-04-26 15:50:08','Both'),
+ (23,'Organization',NULL,'Creative Advocacy Alliance','Creative Advocacy Alliance',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Creative Advocacy Alliance',NULL,NULL,NULL,NULL,NULL,'2743465698',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Creative Advocacy Alliance',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-04-26 15:50:08','2024-04-26 15:50:09','Both'),
+ (24,'Individual',NULL,'Rebekah Parker',NULL,NULL,'Rebekah','','Parker',0,1,0,0,0,0,NULL,'Parker, Rebekah',NULL,NULL,NULL,'5',NULL,'4245169755',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Rebekah',1,NULL,'Dear Rebekah',1,NULL,'Rebekah Parker',NULL,NULL,'1981-09-01',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-04-26 15:50:08','2024-04-26 15:50:09','Both'),
+ (25,'Individual',NULL,'Elbert Samson Sr.',NULL,NULL,'Elbert','','Samson',0,0,0,0,0,0,NULL,'Samson, Elbert',NULL,NULL,NULL,'5',NULL,'3416596353',NULL,'Sample Data',NULL,2,NULL,NULL,1,NULL,'Dear Elbert',1,NULL,'Dear Elbert',1,NULL,'Elbert Samson Sr.',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-04-26 15:50:08','2024-04-26 15:50:09','Both'),
+ (26,'Individual',NULL,'Errol Jameson II',NULL,NULL,'Errol','A','Jameson',0,0,0,0,0,0,NULL,'Jameson, Errol',NULL,NULL,NULL,'4',NULL,'4067151192',NULL,'Sample Data',NULL,3,NULL,NULL,1,NULL,'Dear Errol',1,NULL,'Dear Errol',1,NULL,'Errol Jameson II',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-04-26 15:50:08','2024-04-26 15:50:09','Both'),
+ (27,'Individual',NULL,'Elina Jameson-Patel',NULL,NULL,'Elina','','Jameson-Patel',0,0,0,0,1,0,NULL,'Jameson-Patel, Elina',NULL,NULL,NULL,'5',NULL,'3135054930',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Elina',1,NULL,'Dear Elina',1,NULL,'Elina Jameson-Patel',NULL,1,'1985-03-24',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-04-26 15:50:08','2024-04-26 15:50:09','Both'),
+ (28,'Individual',NULL,'Sonny Olsen Sr.',NULL,NULL,'Sonny','','Olsen',0,0,0,0,0,0,NULL,'Olsen, Sonny',NULL,NULL,NULL,'3',NULL,'783208419',NULL,'Sample Data',NULL,2,NULL,NULL,1,NULL,'Dear Sonny',1,NULL,'Dear Sonny',1,NULL,'Sonny Olsen Sr.',NULL,2,'1975-04-13',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-04-26 15:50:08','2024-04-26 15:50:09','Both'),
+ (29,'Household',NULL,'Samson family',NULL,NULL,NULL,NULL,NULL,0,1,0,0,0,0,NULL,'Samson family',NULL,NULL,NULL,NULL,NULL,'333421926',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Samson family',5,NULL,'Dear Samson family',2,NULL,'Samson family',NULL,NULL,NULL,0,NULL,'Samson family',NULL,NULL,NULL,NULL,0,'2024-04-26 15:50:08','2024-04-26 15:50:09','Both'),
+ (30,'Individual',NULL,'Laree Barkley',NULL,NULL,'Laree','V','Barkley',0,0,0,0,0,0,NULL,'Barkley, Laree',NULL,NULL,NULL,NULL,NULL,'347219970',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Laree',1,NULL,'Dear Laree',1,NULL,'Laree Barkley',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-04-26 15:50:08','2024-04-26 15:50:09','Both'),
+ (31,'Individual',NULL,'Allen Barkley-Grant Sr.',NULL,NULL,'Allen','','Barkley-Grant',0,0,0,0,0,0,NULL,'Barkley-Grant, Allen',NULL,NULL,NULL,'1',NULL,'2438707263',NULL,'Sample Data',NULL,2,NULL,NULL,1,NULL,'Dear Allen',1,NULL,'Dear Allen',1,NULL,'Allen Barkley-Grant Sr.',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-04-26 15:50:08','2024-04-26 15:50:09','Both'),
+ (32,'Individual',NULL,'wattson.truman@fakemail.info','Pocono Summit Legal Trust',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'wattson.truman@fakemail.info',NULL,NULL,NULL,NULL,NULL,'832973249',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear wattson.truman@fakemail.info',1,NULL,'Dear wattson.truman@fakemail.info',1,NULL,'wattson.truman@fakemail.info',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,169,0,'2024-04-26 15:50:08','2024-04-26 15:50:09','Both'),
+ (33,'Individual',NULL,'Mei Parker',NULL,NULL,'Mei','Z','Parker',0,1,0,0,1,0,NULL,'Parker, Mei',NULL,NULL,NULL,NULL,NULL,'285847046',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Mei',1,NULL,'Dear Mei',1,NULL,'Mei Parker',NULL,1,'1979-02-24',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-04-26 15:50:08','2024-04-26 15:50:09','Both'),
+ (34,'Individual',NULL,'Bob Patel','Second Legal Partnership',NULL,'Bob','','Patel',1,0,0,0,0,0,NULL,'Patel, Bob',NULL,NULL,NULL,NULL,NULL,'165677913',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Bob',1,NULL,'Dear Bob',1,NULL,'Bob Patel',NULL,NULL,'1968-04-13',0,NULL,NULL,NULL,NULL,NULL,130,0,'2024-04-26 15:50:08','2024-04-26 15:50:09','Both'),
+ (35,'Individual',NULL,'Beula Yadav',NULL,NULL,'Beula','','Yadav',0,0,0,0,0,0,NULL,'Yadav, Beula',NULL,NULL,NULL,NULL,NULL,'852214760',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Beula',1,NULL,'Dear Beula',1,NULL,'Beula Yadav',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-04-26 15:50:08','2024-04-26 15:50:09','Both'),
+ (36,'Individual',NULL,'Rebekah Müller',NULL,NULL,'Rebekah','X','Müller',0,0,0,0,0,0,NULL,'Müller, Rebekah',NULL,NULL,NULL,NULL,NULL,'3543648262',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Rebekah',1,NULL,'Dear Rebekah',1,NULL,'Rebekah Müller',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-04-26 15:50:08','2024-04-26 15:50:08','Both'),
+ (37,'Individual',NULL,'chowski.craig26@mymail.co.uk',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'chowski.craig26@mymail.co.uk',NULL,NULL,NULL,'1',NULL,'1157647853',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear chowski.craig26@mymail.co.uk',1,NULL,'Dear chowski.craig26@mymail.co.uk',1,NULL,'chowski.craig26@mymail.co.uk',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-04-26 15:50:08','2024-04-26 15:50:08','Both'),
+ (38,'Individual',NULL,'wagnerk94@fishmail.com',NULL,NULL,NULL,NULL,NULL,1,0,0,0,0,0,NULL,'wagnerk94@fishmail.com',NULL,NULL,NULL,'1',NULL,'1454011803',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear wagnerk94@fishmail.com',1,NULL,'Dear wagnerk94@fishmail.com',1,NULL,'wagnerk94@fishmail.com',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-04-26 15:50:08','2024-04-26 15:50:09','Both'),
+ (39,'Individual',NULL,'Mr. Ray Samson',NULL,NULL,'Ray','C','Samson',0,0,0,0,0,0,NULL,'Samson, Ray',NULL,NULL,NULL,'4',NULL,'3926508474',NULL,'Sample Data',3,NULL,NULL,NULL,1,NULL,'Dear Ray',1,NULL,'Dear Ray',1,NULL,'Mr. Ray Samson',NULL,2,'1980-02-05',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-04-26 15:50:08','2024-04-26 15:50:09','Both'),
+ (40,'Organization',NULL,'Global Development Academy','Global Development Academy',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Global Development Academy',NULL,NULL,NULL,NULL,NULL,'579548672',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Global Development Academy',NULL,NULL,NULL,0,NULL,NULL,146,NULL,NULL,NULL,0,'2024-04-26 15:50:08','2024-04-26 15:50:09','Both'),
+ (41,'Household',NULL,'Jameson-Patel family',NULL,NULL,NULL,NULL,NULL,1,0,0,0,1,0,NULL,'Jameson-Patel family',NULL,NULL,NULL,NULL,NULL,'165393186',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Jameson-Patel family',5,NULL,'Dear Jameson-Patel family',2,NULL,'Jameson-Patel family',NULL,NULL,NULL,0,NULL,'Jameson-Patel family',NULL,NULL,NULL,NULL,0,'2024-04-26 15:50:08','2024-04-26 15:50:09','Both'),
+ (42,'Individual',NULL,'Ms. Jina Wattson',NULL,NULL,'Jina','X','Wattson',0,0,0,0,1,0,NULL,'Wattson, Jina',NULL,NULL,NULL,'1',NULL,'2709822648',NULL,'Sample Data',2,NULL,NULL,NULL,1,NULL,'Dear Jina',1,NULL,'Dear Jina',1,NULL,'Ms. Jina Wattson',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-04-26 15:50:08','2024-04-26 15:50:08','Both'),
+ (43,'Individual',NULL,'Jina Prentice',NULL,NULL,'Jina','R','Prentice',0,0,0,0,0,0,NULL,'Prentice, Jina',NULL,NULL,NULL,NULL,NULL,'3574120172',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Jina',1,NULL,'Dear Jina',1,NULL,'Jina Prentice',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-04-26 15:50:08','2024-04-26 15:50:09','Both'),
+ (44,'Individual',NULL,'Irvin Jacobs',NULL,NULL,'Irvin','','Jacobs',0,0,0,0,0,0,NULL,'Jacobs, Irvin',NULL,NULL,NULL,NULL,NULL,'1475120479',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Irvin',1,NULL,'Dear Irvin',1,NULL,'Irvin Jacobs',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-04-26 15:50:08','2024-04-26 15:50:09','Both'),
+ (45,'Individual',NULL,'Troy McReynolds',NULL,NULL,'Troy','','McReynolds',0,1,0,0,0,0,NULL,'McReynolds, Troy',NULL,NULL,NULL,'2',NULL,'2359789954',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Troy',1,NULL,'Dear Troy',1,NULL,'Troy McReynolds',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-04-26 15:50:08','2024-04-26 15:50:09','Both'),
+ (46,'Household',NULL,'McReynolds family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'McReynolds family',NULL,NULL,NULL,NULL,NULL,'3032680972',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear McReynolds family',5,NULL,'Dear McReynolds family',2,NULL,'McReynolds family',NULL,NULL,NULL,0,NULL,'McReynolds family',NULL,NULL,NULL,NULL,0,'2024-04-26 15:50:08','2024-04-26 15:50:09','Both'),
+ (47,'Individual',NULL,'Valene Reynolds-Dimitrov',NULL,NULL,'Valene','V','Reynolds-Dimitrov',0,0,0,0,0,0,NULL,'Reynolds-Dimitrov, Valene',NULL,NULL,NULL,NULL,NULL,'1223287743',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Valene',1,NULL,'Dear Valene',1,NULL,'Valene Reynolds-Dimitrov',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-04-26 15:50:08','2024-04-26 15:50:09','Both'),
+ (48,'Individual',NULL,'Margaret Wagner',NULL,NULL,'Margaret','','Wagner',0,1,0,0,0,0,NULL,'Wagner, Margaret',NULL,NULL,NULL,'4',NULL,'2539132666',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Margaret',1,NULL,'Dear Margaret',1,NULL,'Margaret Wagner',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-04-26 15:50:08','2024-04-26 15:50:09','Both'),
+ (49,'Organization',NULL,'Toledo Technology Network','Toledo Technology Network',NULL,NULL,NULL,NULL,1,0,0,0,0,0,NULL,'Toledo Technology Network',NULL,NULL,NULL,'5',NULL,'1632686929',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Toledo Technology Network',NULL,NULL,NULL,0,NULL,NULL,158,NULL,NULL,NULL,0,'2024-04-26 15:50:08','2024-04-26 15:50:09','Both'),
+ (50,'Individual',NULL,'Mrs. Justina González-Grant',NULL,NULL,'Justina','','González-Grant',0,1,0,0,0,0,NULL,'González-Grant, Justina',NULL,NULL,NULL,NULL,NULL,'1458338150',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear Justina',1,NULL,'Dear Justina',1,NULL,'Mrs. Justina González-Grant',NULL,NULL,'1987-09-12',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-04-26 15:50:08','2024-04-26 15:50:09','Both'),
+ (51,'Individual',NULL,'Dr. Junko Patel',NULL,NULL,'Junko','','Patel',0,1,0,0,0,0,NULL,'Patel, Junko',NULL,NULL,NULL,'5',NULL,'3770216305',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Junko',1,NULL,'Dear Junko',1,NULL,'Dr. Junko Patel',NULL,1,'2000-03-12',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-04-26 15:50:08','2024-04-26 15:50:09','Both'),
+ (52,'Individual',NULL,'Dr. Winford Prentice Jr.','Mississippi Music Partnership',NULL,'Winford','','Prentice',1,0,0,0,0,0,NULL,'Prentice, Winford',NULL,NULL,NULL,NULL,NULL,'2762411160',NULL,'Sample Data',4,1,NULL,NULL,1,NULL,'Dear Winford',1,NULL,'Dear Winford',1,NULL,'Dr. Winford Prentice Jr.',NULL,2,'1959-09-18',0,NULL,NULL,NULL,NULL,NULL,121,0,'2024-04-26 15:50:08','2024-04-26 15:50:09','Both'),
+ (53,'Individual',NULL,'Miguel Parker',NULL,NULL,'Miguel','','Parker',0,0,0,0,0,0,NULL,'Parker, Miguel',NULL,NULL,NULL,'2',NULL,'2567900778',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Miguel',1,NULL,'Dear Miguel',1,NULL,'Miguel Parker',NULL,2,'1987-11-12',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-04-26 15:50:08','2024-04-26 15:50:09','Both'),
+ (54,'Individual',NULL,'Mr. Maxwell Patel',NULL,NULL,'Maxwell','B','Patel',0,1,0,0,1,0,NULL,'Patel, Maxwell',NULL,NULL,NULL,'2',NULL,'1864121617',NULL,'Sample Data',3,NULL,NULL,NULL,1,NULL,'Dear Maxwell',1,NULL,'Dear Maxwell',1,NULL,'Mr. Maxwell Patel',NULL,NULL,'1988-11-26',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-04-26 15:50:08','2024-04-26 15:50:09','Both'),
+ (55,'Individual',NULL,'tobya11@mymail.biz',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'tobya11@mymail.biz',NULL,NULL,NULL,NULL,NULL,'785708970',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear tobya11@mymail.biz',1,NULL,'Dear tobya11@mymail.biz',1,NULL,'tobya11@mymail.biz',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-04-26 15:50:08','2024-04-26 15:50:09','Both'),
+ (56,'Individual',NULL,'Jay Olsen',NULL,NULL,'Jay','','Olsen',0,0,0,0,0,0,NULL,'Olsen, Jay',NULL,NULL,NULL,'3',NULL,'1945250723',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Jay',1,NULL,'Dear Jay',1,NULL,'Jay Olsen',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-04-26 15:50:08','2024-04-26 15:50:09','Both'),
+ (57,'Individual',NULL,'Mr. Allan Parker Jr.',NULL,NULL,'Allan','','Parker',0,0,0,0,0,0,NULL,'Parker, Allan',NULL,NULL,NULL,NULL,NULL,'1311923270',NULL,'Sample Data',3,1,NULL,NULL,1,NULL,'Dear Allan',1,NULL,'Dear Allan',1,NULL,'Mr. Allan Parker Jr.',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-04-26 15:50:08','2024-04-26 15:50:09','Both'),
+ (58,'Individual',NULL,'Maria Cruz',NULL,NULL,'Maria','K','Cruz',0,0,0,0,1,0,NULL,'Cruz, Maria',NULL,NULL,NULL,NULL,NULL,'2760046395',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Maria',1,NULL,'Dear Maria',1,NULL,'Maria Cruz',NULL,2,'1993-11-18',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-04-26 15:50:08','2024-04-26 15:50:08','Both'),
+ (59,'Household',NULL,'Jacobs family',NULL,NULL,NULL,NULL,NULL,1,0,0,0,0,0,NULL,'Jacobs family',NULL,NULL,NULL,NULL,NULL,'1498986649',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Jacobs family',5,NULL,'Dear Jacobs family',2,NULL,'Jacobs family',NULL,NULL,NULL,0,NULL,'Jacobs family',NULL,NULL,NULL,NULL,0,'2024-04-26 15:50:08','2024-04-26 15:50:09','Both'),
+ (60,'Individual',NULL,'Dr. Scott Cruz','Sierra Legal Systems',NULL,'Scott','','Cruz',0,0,0,0,0,0,NULL,'Cruz, Scott',NULL,NULL,NULL,NULL,NULL,'1460973191',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Scott',1,NULL,'Dear Scott',1,NULL,'Dr. Scott Cruz',NULL,2,'1935-02-25',0,NULL,NULL,NULL,NULL,NULL,9,0,'2024-04-26 15:50:08','2024-04-26 15:50:09','Both'),
+ (61,'Individual',NULL,'Dr. Toby Olsen Sr.',NULL,NULL,'Toby','','Olsen',0,0,0,0,0,0,NULL,'Olsen, Toby',NULL,NULL,NULL,NULL,NULL,'2803490896',NULL,'Sample Data',4,2,NULL,NULL,1,NULL,'Dear Toby',1,NULL,'Dear Toby',1,NULL,'Dr. Toby Olsen Sr.',NULL,NULL,'1973-11-17',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-04-26 15:50:08','2024-04-26 15:50:09','Both'),
+ (62,'Individual',NULL,'Tanya Parker',NULL,NULL,'Tanya','','Parker',0,1,0,0,0,0,NULL,'Parker, Tanya',NULL,NULL,NULL,NULL,NULL,'91803087',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Tanya',1,NULL,'Dear Tanya',1,NULL,'Tanya Parker',NULL,1,'1999-12-15',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-04-26 15:50:08','2024-04-26 15:50:09','Both'),
+ (63,'Individual',NULL,'Mr. Maria Jones',NULL,NULL,'Maria','','Jones',1,0,0,0,0,0,NULL,'Jones, Maria',NULL,NULL,NULL,NULL,NULL,'1814034949',NULL,'Sample Data',3,NULL,NULL,NULL,1,NULL,'Dear Maria',1,NULL,'Dear Maria',1,NULL,'Mr. Maria Jones',NULL,NULL,'1937-09-10',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-04-26 15:50:08','2024-04-26 15:50:08','Both'),
+ (64,'Individual',NULL,'Mrs. Scarlet Barkley-Reynolds',NULL,NULL,'Scarlet','O','Barkley-Reynolds',0,0,0,0,0,0,NULL,'Barkley-Reynolds, Scarlet',NULL,NULL,NULL,'4',NULL,'2467351420',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear Scarlet',1,NULL,'Dear Scarlet',1,NULL,'Mrs. Scarlet Barkley-Reynolds',NULL,1,'1991-06-18',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-04-26 15:50:08','2024-04-26 15:50:09','Both'),
+ (65,'Individual',NULL,'Ms. Merrie Samson',NULL,NULL,'Merrie','','Samson',0,1,0,0,0,0,NULL,'Samson, Merrie',NULL,NULL,NULL,NULL,NULL,'2685466271',NULL,'Sample Data',2,NULL,NULL,NULL,1,NULL,'Dear Merrie',1,NULL,'Dear Merrie',1,NULL,'Ms. Merrie Samson',NULL,1,'1952-05-27',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-04-26 15:50:08','2024-04-26 15:50:09','Both'),
+ (66,'Individual',NULL,'deforest.jacob@mymail.info',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'deforest.jacob@mymail.info',NULL,NULL,NULL,NULL,NULL,'3371431716',NULL,'Sample Data',4,4,NULL,NULL,1,NULL,'Dear deforest.jacob@mymail.info',1,NULL,'Dear deforest.jacob@mymail.info',1,NULL,'deforest.jacob@mymail.info',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-04-26 15:50:08','2024-04-26 15:50:09','Both'),
+ (67,'Individual',NULL,'Herminia Cruz',NULL,NULL,'Herminia','M','Cruz',0,0,0,0,0,0,NULL,'Cruz, Herminia',NULL,NULL,NULL,'2',NULL,'3479995875',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Herminia',1,NULL,'Dear Herminia',1,NULL,'Herminia Cruz',NULL,1,'1943-04-20',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-04-26 15:50:08','2024-04-26 15:50:09','Both'),
+ (68,'Individual',NULL,'Mrs. Jina ÅÄ…chowski',NULL,NULL,'Jina','F','ÅÄ…chowski',0,0,0,0,1,0,NULL,'ÅÄ…chowski, Jina',NULL,NULL,NULL,'3',NULL,'4065988488',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear Jina',1,NULL,'Dear Jina',1,NULL,'Mrs. Jina ÅÄ…chowski',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-04-26 15:50:08','2024-04-26 15:50:09','Both'),
+ (69,'Organization',NULL,'Dowlen Empowerment Network','Dowlen Empowerment Network',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Dowlen Empowerment Network',NULL,NULL,NULL,NULL,NULL,'1598124399',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Dowlen Empowerment Network',NULL,NULL,NULL,0,NULL,NULL,155,NULL,NULL,NULL,0,'2024-04-26 15:50:08','2024-04-26 15:50:09','Both'),
+ (70,'Individual',NULL,'Rolando Olsen',NULL,NULL,'Rolando','','Olsen',0,0,0,0,0,0,NULL,'Olsen, Rolando',NULL,NULL,NULL,'1',NULL,'2121296962',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Rolando',1,NULL,'Dear Rolando',1,NULL,'Rolando Olsen',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-04-26 15:50:08','2024-04-26 15:50:09','Both'),
+ (71,'Individual',NULL,'Dr. Rolando Deforest',NULL,NULL,'Rolando','','Deforest',0,0,0,0,0,0,NULL,'Deforest, Rolando',NULL,NULL,NULL,NULL,NULL,'2111431300',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Rolando',1,NULL,'Dear Rolando',1,NULL,'Dr. Rolando Deforest',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-04-26 15:50:08','2024-04-26 15:50:09','Both'),
+ (72,'Individual',NULL,'Winford Reynolds II',NULL,NULL,'Winford','','Reynolds',0,0,0,0,0,0,NULL,'Reynolds, Winford',NULL,NULL,NULL,NULL,NULL,'2721375834',NULL,'Sample Data',NULL,3,NULL,NULL,1,NULL,'Dear Winford',1,NULL,'Dear Winford',1,NULL,'Winford Reynolds II',NULL,2,'2001-07-31',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-04-26 15:50:08','2024-04-26 15:50:09','Both'),
+ (73,'Individual',NULL,'Scarlet Dimitrov','Community Development Services',NULL,'Scarlet','E','Dimitrov',0,0,0,0,0,0,NULL,'Dimitrov, Scarlet',NULL,NULL,NULL,'2',NULL,'2143443543',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Scarlet',1,NULL,'Dear Scarlet',1,NULL,'Scarlet Dimitrov',NULL,1,'1954-01-03',0,NULL,NULL,NULL,NULL,NULL,174,0,'2024-04-26 15:50:08','2024-04-26 15:50:09','Both'),
+ (74,'Individual',NULL,'terrella@testing.info','Urban Culture Fellowship',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'terrella@testing.info',NULL,NULL,NULL,'1',NULL,'786093458',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear terrella@testing.info',1,NULL,'Dear terrella@testing.info',1,NULL,'terrella@testing.info',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,144,0,'2024-04-26 15:50:08','2024-04-26 15:50:09','Both'),
+ (75,'Individual',NULL,'Bob Jameson-Patel',NULL,NULL,'Bob','','Jameson-Patel',0,1,0,0,0,0,NULL,'Jameson-Patel, Bob',NULL,NULL,NULL,'5',NULL,'2741916997',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Bob',1,NULL,'Dear Bob',1,NULL,'Bob Jameson-Patel',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-04-26 15:50:08','2024-04-26 15:50:09','Both'),
+ (76,'Individual',NULL,'Dr. Barry Lee Jr.',NULL,NULL,'Barry','','Lee',0,0,0,0,0,0,NULL,'Lee, Barry',NULL,NULL,NULL,NULL,NULL,'609109551',NULL,'Sample Data',4,1,NULL,NULL,1,NULL,'Dear Barry',1,NULL,'Dear Barry',1,NULL,'Dr. Barry Lee Jr.',NULL,2,'1949-12-05',1,'2024-04-06',NULL,NULL,NULL,NULL,NULL,0,'2024-04-26 15:50:08','2024-04-26 15:50:09','Both'),
+ (77,'Individual',NULL,'Shad Terrell',NULL,NULL,'Shad','I','Terrell',1,0,0,0,0,0,NULL,'Terrell, Shad',NULL,NULL,NULL,'4',NULL,'3876111966',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Shad',1,NULL,'Dear Shad',1,NULL,'Shad Terrell',NULL,2,'1996-06-12',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-04-26 15:50:08','2024-04-26 15:50:09','Both'),
+ (78,'Individual',NULL,'olsen.brigette@notmail.co.in','Community Peace Solutions',NULL,NULL,NULL,NULL,0,0,0,0,1,0,NULL,'olsen.brigette@notmail.co.in',NULL,NULL,NULL,'3',NULL,'2774054750',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear olsen.brigette@notmail.co.in',1,NULL,'Dear olsen.brigette@notmail.co.in',1,NULL,'olsen.brigette@notmail.co.in',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,17,0,'2024-04-26 15:50:08','2024-04-26 15:50:09','Both'),
+ (79,'Individual',NULL,'Alexia Reynolds',NULL,NULL,'Alexia','K','Reynolds',0,0,0,0,0,0,NULL,'Reynolds, Alexia',NULL,NULL,NULL,NULL,NULL,'1389353396',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Alexia',1,NULL,'Dear Alexia',1,NULL,'Alexia Reynolds',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-04-26 15:50:08','2024-04-26 15:50:08','Both'),
+ (80,'Household',NULL,'Olsen family',NULL,NULL,NULL,NULL,NULL,0,1,0,0,0,0,NULL,'Olsen family',NULL,NULL,NULL,'1',NULL,'1990073228',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Olsen family',5,NULL,'Dear Olsen family',2,NULL,'Olsen family',NULL,NULL,NULL,0,NULL,'Olsen family',NULL,NULL,NULL,NULL,0,'2024-04-26 15:50:08','2024-04-26 15:50:09','Both'),
+ (81,'Individual',NULL,'Carylon Jameson',NULL,NULL,'Carylon','','Jameson',1,0,0,0,0,0,NULL,'Jameson, Carylon',NULL,NULL,NULL,NULL,NULL,'232914878',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Carylon',1,NULL,'Dear Carylon',1,NULL,'Carylon Jameson',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-04-26 15:50:08','2024-04-26 15:50:09','Both'),
+ (82,'Individual',NULL,'Josefa McReynolds',NULL,NULL,'Josefa','','McReynolds',0,0,0,0,0,0,NULL,'McReynolds, Josefa',NULL,NULL,NULL,NULL,NULL,'2068135953',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Josefa',1,NULL,'Dear Josefa',1,NULL,'Josefa McReynolds',NULL,1,'1997-05-28',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-04-26 15:50:08','2024-04-26 15:50:09','Both'),
+ (83,'Individual',NULL,'Errol Barkley Sr.','Sunland Park Action Fund',NULL,'Errol','','Barkley',0,0,0,0,1,0,NULL,'Barkley, Errol',NULL,NULL,NULL,NULL,NULL,'3627934252',NULL,'Sample Data',NULL,2,NULL,NULL,1,NULL,'Dear Errol',1,NULL,'Dear Errol',1,NULL,'Errol Barkley Sr.',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,184,0,'2024-04-26 15:50:08','2024-04-26 15:50:09','Both'),
+ (84,'Organization',NULL,'El Camino Family School','El Camino Family School',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'El Camino Family School',NULL,NULL,NULL,'2',NULL,'2945176728',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'El Camino Family School',NULL,NULL,NULL,0,NULL,NULL,166,NULL,NULL,NULL,0,'2024-04-26 15:50:08','2024-04-26 15:50:09','Both'),
+ (85,'Individual',NULL,'Mr. Norris Wattson',NULL,NULL,'Norris','R','Wattson',0,0,0,0,0,0,NULL,'Wattson, Norris',NULL,NULL,NULL,'3',NULL,'4180802164',NULL,'Sample Data',3,NULL,NULL,NULL,1,NULL,'Dear Norris',1,NULL,'Dear Norris',1,NULL,'Mr. Norris Wattson',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-04-26 15:50:08','2024-04-26 15:50:08','Both'),
+ (86,'Household',NULL,'Reynolds family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Reynolds family',NULL,NULL,NULL,NULL,NULL,'4119726021',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Reynolds family',5,NULL,'Dear Reynolds family',2,NULL,'Reynolds family',NULL,NULL,NULL,0,NULL,'Reynolds family',NULL,NULL,NULL,NULL,0,'2024-04-26 15:50:08','2024-04-26 15:50:09','Both'),
+ (87,'Individual',NULL,'Dr. Brigette Samson',NULL,NULL,'Brigette','L','Samson',0,0,0,0,0,0,NULL,'Samson, Brigette',NULL,NULL,NULL,'4',NULL,'2016376463',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Brigette',1,NULL,'Dear Brigette',1,NULL,'Dr. Brigette Samson',NULL,1,'1997-08-12',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-04-26 15:50:08','2024-04-26 15:50:09','Both'),
+ (88,'Individual',NULL,'Bob Jacobs',NULL,NULL,'Bob','O','Jacobs',1,0,0,0,1,0,NULL,'Jacobs, Bob',NULL,NULL,NULL,'2',NULL,'171700629',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Bob',1,NULL,'Dear Bob',1,NULL,'Bob Jacobs',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-04-26 15:50:08','2024-04-26 15:50:09','Both'),
+ (89,'Individual',NULL,'Ray Dimitrov Sr.',NULL,NULL,'Ray','G','Dimitrov',0,1,0,0,0,0,NULL,'Dimitrov, Ray',NULL,NULL,NULL,NULL,NULL,'213044700',NULL,'Sample Data',NULL,2,NULL,NULL,1,NULL,'Dear Ray',1,NULL,'Dear Ray',1,NULL,'Ray Dimitrov Sr.',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-04-26 15:50:08','2024-04-26 15:50:08','Both'),
+ (90,'Organization',NULL,'Global Poetry Alliance','Global Poetry Alliance',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Global Poetry Alliance',NULL,NULL,NULL,NULL,NULL,'1479131401',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Global Poetry Alliance',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-04-26 15:50:08','2024-04-26 15:50:09','Both'),
+ (91,'Individual',NULL,'Maria Roberts Sr.',NULL,NULL,'Maria','','Roberts',0,0,0,0,0,0,NULL,'Roberts, Maria',NULL,NULL,NULL,'4',NULL,'1395427104',NULL,'Sample Data',NULL,2,NULL,NULL,1,NULL,'Dear Maria',1,NULL,'Dear Maria',1,NULL,'Maria Roberts Sr.',NULL,2,'2016-12-11',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-04-26 15:50:08','2024-04-26 15:50:09','Both'),
+ (92,'Individual',NULL,'Dr. Elbert González Jr.',NULL,NULL,'Elbert','','González',0,0,0,0,1,0,NULL,'González, Elbert',NULL,NULL,NULL,'2',NULL,'672613238',NULL,'Sample Data',4,1,NULL,NULL,1,NULL,'Dear Elbert',1,NULL,'Dear Elbert',1,NULL,'Dr. Elbert González Jr.',NULL,2,'1972-05-05',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-04-26 15:50:08','2024-04-26 15:50:09','Both'),
+ (93,'Individual',NULL,'Josefa Zope',NULL,NULL,'Josefa','Z','Zope',0,0,0,0,0,0,NULL,'Zope, Josefa',NULL,NULL,NULL,NULL,NULL,'1682525130',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Josefa',1,NULL,'Dear Josefa',1,NULL,'Josefa Zope',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-04-26 15:50:08','2024-04-26 15:50:09','Both'),
+ (94,'Individual',NULL,'Delana Terry',NULL,NULL,'Delana','B','Terry',0,0,0,0,0,0,NULL,'Terry, Delana',NULL,NULL,NULL,NULL,NULL,'588631021',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Delana',1,NULL,'Dear Delana',1,NULL,'Delana Terry',NULL,NULL,'1952-05-05',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-04-26 15:50:08','2024-04-26 15:50:09','Both'),
+ (95,'Individual',NULL,'Bryon Barkley Jr.',NULL,NULL,'Bryon','G','Barkley',0,0,0,0,0,0,NULL,'Barkley, Bryon',NULL,NULL,NULL,'3',NULL,'2286334193',NULL,'Sample Data',NULL,1,NULL,NULL,1,NULL,'Dear Bryon',1,NULL,'Dear Bryon',1,NULL,'Bryon Barkley Jr.',NULL,2,'1937-07-07',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-04-26 15:50:08','2024-04-26 15:50:08','Both'),
+ (96,'Individual',NULL,'Dr. Kandace Terry',NULL,NULL,'Kandace','B','Terry',0,0,0,0,0,0,NULL,'Terry, Kandace',NULL,NULL,NULL,'2',NULL,'686769478',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Kandace',1,NULL,'Dear Kandace',1,NULL,'Dr. Kandace Terry',NULL,1,'1983-10-25',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-04-26 15:50:08','2024-04-26 15:50:09','Both'),
+ (97,'Individual',NULL,'Margaret Parker-Roberts',NULL,NULL,'Margaret','M','Parker-Roberts',0,1,0,0,0,0,NULL,'Parker-Roberts, Margaret',NULL,NULL,NULL,NULL,NULL,'3621696856',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Margaret',1,NULL,'Dear Margaret',1,NULL,'Margaret Parker-Roberts',NULL,1,'1978-09-06',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-04-26 15:50:08','2024-04-26 15:50:09','Both'),
+ (98,'Household',NULL,'Parker family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Parker family',NULL,NULL,NULL,'5',NULL,'425242179',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Parker family',5,NULL,'Dear Parker family',2,NULL,'Parker family',NULL,NULL,NULL,0,NULL,'Parker family',NULL,NULL,NULL,NULL,0,'2024-04-26 15:50:08','2024-04-26 15:50:09','Both'),
+ (99,'Individual',NULL,'wilson.ashley64@testing.net',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'wilson.ashley64@testing.net',NULL,NULL,NULL,NULL,NULL,'749972313',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear wilson.ashley64@testing.net',1,NULL,'Dear wilson.ashley64@testing.net',1,NULL,'wilson.ashley64@testing.net',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-04-26 15:50:08','2024-04-26 15:50:09','Both'),
+ (100,'Individual',NULL,'Truman Roberts',NULL,NULL,'Truman','Q','Roberts',0,0,0,0,0,0,NULL,'Roberts, Truman',NULL,NULL,NULL,'2',NULL,'3664937465',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Truman',1,NULL,'Dear Truman',1,NULL,'Truman Roberts',NULL,2,'1970-05-22',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-04-26 15:50:08','2024-04-26 15:50:09','Both'),
+ (101,'Individual',NULL,'Sonny Patel',NULL,NULL,'Sonny','T','Patel',0,0,0,0,0,0,NULL,'Patel, Sonny',NULL,NULL,NULL,NULL,NULL,'995093613',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Sonny',1,NULL,'Dear Sonny',1,NULL,'Sonny Patel',NULL,NULL,'1966-05-28',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-04-26 15:50:08','2024-04-26 15:50:09','Both'),
+ (102,'Household',NULL,'Barkley-Grant family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Barkley-Grant family',NULL,NULL,NULL,'5',NULL,'2724040510',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Barkley-Grant family',5,NULL,'Dear Barkley-Grant family',2,NULL,'Barkley-Grant family',NULL,NULL,NULL,0,NULL,'Barkley-Grant family',NULL,NULL,NULL,NULL,0,'2024-04-26 15:50:08','2024-04-26 15:50:09','Both'),
+ (103,'Individual',NULL,'Shad Samuels-Samson III',NULL,NULL,'Shad','J','Samuels-Samson',0,1,0,0,0,0,NULL,'Samuels-Samson, Shad',NULL,NULL,NULL,'3',NULL,'2532964502',NULL,'Sample Data',NULL,4,NULL,NULL,1,NULL,'Dear Shad',1,NULL,'Dear Shad',1,NULL,'Shad Samuels-Samson III',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-04-26 15:50:08','2024-04-26 15:50:09','Both'),
+ (104,'Individual',NULL,'Dr. Andrew Dimitrov-McReynolds',NULL,NULL,'Andrew','B','Dimitrov-McReynolds',1,0,0,0,0,0,NULL,'Dimitrov-McReynolds, Andrew',NULL,NULL,NULL,NULL,NULL,'605921910',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Andrew',1,NULL,'Dear Andrew',1,NULL,'Dr. Andrew Dimitrov-McReynolds',NULL,NULL,'1984-09-09',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-04-26 15:50:08','2024-04-26 15:50:09','Both'),
+ (105,'Individual',NULL,'Erik González',NULL,NULL,'Erik','','González',1,1,0,0,0,0,NULL,'González, Erik',NULL,NULL,NULL,NULL,NULL,'1456610806',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Erik',1,NULL,'Dear Erik',1,NULL,'Erik González',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-04-26 15:50:08','2024-04-26 15:50:09','Both'),
+ (106,'Individual',NULL,'Lashawnda Roberts',NULL,NULL,'Lashawnda','','Roberts',0,1,0,0,1,0,NULL,'Roberts, Lashawnda',NULL,NULL,NULL,NULL,NULL,'1535794167',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Lashawnda',1,NULL,'Dear Lashawnda',1,NULL,'Lashawnda Roberts',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-04-26 15:50:08','2024-04-26 15:50:09','Both'),
+ (107,'Individual',NULL,'samuelsr@example.biz',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'samuelsr@example.biz',NULL,NULL,NULL,NULL,NULL,'1720340811',NULL,'Sample Data',3,NULL,NULL,NULL,1,NULL,'Dear samuelsr@example.biz',1,NULL,'Dear samuelsr@example.biz',1,NULL,'samuelsr@example.biz',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-04-26 15:50:08','2024-04-26 15:50:08','Both'),
+ (108,'Individual',NULL,'Iris Wagner','Texas Culture Solutions',NULL,'Iris','','Wagner',0,1,0,0,0,0,NULL,'Wagner, Iris',NULL,NULL,NULL,'3',NULL,'2617223006',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Iris',1,NULL,'Dear Iris',1,NULL,'Iris Wagner',NULL,NULL,'1993-12-28',0,NULL,NULL,NULL,NULL,NULL,193,0,'2024-04-26 15:50:08','2024-04-26 15:50:09','Both'),
+ (109,'Individual',NULL,'Scarlet Terry-Patel',NULL,NULL,'Scarlet','','Terry-Patel',0,0,0,0,0,0,NULL,'Terry-Patel, Scarlet',NULL,NULL,NULL,NULL,NULL,'2554143572',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Scarlet',1,NULL,'Dear Scarlet',1,NULL,'Scarlet Terry-Patel',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-04-26 15:50:08','2024-04-26 15:50:09','Both'),
+ (110,'Individual',NULL,'mcreynolds.d.brent@sample.net',NULL,NULL,NULL,NULL,NULL,0,1,0,0,0,0,NULL,'mcreynolds.d.brent@sample.net',NULL,NULL,NULL,'5',NULL,'1779226976',NULL,'Sample Data',3,NULL,NULL,NULL,1,NULL,'Dear mcreynolds.d.brent@sample.net',1,NULL,'Dear mcreynolds.d.brent@sample.net',1,NULL,'mcreynolds.d.brent@sample.net',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-04-26 15:50:08','2024-04-26 15:50:09','Both'),
+ (111,'Individual',NULL,'Junko Prentice',NULL,NULL,'Junko','','Prentice',0,0,0,0,1,0,NULL,'Prentice, Junko',NULL,NULL,NULL,NULL,NULL,'1179006212',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Junko',1,NULL,'Dear Junko',1,NULL,'Junko Prentice',NULL,NULL,'1970-04-15',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-04-26 15:50:08','2024-04-26 15:50:08','Both'),
+ (112,'Individual',NULL,'sdimitrov@testing.biz',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'sdimitrov@testing.biz',NULL,NULL,NULL,'5',NULL,'98992964',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear sdimitrov@testing.biz',1,NULL,'Dear sdimitrov@testing.biz',1,NULL,'sdimitrov@testing.biz',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-04-26 15:50:08','2024-04-26 15:50:09','Both'),
+ (113,'Individual',NULL,'Justina Jacobs',NULL,NULL,'Justina','','Jacobs',0,1,0,0,0,0,NULL,'Jacobs, Justina',NULL,NULL,NULL,'3',NULL,'1829359712',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Justina',1,NULL,'Dear Justina',1,NULL,'Justina Jacobs',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-04-26 15:50:08','2024-04-26 15:50:09','Both'),
+ (114,'Individual',NULL,'Billy Müller',NULL,NULL,'Billy','','Müller',0,0,0,0,0,0,NULL,'Müller, Billy',NULL,NULL,NULL,NULL,NULL,'1431681652',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Billy',1,NULL,'Dear Billy',1,NULL,'Billy Müller',NULL,NULL,'1967-07-06',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-04-26 15:50:08','2024-04-26 15:50:09','Both'),
+ (115,'Individual',NULL,'Shad Adams',NULL,NULL,'Shad','Q','Adams',0,0,0,0,0,0,NULL,'Adams, Shad',NULL,NULL,NULL,'5',NULL,'1641092808',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Shad',1,NULL,'Dear Shad',1,NULL,'Shad Adams',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-04-26 15:50:08','2024-04-26 15:50:09','Both'),
+ (116,'Individual',NULL,'Ray Cruz',NULL,NULL,'Ray','','Cruz',0,0,0,0,1,0,NULL,'Cruz, Ray',NULL,NULL,NULL,NULL,NULL,'1703831601',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Ray',1,NULL,'Dear Ray',1,NULL,'Ray Cruz',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-04-26 15:50:08','2024-04-26 15:50:08','Both'),
+ (117,'Individual',NULL,'samson.eleonor@fishmail.co.in',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'samson.eleonor@fishmail.co.in',NULL,NULL,NULL,NULL,NULL,'42884516',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear samson.eleonor@fishmail.co.in',1,NULL,'Dear samson.eleonor@fishmail.co.in',1,NULL,'samson.eleonor@fishmail.co.in',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-04-26 15:50:08','2024-04-26 15:50:09','Both'),
+ (118,'Individual',NULL,'Damaris González',NULL,NULL,'Damaris','I','González',0,0,0,0,0,0,NULL,'González, Damaris',NULL,NULL,NULL,'5',NULL,'1257732273',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Damaris',1,NULL,'Dear Damaris',1,NULL,'Damaris González',NULL,NULL,'1987-08-31',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-04-26 15:50:08','2024-04-26 15:50:09','Both'),
+ (119,'Individual',NULL,'Arlyne McReynolds',NULL,NULL,'Arlyne','','McReynolds',0,0,0,0,1,0,NULL,'McReynolds, Arlyne',NULL,NULL,NULL,'3',NULL,'1526771757',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Arlyne',1,NULL,'Dear Arlyne',1,NULL,'Arlyne McReynolds',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-04-26 15:50:08','2024-04-26 15:50:09','Both'),
+ (120,'Individual',NULL,'Norris Samuels-McReynolds II',NULL,NULL,'Norris','','Samuels-McReynolds',0,1,0,0,0,0,NULL,'Samuels-McReynolds, Norris',NULL,NULL,NULL,'5',NULL,'2624098484',NULL,'Sample Data',NULL,3,NULL,NULL,1,NULL,'Dear Norris',1,NULL,'Dear Norris',1,NULL,'Norris Samuels-McReynolds II',NULL,2,'2004-09-24',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-04-26 15:50:08','2024-04-26 15:50:09','Both'),
+ (121,'Organization',NULL,'Mississippi Music Partnership','Mississippi Music Partnership',NULL,NULL,NULL,NULL,0,0,0,0,1,0,NULL,'Mississippi Music Partnership',NULL,NULL,NULL,NULL,NULL,'2704621655',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Mississippi Music Partnership',NULL,NULL,NULL,0,NULL,NULL,52,NULL,NULL,NULL,0,'2024-04-26 15:50:08','2024-04-26 15:50:09','Both'),
+ (122,'Individual',NULL,'Megan Reynolds',NULL,NULL,'Megan','X','Reynolds',0,0,0,0,0,0,NULL,'Reynolds, Megan',NULL,NULL,NULL,NULL,NULL,'373930154',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Megan',1,NULL,'Dear Megan',1,NULL,'Megan Reynolds',NULL,1,'1982-04-22',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-04-26 15:50:08','2024-04-26 15:50:09','Both'),
+ (123,'Individual',NULL,'Ms. Delana Bachman',NULL,NULL,'Delana','','Bachman',0,0,0,0,0,0,NULL,'Bachman, Delana',NULL,NULL,NULL,'5',NULL,'1435428348',NULL,'Sample Data',2,NULL,NULL,NULL,1,NULL,'Dear Delana',1,NULL,'Dear Delana',1,NULL,'Ms. Delana Bachman',NULL,1,'1949-12-04',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-04-26 15:50:08','2024-04-26 15:50:09','Both'),
+ (124,'Organization',NULL,'Saint Paul Culture School','Saint Paul Culture School',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Saint Paul Culture School',NULL,NULL,NULL,NULL,NULL,'2898624530',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Saint Paul Culture School',NULL,NULL,NULL,0,NULL,NULL,163,NULL,NULL,NULL,0,'2024-04-26 15:50:08','2024-04-26 15:50:09','Both'),
+ (125,'Individual',NULL,'Rolando Bachman',NULL,NULL,'Rolando','S','Bachman',0,1,0,0,0,0,NULL,'Bachman, Rolando',NULL,NULL,NULL,NULL,NULL,'1672731969',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Rolando',1,NULL,'Dear Rolando',1,NULL,'Rolando Bachman',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-04-26 15:50:08','2024-04-26 15:50:09','Both'),
+ (126,'Individual',NULL,'mcreynoldsr@airmail.co.in',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'mcreynoldsr@airmail.co.in',NULL,NULL,NULL,NULL,NULL,'479880284',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear mcreynoldsr@airmail.co.in',1,NULL,'Dear mcreynoldsr@airmail.co.in',1,NULL,'mcreynoldsr@airmail.co.in',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-04-26 15:50:08','2024-04-26 15:50:09','Both'),
+ (127,'Individual',NULL,'Dr. Rolando Terrell',NULL,NULL,'Rolando','S','Terrell',1,0,0,0,0,0,NULL,'Terrell, Rolando',NULL,NULL,NULL,'4',NULL,'3773897082',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Rolando',1,NULL,'Dear Rolando',1,NULL,'Dr. Rolando Terrell',NULL,2,'1999-11-24',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-04-26 15:50:08','2024-04-26 15:50:09','Both'),
+ (128,'Individual',NULL,'Mrs. Ashley Blackwell',NULL,NULL,'Ashley','','Blackwell',0,0,0,0,1,0,NULL,'Blackwell, Ashley',NULL,NULL,NULL,'1',NULL,'2843113739',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear Ashley',1,NULL,'Dear Ashley',1,NULL,'Mrs. Ashley Blackwell',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-04-26 15:50:08','2024-04-26 15:50:09','Both'),
+ (129,'Organization',NULL,'Global Wellness Partners','Global Wellness Partners',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Global Wellness Partners',NULL,NULL,NULL,NULL,NULL,'1902330600',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Global Wellness Partners',NULL,NULL,NULL,0,NULL,NULL,138,NULL,NULL,NULL,0,'2024-04-26 15:50:08','2024-04-26 15:50:09','Both'),
+ (130,'Organization',NULL,'Second Legal Partnership','Second Legal Partnership',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Second Legal Partnership',NULL,NULL,NULL,'2',NULL,'661847778',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Second Legal Partnership',NULL,NULL,NULL,0,NULL,NULL,34,NULL,NULL,NULL,0,'2024-04-26 15:50:08','2024-04-26 15:50:09','Both'),
+ (131,'Individual',NULL,'jacobroberts@spamalot.com',NULL,NULL,NULL,NULL,NULL,1,0,0,0,0,0,NULL,'jacobroberts@spamalot.com',NULL,NULL,NULL,NULL,NULL,'2559460925',NULL,'Sample Data',NULL,2,NULL,NULL,1,NULL,'Dear jacobroberts@spamalot.com',1,NULL,'Dear jacobroberts@spamalot.com',1,NULL,'jacobroberts@spamalot.com',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-04-26 15:50:08','2024-04-26 15:50:09','Both'),
+ (132,'Household',NULL,'Adams-Deforest family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Adams-Deforest family',NULL,NULL,NULL,NULL,NULL,'3716633876',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Adams-Deforest family',5,NULL,'Dear Adams-Deforest family',2,NULL,'Adams-Deforest family',NULL,NULL,NULL,0,NULL,'Adams-Deforest family',NULL,NULL,NULL,NULL,0,'2024-04-26 15:50:08','2024-04-26 15:50:09','Both'),
+ (133,'Individual',NULL,'Ms. Arlyne Grant',NULL,NULL,'Arlyne','L','Grant',0,0,0,0,0,0,NULL,'Grant, Arlyne',NULL,NULL,NULL,'4',NULL,'1053085057',NULL,'Sample Data',2,NULL,NULL,NULL,1,NULL,'Dear Arlyne',1,NULL,'Dear Arlyne',1,NULL,'Ms. Arlyne Grant',NULL,1,'1983-11-23',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-04-26 15:50:08','2024-04-26 15:50:09','Both'),
+ (134,'Individual',NULL,'Mr. Lou Cruz',NULL,NULL,'Lou','','Cruz',1,0,0,0,1,0,NULL,'Cruz, Lou',NULL,NULL,NULL,NULL,NULL,'3825436654',NULL,'Sample Data',3,NULL,NULL,NULL,1,NULL,'Dear Lou',1,NULL,'Dear Lou',1,NULL,'Mr. Lou Cruz',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-04-26 15:50:08','2024-04-26 15:50:09','Both'),
+ (135,'Organization',NULL,'Greensboro Health Partnership','Greensboro Health Partnership',NULL,NULL,NULL,NULL,0,1,0,0,0,0,NULL,'Greensboro Health Partnership',NULL,NULL,NULL,NULL,NULL,'1263263394',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Greensboro Health Partnership',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-04-26 15:50:08','2024-04-26 15:50:09','Both'),
+ (136,'Individual',NULL,'Dr. Maxwell Samuels Jr.',NULL,NULL,'Maxwell','F','Samuels',0,1,0,0,0,0,NULL,'Samuels, Maxwell',NULL,NULL,NULL,NULL,NULL,'445599950',NULL,'Sample Data',4,1,NULL,NULL,1,NULL,'Dear Maxwell',1,NULL,'Dear Maxwell',1,NULL,'Dr. Maxwell Samuels Jr.',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-04-26 15:50:08','2024-04-26 15:50:09','Both'),
+ (137,'Household',NULL,'Parker family',NULL,NULL,NULL,NULL,NULL,0,1,0,0,0,0,NULL,'Parker family',NULL,NULL,NULL,NULL,NULL,'425242179',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Parker family',5,NULL,'Dear Parker family',2,NULL,'Parker family',NULL,NULL,NULL,0,NULL,'Parker family',NULL,NULL,NULL,NULL,0,'2024-04-26 15:50:08','2024-04-26 15:50:09','Both'),
+ (138,'Individual',NULL,'Mrs. Laree Terry','Global Wellness Partners',NULL,'Laree','','Terry',0,0,0,0,0,0,NULL,'Terry, Laree',NULL,NULL,NULL,'2',NULL,'2580704464',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear Laree',1,NULL,'Dear Laree',1,NULL,'Mrs. Laree Terry',NULL,NULL,'1966-01-07',0,NULL,NULL,NULL,NULL,NULL,129,0,'2024-04-26 15:50:08','2024-04-26 15:50:09','Both'),
+ (139,'Individual',NULL,'kathleenterry-mcreynolds@fakemail.co.in',NULL,NULL,NULL,NULL,NULL,0,0,0,0,1,0,NULL,'kathleenterry-mcreynolds@fakemail.co.in',NULL,NULL,NULL,'2',NULL,'964626417',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear kathleenterry-mcreynolds@fakemail.co.in',1,NULL,'Dear kathleenterry-mcreynolds@fakemail.co.in',1,NULL,'kathleenterry-mcreynolds@fakemail.co.in',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-04-26 15:50:08','2024-04-26 15:50:09','Both'),
+ (140,'Individual',NULL,'ih.reynolds-dimitrov84@fishmail.info',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'ih.reynolds-dimitrov84@fishmail.info',NULL,NULL,NULL,'5',NULL,'136872972',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear ih.reynolds-dimitrov84@fishmail.info',1,NULL,'Dear ih.reynolds-dimitrov84@fishmail.info',1,NULL,'ih.reynolds-dimitrov84@fishmail.info',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-04-26 15:50:08','2024-04-26 15:50:09','Both'),
+ (141,'Household',NULL,'Patel family',NULL,NULL,NULL,NULL,NULL,1,0,0,0,0,0,NULL,'Patel family',NULL,NULL,NULL,'4',NULL,'1669281794',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Patel family',5,NULL,'Dear Patel family',2,NULL,'Patel family',NULL,NULL,NULL,0,NULL,'Patel family',NULL,NULL,NULL,NULL,0,'2024-04-26 15:50:08','2024-04-26 15:50:09','Both'),
+ (142,'Individual',NULL,'kprentice@sample.org',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'kprentice@sample.org',NULL,NULL,NULL,NULL,NULL,'1372542916',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear kprentice@sample.org',1,NULL,'Dear kprentice@sample.org',1,NULL,'kprentice@sample.org',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-04-26 15:50:08','2024-04-26 15:50:09','Both'),
+ (143,'Individual',NULL,'Mr. Norris Müller',NULL,NULL,'Norris','','Müller',1,1,0,0,0,0,NULL,'Müller, Norris',NULL,NULL,NULL,'3',NULL,'1477289672',NULL,'Sample Data',3,NULL,NULL,NULL,1,NULL,'Dear Norris',1,NULL,'Dear Norris',1,NULL,'Mr. Norris Müller',NULL,2,'1937-09-23',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-04-26 15:50:08','2024-04-26 15:50:09','Both'),
+ (144,'Organization',NULL,'Urban Culture Fellowship','Urban Culture Fellowship',NULL,NULL,NULL,NULL,0,0,0,0,1,0,NULL,'Urban Culture Fellowship',NULL,NULL,NULL,NULL,NULL,'250204628',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Urban Culture Fellowship',NULL,NULL,NULL,0,NULL,NULL,74,NULL,NULL,NULL,0,'2024-04-26 15:50:08','2024-04-26 15:50:09','Both'),
+ (145,'Individual',NULL,'grantj@example.co.in',NULL,NULL,NULL,NULL,NULL,0,1,0,0,0,0,NULL,'grantj@example.co.in',NULL,NULL,NULL,NULL,NULL,'508542910',NULL,'Sample Data',2,NULL,NULL,NULL,1,NULL,'Dear grantj@example.co.in',1,NULL,'Dear grantj@example.co.in',1,NULL,'grantj@example.co.in',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-04-26 15:50:08','2024-04-26 15:50:09','Both'),
+ (146,'Individual',NULL,'Bob Jacobs III','Global Development Academy',NULL,'Bob','','Jacobs',0,0,0,0,0,0,NULL,'Jacobs, Bob',NULL,NULL,NULL,NULL,NULL,'171700629',NULL,'Sample Data',NULL,4,NULL,NULL,1,NULL,'Dear Bob',1,NULL,'Dear Bob',1,NULL,'Bob Jacobs III',NULL,2,'1996-03-27',0,NULL,NULL,NULL,NULL,NULL,40,0,'2024-04-26 15:50:08','2024-04-26 15:50:09','Both'),
+ (147,'Individual',NULL,'Dr. Valene Dimitrov',NULL,NULL,'Valene','','Dimitrov',0,0,0,0,1,0,NULL,'Dimitrov, Valene',NULL,NULL,NULL,NULL,NULL,'1409634663',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Valene',1,NULL,'Dear Valene',1,NULL,'Dr. Valene Dimitrov',NULL,NULL,'1956-11-26',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-04-26 15:50:08','2024-04-26 15:50:09','Both'),
+ (148,'Individual',NULL,'Dr. Sonny González Jr.',NULL,NULL,'Sonny','C','González',0,0,0,0,1,0,NULL,'González, Sonny',NULL,NULL,NULL,NULL,NULL,'2595794049',NULL,'Sample Data',4,1,NULL,NULL,1,NULL,'Dear Sonny',1,NULL,'Dear Sonny',1,NULL,'Dr. Sonny González Jr.',NULL,NULL,'1996-03-31',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-04-26 15:50:08','2024-04-26 15:50:09','Both'),
+ (149,'Individual',NULL,'Beula González-Wagner',NULL,NULL,'Beula','','González-Wagner',1,0,0,0,0,0,NULL,'González-Wagner, Beula',NULL,NULL,NULL,NULL,NULL,'1749186655',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Beula',1,NULL,'Dear Beula',1,NULL,'Beula González-Wagner',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-04-26 15:50:08','2024-04-26 15:50:09','Both'),
+ (150,'Individual',NULL,'Beula Grant',NULL,NULL,'Beula','F','Grant',1,0,0,0,0,0,NULL,'Grant, Beula',NULL,NULL,NULL,NULL,NULL,'2604882984',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Beula',1,NULL,'Dear Beula',1,NULL,'Beula Grant',NULL,1,'1988-02-01',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-04-26 15:50:08','2024-04-26 15:50:09','Both'),
+ (151,'Individual',NULL,'Sanford Parker',NULL,NULL,'Sanford','B','Parker',0,0,0,0,1,0,NULL,'Parker, Sanford',NULL,NULL,NULL,'1',NULL,'2029750387',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Sanford',1,NULL,'Dear Sanford',1,NULL,'Sanford Parker',NULL,NULL,'2008-09-21',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-04-26 15:50:08','2024-04-26 15:50:09','Both'),
+ (152,'Household',NULL,'Samuels-McReynolds family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Samuels-McReynolds family',NULL,NULL,NULL,'1',NULL,'1078001120',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Samuels-McReynolds family',5,NULL,'Dear Samuels-McReynolds family',2,NULL,'Samuels-McReynolds family',NULL,NULL,NULL,0,NULL,'Samuels-McReynolds family',NULL,NULL,NULL,NULL,0,'2024-04-26 15:50:08','2024-04-26 15:50:09','Both'),
+ (153,'Individual',NULL,'Scott Parker Sr.',NULL,NULL,'Scott','','Parker',0,1,0,0,0,0,NULL,'Parker, Scott',NULL,NULL,NULL,NULL,NULL,'3303025093',NULL,'Sample Data',NULL,2,NULL,NULL,1,NULL,'Dear Scott',1,NULL,'Dear Scott',1,NULL,'Scott Parker Sr.',NULL,2,'1996-01-27',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-04-26 15:50:08','2024-04-26 15:50:09','Both'),
+ (154,'Individual',NULL,'Landon Müller',NULL,NULL,'Landon','','Müller',0,0,0,0,0,0,NULL,'Müller, Landon',NULL,NULL,NULL,'3',NULL,'2647475480',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Landon',1,NULL,'Dear Landon',1,NULL,'Landon Müller',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-04-26 15:50:08','2024-04-26 15:50:08','Both'),
+ (155,'Individual',NULL,'Mr. Rolando Samson','Dowlen Empowerment Network',NULL,'Rolando','','Samson',1,0,0,0,1,0,NULL,'Samson, Rolando',NULL,NULL,NULL,NULL,NULL,'3728356464',NULL,'Sample Data',3,NULL,NULL,NULL,1,NULL,'Dear Rolando',1,NULL,'Dear Rolando',1,NULL,'Mr. Rolando Samson',NULL,2,'2000-12-31',0,NULL,NULL,NULL,NULL,NULL,69,0,'2024-04-26 15:50:08','2024-04-26 15:50:09','Both'),
+ (156,'Individual',NULL,'Tanya Terrell',NULL,NULL,'Tanya','','Terrell',1,0,0,0,1,0,NULL,'Terrell, Tanya',NULL,NULL,NULL,NULL,NULL,'1604022989',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Tanya',1,NULL,'Dear Tanya',1,NULL,'Tanya Terrell',NULL,NULL,'1990-02-12',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-04-26 15:50:08','2024-04-26 15:50:09','Both'),
+ (157,'Individual',NULL,'Brent Samson',NULL,NULL,'Brent','','Samson',0,0,0,0,0,0,NULL,'Samson, Brent',NULL,NULL,NULL,NULL,NULL,'3338201893',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Brent',1,NULL,'Dear Brent',1,NULL,'Brent Samson',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-04-26 15:50:08','2024-04-26 15:50:09','Both'),
+ (158,'Individual',NULL,'Dr. Juliann Zope','Toledo Technology Network',NULL,'Juliann','','Zope',0,1,0,0,0,0,NULL,'Zope, Juliann',NULL,NULL,NULL,NULL,NULL,'2334217579',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Juliann',1,NULL,'Dear Juliann',1,NULL,'Dr. Juliann Zope',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,49,0,'2024-04-26 15:50:08','2024-04-26 15:50:09','Both'),
+ (159,'Individual',NULL,'terrya13@testing.co.in',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'terrya13@testing.co.in',NULL,NULL,NULL,NULL,NULL,'2064701131',NULL,'Sample Data',2,NULL,NULL,NULL,1,NULL,'Dear terrya13@testing.co.in',1,NULL,'Dear terrya13@testing.co.in',1,NULL,'terrya13@testing.co.in',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-04-26 15:50:08','2024-04-26 15:50:09','Both'),
+ (160,'Individual',NULL,'Sanford Jameson Sr.',NULL,NULL,'Sanford','F','Jameson',1,1,0,0,0,0,NULL,'Jameson, Sanford',NULL,NULL,NULL,NULL,NULL,'3668600161',NULL,'Sample Data',NULL,2,NULL,NULL,1,NULL,'Dear Sanford',1,NULL,'Dear Sanford',1,NULL,'Sanford Jameson Sr.',NULL,2,'1982-02-14',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-04-26 15:50:08','2024-04-26 15:50:08','Both'),
+ (161,'Household',NULL,'Roberts family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,1,0,NULL,'Roberts family',NULL,NULL,NULL,NULL,NULL,'2097305882',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Roberts family',5,NULL,'Dear Roberts family',2,NULL,'Roberts family',NULL,NULL,NULL,0,NULL,'Roberts family',NULL,NULL,NULL,NULL,0,'2024-04-26 15:50:08','2024-04-26 15:50:09','Both'),
+ (162,'Household',NULL,'Terrell family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,1,0,NULL,'Terrell family',NULL,NULL,NULL,NULL,NULL,'1136333121',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Terrell family',5,NULL,'Dear Terrell family',2,NULL,'Terrell family',NULL,NULL,NULL,0,NULL,'Terrell family',NULL,NULL,NULL,NULL,0,'2024-04-26 15:50:08','2024-04-26 15:50:09','Both'),
+ (163,'Individual',NULL,'Bernadette McReynolds','Saint Paul Culture School',NULL,'Bernadette','','McReynolds',0,1,0,0,1,0,NULL,'McReynolds, Bernadette',NULL,NULL,NULL,NULL,NULL,'1201192588',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Bernadette',1,NULL,'Dear Bernadette',1,NULL,'Bernadette McReynolds',NULL,1,'1971-08-20',0,NULL,NULL,NULL,NULL,NULL,124,0,'2024-04-26 15:50:08','2024-04-26 15:50:09','Both'),
+ (164,'Individual',NULL,'Andrew Samuels-McReynolds II',NULL,NULL,'Andrew','B','Samuels-McReynolds',1,0,0,0,0,0,NULL,'Samuels-McReynolds, Andrew',NULL,NULL,NULL,NULL,NULL,'2398390407',NULL,'Sample Data',NULL,3,NULL,NULL,1,NULL,'Dear Andrew',1,NULL,'Dear Andrew',1,NULL,'Andrew Samuels-McReynolds II',NULL,2,'2010-10-02',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-04-26 15:50:08','2024-04-26 15:50:09','Both'),
+ (165,'Individual',NULL,'Jed Samuels III',NULL,NULL,'Jed','B','Samuels',0,0,0,0,0,0,NULL,'Samuels, Jed',NULL,NULL,NULL,NULL,NULL,'3988235934',NULL,'Sample Data',NULL,4,NULL,NULL,1,NULL,'Dear Jed',1,NULL,'Dear Jed',1,NULL,'Jed Samuels III',NULL,2,'1968-12-14',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-04-26 15:50:08','2024-04-26 15:50:09','Both'),
+ (166,'Individual',NULL,'santinadimitrov@fakemail.co.nz','El Camino Family School',NULL,NULL,NULL,NULL,1,0,0,0,0,0,NULL,'santinadimitrov@fakemail.co.nz',NULL,NULL,NULL,'5',NULL,'51632527',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear santinadimitrov@fakemail.co.nz',1,NULL,'Dear santinadimitrov@fakemail.co.nz',1,NULL,'santinadimitrov@fakemail.co.nz',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,84,0,'2024-04-26 15:50:08','2024-04-26 15:50:09','Both'),
+ (167,'Individual',NULL,'Mrs. Damaris González',NULL,NULL,'Damaris','A','González',0,0,0,0,0,0,NULL,'González, Damaris',NULL,NULL,NULL,'4',NULL,'1257732273',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear Damaris',1,NULL,'Dear Damaris',1,NULL,'Mrs. Damaris González',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-04-26 15:50:08','2024-04-26 15:50:08','Both'),
+ (168,'Individual',NULL,'dr.barkley-grant@sample.co.in',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'dr.barkley-grant@sample.co.in',NULL,NULL,NULL,NULL,NULL,'3381634190',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear dr.barkley-grant@sample.co.in',1,NULL,'Dear dr.barkley-grant@sample.co.in',1,NULL,'dr.barkley-grant@sample.co.in',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-04-26 15:50:08','2024-04-26 15:50:09','Both'),
+ (169,'Organization',NULL,'Pocono Summit Legal Trust','Pocono Summit Legal Trust',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Pocono Summit Legal Trust',NULL,NULL,NULL,NULL,NULL,'2993431405',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Pocono Summit Legal Trust',NULL,NULL,NULL,0,NULL,NULL,32,NULL,NULL,NULL,0,'2024-04-26 15:50:08','2024-04-26 15:50:09','Both'),
+ (170,'Household',NULL,'Wagner family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Wagner family',NULL,NULL,NULL,'3',NULL,'1570966486',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Wagner family',5,NULL,'Dear Wagner family',2,NULL,'Wagner family',NULL,NULL,NULL,0,NULL,'Wagner family',NULL,NULL,NULL,NULL,0,'2024-04-26 15:50:08','2024-04-26 15:50:09','Both'),
+ (171,'Individual',NULL,'Carlos ÅÄ…chowski III',NULL,NULL,'Carlos','L','ÅÄ…chowski',0,0,0,0,0,0,NULL,'ÅÄ…chowski, Carlos',NULL,NULL,NULL,NULL,NULL,'205380068',NULL,'Sample Data',NULL,4,NULL,NULL,1,NULL,'Dear Carlos',1,NULL,'Dear Carlos',1,NULL,'Carlos ÅÄ…chowski III',NULL,2,'1974-06-26',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-04-26 15:50:08','2024-04-26 15:50:08','Both'),
+ (172,'Individual',NULL,'Elina McReynolds',NULL,NULL,'Elina','N','McReynolds',0,0,0,0,1,0,NULL,'McReynolds, Elina',NULL,NULL,NULL,'1',NULL,'130391420',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Elina',1,NULL,'Dear Elina',1,NULL,'Elina McReynolds',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-04-26 15:50:08','2024-04-26 15:50:09','Both'),
+ (173,'Individual',NULL,'parker.arlyne63@fishmail.co.in',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'parker.arlyne63@fishmail.co.in',NULL,NULL,NULL,'2',NULL,'4057497131',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear parker.arlyne63@fishmail.co.in',1,NULL,'Dear parker.arlyne63@fishmail.co.in',1,NULL,'parker.arlyne63@fishmail.co.in',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-04-26 15:50:08','2024-04-26 15:50:09','Both'),
+ (174,'Organization',NULL,'Community Development Services','Community Development Services',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Community Development Services',NULL,NULL,NULL,'5',NULL,'2020178751',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Community Development Services',NULL,NULL,NULL,0,NULL,NULL,73,NULL,NULL,NULL,0,'2024-04-26 15:50:08','2024-04-26 15:50:09','Both'),
+ (175,'Individual',NULL,'lashawndaadams-deforest@example.net',NULL,NULL,NULL,NULL,NULL,1,0,0,0,0,0,NULL,'lashawndaadams-deforest@example.net',NULL,NULL,NULL,NULL,NULL,'1961807407',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear lashawndaadams-deforest@example.net',1,NULL,'Dear lashawndaadams-deforest@example.net',1,NULL,'lashawndaadams-deforest@example.net',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-04-26 15:50:08','2024-04-26 15:50:09','Both'),
+ (176,'Individual',NULL,'Juliann Olsen',NULL,NULL,'Juliann','','Olsen',1,1,0,0,0,0,NULL,'Olsen, Juliann',NULL,NULL,NULL,NULL,NULL,'3406571736',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Juliann',1,NULL,'Dear Juliann',1,NULL,'Juliann Olsen',NULL,1,'1994-12-27',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-04-26 15:50:08','2024-04-26 15:50:09','Both'),
+ (177,'Individual',NULL,'Mrs. Elizabeth Wilson',NULL,NULL,'Elizabeth','','Wilson',1,0,0,0,1,0,NULL,'Wilson, Elizabeth',NULL,NULL,NULL,NULL,NULL,'690212617',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear Elizabeth',1,NULL,'Dear Elizabeth',1,NULL,'Mrs. Elizabeth Wilson',NULL,NULL,'1950-02-28',1,'2023-05-17',NULL,NULL,NULL,NULL,NULL,0,'2024-04-26 15:50:08','2024-04-26 15:50:08','Both'),
+ (178,'Household',NULL,'Samuels-Samson family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Samuels-Samson family',NULL,NULL,NULL,'4',NULL,'3598035709',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Samuels-Samson family',5,NULL,'Dear Samuels-Samson family',2,NULL,'Samuels-Samson family',NULL,NULL,NULL,0,NULL,'Samuels-Samson family',NULL,NULL,NULL,NULL,0,'2024-04-26 15:50:08','2024-04-26 15:50:09','Both'),
+ (179,'Individual',NULL,'Ms. Alexia Jacobs',NULL,NULL,'Alexia','O','Jacobs',0,0,0,0,0,0,NULL,'Jacobs, Alexia',NULL,NULL,NULL,'4',NULL,'817763028',NULL,'Sample Data',2,NULL,NULL,NULL,1,NULL,'Dear Alexia',1,NULL,'Dear Alexia',1,NULL,'Ms. Alexia Jacobs',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-04-26 15:50:08','2024-04-26 15:50:09','Both'),
+ (180,'Individual',NULL,'Sonny Samuels',NULL,NULL,'Sonny','P','Samuels',1,0,0,0,0,0,NULL,'Samuels, Sonny',NULL,NULL,NULL,'4',NULL,'1288913393',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Sonny',1,NULL,'Dear Sonny',1,NULL,'Sonny Samuels',NULL,2,'1972-05-29',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-04-26 15:50:08','2024-04-26 15:50:09','Both'),
+ (181,'Individual',NULL,'Shauna Adams-Deforest',NULL,NULL,'Shauna','','Adams-Deforest',0,0,0,0,0,0,NULL,'Adams-Deforest, Shauna',NULL,NULL,NULL,NULL,NULL,'3495339319',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Shauna',1,NULL,'Dear Shauna',1,NULL,'Shauna Adams-Deforest',NULL,1,'2007-12-26',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-04-26 15:50:08','2024-04-26 15:50:09','Both'),
+ (182,'Individual',NULL,'Santina Olsen',NULL,NULL,'Santina','','Olsen',0,0,0,0,0,0,NULL,'Olsen, Santina',NULL,NULL,NULL,NULL,NULL,'3876725059',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Santina',1,NULL,'Dear Santina',1,NULL,'Santina Olsen',NULL,1,'1962-10-03',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-04-26 15:50:08','2024-04-26 15:50:09','Both'),
+ (183,'Individual',NULL,'Mr. Maxwell Reynolds Sr.',NULL,NULL,'Maxwell','','Reynolds',0,0,0,0,0,0,NULL,'Reynolds, Maxwell',NULL,NULL,NULL,'1',NULL,'1572980564',NULL,'Sample Data',3,2,NULL,NULL,1,NULL,'Dear Maxwell',1,NULL,'Dear Maxwell',1,NULL,'Mr. Maxwell Reynolds Sr.',NULL,NULL,'1982-11-28',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-04-26 15:50:08','2024-04-26 15:50:09','Both'),
+ (184,'Organization',NULL,'Sunland Park Action Fund','Sunland Park Action Fund',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Sunland Park Action Fund',NULL,NULL,NULL,NULL,NULL,'3225878681',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Sunland Park Action Fund',NULL,NULL,NULL,0,NULL,NULL,83,NULL,NULL,NULL,0,'2024-04-26 15:50:08','2024-04-26 15:50:09','Both'),
+ (185,'Individual',NULL,'Winford McReynolds III',NULL,NULL,'Winford','Z','McReynolds',0,0,0,0,1,0,NULL,'McReynolds, Winford',NULL,NULL,NULL,NULL,NULL,'3334322093',NULL,'Sample Data',NULL,4,NULL,NULL,1,NULL,'Dear Winford',1,NULL,'Dear Winford',1,NULL,'Winford McReynolds III',NULL,2,'2013-06-30',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-04-26 15:50:08','2024-04-26 15:50:08','Both'),
+ (186,'Individual',NULL,'Kenny González II','Northpoint Music Systems',NULL,'Kenny','','González',0,0,0,0,0,0,NULL,'González, Kenny',NULL,NULL,NULL,'2',NULL,'2778042534',NULL,'Sample Data',NULL,3,NULL,NULL,1,NULL,'Dear Kenny',1,NULL,'Dear Kenny',1,NULL,'Kenny González II',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,192,0,'2024-04-26 15:50:08','2024-04-26 15:50:09','Both'),
+ (187,'Individual',NULL,'Mr. Jay Prentice',NULL,NULL,'Jay','','Prentice',0,0,0,0,0,0,NULL,'Prentice, Jay',NULL,NULL,NULL,'4',NULL,'748648362',NULL,'Sample Data',3,NULL,NULL,NULL,1,NULL,'Dear Jay',1,NULL,'Dear Jay',1,NULL,'Mr. Jay Prentice',NULL,2,'1952-09-19',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-04-26 15:50:08','2024-04-26 15:50:09','Both'),
+ (188,'Individual',NULL,'kandaces67@mymail.info',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'kandaces67@mymail.info',NULL,NULL,NULL,NULL,NULL,'2464122831',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear kandaces67@mymail.info',1,NULL,'Dear kandaces67@mymail.info',1,NULL,'kandaces67@mymail.info',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-04-26 15:50:08','2024-04-26 15:50:09','Both'),
+ (189,'Individual',NULL,'Mr. Jed González',NULL,NULL,'Jed','C','González',0,0,0,0,1,0,NULL,'González, Jed',NULL,NULL,NULL,NULL,NULL,'517806702',NULL,'Sample Data',3,NULL,NULL,NULL,1,NULL,'Dear Jed',1,NULL,'Dear Jed',1,NULL,'Mr. Jed González',NULL,NULL,'1977-05-20',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-04-26 15:50:08','2024-04-26 15:50:09','Both'),
+ (190,'Individual',NULL,'gonzlez-grant.g.allen@infomail.com',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'gonzlez-grant.g.allen@infomail.com',NULL,NULL,NULL,NULL,NULL,'1964184295',NULL,'Sample Data',3,1,NULL,NULL,1,NULL,'Dear gonzlez-grant.g.allen@infomail.com',1,NULL,'Dear gonzlez-grant.g.allen@infomail.com',1,NULL,'gonzlez-grant.g.allen@infomail.com',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-04-26 15:50:08','2024-04-26 15:50:09','Both'),
+ (191,'Individual',NULL,'Mr. Rosario Roberts',NULL,NULL,'Rosario','R','Roberts',0,0,0,0,0,0,NULL,'Roberts, Rosario',NULL,NULL,NULL,NULL,NULL,'2207993588',NULL,'Sample Data',3,NULL,NULL,NULL,1,NULL,'Dear Rosario',1,NULL,'Dear Rosario',1,NULL,'Mr. Rosario Roberts',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-04-26 15:50:08','2024-04-26 15:50:09','Both'),
+ (192,'Organization',NULL,'Northpoint Music Systems','Northpoint Music Systems',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Northpoint Music Systems',NULL,NULL,NULL,NULL,NULL,'1538237879',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Northpoint Music Systems',NULL,NULL,NULL,0,NULL,NULL,186,NULL,NULL,NULL,0,'2024-04-26 15:50:08','2024-04-26 15:50:09','Both'),
+ (193,'Organization',NULL,'Texas Culture Solutions','Texas Culture Solutions',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Texas Culture Solutions',NULL,NULL,NULL,NULL,NULL,'2389275435',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Texas Culture Solutions',NULL,NULL,NULL,0,NULL,NULL,108,NULL,NULL,NULL,0,'2024-04-26 15:50:08','2024-04-26 15:50:09','Both'),
+ (194,'Individual',NULL,'gonzlez.lawerence@example.net',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'gonzlez.lawerence@example.net',NULL,NULL,NULL,NULL,NULL,'1695987172',NULL,'Sample Data',3,2,NULL,NULL,1,NULL,'Dear gonzlez.lawerence@example.net',1,NULL,'Dear gonzlez.lawerence@example.net',1,NULL,'gonzlez.lawerence@example.net',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-04-26 15:50:08','2024-04-26 15:50:09','Both'),
+ (195,'Individual',NULL,'Dr. Juliann Jacobs',NULL,NULL,'Juliann','M','Jacobs',0,1,0,0,0,0,NULL,'Jacobs, Juliann',NULL,NULL,NULL,NULL,NULL,'3009811288',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Juliann',1,NULL,'Dear Juliann',1,NULL,'Dr. Juliann Jacobs',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-04-26 15:50:08','2024-04-26 15:50:09','Both'),
+ (196,'Individual',NULL,'Laree Cooper',NULL,NULL,'Laree','N','Cooper',0,1,0,0,1,0,NULL,'Cooper, Laree',NULL,NULL,NULL,NULL,NULL,'4213061637',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Laree',1,NULL,'Dear Laree',1,NULL,'Laree Cooper',NULL,NULL,'1938-06-02',1,'2023-09-25',NULL,NULL,NULL,NULL,NULL,0,'2024-04-26 15:50:08','2024-04-26 15:50:08','Both'),
+ (197,'Individual',NULL,'Dr. Daren Cooper',NULL,NULL,'Daren','','Cooper',0,0,0,0,1,0,NULL,'Cooper, Daren',NULL,NULL,NULL,'2',NULL,'1555868236',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Daren',1,NULL,'Dear Daren',1,NULL,'Dr. Daren Cooper',NULL,NULL,'1954-05-01',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-04-26 15:50:08','2024-04-26 15:50:09','Both'),
+ (198,'Individual',NULL,'Laree McReynolds',NULL,NULL,'Laree','','McReynolds',0,0,0,0,0,0,NULL,'McReynolds, Laree',NULL,NULL,NULL,'2',NULL,'206927507',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Laree',1,NULL,'Dear Laree',1,NULL,'Laree McReynolds',NULL,1,'1940-11-21',1,'2023-07-01',NULL,NULL,NULL,NULL,NULL,0,'2024-04-26 15:50:08','2024-04-26 15:50:08','Both'),
+ (199,'Household',NULL,'González-Grant family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,1,0,NULL,'González-Grant family',NULL,NULL,NULL,NULL,NULL,'1848537795',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear González-Grant family',5,NULL,'Dear González-Grant family',2,NULL,'González-Grant family',NULL,NULL,NULL,0,NULL,'González-Grant family',NULL,NULL,NULL,NULL,0,'2024-04-26 15:50:08','2024-04-26 15:50:09','Both'),
+ (200,'Individual',NULL,'Dr. Ashlie Parker',NULL,NULL,'Ashlie','','Parker',0,0,0,0,0,0,NULL,'Parker, Ashlie',NULL,NULL,NULL,NULL,NULL,'1516256819',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Ashlie',1,NULL,'Dear Ashlie',1,NULL,'Dr. Ashlie Parker',NULL,1,'1990-12-03',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-04-26 15:50:08','2024-04-26 15:50:08','Both'),
+ (201,'Individual',NULL,'Ms. Brigette Wagner',NULL,NULL,'Brigette','S','Wagner',0,0,0,0,1,0,NULL,'Wagner, Brigette',NULL,NULL,NULL,'2',NULL,'3285817434',NULL,'Sample Data',2,NULL,NULL,NULL,1,NULL,'Dear Brigette',1,NULL,'Dear Brigette',1,NULL,'Ms. Brigette Wagner',NULL,1,'1944-01-08',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-04-26 15:50:08','2024-04-26 15:50:09','Both'),
+ (202,'Individual',NULL,'Jenny Lee',NULL,NULL,'Jenny',NULL,'Lee',0,0,0,0,0,0,NULL,'Lee, Jenny',NULL,NULL,NULL,NULL,'en_US','244f6934d57a96cfee53696046df2574',NULL,NULL,NULL,NULL,NULL,1,1,NULL,'Dear Jenny',1,NULL,'Dear Jenny',1,NULL,'Jenny Lee','Volunteer coordinator',NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2024-04-26 15:50:10','2024-04-26 15:50:10','Both');
/*!40000 ALTER TABLE `civicrm_contact` ENABLE KEYS */;
UNLOCK TABLES;
@@ -2213,117 +2218,117 @@ UNLOCK TABLES;
LOCK TABLES `civicrm_contribution` WRITE;
/*!40000 ALTER TABLE `civicrm_contribution` DISABLE KEYS */;
INSERT INTO `civicrm_contribution` (`id`, `contact_id`, `financial_type_id`, `contribution_page_id`, `payment_instrument_id`, `receive_date`, `non_deductible_amount`, `total_amount`, `fee_amount`, `net_amount`, `trxn_id`, `invoice_id`, `invoice_number`, `currency`, `cancel_date`, `cancel_reason`, `receipt_date`, `thankyou_date`, `source`, `amount_level`, `contribution_recur_id`, `is_test`, `is_pay_later`, `contribution_status_id`, `address_id`, `check_number`, `campaign_id`, `creditnote_id`, `tax_amount`, `revenue_recognition_date`, `is_template`) VALUES
- (1,2,1,NULL,4,'2014-01-06 04:30:30',0.00,125.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'April Mailer 1',NULL,NULL,0,0,1,NULL,'1041',NULL,NULL,0.00,NULL,0),
- (2,4,1,NULL,1,'2021-10-06 04:30:30',0.00,50.00,NULL,NULL,'P20901X1',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Online: Save the Penguins',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (3,6,1,NULL,4,'2017-12-11 15:30:30',0.00,25.00,NULL,NULL,'GBP12',NULL,NULL,'GBP',NULL,NULL,NULL,NULL,'April Mailer 1',NULL,NULL,0,0,1,NULL,'2095',NULL,NULL,0.00,NULL,0),
- (4,8,1,NULL,4,'2021-10-06 04:30:30',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Online: Save the Penguins',NULL,NULL,0,0,1,NULL,'10552',NULL,NULL,0.00,NULL,0),
- (5,4,1,NULL,1,'2021-10-06 04:30:30',0.00,50.00,NULL,NULL,'Q90901X1',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Online: Save the Penguins',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (6,16,1,NULL,4,'2023-10-13 03:48:30',0.00,500.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'April Mailer 1',NULL,NULL,0,0,1,NULL,'509',NULL,NULL,0.00,NULL,0),
- (7,19,1,NULL,1,'2024-01-04 04:30:30',0.00,1750.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Online: Save the Penguins',NULL,NULL,0,0,1,NULL,'102',NULL,NULL,0.00,NULL,0),
- (8,82,1,NULL,1,'2023-05-14 12:41:30',0.00,50.00,NULL,NULL,'P20193L2',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Online: Save the Penguins',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (9,92,1,NULL,1,'2023-02-06 04:30:30',0.00,10.00,NULL,NULL,'P40232Y3',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Online: Help CiviCRM',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (10,34,1,NULL,1,'2019-08-14 06:30:30',0.00,250.00,NULL,NULL,'P20193L6',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Online: Help CiviCRM',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (11,71,1,NULL,1,'2024-01-05 00:30:30',0.00,500.00,NULL,NULL,'PL71',NULL,NULL,'JPY',NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (12,43,1,NULL,1,'2022-10-05 17:57:10',0.00,50.00,NULL,NULL,'P291X1',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Online: Save the Penguins',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (13,32,1,NULL,1,'2023-10-06 00:00:00',0.00,50.00,NULL,NULL,'PL32I',NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (14,32,1,NULL,1,'2023-11-06 00:00:00',0.00,50.00,NULL,NULL,'PL32II',NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (15,59,1,NULL,1,'2022-10-06 04:30:30',0.00,25.00,NULL,NULL,'PL32I591',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,1,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (16,59,1,NULL,1,'2022-11-06 04:30:30',0.00,25.00,NULL,NULL,'PL32I592',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,1,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (17,59,1,NULL,1,'2022-12-06 04:30:30',0.00,25.00,NULL,NULL,'PL32I593',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,1,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (18,59,1,NULL,1,'2023-01-06 04:30:30',0.00,25.00,NULL,NULL,'PL32I594',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,1,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (19,59,1,NULL,1,'2023-02-06 04:30:30',0.00,25.00,NULL,NULL,'PL32I595',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,1,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (20,59,1,NULL,1,'2023-03-06 04:30:30',0.00,25.00,NULL,NULL,'PL32I596',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,1,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (21,59,1,NULL,1,'2023-04-06 04:30:30',0.00,25.00,NULL,NULL,'PL32I597',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,1,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (22,59,1,NULL,1,'2023-05-06 04:30:30',0.00,25.00,NULL,NULL,'PL32I598',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,1,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (23,59,1,NULL,1,'2023-06-06 04:30:30',0.00,25.00,NULL,NULL,'PL32I599',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,1,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (24,59,1,NULL,1,'2023-07-06 04:30:30',0.00,25.00,NULL,NULL,'PL32I5910',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,1,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (25,59,1,NULL,1,'2023-08-06 04:30:30',0.00,25.00,NULL,NULL,'PL32I5911',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,1,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (26,99,1,NULL,1,'2023-05-06 04:30:30',0.00,10.00,NULL,NULL,'PL32I991',NULL,NULL,'CAD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,2,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (27,99,1,NULL,1,'2023-06-06 04:30:30',0.00,10.00,NULL,NULL,'PL32I992',NULL,NULL,'CAD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,2,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (28,99,1,NULL,1,'2023-07-06 04:30:30',0.00,10.00,NULL,NULL,'PL32I993',NULL,NULL,'CAD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,2,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (29,99,1,NULL,1,'2023-08-06 04:30:30',0.00,10.00,NULL,NULL,'PL32I994',NULL,NULL,'CAD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,2,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (30,99,1,NULL,1,'2023-09-06 04:30:30',0.00,10.00,NULL,NULL,'PL32I995',NULL,NULL,'CAD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,2,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (31,103,1,NULL,1,'2023-12-06 04:30:30',0.00,5.00,NULL,NULL,'PL32I1031',NULL,NULL,'EUR',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,3,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (32,183,2,NULL,1,'2024-01-06 04:30:30',0.00,100.00,NULL,NULL,'d04bebb925f35013',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (33,160,2,NULL,1,'2024-01-06 04:30:30',0.00,50.00,NULL,NULL,'aa84cd6d0c671bf6',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (34,56,2,NULL,1,'2024-01-06 04:30:30',0.00,100.00,NULL,NULL,'85f82bdf993869a9',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (35,157,2,NULL,1,'2024-01-06 04:30:30',0.00,50.00,NULL,NULL,'4d0f515e9744319f',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (36,102,2,NULL,1,'2024-01-06 04:30:30',0.00,100.00,NULL,NULL,'a6e23b5bdacc2556',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (37,41,2,NULL,1,'2024-01-06 04:30:30',0.00,50.00,NULL,NULL,'549daaa33e883987',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (38,22,2,NULL,1,'2024-01-06 04:30:30',0.00,100.00,NULL,NULL,'54ba67e8cd2c5831',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (39,165,2,NULL,1,'2024-01-06 04:30:30',0.00,50.00,NULL,NULL,'82bd65e9cca2891e',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (40,150,2,NULL,1,'2024-01-06 04:30:30',0.00,100.00,NULL,NULL,'72e3d8ab02a88749',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (41,129,2,NULL,1,'2024-01-06 04:30:30',0.00,50.00,NULL,NULL,'83a31e80a72fedf9',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (42,3,2,NULL,1,'2024-01-06 04:30:30',0.00,1200.00,NULL,NULL,'3b7979f46cceaa08',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Lifetime Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (43,11,2,NULL,1,'2024-01-06 04:30:30',0.00,50.00,NULL,NULL,'102f534ba875514c',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (44,42,2,NULL,1,'2024-01-06 04:30:30',0.00,100.00,NULL,NULL,'114664b16c0d05d7',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (45,93,2,NULL,1,'2024-01-06 04:30:30',0.00,50.00,NULL,NULL,'c63f9619b1f6a5da',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (46,65,2,NULL,1,'2024-01-06 04:30:30',0.00,100.00,NULL,NULL,'54afd47a158e6a98',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (47,202,2,NULL,1,'2024-01-06 04:30:30',0.00,50.00,NULL,NULL,'a166d69a85636182',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (48,159,2,NULL,1,'2024-01-06 04:30:30',0.00,100.00,NULL,NULL,'513d0202ba2e33e8',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (49,123,2,NULL,1,'2024-01-06 04:30:30',0.00,50.00,NULL,NULL,'f897088d4040e88b',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (50,38,2,NULL,1,'2024-01-06 04:30:30',0.00,100.00,NULL,NULL,'254358f51b2e2e2e',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (51,78,2,NULL,1,'2024-01-06 04:30:30',0.00,50.00,NULL,NULL,'64d9a20ca6695123',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (52,9,2,NULL,1,'2024-01-06 04:30:30',0.00,100.00,NULL,NULL,'d436781d36642d52',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (53,139,2,NULL,1,'2024-01-06 04:30:30',0.00,1200.00,NULL,NULL,'6a5980462cb6efb4',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Lifetime Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (54,4,2,NULL,1,'2024-01-06 04:30:30',0.00,100.00,NULL,NULL,'c46dd20e75d9cd63',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (55,94,2,NULL,1,'2024-01-06 04:30:30',0.00,50.00,NULL,NULL,'b44f6776a38cd0b0',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (56,35,2,NULL,1,'2024-01-06 04:30:30',0.00,50.00,NULL,NULL,'bdd4ba34f19b8508',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (57,66,2,NULL,1,'2024-01-06 04:30:30',0.00,50.00,NULL,NULL,'243d7aa987a2baa3',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (58,28,2,NULL,1,'2024-01-06 04:30:30',0.00,100.00,NULL,NULL,'c30b782dffc88578',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (59,27,2,NULL,1,'2024-01-06 04:30:30',0.00,50.00,NULL,NULL,'401f0d68db4d1e96',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (60,24,2,NULL,1,'2024-01-06 04:30:30',0.00,100.00,NULL,NULL,'147acd979994a3e5',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (61,188,2,NULL,1,'2024-01-06 04:30:30',0.00,100.00,NULL,NULL,'49e79faa71b04821',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (63,2,4,NULL,1,'2024-01-06 04:30:30',0.00,800.00,NULL,NULL,'e33de35039337003',NULL,NULL,'USD',NULL,NULL,'2024-01-06 04:30:30',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (64,6,4,NULL,1,'2024-01-06 04:30:30',0.00,800.00,NULL,NULL,'fb4905a867502a4b',NULL,NULL,'USD',NULL,NULL,'2024-01-06 04:30:30',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (65,7,4,NULL,1,'2024-01-06 04:30:30',0.00,50.00,NULL,NULL,'f006b49b97550bcf',NULL,NULL,'USD',NULL,NULL,'2024-01-06 04:30:30',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (66,12,4,NULL,1,'2024-01-06 04:30:30',0.00,800.00,NULL,NULL,'2d1e67a9245d5fdc',NULL,NULL,'USD',NULL,NULL,'2024-01-06 04:30:30',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (67,15,4,NULL,1,'2024-01-06 04:30:30',0.00,50.00,NULL,NULL,'121d8980a5da7e03',NULL,NULL,'USD',NULL,NULL,'2024-01-06 04:30:30',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (68,18,4,NULL,1,'2024-01-06 04:30:30',0.00,50.00,NULL,NULL,'f9affcc9daf9f3f3',NULL,NULL,'USD',NULL,NULL,'2024-01-06 04:30:30',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (69,24,4,NULL,1,'2024-01-06 04:30:30',0.00,50.00,NULL,NULL,'785c41d770598228',NULL,NULL,'USD',NULL,NULL,'2024-01-06 04:30:30',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (70,25,4,NULL,1,'2024-01-06 04:30:30',0.00,50.00,NULL,NULL,'213d7fbdd009495b',NULL,NULL,'USD',NULL,NULL,'2024-01-06 04:30:30',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (71,32,4,NULL,1,'2024-01-06 04:30:30',0.00,50.00,NULL,NULL,'5dab449584553811',NULL,NULL,'USD',NULL,NULL,'2024-01-06 04:30:30',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (72,37,4,NULL,1,'2024-01-06 04:30:30',0.00,50.00,NULL,NULL,'bf96d198baa1575a',NULL,NULL,'USD',NULL,NULL,'2024-01-06 04:30:30',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (73,38,4,NULL,1,'2024-01-06 04:30:30',0.00,50.00,NULL,NULL,'7f20752b4fcf16b9',NULL,NULL,'USD',NULL,NULL,'2024-01-06 04:30:30',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (74,41,4,NULL,1,'2024-01-06 04:30:30',0.00,50.00,NULL,NULL,'a5dde0c0ef88b617',NULL,NULL,'USD',NULL,NULL,'2024-01-06 04:30:30',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (75,46,4,NULL,1,'2024-01-06 04:30:30',0.00,800.00,NULL,NULL,'c9bddcb498f240eb',NULL,NULL,'USD',NULL,NULL,'2024-01-06 04:30:30',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (76,47,4,NULL,1,'2024-01-06 04:30:30',0.00,50.00,NULL,NULL,'3c19adb701828ca5',NULL,NULL,'USD',NULL,NULL,'2024-01-06 04:30:30',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (77,50,4,NULL,1,'2024-01-06 04:30:30',0.00,800.00,NULL,NULL,'306134a0c8b767ba',NULL,NULL,'USD',NULL,NULL,'2024-01-06 04:30:30',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (78,62,4,NULL,1,'2024-01-06 04:30:30',0.00,50.00,NULL,NULL,'2d5db36ace9588e4',NULL,NULL,'USD',NULL,NULL,'2024-01-06 04:30:30',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (79,65,4,NULL,1,'2024-01-06 04:30:30',0.00,50.00,NULL,NULL,'1c930ea45e0c1ae4',NULL,NULL,'USD',NULL,NULL,'2024-01-06 04:30:30',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (80,66,4,NULL,1,'2024-01-06 04:30:30',0.00,800.00,NULL,NULL,'bb245dad4d1aef62',NULL,NULL,'USD',NULL,NULL,'2024-01-06 04:30:30',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (81,67,4,NULL,1,'2024-01-06 04:30:30',0.00,50.00,NULL,NULL,'c9d3a804ca680143',NULL,NULL,'USD',NULL,NULL,'2024-01-06 04:30:30',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (82,72,4,NULL,1,'2024-01-06 04:30:30',0.00,800.00,NULL,NULL,'dacf986f91993264',NULL,NULL,'USD',NULL,NULL,'2024-01-06 04:30:30',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (83,75,4,NULL,1,'2024-01-06 04:30:30',0.00,800.00,NULL,NULL,'85e4457d3b235f62',NULL,NULL,'USD',NULL,NULL,'2024-01-06 04:30:30',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (84,77,4,NULL,1,'2024-01-06 04:30:30',0.00,50.00,NULL,NULL,'e146bd83b1233a2d',NULL,NULL,'USD',NULL,NULL,'2024-01-06 04:30:30',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (85,80,4,NULL,1,'2024-01-06 04:30:30',0.00,50.00,NULL,NULL,'983ea229b2e6c29f',NULL,NULL,'USD',NULL,NULL,'2024-01-06 04:30:30',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (86,87,4,NULL,1,'2024-01-06 04:30:30',0.00,50.00,NULL,NULL,'888233d8d87b2292',NULL,NULL,'USD',NULL,NULL,'2024-01-06 04:30:30',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (87,89,4,NULL,1,'2024-01-06 04:30:30',0.00,50.00,NULL,NULL,'bc1bc41100582c43',NULL,NULL,'USD',NULL,NULL,'2024-01-06 04:30:30',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (88,94,4,NULL,1,'2024-01-06 04:30:30',0.00,50.00,NULL,NULL,'356e2ea6f7e138db',NULL,NULL,'USD',NULL,NULL,'2024-01-06 04:30:30',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (89,98,4,NULL,1,'2024-01-06 04:30:30',0.00,800.00,NULL,NULL,'3cd0fcd4bd3c6e9c',NULL,NULL,'USD',NULL,NULL,'2024-01-06 04:30:30',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (90,101,4,NULL,1,'2024-01-06 04:30:30',0.00,50.00,NULL,NULL,'f0f1369ed8bd6ade',NULL,NULL,'USD',NULL,NULL,'2024-01-06 04:30:30',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (91,103,4,NULL,1,'2024-01-06 04:30:30',0.00,800.00,NULL,NULL,'ed7b07c140ba59ce',NULL,NULL,'USD',NULL,NULL,'2024-01-06 04:30:30',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (92,111,4,NULL,1,'2024-01-06 04:30:30',0.00,800.00,NULL,NULL,'ee67cf60826046ab',NULL,NULL,'USD',NULL,NULL,'2024-01-06 04:30:30',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (93,114,4,NULL,1,'2024-01-06 04:30:30',0.00,50.00,NULL,NULL,'fd8a5608dfc8fd90',NULL,NULL,'USD',NULL,NULL,'2024-01-06 04:30:30',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (94,118,4,NULL,1,'2024-01-06 04:30:30',0.00,800.00,NULL,NULL,'376e6c1d14da650c',NULL,NULL,'USD',NULL,NULL,'2024-01-06 04:30:30',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (95,125,4,NULL,1,'2024-01-06 04:30:30',0.00,50.00,NULL,NULL,'d601f86d7d4ac5f0',NULL,NULL,'USD',NULL,NULL,'2024-01-06 04:30:30',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (96,138,4,NULL,1,'2024-01-06 04:30:30',0.00,50.00,NULL,NULL,'45dd6c0b12692902',NULL,NULL,'USD',NULL,NULL,'2024-01-06 04:30:30',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (97,144,4,NULL,1,'2024-01-06 04:30:30',0.00,50.00,NULL,NULL,'dd75be522b0c3b37',NULL,NULL,'USD',NULL,NULL,'2024-01-06 04:30:30',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (98,147,4,NULL,1,'2024-01-06 04:30:30',0.00,800.00,NULL,NULL,'c05415199bd45c2e',NULL,NULL,'USD',NULL,NULL,'2024-01-06 04:30:30',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (99,148,4,NULL,1,'2024-01-06 04:30:30',0.00,50.00,NULL,NULL,'0c13497f46c6bb46',NULL,NULL,'USD',NULL,NULL,'2024-01-06 04:30:30',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (100,152,4,NULL,1,'2024-01-06 04:30:30',0.00,50.00,NULL,NULL,'1fc5dfd486634955',NULL,NULL,'USD',NULL,NULL,'2024-01-06 04:30:30',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (101,161,4,NULL,1,'2024-01-06 04:30:30',0.00,50.00,NULL,NULL,'894bf74b96303bc8',NULL,NULL,'USD',NULL,NULL,'2024-01-06 04:30:30',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (102,162,4,NULL,1,'2024-01-06 04:30:30',0.00,50.00,NULL,NULL,'2867fa3f312390e3',NULL,NULL,'USD',NULL,NULL,'2024-01-06 04:30:30',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (103,167,4,NULL,1,'2024-01-06 04:30:30',0.00,50.00,NULL,NULL,'6237b3b4d3156e7f',NULL,NULL,'USD',NULL,NULL,'2024-01-06 04:30:30',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (104,183,4,NULL,1,'2024-01-06 04:30:30',0.00,800.00,NULL,NULL,'5f71b04aa74cef80',NULL,NULL,'USD',NULL,NULL,'2024-01-06 04:30:30',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (105,184,4,NULL,1,'2024-01-06 04:30:30',0.00,800.00,NULL,NULL,'98746c0f1879a8b3',NULL,NULL,'USD',NULL,NULL,'2024-01-06 04:30:30',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (106,185,4,NULL,1,'2024-01-06 04:30:30',0.00,50.00,NULL,NULL,'ba540bde6a24512f',NULL,NULL,'USD',NULL,NULL,'2024-01-06 04:30:30',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (107,187,4,NULL,1,'2024-01-06 04:30:30',0.00,50.00,NULL,NULL,'a52ae21e1127264b',NULL,NULL,'USD',NULL,NULL,'2024-01-06 04:30:30',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (108,189,4,NULL,1,'2024-01-06 04:30:30',0.00,800.00,NULL,NULL,'2170e40ef82e30ed',NULL,NULL,'USD',NULL,NULL,'2024-01-06 04:30:30',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (109,190,4,NULL,1,'2024-01-06 04:30:30',0.00,800.00,NULL,NULL,'0dd4e5033a7eaf87',NULL,NULL,'USD',NULL,NULL,'2024-01-06 04:30:30',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (110,192,4,NULL,1,'2024-01-06 04:30:30',0.00,50.00,NULL,NULL,'9e971d6e58baa4ba',NULL,NULL,'USD',NULL,NULL,'2024-01-06 04:30:30',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (111,201,4,NULL,1,'2024-01-06 04:30:30',0.00,800.00,NULL,NULL,'fb14ee1572cd5300',NULL,NULL,'USD',NULL,NULL,'2024-01-06 04:30:30',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
- (112,202,4,NULL,1,'2024-01-06 04:30:30',0.00,50.00,NULL,NULL,'6e6b62f0b3b1560f',NULL,NULL,'USD',NULL,NULL,'2024-01-06 04:30:30',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0);
+ (1,2,1,NULL,4,'2014-04-26 15:50:11',0.00,125.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'April Mailer 1',NULL,NULL,0,0,1,NULL,'1041',NULL,NULL,0.00,NULL,0),
+ (2,4,1,NULL,1,'2022-01-26 15:50:11',0.00,50.00,NULL,NULL,'P20901X1',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Online: Save the Penguins',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (3,6,1,NULL,4,'2018-04-01 02:50:11',0.00,25.00,NULL,NULL,'GBP12',NULL,NULL,'GBP',NULL,NULL,NULL,NULL,'April Mailer 1',NULL,NULL,0,0,1,NULL,'2095',NULL,NULL,0.00,NULL,0),
+ (4,8,1,NULL,4,'2022-01-26 15:50:11',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Online: Save the Penguins',NULL,NULL,0,0,1,NULL,'10552',NULL,NULL,0.00,NULL,0),
+ (5,4,1,NULL,1,'2022-01-26 15:50:11',0.00,50.00,NULL,NULL,'Q90901X1',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Online: Save the Penguins',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (6,16,1,NULL,4,'2024-02-01 15:08:11',0.00,500.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'April Mailer 1',NULL,NULL,0,0,1,NULL,'509',NULL,NULL,0.00,NULL,0),
+ (7,19,1,NULL,1,'2024-04-24 15:50:11',0.00,1750.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Online: Save the Penguins',NULL,NULL,0,0,1,NULL,'102',NULL,NULL,0.00,NULL,0),
+ (8,82,1,NULL,1,'2023-09-03 00:01:11',0.00,50.00,NULL,NULL,'P20193L2',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Online: Save the Penguins',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (9,92,1,NULL,1,'2023-05-26 15:50:11',0.00,10.00,NULL,NULL,'P40232Y3',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Online: Help CiviCRM',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (10,34,1,NULL,1,'2019-12-03 17:50:11',0.00,250.00,NULL,NULL,'P20193L6',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Online: Help CiviCRM',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (11,71,1,NULL,1,'2024-04-25 11:50:11',0.00,500.00,NULL,NULL,'PL71',NULL,NULL,'JPY',NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (12,43,1,NULL,1,'2023-01-26 05:16:51',0.00,50.00,NULL,NULL,'P291X1',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Online: Save the Penguins',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (13,32,1,NULL,1,'2024-01-26 00:00:00',0.00,50.00,NULL,NULL,'PL32I',NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (14,32,1,NULL,1,'2024-02-26 00:00:00',0.00,50.00,NULL,NULL,'PL32II',NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (15,59,1,NULL,1,'2023-01-26 15:50:11',0.00,25.00,NULL,NULL,'PL32I591',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,1,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (16,59,1,NULL,1,'2023-02-26 15:50:11',0.00,25.00,NULL,NULL,'PL32I592',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,1,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (17,59,1,NULL,1,'2023-03-26 15:50:11',0.00,25.00,NULL,NULL,'PL32I593',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,1,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (18,59,1,NULL,1,'2023-04-26 15:50:11',0.00,25.00,NULL,NULL,'PL32I594',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,1,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (19,59,1,NULL,1,'2023-05-26 15:50:11',0.00,25.00,NULL,NULL,'PL32I595',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,1,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (20,59,1,NULL,1,'2023-06-26 15:50:11',0.00,25.00,NULL,NULL,'PL32I596',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,1,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (21,59,1,NULL,1,'2023-07-26 15:50:11',0.00,25.00,NULL,NULL,'PL32I597',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,1,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (22,59,1,NULL,1,'2023-08-26 15:50:11',0.00,25.00,NULL,NULL,'PL32I598',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,1,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (23,59,1,NULL,1,'2023-09-26 15:50:11',0.00,25.00,NULL,NULL,'PL32I599',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,1,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (24,59,1,NULL,1,'2023-10-26 15:50:11',0.00,25.00,NULL,NULL,'PL32I5910',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,1,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (25,59,1,NULL,1,'2023-11-26 15:50:11',0.00,25.00,NULL,NULL,'PL32I5911',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,1,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (26,99,1,NULL,1,'2023-08-26 15:50:11',0.00,10.00,NULL,NULL,'PL32I991',NULL,NULL,'CAD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,2,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (27,99,1,NULL,1,'2023-09-26 15:50:11',0.00,10.00,NULL,NULL,'PL32I992',NULL,NULL,'CAD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,2,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (28,99,1,NULL,1,'2023-10-26 15:50:11',0.00,10.00,NULL,NULL,'PL32I993',NULL,NULL,'CAD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,2,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (29,99,1,NULL,1,'2023-11-26 15:50:11',0.00,10.00,NULL,NULL,'PL32I994',NULL,NULL,'CAD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,2,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (30,99,1,NULL,1,'2023-12-26 15:50:11',0.00,10.00,NULL,NULL,'PL32I995',NULL,NULL,'CAD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,2,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (31,103,1,NULL,1,'2024-03-26 15:50:11',0.00,5.00,NULL,NULL,'PL32I1031',NULL,NULL,'EUR',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,3,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (32,194,2,NULL,1,'2024-04-26 15:50:11',0.00,100.00,NULL,NULL,'b5a1f057208f5a91',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (33,87,2,NULL,1,'2024-04-26 15:50:11',0.00,50.00,NULL,NULL,'04200bff0203f12b',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (34,60,2,NULL,1,'2024-04-26 15:50:11',0.00,100.00,NULL,NULL,'9bdcc5ddeda8a520',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (35,190,2,NULL,1,'2024-04-26 15:50:11',0.00,50.00,NULL,NULL,'c609360e57109b79',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (36,5,2,NULL,1,'2024-04-26 15:50:11',0.00,50.00,NULL,NULL,'4c6f53503b7cb0ab',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (37,13,2,NULL,1,'2024-04-26 15:50:11',0.00,50.00,NULL,NULL,'11e1d593feccae66',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (38,112,2,NULL,1,'2024-04-26 15:50:11',0.00,100.00,NULL,NULL,'566c8d0eaa230008',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (39,115,2,NULL,1,'2024-04-26 15:50:11',0.00,50.00,NULL,NULL,'5f3a2b9681b9191d',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (40,201,2,NULL,1,'2024-04-26 15:50:11',0.00,100.00,NULL,NULL,'9d3f65600f92e622',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (41,128,2,NULL,1,'2024-04-26 15:50:11',0.00,100.00,NULL,NULL,'5d51964f045bfc50',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (42,43,2,NULL,1,'2024-04-26 15:50:11',0.00,1200.00,NULL,NULL,'37571dfcbd354f51',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Lifetime Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (43,4,2,NULL,1,'2024-04-26 15:50:11',0.00,50.00,NULL,NULL,'372fd8fed5180672',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (44,142,2,NULL,1,'2024-04-26 15:50:11',0.00,100.00,NULL,NULL,'69e3ac0aed8b096e',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (45,160,2,NULL,1,'2024-04-26 15:50:11',0.00,50.00,NULL,NULL,'849a688d25f2104b',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (46,65,2,NULL,1,'2024-04-26 15:50:11',0.00,100.00,NULL,NULL,'f2b8bd135e9d8647',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (47,159,2,NULL,1,'2024-04-26 15:50:11',0.00,50.00,NULL,NULL,'a88ca39c8d59289a',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (48,20,2,NULL,1,'2024-04-26 15:50:11',0.00,100.00,NULL,NULL,'a35f43b2180dc9b8',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (49,120,2,NULL,1,'2024-04-26 15:50:11',0.00,50.00,NULL,NULL,'ee7d28b0fcbd3565',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (50,200,2,NULL,1,'2024-04-26 15:50:11',0.00,100.00,NULL,NULL,'fb9f821467c5e4fc',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (51,140,2,NULL,1,'2024-04-26 15:50:11',0.00,100.00,NULL,NULL,'6335cfc1d9871c1b',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (52,62,2,NULL,1,'2024-04-26 15:50:11',0.00,100.00,NULL,NULL,'4a4b1b66ffae3b2c',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (53,155,2,NULL,1,'2024-04-26 15:50:11',0.00,1200.00,NULL,NULL,'a907f68f10ede934',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Lifetime Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (54,75,2,NULL,1,'2024-04-26 15:50:11',0.00,100.00,NULL,NULL,'2e3ca93d825f20d9',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (55,202,2,NULL,1,'2024-04-26 15:50:11',0.00,50.00,NULL,NULL,'4f5e7edcdf368aea',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (56,71,2,NULL,1,'2024-04-26 15:50:11',0.00,50.00,NULL,NULL,'bd0ce735fc8dc0c6',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (57,39,2,NULL,1,'2024-04-26 15:50:11',0.00,50.00,NULL,NULL,'0c44ffa31ddbf75a',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (58,107,2,NULL,1,'2024-04-26 15:50:11',0.00,100.00,NULL,NULL,'1444e63322cdf98b',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (59,116,2,NULL,1,'2024-04-26 15:50:11',0.00,50.00,NULL,NULL,'0c09b3b4fdb01b27',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (60,166,2,NULL,1,'2024-04-26 15:50:11',0.00,100.00,NULL,NULL,'803a2c4aef4f6525',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (61,50,2,NULL,1,'2024-04-26 15:50:11',0.00,50.00,NULL,NULL,'a73f415d7191472d',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (63,51,4,NULL,1,'2024-04-26 15:50:11',0.00,50.00,NULL,NULL,'74a98451297ed311',NULL,NULL,'USD',NULL,NULL,'2024-04-26 15:50:11',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (64,34,4,NULL,1,'2024-04-26 15:50:11',0.00,50.00,NULL,NULL,'ef3979bae5fa5259',NULL,NULL,'USD',NULL,NULL,'2024-04-26 15:50:11',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (65,193,4,NULL,1,'2024-04-26 15:50:11',0.00,800.00,NULL,NULL,'08803a9e355cc4e5',NULL,NULL,'USD',NULL,NULL,'2024-04-26 15:50:11',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (66,153,4,NULL,1,'2024-04-26 15:50:11',0.00,50.00,NULL,NULL,'2d3a6db93c7f6bd1',NULL,NULL,'USD',NULL,NULL,'2024-04-26 15:50:11',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (67,62,4,NULL,1,'2024-04-26 15:50:11',0.00,50.00,NULL,NULL,'715572a10c53ced9',NULL,NULL,'USD',NULL,NULL,'2024-04-26 15:50:11',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (68,132,4,NULL,1,'2024-04-26 15:50:11',0.00,800.00,NULL,NULL,'f4b86efdd60681d5',NULL,NULL,'USD',NULL,NULL,'2024-04-26 15:50:11',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (69,35,4,NULL,1,'2024-04-26 15:50:11',0.00,50.00,NULL,NULL,'df890dda694d5b76',NULL,NULL,'USD',NULL,NULL,'2024-04-26 15:50:11',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (70,95,4,NULL,1,'2024-04-26 15:50:11',0.00,50.00,NULL,NULL,'3215d0da8c4ce892',NULL,NULL,'USD',NULL,NULL,'2024-04-26 15:50:11',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (71,81,4,NULL,1,'2024-04-26 15:50:11',0.00,800.00,NULL,NULL,'79d4dbb475e83ba5',NULL,NULL,'USD',NULL,NULL,'2024-04-26 15:50:11',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (72,75,4,NULL,1,'2024-04-26 15:50:11',0.00,50.00,NULL,NULL,'fc054807180e31b5',NULL,NULL,'USD',NULL,NULL,'2024-04-26 15:50:11',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (73,54,4,NULL,1,'2024-04-26 15:50:11',0.00,50.00,NULL,NULL,'0ad5ea9ad6aed4a6',NULL,NULL,'USD',NULL,NULL,'2024-04-26 15:50:11',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (74,113,4,NULL,1,'2024-04-26 15:50:11',0.00,800.00,NULL,NULL,'1f1e675c4ed0ab6d',NULL,NULL,'USD',NULL,NULL,'2024-04-26 15:50:11',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (75,156,4,NULL,1,'2024-04-26 15:50:11',0.00,50.00,NULL,NULL,'7d6d1c9a9905405f',NULL,NULL,'USD',NULL,NULL,'2024-04-26 15:50:11',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (76,123,4,NULL,1,'2024-04-26 15:50:11',0.00,50.00,NULL,NULL,'39ef698d0a9fa817',NULL,NULL,'USD',NULL,NULL,'2024-04-26 15:50:11',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (77,101,4,NULL,1,'2024-04-26 15:50:11',0.00,800.00,NULL,NULL,'6cfbb070c8b03fbf',NULL,NULL,'USD',NULL,NULL,'2024-04-26 15:50:11',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (78,146,4,NULL,1,'2024-04-26 15:50:11',0.00,50.00,NULL,NULL,'540bff0df0925751',NULL,NULL,'USD',NULL,NULL,'2024-04-26 15:50:11',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (79,163,4,NULL,1,'2024-04-26 15:50:11',0.00,50.00,NULL,NULL,'815f109b17f31db2',NULL,NULL,'USD',NULL,NULL,'2024-04-26 15:50:11',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (80,11,4,NULL,1,'2024-04-26 15:50:11',0.00,800.00,NULL,NULL,'22d294eb3cea5959',NULL,NULL,'USD',NULL,NULL,'2024-04-26 15:50:11',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (81,87,4,NULL,1,'2024-04-26 15:50:11',0.00,50.00,NULL,NULL,'c18f74ca873f6019',NULL,NULL,'USD',NULL,NULL,'2024-04-26 15:50:11',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (82,10,4,NULL,1,'2024-04-26 15:50:11',0.00,50.00,NULL,NULL,'8195591eb560bc4d',NULL,NULL,'USD',NULL,NULL,'2024-04-26 15:50:11',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (83,195,4,NULL,1,'2024-04-26 15:50:11',0.00,800.00,NULL,NULL,'2424577915fd9766',NULL,NULL,'USD',NULL,NULL,'2024-04-26 15:50:11',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (84,129,4,NULL,1,'2024-04-26 15:50:11',0.00,50.00,NULL,NULL,'b1470cef41e4c3cb',NULL,NULL,'USD',NULL,NULL,'2024-04-26 15:50:11',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (85,8,4,NULL,1,'2024-04-26 15:50:11',0.00,50.00,NULL,NULL,'619b7759d6e32711',NULL,NULL,'USD',NULL,NULL,'2024-04-26 15:50:11',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (86,158,4,NULL,1,'2024-04-26 15:50:11',0.00,800.00,NULL,NULL,'4cbf9af362859f59',NULL,NULL,'USD',NULL,NULL,'2024-04-26 15:50:11',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (87,93,4,NULL,1,'2024-04-26 15:50:11',0.00,800.00,NULL,NULL,'44a5024cef66c06d',NULL,NULL,'USD',NULL,NULL,'2024-04-26 15:50:11',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (88,22,4,NULL,1,'2024-04-26 15:50:11',0.00,50.00,NULL,NULL,'59f65a58649cf3a4',NULL,NULL,'USD',NULL,NULL,'2024-04-26 15:50:11',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (89,60,4,NULL,1,'2024-04-26 15:50:11',0.00,50.00,NULL,NULL,'d9ec4cad79a91ddb',NULL,NULL,'USD',NULL,NULL,'2024-04-26 15:50:11',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (90,182,4,NULL,1,'2024-04-26 15:50:11',0.00,800.00,NULL,NULL,'8bf39427a743d80c',NULL,NULL,'USD',NULL,NULL,'2024-04-26 15:50:11',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (91,152,4,NULL,1,'2024-04-26 15:50:11',0.00,50.00,NULL,NULL,'925afe959c4ad2d6',NULL,NULL,'USD',NULL,NULL,'2024-04-26 15:50:11',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (92,26,4,NULL,1,'2024-04-26 15:50:11',0.00,50.00,NULL,NULL,'3bffd940b5c1d2d6',NULL,NULL,'USD',NULL,NULL,'2024-04-26 15:50:11',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (93,79,4,NULL,1,'2024-04-26 15:50:11',0.00,800.00,NULL,NULL,'b17b0c95a3657e18',NULL,NULL,'USD',NULL,NULL,'2024-04-26 15:50:11',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (94,70,4,NULL,1,'2024-04-26 15:50:11',0.00,50.00,NULL,NULL,'4a7e3c62eb8fa913',NULL,NULL,'USD',NULL,NULL,'2024-04-26 15:50:11',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (95,57,4,NULL,1,'2024-04-26 15:50:11',0.00,50.00,NULL,NULL,'f96ff6fa694afa82',NULL,NULL,'USD',NULL,NULL,'2024-04-26 15:50:11',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (96,28,4,NULL,1,'2024-04-26 15:50:11',0.00,800.00,NULL,NULL,'556f2376af926b0c',NULL,NULL,'USD',NULL,NULL,'2024-04-26 15:50:11',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (97,186,4,NULL,1,'2024-04-26 15:50:11',0.00,50.00,NULL,NULL,'876780d3d4b6e328',NULL,NULL,'USD',NULL,NULL,'2024-04-26 15:50:11',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (98,6,4,NULL,1,'2024-04-26 15:50:11',0.00,50.00,NULL,NULL,'1cbfab3eb27c53a6',NULL,NULL,'USD',NULL,NULL,'2024-04-26 15:50:11',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (99,114,4,NULL,1,'2024-04-26 15:50:11',0.00,800.00,NULL,NULL,'001ad0270c003a8b',NULL,NULL,'USD',NULL,NULL,'2024-04-26 15:50:11',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (100,41,4,NULL,1,'2024-04-26 15:50:11',0.00,50.00,NULL,NULL,'7e326126f20083b2',NULL,NULL,'USD',NULL,NULL,'2024-04-26 15:50:11',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (101,21,4,NULL,1,'2024-04-26 15:50:11',0.00,50.00,NULL,NULL,'98cdfabd8ef63498',NULL,NULL,'USD',NULL,NULL,'2024-04-26 15:50:11',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (102,72,4,NULL,1,'2024-04-26 15:50:11',0.00,800.00,NULL,NULL,'cd5ca6b847a015c6',NULL,NULL,'USD',NULL,NULL,'2024-04-26 15:50:11',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (103,171,4,NULL,1,'2024-04-26 15:50:11',0.00,50.00,NULL,NULL,'1de1101df072cb5b',NULL,NULL,'USD',NULL,NULL,'2024-04-26 15:50:11',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (104,3,4,NULL,1,'2024-04-26 15:50:11',0.00,50.00,NULL,NULL,'e36426bbfb2db460',NULL,NULL,'USD',NULL,NULL,'2024-04-26 15:50:11',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (105,177,4,NULL,1,'2024-04-26 15:50:11',0.00,800.00,NULL,NULL,'01103a74844523b1',NULL,NULL,'USD',NULL,NULL,'2024-04-26 15:50:11',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (106,176,4,NULL,1,'2024-04-26 15:50:11',0.00,50.00,NULL,NULL,'89460233cf2bc979',NULL,NULL,'USD',NULL,NULL,'2024-04-26 15:50:11',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (107,18,4,NULL,1,'2024-04-26 15:50:11',0.00,50.00,NULL,NULL,'b35e37ceebbcdb51',NULL,NULL,'USD',NULL,NULL,'2024-04-26 15:50:11',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (108,194,4,NULL,1,'2024-04-26 15:50:11',0.00,800.00,NULL,NULL,'45cc2fa538a41cba',NULL,NULL,'USD',NULL,NULL,'2024-04-26 15:50:11',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (109,181,4,NULL,1,'2024-04-26 15:50:11',0.00,50.00,NULL,NULL,'e8b5e4f2432d35c1',NULL,NULL,'USD',NULL,NULL,'2024-04-26 15:50:11',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (110,78,4,NULL,1,'2024-04-26 15:50:11',0.00,50.00,NULL,NULL,'1aea5132eeee329a',NULL,NULL,'USD',NULL,NULL,'2024-04-26 15:50:11',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (111,67,4,NULL,1,'2024-04-26 15:50:11',0.00,800.00,NULL,NULL,'0cfc5f84ff9fddf2',NULL,NULL,'USD',NULL,NULL,'2024-04-26 15:50:11',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0),
+ (112,20,4,NULL,1,'2024-04-26 15:50:11',0.00,800.00,NULL,NULL,'391ce58e0ed19572',NULL,NULL,'USD',NULL,NULL,'2024-04-26 15:50:11',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0);
/*!40000 ALTER TABLE `civicrm_contribution` ENABLE KEYS */;
UNLOCK TABLES;
@@ -2356,9 +2361,9 @@ UNLOCK TABLES;
LOCK TABLES `civicrm_contribution_recur` WRITE;
/*!40000 ALTER TABLE `civicrm_contribution_recur` DISABLE KEYS */;
INSERT INTO `civicrm_contribution_recur` (`id`, `contact_id`, `amount`, `currency`, `frequency_unit`, `frequency_interval`, `installments`, `start_date`, `create_date`, `modified_date`, `cancel_date`, `cancel_reason`, `end_date`, `processor_id`, `payment_token_id`, `trxn_id`, `invoice_id`, `contribution_status_id`, `is_test`, `cycle_day`, `next_sched_contribution_date`, `failure_count`, `failure_retry_date`, `auto_renew`, `payment_processor_id`, `financial_type_id`, `payment_instrument_id`, `campaign_id`, `is_email_receipt`) VALUES
- (1,59,25.00,'USD','month',1,12,'2022-10-06 04:30:30','2024-01-06 04:30:30','2024-01-06 04:30:30',NULL,'',NULL,'CLC45',NULL,'56799',NULL,1,0,1,NULL,0,NULL,0,1,NULL,NULL,NULL,1),
- (2,99,10.00,'CAD','month',1,6,'2023-05-06 04:30:30','2024-01-06 04:30:30','2024-01-06 04:30:30','2023-12-06 04:30:30','No longer interested',NULL,'CLR35',NULL,'22799',NULL,3,0,1,NULL,0,NULL,0,1,NULL,NULL,NULL,1),
- (3,103,5.00,'EUR','month',3,3,'2023-12-06 04:30:30','2024-01-06 04:30:30','2024-01-06 04:30:30',NULL,'',NULL,'EGR12',NULL,'44889',NULL,5,0,1,'2024-03-06 04:30:30',0,NULL,0,1,NULL,NULL,NULL,1);
+ (1,59,25.00,'USD','month',1,12,'2023-01-26 15:50:11','2024-04-26 15:50:11','2024-04-26 15:50:11',NULL,'',NULL,'CLC45',NULL,'56799',NULL,1,0,1,NULL,0,NULL,0,1,NULL,NULL,NULL,1),
+ (2,99,10.00,'CAD','month',1,6,'2023-08-26 15:50:11','2024-04-26 15:50:11','2024-04-26 15:50:11','2024-03-26 15:50:11','No longer interested',NULL,'CLR35',NULL,'22799',NULL,3,0,1,NULL,0,NULL,0,1,NULL,NULL,NULL,1),
+ (3,103,5.00,'EUR','month',3,3,'2024-03-26 15:50:11','2024-04-26 15:50:11','2024-04-26 15:50:11',NULL,'',NULL,'EGR12',NULL,'44889',NULL,5,0,1,'2024-06-26 15:50:11',0,NULL,0,1,NULL,NULL,NULL,1);
/*!40000 ALTER TABLE `civicrm_contribution_recur` ENABLE KEYS */;
UNLOCK TABLES;
@@ -2369,8 +2374,8 @@ UNLOCK TABLES;
LOCK TABLES `civicrm_contribution_soft` WRITE;
/*!40000 ALTER TABLE `civicrm_contribution_soft` DISABLE KEYS */;
INSERT INTO `civicrm_contribution_soft` (`id`, `contribution_id`, `contact_id`, `amount`, `currency`, `pcp_id`, `pcp_display_in_roll`, `pcp_roll_nickname`, `pcp_personal_note`, `soft_credit_type_id`) VALUES
- (1,9,86,10.00,'USD',1,1,'Jones Family','Helping Hands',10),
- (2,10,86,250.00,'USD',1,1,'Annie and the kids','Annie Helps',10);
+ (1,9,89,10.00,'USD',1,1,'Jones Family','Helping Hands',10),
+ (2,10,89,250.00,'USD',1,1,'Annie and the kids','Annie Helps',10);
/*!40000 ALTER TABLE `civicrm_contribution_soft` ENABLE KEYS */;
UNLOCK TABLES;
@@ -2968,7 +2973,7 @@ UNLOCK TABLES;
LOCK TABLES `civicrm_domain` WRITE;
/*!40000 ALTER TABLE `civicrm_domain` DISABLE KEYS */;
INSERT INTO `civicrm_domain` (`id`, `name`, `description`, `version`, `contact_id`, `locales`, `locale_custom_strings`) VALUES
- (1,'Default Domain Name',NULL,'5.70.2',1,NULL,'a:1:{s:5:\"en_US\";a:0:{}}');
+ (1,'Default Domain Name',NULL,'5.74.4',1,NULL,'a:1:{s:5:\"en_US\";a:0:{}}');
/*!40000 ALTER TABLE `civicrm_domain` ENABLE KEYS */;
UNLOCK TABLES;
@@ -2980,183 +2985,183 @@ LOCK TABLES `civicrm_email` WRITE;
/*!40000 ALTER TABLE `civicrm_email` DISABLE KEYS */;
INSERT INTO `civicrm_email` (`id`, `contact_id`, `location_type_id`, `email`, `is_primary`, `is_billing`, `on_hold`, `is_bulkmail`, `hold_date`, `reset_date`, `signature_text`, `signature_html`) VALUES
(1,1,1,'fixme.domainemail@example.org',1,0,0,0,NULL,NULL,NULL,NULL),
- (2,120,1,'loublackwell@testmail.com',1,0,0,0,NULL,NULL,NULL,NULL),
- (3,130,1,'npatel@notmail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),
- (4,130,1,'nicolepatel43@spamalot.co.in',0,0,0,0,NULL,NULL,NULL,NULL),
- (5,99,1,'margaretblackwell@testing.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),
- (6,99,1,'margaretblackwell80@notmail.co.in',0,0,0,0,NULL,NULL,NULL,NULL),
- (7,37,1,'barkley.k.allen42@fakemail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),
- (8,92,1,'cblackwell55@notmail.com',1,0,0,0,NULL,NULL,NULL,NULL),
- (9,92,1,'clintb@fishmail.co.in',0,0,0,0,NULL,NULL,NULL,NULL),
- (10,53,1,'reynolds.barry@testing.net',1,0,0,0,NULL,NULL,NULL,NULL),
- (11,53,1,'reynolds.barry85@infomail.biz',0,0,0,0,NULL,NULL,NULL,NULL),
- (12,196,1,'santinad15@lol.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),
- (13,196,1,'santinadaz80@mymail.net',0,0,0,0,NULL,NULL,NULL,NULL),
- (14,165,1,'cooper.lincoln76@airmail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),
- (15,46,1,'roberts.kandace72@fishmail.co.in',1,0,0,0,NULL,NULL,NULL,NULL),
- (16,46,1,'roberts.kandace@lol.com',0,0,0,0,NULL,NULL,NULL,NULL),
- (17,190,1,'bernadetteg@mymail.com',1,0,0,0,NULL,NULL,NULL,NULL),
- (18,200,1,'ak.samuels@sample.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),
- (19,183,1,'zopel@testmail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),
- (20,176,1,'terry.kathlyn@lol.net',1,0,0,0,NULL,NULL,NULL,NULL),
- (21,176,1,'terry.w.kathlyn@testing.info',0,0,0,0,NULL,NULL,NULL,NULL),
- (22,22,1,'elbertdeforest@testmail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),
- (23,22,1,'deforest.d.elbert31@notmail.co.uk',0,0,0,0,NULL,NULL,NULL,NULL),
- (24,110,1,'tanyasamuels@fakemail.org',1,0,0,0,NULL,NULL,NULL,NULL),
- (25,110,1,'tsamuels61@mymail.co.nz',0,0,0,0,NULL,NULL,NULL,NULL),
- (26,133,1,'wilson.norris@spamalot.co.in',1,0,0,0,NULL,NULL,NULL,NULL),
- (27,47,1,'bachman.tanya70@sample.com',1,0,0,0,NULL,NULL,NULL,NULL),
- (28,47,1,'bachman.tanya@mymail.co.in',0,0,0,0,NULL,NULL,NULL,NULL),
- (29,85,1,'barkleyj55@sample.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),
- (30,101,1,'zope.valene31@spamalot.org',1,0,0,0,NULL,NULL,NULL,NULL),
- (31,101,1,'vzope@notmail.biz',0,0,0,0,NULL,NULL,NULL,NULL),
- (32,15,1,'loureynolds45@lol.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),
- (33,15,1,'reynoldsl51@lol.info',0,0,0,0,NULL,NULL,NULL,NULL),
- (34,77,1,'chowski.teddy92@testing.net',1,0,0,0,NULL,NULL,NULL,NULL),
- (35,77,1,'chowski.teddy39@fishmail.org',0,0,0,0,NULL,NULL,NULL,NULL),
- (36,50,1,'nielsen.q.ivey73@fishmail.org',1,0,0,0,NULL,NULL,NULL,NULL),
- (37,164,1,'merriegrant87@sample.com',1,0,0,0,NULL,NULL,NULL,NULL),
- (38,192,1,'brzczysawterrell28@testing.net',1,0,0,0,NULL,NULL,NULL,NULL),
- (39,192,1,'terrell.m.brzczysaw@lol.co.nz',0,0,0,0,NULL,NULL,NULL,NULL),
- (40,75,1,'ivanov.omar@spamalot.co.in',1,0,0,0,NULL,NULL,NULL,NULL),
- (41,75,1,'ob.ivanov91@testing.co.uk',0,0,0,0,NULL,NULL,NULL,NULL),
- (42,19,1,'ashleyprentice@fishmail.org',1,0,0,0,NULL,NULL,NULL,NULL),
- (43,19,1,'prentice.ashley@lol.co.uk',0,0,0,0,NULL,NULL,NULL,NULL),
- (44,146,1,'chowski.jay@fishmail.biz',1,0,0,0,NULL,NULL,NULL,NULL),
- (45,106,1,'olsen.x.angelika70@airmail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),
- (46,71,1,'valened60@airmail.org',1,0,0,0,NULL,NULL,NULL,NULL),
- (47,14,1,'robertsi@sample.net',1,0,0,0,NULL,NULL,NULL,NULL),
- (48,34,1,'andrewgonzlez@testmail.biz',1,0,0,0,NULL,NULL,NULL,NULL),
- (49,34,1,'andrewgonzlez@fishmail.org',0,0,0,0,NULL,NULL,NULL,NULL),
- (50,163,1,'bs.wagner@lol.biz',1,0,0,0,NULL,NULL,NULL,NULL),
- (51,27,1,'lb.gonzlez@testmail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),
- (52,4,1,'kiaraw13@airmail.net',1,0,0,0,NULL,NULL,NULL,NULL),
- (53,4,1,'wilson.kiara67@lol.net',0,0,0,0,NULL,NULL,NULL,NULL),
- (54,91,1,'iveym8@example.info',1,0,0,0,NULL,NULL,NULL,NULL),
- (55,91,1,'iveymcreynolds@fakemail.net',0,0,0,0,NULL,NULL,NULL,NULL),
- (56,60,1,'elinal@airmail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),
- (57,60,1,'lee.c.elina@testmail.biz',0,0,0,0,NULL,NULL,NULL,NULL),
- (58,172,1,'terrell.u.carlos44@lol.biz',1,0,0,0,NULL,NULL,NULL,NULL),
- (59,172,1,'carlosterrell@testing.co.in',0,0,0,0,NULL,NULL,NULL,NULL),
- (60,102,1,'beularoberts@infomail.net',1,0,0,0,NULL,NULL,NULL,NULL),
- (61,102,1,'roberts.beula@fishmail.co.pl',0,0,0,0,NULL,NULL,NULL,NULL),
- (62,128,1,'cooper.arlyne@infomail.co.in',1,0,0,0,NULL,NULL,NULL,NULL),
- (63,117,1,'pcooper@testmail.net',1,0,0,0,NULL,NULL,NULL,NULL),
- (64,52,1,'lareejacobs69@sample.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),
- (65,17,1,'lashawndajones@testmail.co.in',1,0,0,0,NULL,NULL,NULL,NULL),
- (66,16,1,'jamesonb87@airmail.co.in',1,0,0,0,NULL,NULL,NULL,NULL),
- (67,16,1,'bd.jameson87@testmail.co.pl',0,0,0,0,NULL,NULL,NULL,NULL),
- (68,159,1,'mw.jones@sample.org',1,0,0,0,NULL,NULL,NULL,NULL),
- (69,41,1,'arlyney@mymail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),
- (70,98,1,'wagnerf@infomail.org',1,0,0,0,NULL,NULL,NULL,NULL),
- (71,98,1,'fw.wagner22@notmail.co.nz',0,0,0,0,NULL,NULL,NULL,NULL),
- (72,90,1,'heidis@mymail.info',1,0,0,0,NULL,NULL,NULL,NULL),
- (73,90,1,'heidis@lol.co.in',0,0,0,0,NULL,NULL,NULL,NULL),
- (74,155,1,'nicoleivanov@lol.com',1,0,0,0,NULL,NULL,NULL,NULL),
- (75,148,1,'lareeb95@testmail.info',1,0,0,0,NULL,NULL,NULL,NULL),
- (76,148,1,'lareeb@spamalot.biz',0,0,0,0,NULL,NULL,NULL,NULL),
- (77,125,1,'ko.jacobs76@mymail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),
- (78,125,1,'jacobsk@spamalot.co.nz',0,0,0,0,NULL,NULL,NULL,NULL),
- (79,189,1,'bwattson@mymail.info',1,0,0,0,NULL,NULL,NULL,NULL),
- (80,83,1,'cruz.c.brigette83@fakemail.net',1,0,0,0,NULL,NULL,NULL,NULL),
- (81,83,1,'brigettec@spamalot.biz',0,0,0,0,NULL,NULL,NULL,NULL),
- (82,175,1,'oparker83@fakemail.net',1,0,0,0,NULL,NULL,NULL,NULL),
- (83,49,1,'parker.maria45@testing.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),
- (84,3,1,'jones.brigette@testing.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),
- (85,3,1,'brigettej90@lol.co.uk',0,0,0,0,NULL,NULL,NULL,NULL),
- (86,58,1,'claudioroberts3@example.info',1,0,0,0,NULL,NULL,NULL,NULL),
- (87,58,1,'robertsc45@fishmail.co.nz',0,0,0,0,NULL,NULL,NULL,NULL),
- (88,2,1,'roberts.herminia@lol.biz',1,0,0,0,NULL,NULL,NULL,NULL),
- (89,2,1,'hroberts@spamalot.info',0,0,0,0,NULL,NULL,NULL,NULL),
- (90,140,1,'roberts.b.scarlet@spamalot.co.in',1,0,0,0,NULL,NULL,NULL,NULL),
- (91,38,1,'gonzlez.miguel34@sample.org',1,0,0,0,NULL,NULL,NULL,NULL),
- (92,134,1,'agonzlez26@infomail.org',1,0,0,0,NULL,NULL,NULL,NULL),
- (93,149,1,'iveyrobertson@fakemail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),
- (94,149,1,'robertsoni62@notmail.co.in',0,0,0,0,NULL,NULL,NULL,NULL),
- (95,123,1,'robertson.brittney49@mymail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),
- (96,123,1,'robertsonb@testmail.org',0,0,0,0,NULL,NULL,NULL,NULL),
- (97,79,1,'robertsone@infomail.org',1,0,0,0,NULL,NULL,NULL,NULL),
- (98,79,1,'robertson.elbert@testing.org',0,0,0,0,NULL,NULL,NULL,NULL),
- (99,32,1,'robertsont13@fakemail.co.in',1,0,0,0,NULL,NULL,NULL,NULL),
- (100,42,1,'bn.reynolds@mymail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),
- (101,143,1,'reynoldsn@sample.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),
- (102,143,1,'reynolds.nicole@fishmail.co.uk',0,0,0,0,NULL,NULL,NULL,NULL),
- (103,132,1,'creynolds61@mymail.net',1,0,0,0,NULL,NULL,NULL,NULL),
- (104,199,1,'billyreynolds@sample.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),
- (105,199,1,'breynolds44@testmail.co.in',0,0,0,0,NULL,NULL,NULL,NULL),
- (106,11,1,'jensen.kenny89@testing.org',1,0,0,0,NULL,NULL,NULL,NULL),
- (107,119,1,'daz.jay@airmail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),
- (108,119,1,'daz.jay60@airmail.info',0,0,0,0,NULL,NULL,NULL,NULL),
- (109,103,1,'st.daz@fishmail.net',1,0,0,0,NULL,NULL,NULL,NULL),
- (110,103,1,'sharynd@fakemail.info',0,0,0,0,NULL,NULL,NULL,NULL),
- (111,112,1,'daz.nicole59@spamalot.org',1,0,0,0,NULL,NULL,NULL,NULL),
- (112,112,1,'np.daz21@spamalot.co.nz',0,0,0,0,NULL,NULL,NULL,NULL),
- (113,95,1,'barryb2@fishmail.biz',1,0,0,0,NULL,NULL,NULL,NULL),
- (114,95,1,'barkleyb57@airmail.co.pl',0,0,0,0,NULL,NULL,NULL,NULL),
- (115,108,1,'jyadav@spamalot.net',1,0,0,0,NULL,NULL,NULL,NULL),
- (116,108,1,'yadav.jina@spamalot.org',0,0,0,0,NULL,NULL,NULL,NULL),
- (117,191,1,'barkley-yadav.betty@sample.info',1,0,0,0,NULL,NULL,NULL,NULL),
- (118,105,1,'tt.barkley-yadav@example.co.in',1,0,0,0,NULL,NULL,NULL,NULL),
- (119,153,1,'russellwilson25@lol.biz',1,0,0,0,NULL,NULL,NULL,NULL),
- (120,33,1,'wilsona33@lol.com',1,0,0,0,NULL,NULL,NULL,NULL),
- (121,33,1,'wilson.arlyne@testing.co.nz',0,0,0,0,NULL,NULL,NULL,NULL),
- (122,104,1,'alexiaw30@infomail.info',1,0,0,0,NULL,NULL,NULL,NULL),
- (123,7,1,'rrobertson@example.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),
- (124,65,1,'robertson.scott@example.info',1,0,0,0,NULL,NULL,NULL,NULL),
- (125,43,1,'robertsoni43@spamalot.info',1,0,0,0,NULL,NULL,NULL,NULL),
- (126,197,1,'em.cooper@notmail.info',1,0,0,0,NULL,NULL,NULL,NULL),
- (127,39,1,'cooper-yadavl@airmail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),
- (128,162,1,'dimitrovj17@sample.net',1,0,0,0,NULL,NULL,NULL,NULL),
- (129,20,1,'dimitrov-bachman.x.esta69@airmail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),
- (130,20,1,'estadimitrov-bachman@mymail.co.uk',0,0,0,0,NULL,NULL,NULL,NULL),
- (131,97,1,'terrell.e.maria@example.info',1,0,0,0,NULL,NULL,NULL,NULL),
- (132,97,1,'terrell.e.maria@spamalot.co.nz',0,0,0,0,NULL,NULL,NULL,NULL),
- (133,18,1,'em.terrell@testing.co.in',1,0,0,0,NULL,NULL,NULL,NULL),
- (134,35,1,'bobt@fishmail.net',1,0,0,0,NULL,NULL,NULL,NULL),
- (135,111,1,'ivanovs@testmail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),
- (136,31,1,'ivanov-olsen.lincoln92@testing.net',1,0,0,0,NULL,NULL,NULL,NULL),
- (137,126,1,'sanfordb19@fakemail.info',1,0,0,0,NULL,NULL,NULL,NULL),
- (138,26,1,'lw.bachman@mymail.co.in',1,0,0,0,NULL,NULL,NULL,NULL),
- (139,26,1,'bachman.lawerence22@mymail.org',0,0,0,0,NULL,NULL,NULL,NULL),
- (140,139,1,'raybachman80@testmail.com',1,0,0,0,NULL,NULL,NULL,NULL),
- (141,139,1,'bachman.ray@notmail.co.uk',0,0,0,0,NULL,NULL,NULL,NULL),
- (142,201,1,'deforestr@testmail.net',1,0,0,0,NULL,NULL,NULL,NULL),
- (143,194,1,'roberts.q.kathleen@testmail.info',1,0,0,0,NULL,NULL,NULL,NULL),
- (144,194,1,'kathleenr3@testing.com',0,0,0,0,NULL,NULL,NULL,NULL),
- (145,28,1,'deforest-roberts.ashley@testing.biz',1,0,0,0,NULL,NULL,NULL,NULL),
- (146,72,1,'kdeforest-roberts@infomail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),
- (147,72,1,'deforest-roberts.kacey@sample.net',0,0,0,0,NULL,NULL,NULL,NULL),
- (148,12,1,'zope.m.bryon74@spamalot.com',1,0,0,0,NULL,NULL,NULL,NULL),
- (149,12,1,'bryonzope87@testmail.co.nz',0,0,0,0,NULL,NULL,NULL,NULL),
- (150,136,1,'jensen.kandace13@spamalot.com',1,0,0,0,NULL,NULL,NULL,NULL),
- (151,78,1,'zope-jensen.a.scott@example.org',1,0,0,0,NULL,NULL,NULL,NULL),
- (152,82,1,'scottblackwell-mcreynolds@airmail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),
- (153,51,3,'service@pennsylvaniafund.org',1,0,0,0,NULL,NULL,NULL,NULL),
- (154,57,2,'adamsb33@pennsylvaniafund.org',1,0,0,0,NULL,NULL,NULL,NULL),
- (155,138,3,'info@pennsylvaniapartnership.org',1,0,0,0,NULL,NULL,NULL,NULL),
- (156,82,2,'blackwell-mcreynoldss54@pennsylvaniapartnership.org',0,0,0,0,NULL,NULL,NULL,NULL),
- (157,135,3,'contact@mississippialliance.org',1,0,0,0,NULL,NULL,NULL,NULL),
- (158,130,2,'nicolep@mississippialliance.org',0,0,0,0,NULL,NULL,NULL,NULL),
- (159,48,3,'sales@urbansoftwareinitiative.org',1,0,0,0,NULL,NULL,NULL,NULL),
- (160,165,2,'cooper.lincoln33@urbansoftwareinitiative.org',0,0,0,0,NULL,NULL,NULL,NULL),
- (161,122,3,'sales@creativeenvironmental.org',1,0,0,0,NULL,NULL,NULL,NULL),
- (162,110,2,'samuels.tanya@creativeenvironmental.org',0,0,0,0,NULL,NULL,NULL,NULL),
- (163,73,3,'feedback@anchoragesports.org',1,0,0,0,NULL,NULL,NULL,NULL),
- (164,139,2,'bachmanr6@anchoragesports.org',0,0,0,0,NULL,NULL,NULL,NULL),
- (165,40,3,'service@friendslegalalliance.org',1,0,0,0,NULL,NULL,NULL,NULL),
- (166,3,2,'gonzlez.felisha@friendslegalalliance.org',0,0,0,0,NULL,NULL,NULL,NULL),
- (167,187,3,'info@ohiohealthinitiative.org',1,0,0,0,NULL,NULL,NULL,NULL),
- (168,68,2,'jones.z.alida@ohiohealthinitiative.org',1,0,0,0,NULL,NULL,NULL,NULL),
- (169,142,3,'feedback@mainfamilypartners.org',1,0,0,0,NULL,NULL,NULL,NULL),
- (170,44,3,'feedback@ruralwellnessschool.org',1,0,0,0,NULL,NULL,NULL,NULL),
- (171,173,3,'sales@alabamaeducationservices.org',1,0,0,0,NULL,NULL,NULL,NULL),
- (172,160,2,'blackwell.brzczysaw94@alabamaeducationservices.org',1,0,0,0,NULL,NULL,NULL,NULL),
- (173,118,3,'info@tennesseesolutions.org',1,0,0,0,NULL,NULL,NULL,NULL),
- (174,52,2,'jacobs.laree@tennesseesolutions.org',0,0,0,0,NULL,NULL,NULL,NULL),
- (175,36,3,'sales@ohiosoftwarepartnership.org',1,0,0,0,NULL,NULL,NULL,NULL),
- (176,49,2,'parkerm73@ohiosoftwarepartnership.org',0,0,0,0,NULL,NULL,NULL,NULL),
- (177,170,3,'contact@ncwellnesstrust.org',1,0,0,0,NULL,NULL,NULL,NULL),
- (178,151,2,'princessw@ncwellnesstrust.org',1,0,0,0,NULL,NULL,NULL,NULL),
+ (2,185,1,'winfordm@infomail.co.in',1,0,0,0,NULL,NULL,NULL,NULL),
+ (3,185,1,'wz.mcreynolds@fakemail.co.in',0,0,0,0,NULL,NULL,NULL,NULL),
+ (4,8,1,'ivanov.magan@testing.org',1,0,0,0,NULL,NULL,NULL,NULL),
+ (5,8,1,'mw.ivanov@airmail.info',0,0,0,0,NULL,NULL,NULL,NULL),
+ (6,89,1,'rg.dimitrov@mymail.org',1,0,0,0,NULL,NULL,NULL,NULL),
+ (7,89,1,'dimitrov.g.ray38@infomail.co.in',0,0,0,0,NULL,NULL,NULL,NULL),
+ (8,37,1,'chowski.craig26@mymail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),
+ (9,107,1,'samuelsr@example.biz',1,0,0,0,NULL,NULL,NULL,NULL),
+ (10,73,1,'scarletdimitrov@example.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),
+ (11,20,1,'jc.parker@fishmail.biz',1,0,0,0,NULL,NULL,NULL,NULL),
+ (12,20,1,'parkerj28@sample.info',0,0,0,0,NULL,NULL,NULL,NULL),
+ (13,111,1,'prentice.junko@example.biz',1,0,0,0,NULL,NULL,NULL,NULL),
+ (14,198,1,'mcreynolds.laree4@testmail.org',1,0,0,0,NULL,NULL,NULL,NULL),
+ (15,116,1,'rcruz76@notmail.info',1,0,0,0,NULL,NULL,NULL,NULL),
+ (16,6,1,'irvinp75@lol.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),
+ (17,36,1,'rebekahmller39@lol.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),
+ (18,78,1,'bolsen@testing.info',1,0,0,0,NULL,NULL,NULL,NULL),
+ (19,78,1,'olsen.brigette@notmail.co.in',0,0,0,0,NULL,NULL,NULL,NULL),
+ (20,21,1,'wattson.kenny@example.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),
+ (21,21,1,'kennywattson@testing.biz',0,0,0,0,NULL,NULL,NULL,NULL),
+ (22,79,1,'reynolds.k.alexia@testing.co.in',1,0,0,0,NULL,NULL,NULL,NULL),
+ (23,58,1,'cruz.maria45@lol.com',1,0,0,0,NULL,NULL,NULL,NULL),
+ (24,58,1,'cruzm23@notmail.biz',0,0,0,0,NULL,NULL,NULL,NULL),
+ (25,160,1,'sanfordjameson@mymail.net',1,0,0,0,NULL,NULL,NULL,NULL),
+ (26,160,1,'sf.jameson@fishmail.info',0,0,0,0,NULL,NULL,NULL,NULL),
+ (27,22,1,'grantj3@testing.biz',1,0,0,0,NULL,NULL,NULL,NULL),
+ (28,166,1,'dimitrov.santina@infomail.org',1,0,0,0,NULL,NULL,NULL,NULL),
+ (29,166,1,'santinadimitrov@fakemail.co.nz',0,0,0,0,NULL,NULL,NULL,NULL),
+ (30,167,1,'gonzlez.a.damaris@testing.info',1,0,0,0,NULL,NULL,NULL,NULL),
+ (31,94,1,'db.terry@fakemail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),
+ (32,74,1,'terrella@testing.info',1,0,0,0,NULL,NULL,NULL,NULL),
+ (33,61,1,'olsen.toby@airmail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),
+ (34,96,1,'kb.terry@testmail.info',1,0,0,0,NULL,NULL,NULL,NULL),
+ (35,76,1,'blee@spamalot.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),
+ (36,76,1,'barryl58@airmail.org',0,0,0,0,NULL,NULL,NULL,NULL),
+ (37,187,1,'prentice.jay@fishmail.org',1,0,0,0,NULL,NULL,NULL,NULL),
+ (38,122,1,'reynolds.x.megan29@spamalot.com',1,0,0,0,NULL,NULL,NULL,NULL),
+ (39,159,1,'terry.alida@fishmail.org',1,0,0,0,NULL,NULL,NULL,NULL),
+ (40,159,1,'terrya13@testing.co.in',0,0,0,0,NULL,NULL,NULL,NULL),
+ (41,93,1,'zopej31@sample.info',1,0,0,0,NULL,NULL,NULL,NULL),
+ (42,93,1,'jz.zope@spamalot.co.uk',0,0,0,0,NULL,NULL,NULL,NULL),
+ (43,60,1,'cruzs54@testing.info',1,0,0,0,NULL,NULL,NULL,NULL),
+ (44,60,1,'cruzs52@fakemail.biz',0,0,0,0,NULL,NULL,NULL,NULL),
+ (45,134,1,'louc@mymail.net',1,0,0,0,NULL,NULL,NULL,NULL),
+ (46,66,1,'jacobd60@fakemail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),
+ (47,66,1,'deforest.jacob@mymail.info',0,0,0,0,NULL,NULL,NULL,NULL),
+ (48,81,1,'cjameson@example.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),
+ (49,131,1,'jacobr64@testing.net',1,0,0,0,NULL,NULL,NULL,NULL),
+ (50,131,1,'jacobroberts@spamalot.com',0,0,0,0,NULL,NULL,NULL,NULL),
+ (51,138,1,'lterry@example.biz',1,0,0,0,NULL,NULL,NULL,NULL),
+ (52,138,1,'lterry@mymail.co.uk',0,0,0,0,NULL,NULL,NULL,NULL),
+ (53,5,1,'maxwellw@testing.co.in',1,0,0,0,NULL,NULL,NULL,NULL),
+ (54,112,1,'sdimitrov@testing.biz',1,0,0,0,NULL,NULL,NULL,NULL),
+ (55,194,1,'gonzlez.lawerence@example.net',1,0,0,0,NULL,NULL,NULL,NULL),
+ (56,145,1,'grantj@example.co.in',1,0,0,0,NULL,NULL,NULL,NULL),
+ (57,88,1,'bobj85@fishmail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),
+ (58,28,1,'sonnyo@testing.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),
+ (59,99,1,'ashleyw@example.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),
+ (60,99,1,'wilson.ashley64@testing.net',0,0,0,0,NULL,NULL,NULL,NULL),
+ (61,55,1,'tobya11@mymail.biz',1,0,0,0,NULL,NULL,NULL,NULL),
+ (62,142,1,'kprentice@sample.org',1,0,0,0,NULL,NULL,NULL,NULL),
+ (63,189,1,'gonzlezj5@lol.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),
+ (64,179,1,'jacobs.alexia@mymail.org',1,0,0,0,NULL,NULL,NULL,NULL),
+ (65,118,1,'gonzlez.damaris@lol.info',1,0,0,0,NULL,NULL,NULL,NULL),
+ (66,118,1,'gonzlez.i.damaris@notmail.info',0,0,0,0,NULL,NULL,NULL,NULL),
+ (67,114,1,'bmller64@spamalot.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),
+ (68,114,1,'billym3@notmail.co.in',0,0,0,0,NULL,NULL,NULL,NULL),
+ (69,54,1,'patel.maxwell@testing.net',1,0,0,0,NULL,NULL,NULL,NULL),
+ (70,68,1,'chowski.jina@testmail.com',1,0,0,0,NULL,NULL,NULL,NULL),
+ (71,52,1,'winfordprentice@testing.co.in',1,0,0,0,NULL,NULL,NULL,NULL),
+ (72,32,1,'wattson.truman@fakemail.info',1,0,0,0,NULL,NULL,NULL,NULL),
+ (73,30,1,'lareebarkley37@lol.com',1,0,0,0,NULL,NULL,NULL,NULL),
+ (74,30,1,'lareeb@infomail.net',0,0,0,0,NULL,NULL,NULL,NULL),
+ (75,43,1,'prentice.jina@sample.biz',1,0,0,0,NULL,NULL,NULL,NULL),
+ (76,43,1,'jinaprentice86@notmail.co.nz',0,0,0,0,NULL,NULL,NULL,NULL),
+ (77,105,1,'gonzlez.erik@example.biz',1,0,0,0,NULL,NULL,NULL,NULL),
+ (78,105,1,'gonzlez.erik@lol.com',0,0,0,0,NULL,NULL,NULL,NULL),
+ (79,156,1,'tanyat@testmail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),
+ (80,127,1,'terrellr@example.info',1,0,0,0,NULL,NULL,NULL,NULL),
+ (81,70,1,'olsenr@infomail.net',1,0,0,0,NULL,NULL,NULL,NULL),
+ (82,182,1,'olsen.santina@airmail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),
+ (83,56,1,'jolsen2@notmail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),
+ (84,153,1,'sparker@airmail.co.in',1,0,0,0,NULL,NULL,NULL,NULL),
+ (85,173,1,'parker.arlyne63@fishmail.co.in',1,0,0,0,NULL,NULL,NULL,NULL),
+ (86,53,1,'parker.miguel15@mymail.co.in',1,0,0,0,NULL,NULL,NULL,NULL),
+ (87,53,1,'parkerm48@example.co.nz',0,0,0,0,NULL,NULL,NULL,NULL),
+ (88,151,1,'sb.parker@infomail.info',1,0,0,0,NULL,NULL,NULL,NULL),
+ (89,109,1,'scarletterry-patel40@spamalot.biz',1,0,0,0,NULL,NULL,NULL,NULL),
+ (90,109,1,'terry-patel.scarlet94@fakemail.co.in',0,0,0,0,NULL,NULL,NULL,NULL),
+ (91,51,1,'junkop9@lol.info',1,0,0,0,NULL,NULL,NULL,NULL),
+ (92,51,1,'patel.junko@spamalot.org',0,0,0,0,NULL,NULL,NULL,NULL),
+ (93,7,1,'jaypatel@lol.com',1,0,0,0,NULL,NULL,NULL,NULL),
+ (94,24,1,'parker.rebekah@fakemail.net',1,0,0,0,NULL,NULL,NULL,NULL),
+ (95,24,1,'parker.rebekah@airmail.com',0,0,0,0,NULL,NULL,NULL,NULL),
+ (96,57,1,'allanp@fishmail.info',1,0,0,0,NULL,NULL,NULL,NULL),
+ (97,62,1,'parker.tanya21@notmail.com',1,0,0,0,NULL,NULL,NULL,NULL),
+ (98,62,1,'tanyap@testing.co.nz',0,0,0,0,NULL,NULL,NULL,NULL),
+ (99,191,1,'roberts.r.rosario81@sample.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),
+ (100,191,1,'robertsr@mymail.com',0,0,0,0,NULL,NULL,NULL,NULL),
+ (101,39,1,'raysamson39@fakemail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),
+ (102,155,1,'rolandos24@spamalot.com',1,0,0,0,NULL,NULL,NULL,NULL),
+ (103,155,1,'samson.rolando56@testmail.co.nz',0,0,0,0,NULL,NULL,NULL,NULL),
+ (104,148,1,'sonnygonzlez97@example.info',1,0,0,0,NULL,NULL,NULL,NULL),
+ (105,148,1,'gonzlez.sonny@fakemail.co.in',0,0,0,0,NULL,NULL,NULL,NULL),
+ (106,50,1,'jgonzlez-grant17@mymail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),
+ (107,50,1,'justinagonzlez-grant@testmail.co.uk',0,0,0,0,NULL,NULL,NULL,NULL),
+ (108,190,1,'gonzlez-grant.g.allen@infomail.com',1,0,0,0,NULL,NULL,NULL,NULL),
+ (109,16,1,'samsont@fishmail.co.in',1,0,0,0,NULL,NULL,NULL,NULL),
+ (110,2,1,'bettysamson@mymail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),
+ (111,2,1,'samson.u.betty@mymail.info',0,0,0,0,NULL,NULL,NULL,NULL),
+ (112,117,1,'samson.t.eleonor@notmail.biz',1,0,0,0,NULL,NULL,NULL,NULL),
+ (113,117,1,'samson.eleonor@fishmail.co.in',0,0,0,0,NULL,NULL,NULL,NULL),
+ (114,188,1,'kandaces95@fishmail.biz',1,0,0,0,NULL,NULL,NULL,NULL),
+ (115,188,1,'kandaces67@mymail.info',0,0,0,0,NULL,NULL,NULL,NULL),
+ (116,146,1,'jacobs.bob@airmail.co.in',1,0,0,0,NULL,NULL,NULL,NULL),
+ (117,195,1,'jacobs.juliann35@mymail.co.in',1,0,0,0,NULL,NULL,NULL,NULL),
+ (118,195,1,'jacobs.m.juliann@example.org',0,0,0,0,NULL,NULL,NULL,NULL),
+ (119,44,1,'jacobsi54@example.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),
+ (120,44,1,'jacobsi85@mymail.co.uk',0,0,0,0,NULL,NULL,NULL,NULL),
+ (121,110,1,'bd.mcreynolds@testmail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),
+ (122,110,1,'mcreynolds.d.brent@sample.net',0,0,0,0,NULL,NULL,NULL,NULL),
+ (123,163,1,'bmcreynolds62@fakemail.biz',1,0,0,0,NULL,NULL,NULL,NULL),
+ (124,140,1,'ih.reynolds-dimitrov84@fishmail.info',1,0,0,0,NULL,NULL,NULL,NULL),
+ (125,38,1,'kwagner@airmail.net',1,0,0,0,NULL,NULL,NULL,NULL),
+ (126,38,1,'wagnerk94@fishmail.com',0,0,0,0,NULL,NULL,NULL,NULL),
+ (127,108,1,'iwagner23@airmail.co.in',1,0,0,0,NULL,NULL,NULL,NULL),
+ (128,26,1,'erroljameson9@mymail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),
+ (129,26,1,'errolj29@testmail.com',0,0,0,0,NULL,NULL,NULL,NULL),
+ (130,75,1,'jameson-patel.bob32@fishmail.biz',1,0,0,0,NULL,NULL,NULL,NULL),
+ (131,168,1,'dr.barkley-grant@sample.co.in',1,0,0,0,NULL,NULL,NULL,NULL),
+ (132,183,1,'reynolds.maxwell36@fakemail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),
+ (133,64,1,'scarletb@spamalot.com',1,0,0,0,NULL,NULL,NULL,NULL),
+ (134,72,1,'reynoldsw@notmail.com',1,0,0,0,NULL,NULL,NULL,NULL),
+ (135,71,1,'rolandodeforest33@mymail.net',1,0,0,0,NULL,NULL,NULL,NULL),
+ (136,71,1,'rdeforest96@testmail.co.nz',0,0,0,0,NULL,NULL,NULL,NULL),
+ (137,181,1,'shaunaadams-deforest38@airmail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),
+ (138,181,1,'adams-deforests@lol.net',0,0,0,0,NULL,NULL,NULL,NULL),
+ (139,175,1,'adams-deforestl@testmail.net',1,0,0,0,NULL,NULL,NULL,NULL),
+ (140,175,1,'lashawndaadams-deforest@example.net',0,0,0,0,NULL,NULL,NULL,NULL),
+ (141,3,1,'justinas36@spamalot.info',1,0,0,0,NULL,NULL,NULL,NULL),
+ (142,3,1,'justinasamuels-samson@fishmail.co.nz',0,0,0,0,NULL,NULL,NULL,NULL),
+ (143,103,1,'sj.samuels-samson@notmail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),
+ (144,103,1,'samuels-samson.j.shad@mymail.net',0,0,0,0,NULL,NULL,NULL,NULL),
+ (145,126,1,'rebekahmcreynolds86@lol.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),
+ (146,126,1,'mcreynoldsr@airmail.co.in',0,0,0,0,NULL,NULL,NULL,NULL),
+ (147,164,1,'andrews@example.biz',1,0,0,0,NULL,NULL,NULL,NULL),
+ (148,164,1,'samuels-mcreynoldsa38@fishmail.co.nz',0,0,0,0,NULL,NULL,NULL,NULL),
+ (149,139,1,'kathleent@lol.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),
+ (150,139,1,'kathleenterry-mcreynolds@fakemail.co.in',0,0,0,0,NULL,NULL,NULL,NULL),
+ (151,193,3,'service@texassolutions.org',1,0,0,0,NULL,NULL,NULL,NULL),
+ (152,108,2,'wagner.iris@texassolutions.org',0,0,0,0,NULL,NULL,NULL,NULL),
+ (153,17,3,'info@communitysolutions.org',1,0,0,0,NULL,NULL,NULL,NULL),
+ (154,78,2,'sgrant@communitysolutions.org',0,0,0,0,NULL,NULL,NULL,NULL),
+ (155,9,3,'feedback@sierralegalsystems.org',1,0,0,0,NULL,NULL,NULL,NULL),
+ (156,60,2,'scottcruz@sierralegalsystems.org',0,0,0,0,NULL,NULL,NULL,NULL),
+ (157,23,3,'contact@creativeadvocacyalliance.org',1,0,0,0,NULL,NULL,NULL,NULL),
+ (158,144,3,'contact@urbanfellowship.org',1,0,0,0,NULL,NULL,NULL,NULL),
+ (159,74,2,'mcreynoldsb31@urbanfellowship.org',0,0,0,0,NULL,NULL,NULL,NULL),
+ (160,129,3,'feedback@globalwellnesspartners.org',1,0,0,0,NULL,NULL,NULL,NULL),
+ (161,138,2,'lareeterry69@globalwellnesspartners.org',0,0,0,0,NULL,NULL,NULL,NULL),
+ (162,174,3,'sales@communitydevelopmentservices.org',1,0,0,0,NULL,NULL,NULL,NULL),
+ (163,73,2,'dimitrov.scarlet@communitydevelopmentservices.org',0,0,0,0,NULL,NULL,NULL,NULL),
+ (164,49,3,'contact@toledonetwork.org',1,0,0,0,NULL,NULL,NULL,NULL),
+ (165,158,2,'zope.juliann@toledonetwork.org',1,0,0,0,NULL,NULL,NULL,NULL),
+ (166,192,3,'contact@northpointmusicsystems.org',1,0,0,0,NULL,NULL,NULL,NULL),
+ (167,186,2,'gonzlezk1@northpointmusicsystems.org',1,0,0,0,NULL,NULL,NULL,NULL),
+ (168,121,3,'sales@mississippimusic.org',1,0,0,0,NULL,NULL,NULL,NULL),
+ (169,52,2,'wprentice25@mississippimusic.org',0,0,0,0,NULL,NULL,NULL,NULL),
+ (170,184,3,'info@spactionfund.org',1,0,0,0,NULL,NULL,NULL,NULL),
+ (171,83,2,'barkleye@spactionfund.org',1,0,0,0,NULL,NULL,NULL,NULL),
+ (172,124,3,'feedback@spcultureschool.org',1,0,0,0,NULL,NULL,NULL,NULL),
+ (173,163,2,'bernadettemcreynolds68@spcultureschool.org',0,0,0,0,NULL,NULL,NULL,NULL),
+ (174,135,3,'contact@greensborohealthpartnership.org',1,0,0,0,NULL,NULL,NULL,NULL),
+ (175,84,3,'info@ecfamilyschool.org',1,0,0,0,NULL,NULL,NULL,NULL),
+ (176,166,2,'roberts.lawerence@ecfamilyschool.org',0,0,0,0,NULL,NULL,NULL,NULL),
+ (177,69,3,'sales@dowlenempowermentnetwork.org',1,0,0,0,NULL,NULL,NULL,NULL),
+ (178,155,2,'rsamson78@dowlenempowermentnetwork.org',0,0,0,0,NULL,NULL,NULL,NULL),
(179,202,1,'jenny@example.com',1,0,0,0,NULL,NULL,NULL,NULL),
(180,NULL,1,'development@example.org',0,0,0,0,NULL,NULL,NULL,NULL),
(181,NULL,1,'tournaments@example.org',0,0,0,0,NULL,NULL,NULL,NULL),
@@ -3288,11 +3293,11 @@ INSERT INTO `civicrm_entity_financial_trxn` (`id`, `entity_table`, `entity_id`,
(64,'civicrm_financial_item',32,32,100.00),
(65,'civicrm_contribution',34,33,100.00),
(66,'civicrm_financial_item',33,33,100.00),
- (67,'civicrm_contribution',36,34,100.00),
+ (67,'civicrm_contribution',38,34,100.00),
(68,'civicrm_financial_item',34,34,100.00),
- (69,'civicrm_contribution',38,35,100.00),
+ (69,'civicrm_contribution',40,35,100.00),
(70,'civicrm_financial_item',35,35,100.00),
- (71,'civicrm_contribution',40,36,100.00),
+ (71,'civicrm_contribution',41,36,100.00),
(72,'civicrm_financial_item',36,36,100.00),
(73,'civicrm_contribution',44,37,100.00),
(74,'civicrm_financial_item',37,37,100.00),
@@ -3302,25 +3307,25 @@ INSERT INTO `civicrm_entity_financial_trxn` (`id`, `entity_table`, `entity_id`,
(78,'civicrm_financial_item',39,39,100.00),
(79,'civicrm_contribution',50,40,100.00),
(80,'civicrm_financial_item',40,40,100.00),
- (81,'civicrm_contribution',52,41,100.00),
+ (81,'civicrm_contribution',51,41,100.00),
(82,'civicrm_financial_item',41,41,100.00),
- (83,'civicrm_contribution',54,42,100.00),
+ (83,'civicrm_contribution',52,42,100.00),
(84,'civicrm_financial_item',42,42,100.00),
- (85,'civicrm_contribution',58,43,100.00),
+ (85,'civicrm_contribution',54,43,100.00),
(86,'civicrm_financial_item',43,43,100.00),
- (87,'civicrm_contribution',60,44,100.00),
+ (87,'civicrm_contribution',58,44,100.00),
(88,'civicrm_financial_item',44,44,100.00),
- (89,'civicrm_contribution',61,45,100.00),
+ (89,'civicrm_contribution',60,45,100.00),
(90,'civicrm_financial_item',45,45,100.00),
(91,'civicrm_contribution',33,46,50.00),
(92,'civicrm_financial_item',46,46,50.00),
(93,'civicrm_contribution',35,47,50.00),
(94,'civicrm_financial_item',47,47,50.00),
- (95,'civicrm_contribution',37,48,50.00),
+ (95,'civicrm_contribution',36,48,50.00),
(96,'civicrm_financial_item',48,48,50.00),
- (97,'civicrm_contribution',39,49,50.00),
+ (97,'civicrm_contribution',37,49,50.00),
(98,'civicrm_financial_item',49,49,50.00),
- (99,'civicrm_contribution',41,50,50.00),
+ (99,'civicrm_contribution',39,50,50.00),
(100,'civicrm_financial_item',50,50,50.00),
(101,'civicrm_contribution',43,51,50.00),
(102,'civicrm_financial_item',51,51,50.00),
@@ -3330,119 +3335,119 @@ INSERT INTO `civicrm_entity_financial_trxn` (`id`, `entity_table`, `entity_id`,
(106,'civicrm_financial_item',53,53,50.00),
(107,'civicrm_contribution',49,54,50.00),
(108,'civicrm_financial_item',54,54,50.00),
- (109,'civicrm_contribution',51,55,50.00),
+ (109,'civicrm_contribution',55,55,50.00),
(110,'civicrm_financial_item',55,55,50.00),
- (111,'civicrm_contribution',55,56,50.00),
+ (111,'civicrm_contribution',56,56,50.00),
(112,'civicrm_financial_item',56,56,50.00),
- (113,'civicrm_contribution',56,57,50.00),
+ (113,'civicrm_contribution',57,57,50.00),
(114,'civicrm_financial_item',57,57,50.00),
- (115,'civicrm_contribution',57,58,50.00),
+ (115,'civicrm_contribution',59,58,50.00),
(116,'civicrm_financial_item',58,58,50.00),
- (117,'civicrm_contribution',59,59,50.00),
+ (117,'civicrm_contribution',61,59,50.00),
(118,'civicrm_financial_item',59,59,50.00),
(119,'civicrm_contribution',42,60,1200.00),
(120,'civicrm_financial_item',60,60,1200.00),
(121,'civicrm_contribution',53,61,1200.00),
(122,'civicrm_financial_item',61,61,1200.00),
- (123,'civicrm_contribution',96,62,50.00),
+ (123,'civicrm_contribution',64,62,50.00),
(124,'civicrm_financial_item',62,62,50.00),
- (125,'civicrm_contribution',81,63,50.00),
+ (125,'civicrm_contribution',67,63,50.00),
(126,'civicrm_financial_item',63,63,50.00),
- (127,'civicrm_contribution',78,64,50.00),
+ (127,'civicrm_contribution',70,64,50.00),
(128,'civicrm_financial_item',64,64,50.00),
- (129,'civicrm_contribution',101,65,50.00),
+ (129,'civicrm_contribution',73,65,50.00),
(130,'civicrm_financial_item',65,65,50.00),
- (131,'civicrm_contribution',99,66,50.00),
+ (131,'civicrm_contribution',76,66,50.00),
(132,'civicrm_financial_item',66,66,50.00),
- (133,'civicrm_contribution',76,67,50.00),
+ (133,'civicrm_contribution',79,67,50.00),
(134,'civicrm_financial_item',67,67,50.00),
- (135,'civicrm_contribution',74,68,50.00),
+ (135,'civicrm_contribution',82,68,50.00),
(136,'civicrm_financial_item',68,68,50.00),
- (137,'civicrm_contribution',86,69,50.00),
+ (137,'civicrm_contribution',85,69,50.00),
(138,'civicrm_financial_item',69,69,50.00),
- (139,'civicrm_contribution',84,70,50.00),
+ (139,'civicrm_contribution',89,70,50.00),
(140,'civicrm_financial_item',70,70,50.00),
- (141,'civicrm_contribution',97,71,50.00),
+ (141,'civicrm_contribution',92,71,50.00),
(142,'civicrm_financial_item',71,71,50.00),
- (143,'civicrm_contribution',65,72,50.00),
+ (143,'civicrm_contribution',95,72,50.00),
(144,'civicrm_financial_item',72,72,50.00),
- (145,'civicrm_contribution',106,73,50.00),
+ (145,'civicrm_contribution',98,73,50.00),
(146,'civicrm_financial_item',73,73,50.00),
- (147,'civicrm_contribution',70,74,50.00),
+ (147,'civicrm_contribution',101,74,50.00),
(148,'civicrm_financial_item',74,74,50.00),
- (149,'civicrm_contribution',102,75,50.00),
+ (149,'civicrm_contribution',104,75,50.00),
(150,'civicrm_financial_item',75,75,50.00),
- (151,'civicrm_contribution',112,76,50.00),
+ (151,'civicrm_contribution',107,76,50.00),
(152,'civicrm_financial_item',76,76,50.00),
- (153,'civicrm_contribution',95,77,50.00),
+ (153,'civicrm_contribution',110,77,50.00),
(154,'civicrm_financial_item',77,77,50.00),
- (155,'civicrm_contribution',104,78,800.00),
+ (155,'civicrm_contribution',65,78,800.00),
(156,'civicrm_financial_item',78,78,800.00),
- (157,'civicrm_contribution',83,79,800.00),
+ (157,'civicrm_contribution',68,79,800.00),
(158,'civicrm_financial_item',79,79,800.00),
- (159,'civicrm_contribution',91,80,800.00),
+ (159,'civicrm_contribution',71,80,800.00),
(160,'civicrm_financial_item',80,80,800.00),
- (161,'civicrm_contribution',92,81,800.00),
+ (161,'civicrm_contribution',74,81,800.00),
(162,'civicrm_financial_item',81,81,800.00),
- (163,'civicrm_contribution',105,82,800.00),
+ (163,'civicrm_contribution',77,82,800.00),
(164,'civicrm_financial_item',82,82,800.00),
- (165,'civicrm_contribution',89,83,800.00),
+ (165,'civicrm_contribution',80,83,800.00),
(166,'civicrm_financial_item',83,83,800.00),
- (167,'civicrm_contribution',94,84,800.00),
+ (167,'civicrm_contribution',83,84,800.00),
(168,'civicrm_financial_item',84,84,800.00),
- (169,'civicrm_contribution',109,85,800.00),
+ (169,'civicrm_contribution',86,85,800.00),
(170,'civicrm_financial_item',85,85,800.00),
- (171,'civicrm_contribution',64,86,800.00),
+ (171,'civicrm_contribution',87,86,800.00),
(172,'civicrm_financial_item',86,86,800.00),
- (173,'civicrm_contribution',111,87,800.00),
+ (173,'civicrm_contribution',90,87,800.00),
(174,'civicrm_financial_item',87,87,800.00),
- (175,'civicrm_contribution',82,88,800.00),
+ (175,'civicrm_contribution',93,88,800.00),
(176,'civicrm_financial_item',88,88,800.00),
- (177,'civicrm_contribution',108,89,800.00),
+ (177,'civicrm_contribution',96,89,800.00),
(178,'civicrm_financial_item',89,89,800.00),
- (179,'civicrm_contribution',77,90,800.00),
+ (179,'civicrm_contribution',99,90,800.00),
(180,'civicrm_financial_item',90,90,800.00),
- (181,'civicrm_contribution',80,91,800.00),
+ (181,'civicrm_contribution',102,91,800.00),
(182,'civicrm_financial_item',91,91,800.00),
- (183,'civicrm_contribution',63,92,800.00),
+ (183,'civicrm_contribution',105,92,800.00),
(184,'civicrm_financial_item',92,92,800.00),
- (185,'civicrm_contribution',66,93,800.00),
+ (185,'civicrm_contribution',108,93,800.00),
(186,'civicrm_financial_item',93,93,800.00),
- (187,'civicrm_contribution',75,94,800.00),
+ (187,'civicrm_contribution',111,94,800.00),
(188,'civicrm_financial_item',94,94,800.00),
- (189,'civicrm_contribution',98,95,800.00),
+ (189,'civicrm_contribution',112,95,800.00),
(190,'civicrm_financial_item',95,95,800.00),
- (191,'civicrm_contribution',88,96,50.00),
+ (191,'civicrm_contribution',63,96,50.00),
(192,'civicrm_financial_item',96,96,50.00),
- (193,'civicrm_contribution',69,97,50.00),
+ (193,'civicrm_contribution',66,97,50.00),
(194,'civicrm_financial_item',97,97,50.00),
- (195,'civicrm_contribution',72,98,50.00),
+ (195,'civicrm_contribution',69,98,50.00),
(196,'civicrm_financial_item',98,98,50.00),
- (197,'civicrm_contribution',85,99,50.00),
+ (197,'civicrm_contribution',72,99,50.00),
(198,'civicrm_financial_item',99,99,50.00),
- (199,'civicrm_contribution',93,100,50.00),
+ (199,'civicrm_contribution',75,100,50.00),
(200,'civicrm_financial_item',100,100,50.00),
- (201,'civicrm_contribution',87,101,50.00),
+ (201,'civicrm_contribution',78,101,50.00),
(202,'civicrm_financial_item',101,101,50.00),
- (203,'civicrm_contribution',110,102,50.00),
+ (203,'civicrm_contribution',81,102,50.00),
(204,'civicrm_financial_item',102,102,50.00),
- (205,'civicrm_contribution',107,103,50.00),
+ (205,'civicrm_contribution',84,103,50.00),
(206,'civicrm_financial_item',103,103,50.00),
- (207,'civicrm_contribution',90,104,50.00),
+ (207,'civicrm_contribution',88,104,50.00),
(208,'civicrm_financial_item',104,104,50.00),
- (209,'civicrm_contribution',73,105,50.00),
+ (209,'civicrm_contribution',91,105,50.00),
(210,'civicrm_financial_item',105,105,50.00),
- (211,'civicrm_contribution',68,106,50.00),
+ (211,'civicrm_contribution',94,106,50.00),
(212,'civicrm_financial_item',106,106,50.00),
- (213,'civicrm_contribution',79,107,50.00),
+ (213,'civicrm_contribution',97,107,50.00),
(214,'civicrm_financial_item',107,107,50.00),
- (215,'civicrm_contribution',71,108,50.00),
+ (215,'civicrm_contribution',100,108,50.00),
(216,'civicrm_financial_item',108,108,50.00),
- (217,'civicrm_contribution',67,109,50.00),
+ (217,'civicrm_contribution',103,109,50.00),
(218,'civicrm_financial_item',109,109,50.00),
- (219,'civicrm_contribution',100,110,50.00),
+ (219,'civicrm_contribution',106,110,50.00),
(220,'civicrm_financial_item',110,110,50.00),
- (221,'civicrm_contribution',103,111,50.00),
+ (221,'civicrm_contribution',109,111,50.00),
(222,'civicrm_financial_item',111,111,50.00);
/*!40000 ALTER TABLE `civicrm_entity_financial_trxn` ENABLE KEYS */;
UNLOCK TABLES;
@@ -3454,122 +3459,125 @@ UNLOCK TABLES;
LOCK TABLES `civicrm_entity_tag` WRITE;
/*!40000 ALTER TABLE `civicrm_entity_tag` DISABLE KEYS */;
INSERT INTO `civicrm_entity_tag` (`id`, `entity_table`, `entity_id`, `tag_id`) VALUES
- (92,'civicrm_contact',7,5),
- (110,'civicrm_contact',12,4),
- (111,'civicrm_contact',12,5),
- (41,'civicrm_contact',14,5),
- (55,'civicrm_contact',17,4),
- (98,'civicrm_contact',20,4),
- (1,'civicrm_contact',21,1),
- (25,'civicrm_contact',22,5),
- (106,'civicrm_contact',26,5),
- (44,'civicrm_contact',27,4),
- (45,'civicrm_contact',27,5),
- (109,'civicrm_contact',28,4),
- (58,'civicrm_contact',30,4),
- (59,'civicrm_contact',30,5),
- (103,'civicrm_contact',31,4),
- (42,'civicrm_contact',34,5),
- (10,'civicrm_contact',36,2),
- (15,'civicrm_contact',37,5),
- (71,'civicrm_contact',38,4),
+ (112,'civicrm_contact',3,4),
+ (113,'civicrm_contact',3,5),
+ (2,'civicrm_contact',9,3),
+ (92,'civicrm_contact',12,4),
+ (93,'civicrm_contact',12,5),
+ (24,'civicrm_contact',13,4),
+ (10,'civicrm_contact',14,1),
+ (85,'civicrm_contact',16,4),
+ (64,'civicrm_contact',19,4),
+ (25,'civicrm_contact',21,4),
+ (26,'civicrm_contact',21,5),
+ (30,'civicrm_contact',22,4),
+ (75,'civicrm_contact',24,4),
+ (76,'civicrm_contact',24,5),
+ (82,'civicrm_contact',25,5),
+ (98,'civicrm_contact',26,4),
+ (51,'civicrm_contact',28,5),
+ (62,'civicrm_contact',30,4),
+ (63,'civicrm_contact',30,5),
+ (22,'civicrm_contact',36,4),
+ (23,'civicrm_contact',36,5),
+ (13,'civicrm_contact',37,4),
+ (97,'civicrm_contact',38,4),
+ (80,'civicrm_contact',39,4),
+ (81,'civicrm_contact',39,5),
(6,'civicrm_contact',40,2),
- (75,'civicrm_contact',42,4),
- (76,'civicrm_contact',42,5),
- (34,'civicrm_contact',50,4),
- (54,'civicrm_contact',52,5),
- (16,'civicrm_contact',53,5),
- (114,'civicrm_contact',54,4),
- (115,'civicrm_contact',54,5),
- (70,'civicrm_contact',56,4),
- (63,'civicrm_contact',57,4),
- (64,'civicrm_contact',57,5),
- (69,'civicrm_contact',58,5),
- (49,'civicrm_contact',60,4),
- (50,'civicrm_contact',60,5),
- (100,'civicrm_contact',61,5),
- (51,'civicrm_contact',63,4),
- (52,'civicrm_contact',63,5),
- (93,'civicrm_contact',65,5),
- (68,'civicrm_contact',68,5),
- (40,'civicrm_contact',71,4),
- (37,'civicrm_contact',75,4),
- (38,'civicrm_contact',75,5),
- (33,'civicrm_contact',77,4),
- (74,'civicrm_contact',79,4),
- (112,'civicrm_contact',81,4),
- (113,'civicrm_contact',81,5),
- (65,'civicrm_contact',83,4),
- (27,'civicrm_contact',84,4),
- (28,'civicrm_contact',84,5),
- (31,'civicrm_contact',85,4),
- (2,'civicrm_contact',87,3),
- (48,'civicrm_contact',91,5),
- (29,'civicrm_contact',93,4),
- (30,'civicrm_contact',93,5),
- (87,'civicrm_contact',95,4),
- (82,'civicrm_contact',96,4),
- (83,'civicrm_contact',96,5),
- (99,'civicrm_contact',97,5),
- (13,'civicrm_contact',99,4),
- (14,'civicrm_contact',99,5),
- (4,'civicrm_contact',100,3),
- (32,'civicrm_contact',101,4),
- (91,'civicrm_contact',104,5),
- (72,'civicrm_contact',107,4),
- (60,'civicrm_contact',109,5),
- (26,'civicrm_contact',110,4),
- (101,'civicrm_contact',111,4),
- (102,'civicrm_contact',111,5),
- (86,'civicrm_contact',112,4),
- (17,'civicrm_contact',113,4),
- (85,'civicrm_contact',119,5),
- (11,'civicrm_contact',120,4),
- (12,'civicrm_contact',120,5),
- (36,'civicrm_contact',121,4),
- (5,'civicrm_contact',122,1),
- (67,'civicrm_contact',124,4),
- (62,'civicrm_contact',125,4),
- (104,'civicrm_contact',126,4),
- (105,'civicrm_contact',126,5),
- (53,'civicrm_contact',128,5),
- (77,'civicrm_contact',132,4),
- (78,'civicrm_contact',132,5),
- (21,'civicrm_contact',137,5),
- (3,'civicrm_contact',138,2),
- (18,'civicrm_contact',141,4),
- (19,'civicrm_contact',141,5),
- (7,'civicrm_contact',142,2),
- (79,'civicrm_contact',144,4),
- (80,'civicrm_contact',144,5),
- (8,'civicrm_contact',145,1),
- (39,'civicrm_contact',146,5),
- (73,'civicrm_contact',149,5),
- (89,'civicrm_contact',153,4),
- (90,'civicrm_contact',153,5),
- (61,'civicrm_contact',155,5),
- (116,'civicrm_contact',157,5),
- (56,'civicrm_contact',159,4),
- (57,'civicrm_contact',159,5),
- (96,'civicrm_contact',162,4),
- (97,'civicrm_contact',162,5),
- (43,'civicrm_contact',163,4),
- (35,'civicrm_contact',164,5),
- (46,'civicrm_contact',168,4),
- (47,'civicrm_contact',168,5),
- (66,'civicrm_contact',175,4),
- (95,'civicrm_contact',179,4),
- (9,'civicrm_contact',180,1),
- (20,'civicrm_contact',181,5),
- (23,'civicrm_contact',183,4),
- (24,'civicrm_contact',183,5),
- (84,'civicrm_contact',185,4),
- (81,'civicrm_contact',188,5),
- (22,'civicrm_contact',190,4),
- (88,'civicrm_contact',191,4),
- (94,'civicrm_contact',197,4),
- (107,'civicrm_contact',201,4),
- (108,'civicrm_contact',201,5);
+ (94,'civicrm_contact',47,5),
+ (95,'civicrm_contact',48,4),
+ (96,'civicrm_contact',48,5),
+ (5,'civicrm_contact',49,3),
+ (84,'civicrm_contact',50,4),
+ (73,'civicrm_contact',51,4),
+ (74,'civicrm_contact',51,5),
+ (61,'civicrm_contact',52,5),
+ (71,'civicrm_contact',53,4),
+ (59,'civicrm_contact',54,4),
+ (60,'civicrm_contact',54,5),
+ (52,'civicrm_contact',55,5),
+ (40,'civicrm_contact',60,4),
+ (41,'civicrm_contact',60,5),
+ (77,'civicrm_contact',62,5),
+ (58,'civicrm_contact',65,4),
+ (65,'civicrm_contact',67,4),
+ (67,'civicrm_contact',70,5),
+ (106,'civicrm_contact',72,4),
+ (107,'civicrm_contact',72,5),
+ (14,'civicrm_contact',73,5),
+ (99,'civicrm_contact',75,4),
+ (100,'civicrm_contact',75,5),
+ (36,'civicrm_contact',76,4),
+ (66,'civicrm_contact',77,4),
+ (43,'civicrm_contact',81,4),
+ (44,'civicrm_contact',81,5),
+ (91,'civicrm_contact',82,5),
+ (101,'civicrm_contact',83,5),
+ (48,'civicrm_contact',92,5),
+ (32,'civicrm_contact',94,5),
+ (12,'civicrm_contact',95,5),
+ (34,'civicrm_contact',96,4),
+ (35,'civicrm_contact',96,5),
+ (72,'civicrm_contact',101,5),
+ (118,'civicrm_contact',104,5),
+ (79,'civicrm_contact',106,5),
+ (90,'civicrm_contact',110,4),
+ (16,'civicrm_contact',111,4),
+ (17,'civicrm_contact',111,5),
+ (49,'civicrm_contact',112,5),
+ (89,'civicrm_contact',113,4),
+ (108,'civicrm_contact',115,5),
+ (21,'civicrm_contact',116,4),
+ (86,'civicrm_contact',117,4),
+ (87,'civicrm_contact',117,5),
+ (119,'civicrm_contact',119,4),
+ (116,'civicrm_contact',120,4),
+ (117,'civicrm_contact',120,5),
+ (7,'civicrm_contact',121,1),
+ (37,'civicrm_contact',122,4),
+ (53,'civicrm_contact',125,5),
+ (45,'civicrm_contact',128,5),
+ (8,'civicrm_contact',130,1),
+ (9,'civicrm_contact',135,1),
+ (33,'civicrm_contact',136,5),
+ (46,'civicrm_contact',138,4),
+ (47,'civicrm_contact',138,5),
+ (3,'civicrm_contact',144,3),
+ (50,'civicrm_contact',145,4),
+ (88,'civicrm_contact',146,5),
+ (83,'civicrm_contact',148,5),
+ (69,'civicrm_contact',153,4),
+ (70,'civicrm_contact',153,5),
+ (29,'civicrm_contact',154,5),
+ (18,'civicrm_contact',158,5),
+ (38,'civicrm_contact',159,4),
+ (39,'civicrm_contact',159,5),
+ (114,'civicrm_contact',165,4),
+ (115,'civicrm_contact',165,5),
+ (31,'civicrm_contact',167,5),
+ (102,'civicrm_contact',168,4),
+ (103,'civicrm_contact',168,5),
+ (27,'civicrm_contact',171,4),
+ (28,'civicrm_contact',171,5),
+ (4,'civicrm_contact',174,1),
+ (68,'civicrm_contact',176,5),
+ (110,'civicrm_contact',180,4),
+ (111,'civicrm_contact',180,5),
+ (109,'civicrm_contact',181,5),
+ (104,'civicrm_contact',183,4),
+ (105,'civicrm_contact',183,5),
+ (11,'civicrm_contact',185,4),
+ (56,'civicrm_contact',186,4),
+ (57,'civicrm_contact',186,5),
+ (54,'civicrm_contact',189,4),
+ (55,'civicrm_contact',189,5),
+ (78,'civicrm_contact',191,4),
+ (1,'civicrm_contact',193,1),
+ (42,'civicrm_contact',197,4),
+ (19,'civicrm_contact',198,4),
+ (20,'civicrm_contact',198,5),
+ (15,'civicrm_contact',200,5);
/*!40000 ALTER TABLE `civicrm_entity_tag` ENABLE KEYS */;
UNLOCK TABLES;
@@ -3580,9 +3588,9 @@ UNLOCK TABLES;
LOCK TABLES `civicrm_event` WRITE;
/*!40000 ALTER TABLE `civicrm_event` DISABLE KEYS */;
INSERT INTO `civicrm_event` (`id`, `title`, `summary`, `description`, `event_type_id`, `participant_listing_id`, `is_public`, `start_date`, `end_date`, `is_online_registration`, `registration_link_text`, `registration_start_date`, `registration_end_date`, `max_participants`, `event_full_text`, `is_monetary`, `financial_type_id`, `payment_processor`, `is_map`, `is_active`, `fee_label`, `is_show_location`, `loc_block_id`, `default_role_id`, `intro_text`, `footer_text`, `confirm_title`, `confirm_text`, `confirm_footer_text`, `is_email_confirm`, `confirm_email_text`, `confirm_from_name`, `confirm_from_email`, `cc_confirm`, `bcc_confirm`, `default_fee_id`, `default_discount_fee_id`, `thankyou_title`, `thankyou_text`, `thankyou_footer_text`, `is_pay_later`, `pay_later_text`, `pay_later_receipt`, `is_partial_payment`, `initial_amount_label`, `initial_amount_help_text`, `min_initial_amount`, `is_multiple_registrations`, `max_additional_participants`, `allow_same_participant_emails`, `has_waitlist`, `requires_approval`, `expiration_time`, `allow_selfcancelxfer`, `selfcancelxfer_time`, `waitlist_text`, `approval_req_text`, `is_template`, `template_title`, `created_id`, `created_date`, `currency`, `campaign_id`, `is_share`, `is_confirm_enabled`, `parent_event_id`, `slot_label_id`, `dedupe_rule_group_id`, `is_billing_required`, `is_show_calendar_links`) VALUES
- (1,'Fall Fundraiser Dinner','Kick up your heels at our Fall Fundraiser Dinner/Dance at Glen Echo Park! Come by yourself or bring a partner, friend or the entire family!','This event benefits our teen programs. Admission includes a full 3 course meal and wine or soft drinks. Grab your dancing shoes, bring the kids and come join the party!',3,1,1,'2024-07-06 17:00:00','2024-07-08 17:00:00',1,'Register Now',NULL,NULL,100,'Sorry! The Fall Fundraiser Dinner is full. Please call Jane at 204 222-1000 ext 33 if you want to be added to the waiting list.',1,4,NULL,1,1,'Dinner Contribution',1,1,1,'Fill in the information below to join as at this wonderful dinner event.',NULL,'Confirm Your Registration Information','Review the information below carefully.',NULL,1,'Contact the Development Department if you need to make any changes to your registration.','Fundraising Dept.','development@example.org',NULL,NULL,NULL,NULL,'Thanks for Registering!','Thank you for your support. Your contribution will help us build even better tools.
Please tell your friends and colleagues about this wonderful event.
','Back to CiviCRM Home Page
',1,'I will send payment by check','Send a check payable to Our Organization within 3 business days to hold your reservation. Checks should be sent to: 100 Main St., Suite 3, San Francisco CA 94110',0,NULL,NULL,NULL,1,0,0,0,0,NULL,0,0,NULL,NULL,0,NULL,NULL,NULL,'USD',NULL,1,1,NULL,NULL,NULL,0,1),
- (2,'Summer Solstice Festival Day Concert','Festival Day is coming! Join us and help support your parks.','We will gather at noon, learn a song all together, and then join in a joyous procession to the pavilion. We will be one of many groups performing at this wonderful concert which benefits our city parks.',5,1,1,'2024-01-05 12:00:00','2024-01-05 17:00:00',1,'Register Now',NULL,NULL,50,'We have all the singers we can handle. Come to the pavilion anyway and join in from the audience.',1,2,NULL,0,1,'Festival Fee',1,2,1,'Complete the form below and click Continue to register online for the festival. Or you can register by calling us at 204 222-1000 ext 22.','','Confirm Your Registration Information','','',1,'This email confirms your registration. If you have questions or need to change your registration - please do not hesitate to call us.','Event Dept.','events@example.org','',NULL,NULL,NULL,'Thanks for Your Joining In!','Thank you for your support. Your participation will help build new parks.
Please tell your friends and colleagues about the concert.
','Back to CiviCRM Home Page
',0,NULL,NULL,0,NULL,NULL,NULL,1,0,0,0,0,NULL,0,0,NULL,NULL,0,NULL,NULL,NULL,'USD',NULL,1,1,NULL,NULL,NULL,0,1),
- (3,'Rain-forest Cup Youth Soccer Tournament','Sign up your team to participate in this fun tournament which benefits several Rain-forest protection groups in the Amazon basin.','This is a FYSA Sanctioned Tournament, which is open to all USSF/FIFA affiliated organizations for boys and girls in age groups: U9-U10 (6v6), U11-U12 (8v8), and U13-U17 (Full Sided).',3,1,1,'2024-08-06 07:00:00','2024-08-09 17:00:00',1,'Register Now',NULL,NULL,500,'Sorry! All available team slots for this tournament have been filled. Contact Jill Futbol for information about the waiting list and next years event.',1,4,NULL,0,1,'Tournament Fees',1,3,1,'Complete the form below to register your team for this year\'s tournament.','A Soccer Youth Event ','Review and Confirm Your Registration Information','','A Soccer Youth Event ',1,'Contact our Tournament Director for eligibility details.','Tournament Director','tournament@example.org','',NULL,NULL,NULL,'Thanks for Your Support!','Thank you for your support. Your participation will help save thousands of acres of rainforest.
','Back to CiviCRM Home Page
',0,NULL,NULL,0,NULL,NULL,NULL,0,0,0,0,0,NULL,0,0,NULL,NULL,0,NULL,NULL,NULL,'USD',NULL,1,1,NULL,NULL,NULL,0,1),
+ (1,'Fall Fundraiser Dinner','Kick up your heels at our Fall Fundraiser Dinner/Dance at Glen Echo Park! Come by yourself or bring a partner, friend or the entire family!','This event benefits our teen programs. Admission includes a full 3 course meal and wine or soft drinks. Grab your dancing shoes, bring the kids and come join the party!',3,1,1,'2024-10-26 17:00:00','2024-10-28 17:00:00',1,'Register Now',NULL,NULL,100,'Sorry! The Fall Fundraiser Dinner is full. Please call Jane at 204 222-1000 ext 33 if you want to be added to the waiting list.',1,4,NULL,1,1,'Dinner Contribution',1,1,1,'Fill in the information below to join as at this wonderful dinner event.',NULL,'Confirm Your Registration Information','Review the information below carefully.',NULL,1,'Contact the Development Department if you need to make any changes to your registration.','Fundraising Dept.','development@example.org',NULL,NULL,NULL,NULL,'Thanks for Registering!','Thank you for your support. Your contribution will help us build even better tools.
Please tell your friends and colleagues about this wonderful event.
','Back to CiviCRM Home Page
',1,'I will send payment by check','Send a check payable to Our Organization within 3 business days to hold your reservation. Checks should be sent to: 100 Main St., Suite 3, San Francisco CA 94110',0,NULL,NULL,NULL,1,0,0,0,0,NULL,0,0,NULL,NULL,0,NULL,NULL,NULL,'USD',NULL,1,1,NULL,NULL,NULL,0,1),
+ (2,'Summer Solstice Festival Day Concert','Festival Day is coming! Join us and help support your parks.','We will gather at noon, learn a song all together, and then join in a joyous procession to the pavilion. We will be one of many groups performing at this wonderful concert which benefits our city parks.',5,1,1,'2024-04-25 12:00:00','2024-04-25 17:00:00',1,'Register Now',NULL,NULL,50,'We have all the singers we can handle. Come to the pavilion anyway and join in from the audience.',1,2,NULL,0,1,'Festival Fee',1,2,1,'Complete the form below and click Continue to register online for the festival. Or you can register by calling us at 204 222-1000 ext 22.','','Confirm Your Registration Information','','',1,'This email confirms your registration. If you have questions or need to change your registration - please do not hesitate to call us.','Event Dept.','events@example.org','',NULL,NULL,NULL,'Thanks for Your Joining In!','Thank you for your support. Your participation will help build new parks.
Please tell your friends and colleagues about the concert.
','Back to CiviCRM Home Page
',0,NULL,NULL,0,NULL,NULL,NULL,1,0,0,0,0,NULL,0,0,NULL,NULL,0,NULL,NULL,NULL,'USD',NULL,1,1,NULL,NULL,NULL,0,1),
+ (3,'Rain-forest Cup Youth Soccer Tournament','Sign up your team to participate in this fun tournament which benefits several Rain-forest protection groups in the Amazon basin.','This is a FYSA Sanctioned Tournament, which is open to all USSF/FIFA affiliated organizations for boys and girls in age groups: U9-U10 (6v6), U11-U12 (8v8), and U13-U17 (Full Sided).',3,1,1,'2024-11-26 07:00:00','2024-11-29 17:00:00',1,'Register Now',NULL,NULL,500,'Sorry! All available team slots for this tournament have been filled. Contact Jill Futbol for information about the waiting list and next years event.',1,4,NULL,0,1,'Tournament Fees',1,3,1,'Complete the form below to register your team for this year\'s tournament.','A Soccer Youth Event ','Review and Confirm Your Registration Information','','A Soccer Youth Event ',1,'Contact our Tournament Director for eligibility details.','Tournament Director','tournament@example.org','',NULL,NULL,NULL,'Thanks for Your Support!','Thank you for your support. Your participation will help save thousands of acres of rainforest.
','Back to CiviCRM Home Page
',0,NULL,NULL,0,NULL,NULL,NULL,0,0,0,0,0,NULL,0,0,NULL,NULL,0,NULL,NULL,NULL,'USD',NULL,1,1,NULL,NULL,NULL,0,1),
(4,NULL,NULL,NULL,4,1,1,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,0,NULL,NULL,0,1,NULL,1,NULL,1,NULL,NULL,NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,NULL,NULL,0,NULL,NULL,NULL,1,0,0,0,0,NULL,0,0,NULL,NULL,1,'Free Meeting without Online Registration',NULL,NULL,'USD',NULL,1,1,NULL,NULL,NULL,0,1),
(5,NULL,NULL,NULL,4,1,1,NULL,NULL,1,NULL,NULL,NULL,NULL,NULL,0,NULL,NULL,0,1,NULL,1,NULL,1,NULL,NULL,'Confirm Your Registration Information',NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'Thanks for Registering!',NULL,NULL,0,NULL,NULL,0,NULL,NULL,NULL,1,0,1,0,0,NULL,0,0,NULL,NULL,1,'Free Meeting with Online Registration',NULL,NULL,'USD',NULL,1,1,NULL,NULL,NULL,0,1),
(6,NULL,NULL,NULL,1,1,1,NULL,NULL,1,NULL,NULL,NULL,NULL,NULL,1,4,NULL,0,1,'Conference Fee',1,NULL,1,NULL,NULL,'Confirm Your Registration Information',NULL,NULL,1,NULL,'Event Template Dept.','event_templates@example.org',NULL,NULL,NULL,NULL,'Thanks for Registering!',NULL,NULL,0,NULL,NULL,0,NULL,NULL,NULL,1,0,1,0,0,NULL,0,0,NULL,NULL,1,'Paid Conference with Online Registration',NULL,NULL,'USD',NULL,1,1,NULL,NULL,NULL,0,1);
@@ -3671,117 +3679,117 @@ UNLOCK TABLES;
LOCK TABLES `civicrm_financial_item` WRITE;
/*!40000 ALTER TABLE `civicrm_financial_item` DISABLE KEYS */;
INSERT INTO `civicrm_financial_item` (`id`, `created_date`, `transaction_date`, `contact_id`, `description`, `amount`, `currency`, `financial_account_id`, `status_id`, `entity_table`, `entity_id`) VALUES
- (1,'2024-01-06 04:30:31','2014-01-06 04:30:30',2,'Contribution Amount',125.00,'USD',1,1,'civicrm_line_item',1),
- (2,'2024-01-06 04:30:31','2021-10-06 04:30:30',4,'Contribution Amount',50.00,'USD',1,1,'civicrm_line_item',2),
- (3,'2024-01-06 04:30:31','2017-12-11 15:30:30',6,'Contribution Amount',25.00,'GBP',1,1,'civicrm_line_item',3),
- (4,'2024-01-06 04:30:31','2021-10-06 04:30:30',8,'Contribution Amount',50.00,'USD',1,1,'civicrm_line_item',4),
- (5,'2024-01-06 04:30:31','2021-10-06 04:30:30',4,'Contribution Amount',50.00,'USD',1,1,'civicrm_line_item',5),
- (6,'2024-01-06 04:30:31','2023-10-13 03:48:30',16,'Contribution Amount',500.00,'USD',1,1,'civicrm_line_item',6),
- (7,'2024-01-06 04:30:31','2024-01-04 04:30:30',19,'Contribution Amount',1750.00,'USD',1,1,'civicrm_line_item',7),
- (8,'2024-01-06 04:30:31','2023-05-14 12:41:30',82,'Contribution Amount',50.00,'USD',1,1,'civicrm_line_item',8),
- (9,'2024-01-06 04:30:31','2023-02-06 04:30:30',92,'Contribution Amount',10.00,'USD',1,1,'civicrm_line_item',9),
- (10,'2024-01-06 04:30:31','2019-08-14 06:30:30',34,'Contribution Amount',250.00,'USD',1,1,'civicrm_line_item',10),
- (11,'2024-01-06 04:30:31','2024-01-05 00:30:30',71,'Contribution Amount',500.00,'JPY',1,1,'civicrm_line_item',11),
- (12,'2024-01-06 04:30:31','2022-10-05 17:57:10',43,'Contribution Amount',50.00,'USD',1,1,'civicrm_line_item',12),
- (13,'2024-01-06 04:30:31','2023-10-06 00:00:00',32,'Contribution Amount',50.00,'USD',1,1,'civicrm_line_item',13),
- (14,'2024-01-06 04:30:31','2023-11-06 00:00:00',32,'Contribution Amount',50.00,'USD',1,1,'civicrm_line_item',14),
- (15,'2024-01-06 04:30:31','2022-10-06 04:30:30',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',15),
- (16,'2024-01-06 04:30:31','2022-11-06 04:30:30',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',16),
- (17,'2024-01-06 04:30:31','2022-12-06 04:30:30',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',17),
- (18,'2024-01-06 04:30:31','2023-01-06 04:30:30',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',18),
- (19,'2024-01-06 04:30:31','2023-02-06 04:30:30',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',19),
- (20,'2024-01-06 04:30:31','2023-03-06 04:30:30',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',20),
- (21,'2024-01-06 04:30:31','2023-04-06 04:30:30',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',21),
- (22,'2024-01-06 04:30:31','2023-05-06 04:30:30',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',22),
- (23,'2024-01-06 04:30:31','2023-06-06 04:30:30',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',23),
- (24,'2024-01-06 04:30:31','2023-07-06 04:30:30',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',24),
- (25,'2024-01-06 04:30:31','2023-08-06 04:30:30',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',25),
- (26,'2024-01-06 04:30:31','2023-05-06 04:30:30',99,'Contribution Amount',10.00,'CAD',1,1,'civicrm_line_item',26),
- (27,'2024-01-06 04:30:31','2023-06-06 04:30:30',99,'Contribution Amount',10.00,'CAD',1,1,'civicrm_line_item',27),
- (28,'2024-01-06 04:30:31','2023-07-06 04:30:30',99,'Contribution Amount',10.00,'CAD',1,1,'civicrm_line_item',28),
- (29,'2024-01-06 04:30:31','2023-08-06 04:30:30',99,'Contribution Amount',10.00,'CAD',1,1,'civicrm_line_item',29),
- (30,'2024-01-06 04:30:31','2023-09-06 04:30:30',99,'Contribution Amount',10.00,'CAD',1,1,'civicrm_line_item',30),
- (31,'2024-01-06 04:30:31','2023-12-06 04:30:30',103,'Contribution Amount',5.00,'EUR',1,1,'civicrm_line_item',31),
- (32,'2024-01-06 04:30:31','2024-01-06 04:30:30',183,'General',100.00,'USD',2,1,'civicrm_line_item',32),
- (33,'2024-01-06 04:30:31','2024-01-06 04:30:30',56,'General',100.00,'USD',2,1,'civicrm_line_item',33),
- (34,'2024-01-06 04:30:31','2024-01-06 04:30:30',102,'General',100.00,'USD',2,1,'civicrm_line_item',34),
- (35,'2024-01-06 04:30:31','2024-01-06 04:30:30',22,'General',100.00,'USD',2,1,'civicrm_line_item',35),
- (36,'2024-01-06 04:30:31','2024-01-06 04:30:30',150,'General',100.00,'USD',2,1,'civicrm_line_item',36),
- (37,'2024-01-06 04:30:31','2024-01-06 04:30:30',42,'General',100.00,'USD',2,1,'civicrm_line_item',37),
- (38,'2024-01-06 04:30:31','2024-01-06 04:30:30',65,'General',100.00,'USD',2,1,'civicrm_line_item',38),
- (39,'2024-01-06 04:30:31','2024-01-06 04:30:30',159,'General',100.00,'USD',2,1,'civicrm_line_item',39),
- (40,'2024-01-06 04:30:31','2024-01-06 04:30:30',38,'General',100.00,'USD',2,1,'civicrm_line_item',40),
- (41,'2024-01-06 04:30:31','2024-01-06 04:30:30',9,'General',100.00,'USD',2,1,'civicrm_line_item',41),
- (42,'2024-01-06 04:30:31','2024-01-06 04:30:30',4,'General',100.00,'USD',2,1,'civicrm_line_item',42),
- (43,'2024-01-06 04:30:31','2024-01-06 04:30:30',28,'General',100.00,'USD',2,1,'civicrm_line_item',43),
- (44,'2024-01-06 04:30:31','2024-01-06 04:30:30',24,'General',100.00,'USD',2,1,'civicrm_line_item',44),
- (45,'2024-01-06 04:30:31','2024-01-06 04:30:30',188,'General',100.00,'USD',2,1,'civicrm_line_item',45),
- (46,'2024-01-06 04:30:31','2024-01-06 04:30:30',160,'Student',50.00,'USD',2,1,'civicrm_line_item',46),
- (47,'2024-01-06 04:30:31','2024-01-06 04:30:30',157,'Student',50.00,'USD',2,1,'civicrm_line_item',47),
- (48,'2024-01-06 04:30:31','2024-01-06 04:30:30',41,'Student',50.00,'USD',2,1,'civicrm_line_item',48),
- (49,'2024-01-06 04:30:31','2024-01-06 04:30:30',165,'Student',50.00,'USD',2,1,'civicrm_line_item',49),
- (50,'2024-01-06 04:30:31','2024-01-06 04:30:30',129,'Student',50.00,'USD',2,1,'civicrm_line_item',50),
- (51,'2024-01-06 04:30:31','2024-01-06 04:30:30',11,'Student',50.00,'USD',2,1,'civicrm_line_item',51),
- (52,'2024-01-06 04:30:31','2024-01-06 04:30:30',93,'Student',50.00,'USD',2,1,'civicrm_line_item',52),
- (53,'2024-01-06 04:30:31','2024-01-06 04:30:30',202,'Student',50.00,'USD',2,1,'civicrm_line_item',53),
- (54,'2024-01-06 04:30:31','2024-01-06 04:30:30',123,'Student',50.00,'USD',2,1,'civicrm_line_item',54),
- (55,'2024-01-06 04:30:31','2024-01-06 04:30:30',78,'Student',50.00,'USD',2,1,'civicrm_line_item',55),
- (56,'2024-01-06 04:30:31','2024-01-06 04:30:30',94,'Student',50.00,'USD',2,1,'civicrm_line_item',56),
- (57,'2024-01-06 04:30:31','2024-01-06 04:30:30',35,'Student',50.00,'USD',2,1,'civicrm_line_item',57),
- (58,'2024-01-06 04:30:31','2024-01-06 04:30:30',66,'Student',50.00,'USD',2,1,'civicrm_line_item',58),
- (59,'2024-01-06 04:30:31','2024-01-06 04:30:30',27,'Student',50.00,'USD',2,1,'civicrm_line_item',59),
- (60,'2024-01-06 04:30:31','2024-01-06 04:30:30',3,'Lifetime',1200.00,'USD',2,1,'civicrm_line_item',60),
- (61,'2024-01-06 04:30:31','2024-01-06 04:30:30',139,'Lifetime',1200.00,'USD',2,1,'civicrm_line_item',61),
- (62,'2024-01-06 04:30:31','2024-01-06 04:30:30',138,'Soprano',50.00,'USD',2,1,'civicrm_line_item',97),
- (63,'2024-01-06 04:30:31','2024-01-06 04:30:30',67,'Soprano',50.00,'USD',2,1,'civicrm_line_item',98),
- (64,'2024-01-06 04:30:31','2024-01-06 04:30:30',62,'Soprano',50.00,'USD',2,1,'civicrm_line_item',99),
- (65,'2024-01-06 04:30:31','2024-01-06 04:30:30',161,'Soprano',50.00,'USD',2,1,'civicrm_line_item',100),
- (66,'2024-01-06 04:30:31','2024-01-06 04:30:30',148,'Soprano',50.00,'USD',2,1,'civicrm_line_item',101),
- (67,'2024-01-06 04:30:31','2024-01-06 04:30:30',47,'Soprano',50.00,'USD',2,1,'civicrm_line_item',102),
- (68,'2024-01-06 04:30:31','2024-01-06 04:30:30',41,'Soprano',50.00,'USD',2,1,'civicrm_line_item',103),
- (69,'2024-01-06 04:30:31','2024-01-06 04:30:30',87,'Soprano',50.00,'USD',2,1,'civicrm_line_item',104),
- (70,'2024-01-06 04:30:31','2024-01-06 04:30:30',77,'Soprano',50.00,'USD',2,1,'civicrm_line_item',105),
- (71,'2024-01-06 04:30:31','2024-01-06 04:30:30',144,'Soprano',50.00,'USD',2,1,'civicrm_line_item',106),
- (72,'2024-01-06 04:30:31','2024-01-06 04:30:30',7,'Soprano',50.00,'USD',2,1,'civicrm_line_item',107),
- (73,'2024-01-06 04:30:31','2024-01-06 04:30:30',185,'Soprano',50.00,'USD',2,1,'civicrm_line_item',108),
- (74,'2024-01-06 04:30:31','2024-01-06 04:30:30',25,'Soprano',50.00,'USD',2,1,'civicrm_line_item',109),
- (75,'2024-01-06 04:30:31','2024-01-06 04:30:30',162,'Soprano',50.00,'USD',2,1,'civicrm_line_item',110),
- (76,'2024-01-06 04:30:31','2024-01-06 04:30:30',202,'Soprano',50.00,'USD',2,1,'civicrm_line_item',111),
- (77,'2024-01-06 04:30:31','2024-01-06 04:30:30',125,'Soprano',50.00,'USD',2,1,'civicrm_line_item',112),
- (78,'2024-01-06 04:30:31','2024-01-06 04:30:30',183,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',63),
- (79,'2024-01-06 04:30:31','2024-01-06 04:30:30',75,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',64),
- (80,'2024-01-06 04:30:31','2024-01-06 04:30:30',103,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',65),
- (81,'2024-01-06 04:30:31','2024-01-06 04:30:30',111,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',66),
- (82,'2024-01-06 04:30:31','2024-01-06 04:30:30',184,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',67),
- (83,'2024-01-06 04:30:31','2024-01-06 04:30:30',98,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',68),
- (84,'2024-01-06 04:30:31','2024-01-06 04:30:30',118,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',69),
- (85,'2024-01-06 04:30:31','2024-01-06 04:30:30',190,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',70),
- (86,'2024-01-06 04:30:31','2024-01-06 04:30:30',6,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',71),
- (87,'2024-01-06 04:30:31','2024-01-06 04:30:30',201,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',72),
- (88,'2024-01-06 04:30:31','2024-01-06 04:30:30',72,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',73),
- (89,'2024-01-06 04:30:31','2024-01-06 04:30:30',189,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',74),
- (90,'2024-01-06 04:30:31','2024-01-06 04:30:30',50,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',75),
- (91,'2024-01-06 04:30:31','2024-01-06 04:30:30',66,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',76),
- (92,'2024-01-06 04:30:31','2024-01-06 04:30:30',2,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',77),
- (93,'2024-01-06 04:30:31','2024-01-06 04:30:30',12,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',78),
- (94,'2024-01-06 04:30:31','2024-01-06 04:30:30',46,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',79),
- (95,'2024-01-06 04:30:31','2024-01-06 04:30:30',147,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',80),
- (96,'2024-01-06 04:30:31','2024-01-06 04:30:30',94,'Single',50.00,'USD',4,1,'civicrm_line_item',81),
- (97,'2024-01-06 04:30:31','2024-01-06 04:30:30',24,'Single',50.00,'USD',4,1,'civicrm_line_item',82),
- (98,'2024-01-06 04:30:31','2024-01-06 04:30:30',37,'Single',50.00,'USD',4,1,'civicrm_line_item',83),
- (99,'2024-01-06 04:30:31','2024-01-06 04:30:30',80,'Single',50.00,'USD',4,1,'civicrm_line_item',84),
- (100,'2024-01-06 04:30:31','2024-01-06 04:30:30',114,'Single',50.00,'USD',4,1,'civicrm_line_item',85),
- (101,'2024-01-06 04:30:31','2024-01-06 04:30:30',89,'Single',50.00,'USD',4,1,'civicrm_line_item',86),
- (102,'2024-01-06 04:30:31','2024-01-06 04:30:30',192,'Single',50.00,'USD',4,1,'civicrm_line_item',87),
- (103,'2024-01-06 04:30:31','2024-01-06 04:30:30',187,'Single',50.00,'USD',4,1,'civicrm_line_item',88),
- (104,'2024-01-06 04:30:31','2024-01-06 04:30:30',101,'Single',50.00,'USD',4,1,'civicrm_line_item',89),
- (105,'2024-01-06 04:30:31','2024-01-06 04:30:30',38,'Single',50.00,'USD',4,1,'civicrm_line_item',90),
- (106,'2024-01-06 04:30:31','2024-01-06 04:30:30',18,'Single',50.00,'USD',4,1,'civicrm_line_item',91),
- (107,'2024-01-06 04:30:31','2024-01-06 04:30:30',65,'Single',50.00,'USD',4,1,'civicrm_line_item',92),
- (108,'2024-01-06 04:30:31','2024-01-06 04:30:30',32,'Single',50.00,'USD',4,1,'civicrm_line_item',93),
- (109,'2024-01-06 04:30:31','2024-01-06 04:30:30',15,'Single',50.00,'USD',4,1,'civicrm_line_item',94),
- (110,'2024-01-06 04:30:31','2024-01-06 04:30:30',152,'Single',50.00,'USD',4,1,'civicrm_line_item',95),
- (111,'2024-01-06 04:30:31','2024-01-06 04:30:30',167,'Single',50.00,'USD',4,1,'civicrm_line_item',96);
+ (1,'2024-04-26 15:50:11','2014-04-26 15:50:11',2,'Contribution Amount',125.00,'USD',1,1,'civicrm_line_item',1),
+ (2,'2024-04-26 15:50:11','2022-01-26 15:50:11',4,'Contribution Amount',50.00,'USD',1,1,'civicrm_line_item',2),
+ (3,'2024-04-26 15:50:11','2018-04-01 02:50:11',6,'Contribution Amount',25.00,'GBP',1,1,'civicrm_line_item',3),
+ (4,'2024-04-26 15:50:11','2022-01-26 15:50:11',8,'Contribution Amount',50.00,'USD',1,1,'civicrm_line_item',4),
+ (5,'2024-04-26 15:50:11','2022-01-26 15:50:11',4,'Contribution Amount',50.00,'USD',1,1,'civicrm_line_item',5),
+ (6,'2024-04-26 15:50:11','2024-02-01 15:08:11',16,'Contribution Amount',500.00,'USD',1,1,'civicrm_line_item',6),
+ (7,'2024-04-26 15:50:11','2024-04-24 15:50:11',19,'Contribution Amount',1750.00,'USD',1,1,'civicrm_line_item',7),
+ (8,'2024-04-26 15:50:11','2023-09-03 00:01:11',82,'Contribution Amount',50.00,'USD',1,1,'civicrm_line_item',8),
+ (9,'2024-04-26 15:50:11','2023-05-26 15:50:11',92,'Contribution Amount',10.00,'USD',1,1,'civicrm_line_item',9),
+ (10,'2024-04-26 15:50:11','2019-12-03 17:50:11',34,'Contribution Amount',250.00,'USD',1,1,'civicrm_line_item',10),
+ (11,'2024-04-26 15:50:11','2024-04-25 11:50:11',71,'Contribution Amount',500.00,'JPY',1,1,'civicrm_line_item',11),
+ (12,'2024-04-26 15:50:11','2023-01-26 05:16:51',43,'Contribution Amount',50.00,'USD',1,1,'civicrm_line_item',12),
+ (13,'2024-04-26 15:50:11','2024-01-26 00:00:00',32,'Contribution Amount',50.00,'USD',1,1,'civicrm_line_item',13),
+ (14,'2024-04-26 15:50:11','2024-02-26 00:00:00',32,'Contribution Amount',50.00,'USD',1,1,'civicrm_line_item',14),
+ (15,'2024-04-26 15:50:11','2023-01-26 15:50:11',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',15),
+ (16,'2024-04-26 15:50:11','2023-02-26 15:50:11',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',16),
+ (17,'2024-04-26 15:50:11','2023-03-26 15:50:11',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',17),
+ (18,'2024-04-26 15:50:11','2023-04-26 15:50:11',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',18),
+ (19,'2024-04-26 15:50:11','2023-05-26 15:50:11',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',19),
+ (20,'2024-04-26 15:50:11','2023-06-26 15:50:11',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',20),
+ (21,'2024-04-26 15:50:11','2023-07-26 15:50:11',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',21),
+ (22,'2024-04-26 15:50:11','2023-08-26 15:50:11',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',22),
+ (23,'2024-04-26 15:50:11','2023-09-26 15:50:11',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',23),
+ (24,'2024-04-26 15:50:11','2023-10-26 15:50:11',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',24),
+ (25,'2024-04-26 15:50:11','2023-11-26 15:50:11',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',25),
+ (26,'2024-04-26 15:50:11','2023-08-26 15:50:11',99,'Contribution Amount',10.00,'CAD',1,1,'civicrm_line_item',26),
+ (27,'2024-04-26 15:50:11','2023-09-26 15:50:11',99,'Contribution Amount',10.00,'CAD',1,1,'civicrm_line_item',27),
+ (28,'2024-04-26 15:50:11','2023-10-26 15:50:11',99,'Contribution Amount',10.00,'CAD',1,1,'civicrm_line_item',28),
+ (29,'2024-04-26 15:50:11','2023-11-26 15:50:11',99,'Contribution Amount',10.00,'CAD',1,1,'civicrm_line_item',29),
+ (30,'2024-04-26 15:50:11','2023-12-26 15:50:11',99,'Contribution Amount',10.00,'CAD',1,1,'civicrm_line_item',30),
+ (31,'2024-04-26 15:50:11','2024-03-26 15:50:11',103,'Contribution Amount',5.00,'EUR',1,1,'civicrm_line_item',31),
+ (32,'2024-04-26 15:50:11','2024-04-26 15:50:11',194,'General',100.00,'USD',2,1,'civicrm_line_item',32),
+ (33,'2024-04-26 15:50:11','2024-04-26 15:50:11',60,'General',100.00,'USD',2,1,'civicrm_line_item',33),
+ (34,'2024-04-26 15:50:11','2024-04-26 15:50:11',112,'General',100.00,'USD',2,1,'civicrm_line_item',34),
+ (35,'2024-04-26 15:50:11','2024-04-26 15:50:11',201,'General',100.00,'USD',2,1,'civicrm_line_item',35),
+ (36,'2024-04-26 15:50:12','2024-04-26 15:50:11',128,'General',100.00,'USD',2,1,'civicrm_line_item',36),
+ (37,'2024-04-26 15:50:12','2024-04-26 15:50:11',142,'General',100.00,'USD',2,1,'civicrm_line_item',37),
+ (38,'2024-04-26 15:50:12','2024-04-26 15:50:11',65,'General',100.00,'USD',2,1,'civicrm_line_item',38),
+ (39,'2024-04-26 15:50:12','2024-04-26 15:50:11',20,'General',100.00,'USD',2,1,'civicrm_line_item',39),
+ (40,'2024-04-26 15:50:12','2024-04-26 15:50:11',200,'General',100.00,'USD',2,1,'civicrm_line_item',40),
+ (41,'2024-04-26 15:50:12','2024-04-26 15:50:11',140,'General',100.00,'USD',2,1,'civicrm_line_item',41),
+ (42,'2024-04-26 15:50:12','2024-04-26 15:50:11',62,'General',100.00,'USD',2,1,'civicrm_line_item',42),
+ (43,'2024-04-26 15:50:12','2024-04-26 15:50:11',75,'General',100.00,'USD',2,1,'civicrm_line_item',43),
+ (44,'2024-04-26 15:50:12','2024-04-26 15:50:11',107,'General',100.00,'USD',2,1,'civicrm_line_item',44),
+ (45,'2024-04-26 15:50:12','2024-04-26 15:50:11',166,'General',100.00,'USD',2,1,'civicrm_line_item',45),
+ (46,'2024-04-26 15:50:12','2024-04-26 15:50:11',87,'Student',50.00,'USD',2,1,'civicrm_line_item',46),
+ (47,'2024-04-26 15:50:12','2024-04-26 15:50:11',190,'Student',50.00,'USD',2,1,'civicrm_line_item',47),
+ (48,'2024-04-26 15:50:12','2024-04-26 15:50:11',5,'Student',50.00,'USD',2,1,'civicrm_line_item',48),
+ (49,'2024-04-26 15:50:12','2024-04-26 15:50:11',13,'Student',50.00,'USD',2,1,'civicrm_line_item',49),
+ (50,'2024-04-26 15:50:12','2024-04-26 15:50:11',115,'Student',50.00,'USD',2,1,'civicrm_line_item',50),
+ (51,'2024-04-26 15:50:12','2024-04-26 15:50:11',4,'Student',50.00,'USD',2,1,'civicrm_line_item',51),
+ (52,'2024-04-26 15:50:12','2024-04-26 15:50:11',160,'Student',50.00,'USD',2,1,'civicrm_line_item',52),
+ (53,'2024-04-26 15:50:12','2024-04-26 15:50:11',159,'Student',50.00,'USD',2,1,'civicrm_line_item',53),
+ (54,'2024-04-26 15:50:12','2024-04-26 15:50:11',120,'Student',50.00,'USD',2,1,'civicrm_line_item',54),
+ (55,'2024-04-26 15:50:12','2024-04-26 15:50:11',202,'Student',50.00,'USD',2,1,'civicrm_line_item',55),
+ (56,'2024-04-26 15:50:12','2024-04-26 15:50:11',71,'Student',50.00,'USD',2,1,'civicrm_line_item',56),
+ (57,'2024-04-26 15:50:12','2024-04-26 15:50:11',39,'Student',50.00,'USD',2,1,'civicrm_line_item',57),
+ (58,'2024-04-26 15:50:12','2024-04-26 15:50:11',116,'Student',50.00,'USD',2,1,'civicrm_line_item',58),
+ (59,'2024-04-26 15:50:12','2024-04-26 15:50:11',50,'Student',50.00,'USD',2,1,'civicrm_line_item',59),
+ (60,'2024-04-26 15:50:12','2024-04-26 15:50:11',43,'Lifetime',1200.00,'USD',2,1,'civicrm_line_item',60),
+ (61,'2024-04-26 15:50:12','2024-04-26 15:50:11',155,'Lifetime',1200.00,'USD',2,1,'civicrm_line_item',61),
+ (62,'2024-04-26 15:50:12','2024-04-26 15:50:11',34,'Soprano',50.00,'USD',2,1,'civicrm_line_item',97),
+ (63,'2024-04-26 15:50:12','2024-04-26 15:50:11',62,'Soprano',50.00,'USD',2,1,'civicrm_line_item',98),
+ (64,'2024-04-26 15:50:12','2024-04-26 15:50:11',95,'Soprano',50.00,'USD',2,1,'civicrm_line_item',99),
+ (65,'2024-04-26 15:50:12','2024-04-26 15:50:11',54,'Soprano',50.00,'USD',2,1,'civicrm_line_item',100),
+ (66,'2024-04-26 15:50:12','2024-04-26 15:50:11',123,'Soprano',50.00,'USD',2,1,'civicrm_line_item',101),
+ (67,'2024-04-26 15:50:12','2024-04-26 15:50:11',163,'Soprano',50.00,'USD',2,1,'civicrm_line_item',102),
+ (68,'2024-04-26 15:50:12','2024-04-26 15:50:11',10,'Soprano',50.00,'USD',2,1,'civicrm_line_item',103),
+ (69,'2024-04-26 15:50:12','2024-04-26 15:50:11',8,'Soprano',50.00,'USD',2,1,'civicrm_line_item',104),
+ (70,'2024-04-26 15:50:12','2024-04-26 15:50:11',60,'Soprano',50.00,'USD',2,1,'civicrm_line_item',105),
+ (71,'2024-04-26 15:50:12','2024-04-26 15:50:11',26,'Soprano',50.00,'USD',2,1,'civicrm_line_item',106),
+ (72,'2024-04-26 15:50:12','2024-04-26 15:50:11',57,'Soprano',50.00,'USD',2,1,'civicrm_line_item',107),
+ (73,'2024-04-26 15:50:12','2024-04-26 15:50:11',6,'Soprano',50.00,'USD',2,1,'civicrm_line_item',108),
+ (74,'2024-04-26 15:50:12','2024-04-26 15:50:11',21,'Soprano',50.00,'USD',2,1,'civicrm_line_item',109),
+ (75,'2024-04-26 15:50:12','2024-04-26 15:50:11',3,'Soprano',50.00,'USD',2,1,'civicrm_line_item',110),
+ (76,'2024-04-26 15:50:12','2024-04-26 15:50:11',18,'Soprano',50.00,'USD',2,1,'civicrm_line_item',111),
+ (77,'2024-04-26 15:50:12','2024-04-26 15:50:11',78,'Soprano',50.00,'USD',2,1,'civicrm_line_item',112),
+ (78,'2024-04-26 15:50:12','2024-04-26 15:50:11',193,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',63),
+ (79,'2024-04-26 15:50:12','2024-04-26 15:50:11',132,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',64),
+ (80,'2024-04-26 15:50:12','2024-04-26 15:50:11',81,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',65),
+ (81,'2024-04-26 15:50:12','2024-04-26 15:50:11',113,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',66),
+ (82,'2024-04-26 15:50:12','2024-04-26 15:50:11',101,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',67),
+ (83,'2024-04-26 15:50:12','2024-04-26 15:50:11',11,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',68),
+ (84,'2024-04-26 15:50:12','2024-04-26 15:50:11',195,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',69),
+ (85,'2024-04-26 15:50:12','2024-04-26 15:50:11',158,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',70),
+ (86,'2024-04-26 15:50:12','2024-04-26 15:50:11',93,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',71),
+ (87,'2024-04-26 15:50:12','2024-04-26 15:50:11',182,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',72),
+ (88,'2024-04-26 15:50:12','2024-04-26 15:50:11',79,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',73),
+ (89,'2024-04-26 15:50:12','2024-04-26 15:50:11',28,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',74),
+ (90,'2024-04-26 15:50:12','2024-04-26 15:50:11',114,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',75),
+ (91,'2024-04-26 15:50:12','2024-04-26 15:50:11',72,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',76),
+ (92,'2024-04-26 15:50:12','2024-04-26 15:50:11',177,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',77),
+ (93,'2024-04-26 15:50:12','2024-04-26 15:50:11',194,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',78),
+ (94,'2024-04-26 15:50:12','2024-04-26 15:50:11',67,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',79),
+ (95,'2024-04-26 15:50:12','2024-04-26 15:50:11',20,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',80),
+ (96,'2024-04-26 15:50:12','2024-04-26 15:50:11',51,'Single',50.00,'USD',4,1,'civicrm_line_item',81),
+ (97,'2024-04-26 15:50:12','2024-04-26 15:50:11',153,'Single',50.00,'USD',4,1,'civicrm_line_item',82),
+ (98,'2024-04-26 15:50:12','2024-04-26 15:50:11',35,'Single',50.00,'USD',4,1,'civicrm_line_item',83),
+ (99,'2024-04-26 15:50:12','2024-04-26 15:50:11',75,'Single',50.00,'USD',4,1,'civicrm_line_item',84),
+ (100,'2024-04-26 15:50:12','2024-04-26 15:50:11',156,'Single',50.00,'USD',4,1,'civicrm_line_item',85),
+ (101,'2024-04-26 15:50:12','2024-04-26 15:50:11',146,'Single',50.00,'USD',4,1,'civicrm_line_item',86),
+ (102,'2024-04-26 15:50:12','2024-04-26 15:50:11',87,'Single',50.00,'USD',4,1,'civicrm_line_item',87),
+ (103,'2024-04-26 15:50:12','2024-04-26 15:50:11',129,'Single',50.00,'USD',4,1,'civicrm_line_item',88),
+ (104,'2024-04-26 15:50:12','2024-04-26 15:50:11',22,'Single',50.00,'USD',4,1,'civicrm_line_item',89),
+ (105,'2024-04-26 15:50:12','2024-04-26 15:50:11',152,'Single',50.00,'USD',4,1,'civicrm_line_item',90),
+ (106,'2024-04-26 15:50:12','2024-04-26 15:50:11',70,'Single',50.00,'USD',4,1,'civicrm_line_item',91),
+ (107,'2024-04-26 15:50:12','2024-04-26 15:50:11',186,'Single',50.00,'USD',4,1,'civicrm_line_item',92),
+ (108,'2024-04-26 15:50:12','2024-04-26 15:50:11',41,'Single',50.00,'USD',4,1,'civicrm_line_item',93),
+ (109,'2024-04-26 15:50:12','2024-04-26 15:50:11',171,'Single',50.00,'USD',4,1,'civicrm_line_item',94),
+ (110,'2024-04-26 15:50:12','2024-04-26 15:50:11',176,'Single',50.00,'USD',4,1,'civicrm_line_item',95),
+ (111,'2024-04-26 15:50:12','2024-04-26 15:50:11',181,'Single',50.00,'USD',4,1,'civicrm_line_item',96);
/*!40000 ALTER TABLE `civicrm_financial_item` ENABLE KEYS */;
UNLOCK TABLES;
@@ -3792,117 +3800,117 @@ UNLOCK TABLES;
LOCK TABLES `civicrm_financial_trxn` WRITE;
/*!40000 ALTER TABLE `civicrm_financial_trxn` DISABLE KEYS */;
INSERT INTO `civicrm_financial_trxn` (`id`, `from_financial_account_id`, `to_financial_account_id`, `trxn_date`, `total_amount`, `fee_amount`, `net_amount`, `currency`, `is_payment`, `trxn_id`, `trxn_result_code`, `status_id`, `payment_processor_id`, `payment_instrument_id`, `card_type_id`, `check_number`, `pan_truncation`, `order_reference`) VALUES
- (1,NULL,6,'2014-01-06 04:30:30',125.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,4,NULL,'1041',NULL,NULL),
- (2,NULL,6,'2021-10-06 04:30:30',50.00,NULL,NULL,'USD',1,'P20901X1',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (3,NULL,6,'2017-12-11 15:30:30',25.00,NULL,NULL,'GBP',1,'GBP12',NULL,1,NULL,4,NULL,'2095',NULL,NULL),
- (4,NULL,6,'2021-10-06 04:30:30',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,4,NULL,'10552',NULL,NULL),
- (5,NULL,6,'2021-10-06 04:30:30',50.00,NULL,NULL,'USD',1,'Q90901X1',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (6,NULL,6,'2023-10-13 03:48:30',500.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,4,NULL,'509',NULL,NULL),
- (7,NULL,6,'2024-01-04 04:30:30',1750.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,'102',NULL,NULL),
- (8,NULL,6,'2023-05-14 12:41:30',50.00,NULL,NULL,'USD',1,'P20193L2',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (9,NULL,6,'2023-02-06 04:30:30',10.00,NULL,NULL,'USD',1,'P40232Y3',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (10,NULL,6,'2019-08-14 06:30:30',250.00,NULL,NULL,'USD',1,'P20193L6',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (11,NULL,6,'2024-01-05 00:30:30',500.00,NULL,NULL,'JPY',1,'PL71',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (12,NULL,6,'2022-10-05 17:57:10',50.00,NULL,NULL,'USD',1,'P291X1',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (13,NULL,6,'2023-10-06 00:00:00',50.00,NULL,NULL,'USD',1,'PL32I',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (14,NULL,6,'2023-11-06 00:00:00',50.00,NULL,NULL,'USD',1,'PL32II',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (15,NULL,6,'2022-10-06 04:30:30',25.00,NULL,NULL,'USD',1,'PL32I591',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (16,NULL,6,'2022-11-06 04:30:30',25.00,NULL,NULL,'USD',1,'PL32I592',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (17,NULL,6,'2022-12-06 04:30:30',25.00,NULL,NULL,'USD',1,'PL32I593',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (18,NULL,6,'2023-01-06 04:30:30',25.00,NULL,NULL,'USD',1,'PL32I594',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (19,NULL,6,'2023-02-06 04:30:30',25.00,NULL,NULL,'USD',1,'PL32I595',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (20,NULL,6,'2023-03-06 04:30:30',25.00,NULL,NULL,'USD',1,'PL32I596',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (21,NULL,6,'2023-04-06 04:30:30',25.00,NULL,NULL,'USD',1,'PL32I597',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (22,NULL,6,'2023-05-06 04:30:30',25.00,NULL,NULL,'USD',1,'PL32I598',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (23,NULL,6,'2023-06-06 04:30:30',25.00,NULL,NULL,'USD',1,'PL32I599',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (24,NULL,6,'2023-07-06 04:30:30',25.00,NULL,NULL,'USD',1,'PL32I5910',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (25,NULL,6,'2023-08-06 04:30:30',25.00,NULL,NULL,'USD',1,'PL32I5911',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (26,NULL,6,'2023-05-06 04:30:30',10.00,NULL,NULL,'CAD',1,'PL32I991',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (27,NULL,6,'2023-06-06 04:30:30',10.00,NULL,NULL,'CAD',1,'PL32I992',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (28,NULL,6,'2023-07-06 04:30:30',10.00,NULL,NULL,'CAD',1,'PL32I993',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (29,NULL,6,'2023-08-06 04:30:30',10.00,NULL,NULL,'CAD',1,'PL32I994',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (30,NULL,6,'2023-09-06 04:30:30',10.00,NULL,NULL,'CAD',1,'PL32I995',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (31,NULL,6,'2023-12-06 04:30:30',5.00,NULL,NULL,'EUR',1,'PL32I1031',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (32,NULL,6,'2024-01-06 04:30:30',100.00,NULL,NULL,'USD',1,'d04bebb925f35013',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (33,NULL,6,'2024-01-06 04:30:30',100.00,NULL,NULL,'USD',1,'85f82bdf993869a9',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (34,NULL,6,'2024-01-06 04:30:30',100.00,NULL,NULL,'USD',1,'a6e23b5bdacc2556',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (35,NULL,6,'2024-01-06 04:30:30',100.00,NULL,NULL,'USD',1,'54ba67e8cd2c5831',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (36,NULL,6,'2024-01-06 04:30:30',100.00,NULL,NULL,'USD',1,'72e3d8ab02a88749',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (37,NULL,6,'2024-01-06 04:30:30',100.00,NULL,NULL,'USD',1,'114664b16c0d05d7',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (38,NULL,6,'2024-01-06 04:30:30',100.00,NULL,NULL,'USD',1,'54afd47a158e6a98',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (39,NULL,6,'2024-01-06 04:30:30',100.00,NULL,NULL,'USD',1,'513d0202ba2e33e8',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (40,NULL,6,'2024-01-06 04:30:30',100.00,NULL,NULL,'USD',1,'254358f51b2e2e2e',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (41,NULL,6,'2024-01-06 04:30:30',100.00,NULL,NULL,'USD',1,'d436781d36642d52',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (42,NULL,6,'2024-01-06 04:30:30',100.00,NULL,NULL,'USD',1,'c46dd20e75d9cd63',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (43,NULL,6,'2024-01-06 04:30:30',100.00,NULL,NULL,'USD',1,'c30b782dffc88578',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (44,NULL,6,'2024-01-06 04:30:30',100.00,NULL,NULL,'USD',1,'147acd979994a3e5',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (45,NULL,6,'2024-01-06 04:30:30',100.00,NULL,NULL,'USD',1,'49e79faa71b04821',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (46,NULL,6,'2024-01-06 04:30:30',50.00,NULL,NULL,'USD',1,'aa84cd6d0c671bf6',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (47,NULL,6,'2024-01-06 04:30:30',50.00,NULL,NULL,'USD',1,'4d0f515e9744319f',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (48,NULL,6,'2024-01-06 04:30:30',50.00,NULL,NULL,'USD',1,'549daaa33e883987',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (49,NULL,6,'2024-01-06 04:30:30',50.00,NULL,NULL,'USD',1,'82bd65e9cca2891e',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (50,NULL,6,'2024-01-06 04:30:30',50.00,NULL,NULL,'USD',1,'83a31e80a72fedf9',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (51,NULL,6,'2024-01-06 04:30:30',50.00,NULL,NULL,'USD',1,'102f534ba875514c',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (52,NULL,6,'2024-01-06 04:30:30',50.00,NULL,NULL,'USD',1,'c63f9619b1f6a5da',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (53,NULL,6,'2024-01-06 04:30:30',50.00,NULL,NULL,'USD',1,'a166d69a85636182',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (54,NULL,6,'2024-01-06 04:30:30',50.00,NULL,NULL,'USD',1,'f897088d4040e88b',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (55,NULL,6,'2024-01-06 04:30:30',50.00,NULL,NULL,'USD',1,'64d9a20ca6695123',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (56,NULL,6,'2024-01-06 04:30:30',50.00,NULL,NULL,'USD',1,'b44f6776a38cd0b0',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (57,NULL,6,'2024-01-06 04:30:30',50.00,NULL,NULL,'USD',1,'bdd4ba34f19b8508',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (58,NULL,6,'2024-01-06 04:30:30',50.00,NULL,NULL,'USD',1,'243d7aa987a2baa3',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (59,NULL,6,'2024-01-06 04:30:30',50.00,NULL,NULL,'USD',1,'401f0d68db4d1e96',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (60,NULL,6,'2024-01-06 04:30:30',1200.00,NULL,NULL,'USD',1,'3b7979f46cceaa08',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (61,NULL,6,'2024-01-06 04:30:30',1200.00,NULL,NULL,'USD',1,'6a5980462cb6efb4',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (62,NULL,6,'2024-01-06 04:30:30',50.00,NULL,NULL,'USD',1,'45dd6c0b12692902',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (63,NULL,6,'2024-01-06 04:30:30',50.00,NULL,NULL,'USD',1,'c9d3a804ca680143',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (64,NULL,6,'2024-01-06 04:30:30',50.00,NULL,NULL,'USD',1,'2d5db36ace9588e4',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (65,NULL,6,'2024-01-06 04:30:30',50.00,NULL,NULL,'USD',1,'894bf74b96303bc8',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (66,NULL,6,'2024-01-06 04:30:30',50.00,NULL,NULL,'USD',1,'0c13497f46c6bb46',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (67,NULL,6,'2024-01-06 04:30:30',50.00,NULL,NULL,'USD',1,'3c19adb701828ca5',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (68,NULL,6,'2024-01-06 04:30:30',50.00,NULL,NULL,'USD',1,'a5dde0c0ef88b617',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (69,NULL,6,'2024-01-06 04:30:30',50.00,NULL,NULL,'USD',1,'888233d8d87b2292',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (70,NULL,6,'2024-01-06 04:30:30',50.00,NULL,NULL,'USD',1,'e146bd83b1233a2d',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (71,NULL,6,'2024-01-06 04:30:30',50.00,NULL,NULL,'USD',1,'dd75be522b0c3b37',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (72,NULL,6,'2024-01-06 04:30:30',50.00,NULL,NULL,'USD',1,'f006b49b97550bcf',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (73,NULL,6,'2024-01-06 04:30:30',50.00,NULL,NULL,'USD',1,'ba540bde6a24512f',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (74,NULL,6,'2024-01-06 04:30:30',50.00,NULL,NULL,'USD',1,'213d7fbdd009495b',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (75,NULL,6,'2024-01-06 04:30:30',50.00,NULL,NULL,'USD',1,'2867fa3f312390e3',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (76,NULL,6,'2024-01-06 04:30:30',50.00,NULL,NULL,'USD',1,'6e6b62f0b3b1560f',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (77,NULL,6,'2024-01-06 04:30:30',50.00,NULL,NULL,'USD',1,'d601f86d7d4ac5f0',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (78,NULL,6,'2024-01-06 04:30:30',800.00,NULL,NULL,'USD',1,'5f71b04aa74cef80',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (79,NULL,6,'2024-01-06 04:30:30',800.00,NULL,NULL,'USD',1,'85e4457d3b235f62',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (80,NULL,6,'2024-01-06 04:30:30',800.00,NULL,NULL,'USD',1,'ed7b07c140ba59ce',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (81,NULL,6,'2024-01-06 04:30:30',800.00,NULL,NULL,'USD',1,'ee67cf60826046ab',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (82,NULL,6,'2024-01-06 04:30:30',800.00,NULL,NULL,'USD',1,'98746c0f1879a8b3',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (83,NULL,6,'2024-01-06 04:30:30',800.00,NULL,NULL,'USD',1,'3cd0fcd4bd3c6e9c',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (84,NULL,6,'2024-01-06 04:30:30',800.00,NULL,NULL,'USD',1,'376e6c1d14da650c',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (85,NULL,6,'2024-01-06 04:30:30',800.00,NULL,NULL,'USD',1,'0dd4e5033a7eaf87',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (86,NULL,6,'2024-01-06 04:30:30',800.00,NULL,NULL,'USD',1,'fb4905a867502a4b',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (87,NULL,6,'2024-01-06 04:30:30',800.00,NULL,NULL,'USD',1,'fb14ee1572cd5300',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (88,NULL,6,'2024-01-06 04:30:30',800.00,NULL,NULL,'USD',1,'dacf986f91993264',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (89,NULL,6,'2024-01-06 04:30:30',800.00,NULL,NULL,'USD',1,'2170e40ef82e30ed',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (90,NULL,6,'2024-01-06 04:30:30',800.00,NULL,NULL,'USD',1,'306134a0c8b767ba',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (91,NULL,6,'2024-01-06 04:30:30',800.00,NULL,NULL,'USD',1,'bb245dad4d1aef62',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (92,NULL,6,'2024-01-06 04:30:30',800.00,NULL,NULL,'USD',1,'e33de35039337003',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (93,NULL,6,'2024-01-06 04:30:30',800.00,NULL,NULL,'USD',1,'2d1e67a9245d5fdc',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (94,NULL,6,'2024-01-06 04:30:30',800.00,NULL,NULL,'USD',1,'c9bddcb498f240eb',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (95,NULL,6,'2024-01-06 04:30:30',800.00,NULL,NULL,'USD',1,'c05415199bd45c2e',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (96,NULL,6,'2024-01-06 04:30:30',50.00,NULL,NULL,'USD',1,'356e2ea6f7e138db',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (97,NULL,6,'2024-01-06 04:30:30',50.00,NULL,NULL,'USD',1,'785c41d770598228',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (98,NULL,6,'2024-01-06 04:30:30',50.00,NULL,NULL,'USD',1,'bf96d198baa1575a',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (99,NULL,6,'2024-01-06 04:30:30',50.00,NULL,NULL,'USD',1,'983ea229b2e6c29f',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (100,NULL,6,'2024-01-06 04:30:30',50.00,NULL,NULL,'USD',1,'fd8a5608dfc8fd90',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (101,NULL,6,'2024-01-06 04:30:30',50.00,NULL,NULL,'USD',1,'bc1bc41100582c43',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (102,NULL,6,'2024-01-06 04:30:30',50.00,NULL,NULL,'USD',1,'9e971d6e58baa4ba',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (103,NULL,6,'2024-01-06 04:30:30',50.00,NULL,NULL,'USD',1,'a52ae21e1127264b',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (104,NULL,6,'2024-01-06 04:30:30',50.00,NULL,NULL,'USD',1,'f0f1369ed8bd6ade',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (105,NULL,6,'2024-01-06 04:30:30',50.00,NULL,NULL,'USD',1,'7f20752b4fcf16b9',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (106,NULL,6,'2024-01-06 04:30:30',50.00,NULL,NULL,'USD',1,'f9affcc9daf9f3f3',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (107,NULL,6,'2024-01-06 04:30:30',50.00,NULL,NULL,'USD',1,'1c930ea45e0c1ae4',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (108,NULL,6,'2024-01-06 04:30:30',50.00,NULL,NULL,'USD',1,'5dab449584553811',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (109,NULL,6,'2024-01-06 04:30:30',50.00,NULL,NULL,'USD',1,'121d8980a5da7e03',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (110,NULL,6,'2024-01-06 04:30:30',50.00,NULL,NULL,'USD',1,'1fc5dfd486634955',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (111,NULL,6,'2024-01-06 04:30:30',50.00,NULL,NULL,'USD',1,'6237b3b4d3156e7f',NULL,1,NULL,1,NULL,NULL,NULL,NULL);
+ (1,NULL,6,'2014-04-26 15:50:11',125.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,4,NULL,'1041',NULL,NULL),
+ (2,NULL,6,'2022-01-26 15:50:11',50.00,NULL,NULL,'USD',1,'P20901X1',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (3,NULL,6,'2018-04-01 02:50:11',25.00,NULL,NULL,'GBP',1,'GBP12',NULL,1,NULL,4,NULL,'2095',NULL,NULL),
+ (4,NULL,6,'2022-01-26 15:50:11',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,4,NULL,'10552',NULL,NULL),
+ (5,NULL,6,'2022-01-26 15:50:11',50.00,NULL,NULL,'USD',1,'Q90901X1',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (6,NULL,6,'2024-02-01 15:08:11',500.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,4,NULL,'509',NULL,NULL),
+ (7,NULL,6,'2024-04-24 15:50:11',1750.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,'102',NULL,NULL),
+ (8,NULL,6,'2023-09-03 00:01:11',50.00,NULL,NULL,'USD',1,'P20193L2',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (9,NULL,6,'2023-05-26 15:50:11',10.00,NULL,NULL,'USD',1,'P40232Y3',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (10,NULL,6,'2019-12-03 17:50:11',250.00,NULL,NULL,'USD',1,'P20193L6',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (11,NULL,6,'2024-04-25 11:50:11',500.00,NULL,NULL,'JPY',1,'PL71',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (12,NULL,6,'2023-01-26 05:16:51',50.00,NULL,NULL,'USD',1,'P291X1',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (13,NULL,6,'2024-01-26 00:00:00',50.00,NULL,NULL,'USD',1,'PL32I',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (14,NULL,6,'2024-02-26 00:00:00',50.00,NULL,NULL,'USD',1,'PL32II',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (15,NULL,6,'2023-01-26 15:50:11',25.00,NULL,NULL,'USD',1,'PL32I591',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (16,NULL,6,'2023-02-26 15:50:11',25.00,NULL,NULL,'USD',1,'PL32I592',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (17,NULL,6,'2023-03-26 15:50:11',25.00,NULL,NULL,'USD',1,'PL32I593',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (18,NULL,6,'2023-04-26 15:50:11',25.00,NULL,NULL,'USD',1,'PL32I594',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (19,NULL,6,'2023-05-26 15:50:11',25.00,NULL,NULL,'USD',1,'PL32I595',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (20,NULL,6,'2023-06-26 15:50:11',25.00,NULL,NULL,'USD',1,'PL32I596',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (21,NULL,6,'2023-07-26 15:50:11',25.00,NULL,NULL,'USD',1,'PL32I597',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (22,NULL,6,'2023-08-26 15:50:11',25.00,NULL,NULL,'USD',1,'PL32I598',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (23,NULL,6,'2023-09-26 15:50:11',25.00,NULL,NULL,'USD',1,'PL32I599',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (24,NULL,6,'2023-10-26 15:50:11',25.00,NULL,NULL,'USD',1,'PL32I5910',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (25,NULL,6,'2023-11-26 15:50:11',25.00,NULL,NULL,'USD',1,'PL32I5911',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (26,NULL,6,'2023-08-26 15:50:11',10.00,NULL,NULL,'CAD',1,'PL32I991',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (27,NULL,6,'2023-09-26 15:50:11',10.00,NULL,NULL,'CAD',1,'PL32I992',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (28,NULL,6,'2023-10-26 15:50:11',10.00,NULL,NULL,'CAD',1,'PL32I993',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (29,NULL,6,'2023-11-26 15:50:11',10.00,NULL,NULL,'CAD',1,'PL32I994',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (30,NULL,6,'2023-12-26 15:50:11',10.00,NULL,NULL,'CAD',1,'PL32I995',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (31,NULL,6,'2024-03-26 15:50:11',5.00,NULL,NULL,'EUR',1,'PL32I1031',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (32,NULL,6,'2024-04-26 15:50:11',100.00,NULL,NULL,'USD',1,'b5a1f057208f5a91',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (33,NULL,6,'2024-04-26 15:50:11',100.00,NULL,NULL,'USD',1,'9bdcc5ddeda8a520',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (34,NULL,6,'2024-04-26 15:50:11',100.00,NULL,NULL,'USD',1,'566c8d0eaa230008',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (35,NULL,6,'2024-04-26 15:50:11',100.00,NULL,NULL,'USD',1,'9d3f65600f92e622',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (36,NULL,6,'2024-04-26 15:50:11',100.00,NULL,NULL,'USD',1,'5d51964f045bfc50',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (37,NULL,6,'2024-04-26 15:50:11',100.00,NULL,NULL,'USD',1,'69e3ac0aed8b096e',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (38,NULL,6,'2024-04-26 15:50:11',100.00,NULL,NULL,'USD',1,'f2b8bd135e9d8647',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (39,NULL,6,'2024-04-26 15:50:11',100.00,NULL,NULL,'USD',1,'a35f43b2180dc9b8',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (40,NULL,6,'2024-04-26 15:50:11',100.00,NULL,NULL,'USD',1,'fb9f821467c5e4fc',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (41,NULL,6,'2024-04-26 15:50:11',100.00,NULL,NULL,'USD',1,'6335cfc1d9871c1b',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (42,NULL,6,'2024-04-26 15:50:11',100.00,NULL,NULL,'USD',1,'4a4b1b66ffae3b2c',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (43,NULL,6,'2024-04-26 15:50:11',100.00,NULL,NULL,'USD',1,'2e3ca93d825f20d9',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (44,NULL,6,'2024-04-26 15:50:11',100.00,NULL,NULL,'USD',1,'1444e63322cdf98b',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (45,NULL,6,'2024-04-26 15:50:11',100.00,NULL,NULL,'USD',1,'803a2c4aef4f6525',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (46,NULL,6,'2024-04-26 15:50:11',50.00,NULL,NULL,'USD',1,'04200bff0203f12b',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (47,NULL,6,'2024-04-26 15:50:11',50.00,NULL,NULL,'USD',1,'c609360e57109b79',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (48,NULL,6,'2024-04-26 15:50:11',50.00,NULL,NULL,'USD',1,'4c6f53503b7cb0ab',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (49,NULL,6,'2024-04-26 15:50:11',50.00,NULL,NULL,'USD',1,'11e1d593feccae66',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (50,NULL,6,'2024-04-26 15:50:11',50.00,NULL,NULL,'USD',1,'5f3a2b9681b9191d',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (51,NULL,6,'2024-04-26 15:50:11',50.00,NULL,NULL,'USD',1,'372fd8fed5180672',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (52,NULL,6,'2024-04-26 15:50:11',50.00,NULL,NULL,'USD',1,'849a688d25f2104b',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (53,NULL,6,'2024-04-26 15:50:11',50.00,NULL,NULL,'USD',1,'a88ca39c8d59289a',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (54,NULL,6,'2024-04-26 15:50:11',50.00,NULL,NULL,'USD',1,'ee7d28b0fcbd3565',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (55,NULL,6,'2024-04-26 15:50:11',50.00,NULL,NULL,'USD',1,'4f5e7edcdf368aea',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (56,NULL,6,'2024-04-26 15:50:11',50.00,NULL,NULL,'USD',1,'bd0ce735fc8dc0c6',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (57,NULL,6,'2024-04-26 15:50:11',50.00,NULL,NULL,'USD',1,'0c44ffa31ddbf75a',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (58,NULL,6,'2024-04-26 15:50:11',50.00,NULL,NULL,'USD',1,'0c09b3b4fdb01b27',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (59,NULL,6,'2024-04-26 15:50:11',50.00,NULL,NULL,'USD',1,'a73f415d7191472d',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (60,NULL,6,'2024-04-26 15:50:11',1200.00,NULL,NULL,'USD',1,'37571dfcbd354f51',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (61,NULL,6,'2024-04-26 15:50:11',1200.00,NULL,NULL,'USD',1,'a907f68f10ede934',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (62,NULL,6,'2024-04-26 15:50:11',50.00,NULL,NULL,'USD',1,'ef3979bae5fa5259',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (63,NULL,6,'2024-04-26 15:50:11',50.00,NULL,NULL,'USD',1,'715572a10c53ced9',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (64,NULL,6,'2024-04-26 15:50:11',50.00,NULL,NULL,'USD',1,'3215d0da8c4ce892',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (65,NULL,6,'2024-04-26 15:50:11',50.00,NULL,NULL,'USD',1,'0ad5ea9ad6aed4a6',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (66,NULL,6,'2024-04-26 15:50:11',50.00,NULL,NULL,'USD',1,'39ef698d0a9fa817',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (67,NULL,6,'2024-04-26 15:50:11',50.00,NULL,NULL,'USD',1,'815f109b17f31db2',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (68,NULL,6,'2024-04-26 15:50:11',50.00,NULL,NULL,'USD',1,'8195591eb560bc4d',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (69,NULL,6,'2024-04-26 15:50:11',50.00,NULL,NULL,'USD',1,'619b7759d6e32711',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (70,NULL,6,'2024-04-26 15:50:11',50.00,NULL,NULL,'USD',1,'d9ec4cad79a91ddb',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (71,NULL,6,'2024-04-26 15:50:11',50.00,NULL,NULL,'USD',1,'3bffd940b5c1d2d6',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (72,NULL,6,'2024-04-26 15:50:11',50.00,NULL,NULL,'USD',1,'f96ff6fa694afa82',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (73,NULL,6,'2024-04-26 15:50:11',50.00,NULL,NULL,'USD',1,'1cbfab3eb27c53a6',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (74,NULL,6,'2024-04-26 15:50:11',50.00,NULL,NULL,'USD',1,'98cdfabd8ef63498',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (75,NULL,6,'2024-04-26 15:50:11',50.00,NULL,NULL,'USD',1,'e36426bbfb2db460',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (76,NULL,6,'2024-04-26 15:50:11',50.00,NULL,NULL,'USD',1,'b35e37ceebbcdb51',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (77,NULL,6,'2024-04-26 15:50:11',50.00,NULL,NULL,'USD',1,'1aea5132eeee329a',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (78,NULL,6,'2024-04-26 15:50:11',800.00,NULL,NULL,'USD',1,'08803a9e355cc4e5',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (79,NULL,6,'2024-04-26 15:50:11',800.00,NULL,NULL,'USD',1,'f4b86efdd60681d5',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (80,NULL,6,'2024-04-26 15:50:11',800.00,NULL,NULL,'USD',1,'79d4dbb475e83ba5',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (81,NULL,6,'2024-04-26 15:50:11',800.00,NULL,NULL,'USD',1,'1f1e675c4ed0ab6d',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (82,NULL,6,'2024-04-26 15:50:11',800.00,NULL,NULL,'USD',1,'6cfbb070c8b03fbf',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (83,NULL,6,'2024-04-26 15:50:11',800.00,NULL,NULL,'USD',1,'22d294eb3cea5959',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (84,NULL,6,'2024-04-26 15:50:11',800.00,NULL,NULL,'USD',1,'2424577915fd9766',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (85,NULL,6,'2024-04-26 15:50:11',800.00,NULL,NULL,'USD',1,'4cbf9af362859f59',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (86,NULL,6,'2024-04-26 15:50:11',800.00,NULL,NULL,'USD',1,'44a5024cef66c06d',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (87,NULL,6,'2024-04-26 15:50:11',800.00,NULL,NULL,'USD',1,'8bf39427a743d80c',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (88,NULL,6,'2024-04-26 15:50:11',800.00,NULL,NULL,'USD',1,'b17b0c95a3657e18',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (89,NULL,6,'2024-04-26 15:50:11',800.00,NULL,NULL,'USD',1,'556f2376af926b0c',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (90,NULL,6,'2024-04-26 15:50:11',800.00,NULL,NULL,'USD',1,'001ad0270c003a8b',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (91,NULL,6,'2024-04-26 15:50:11',800.00,NULL,NULL,'USD',1,'cd5ca6b847a015c6',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (92,NULL,6,'2024-04-26 15:50:11',800.00,NULL,NULL,'USD',1,'01103a74844523b1',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (93,NULL,6,'2024-04-26 15:50:11',800.00,NULL,NULL,'USD',1,'45cc2fa538a41cba',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (94,NULL,6,'2024-04-26 15:50:11',800.00,NULL,NULL,'USD',1,'0cfc5f84ff9fddf2',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (95,NULL,6,'2024-04-26 15:50:11',800.00,NULL,NULL,'USD',1,'391ce58e0ed19572',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (96,NULL,6,'2024-04-26 15:50:11',50.00,NULL,NULL,'USD',1,'74a98451297ed311',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (97,NULL,6,'2024-04-26 15:50:11',50.00,NULL,NULL,'USD',1,'2d3a6db93c7f6bd1',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (98,NULL,6,'2024-04-26 15:50:11',50.00,NULL,NULL,'USD',1,'df890dda694d5b76',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (99,NULL,6,'2024-04-26 15:50:11',50.00,NULL,NULL,'USD',1,'fc054807180e31b5',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (100,NULL,6,'2024-04-26 15:50:11',50.00,NULL,NULL,'USD',1,'7d6d1c9a9905405f',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (101,NULL,6,'2024-04-26 15:50:11',50.00,NULL,NULL,'USD',1,'540bff0df0925751',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (102,NULL,6,'2024-04-26 15:50:11',50.00,NULL,NULL,'USD',1,'c18f74ca873f6019',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (103,NULL,6,'2024-04-26 15:50:11',50.00,NULL,NULL,'USD',1,'b1470cef41e4c3cb',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (104,NULL,6,'2024-04-26 15:50:11',50.00,NULL,NULL,'USD',1,'59f65a58649cf3a4',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (105,NULL,6,'2024-04-26 15:50:11',50.00,NULL,NULL,'USD',1,'925afe959c4ad2d6',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (106,NULL,6,'2024-04-26 15:50:11',50.00,NULL,NULL,'USD',1,'4a7e3c62eb8fa913',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (107,NULL,6,'2024-04-26 15:50:11',50.00,NULL,NULL,'USD',1,'876780d3d4b6e328',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (108,NULL,6,'2024-04-26 15:50:11',50.00,NULL,NULL,'USD',1,'7e326126f20083b2',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (109,NULL,6,'2024-04-26 15:50:11',50.00,NULL,NULL,'USD',1,'1de1101df072cb5b',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (110,NULL,6,'2024-04-26 15:50:11',50.00,NULL,NULL,'USD',1,'89460233cf2bc979',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (111,NULL,6,'2024-04-26 15:50:11',50.00,NULL,NULL,'USD',1,'e8b5e4f2432d35c1',NULL,1,NULL,1,NULL,NULL,NULL,NULL);
/*!40000 ALTER TABLE `civicrm_financial_trxn` ENABLE KEYS */;
UNLOCK TABLES;
@@ -3941,89 +3949,89 @@ UNLOCK TABLES;
LOCK TABLES `civicrm_group_contact` WRITE;
/*!40000 ALTER TABLE `civicrm_group_contact` DISABLE KEYS */;
INSERT INTO `civicrm_group_contact` (`id`, `group_id`, `contact_id`, `status`, `location_id`, `email_id`) VALUES
- (1,2,120,'Added',NULL,NULL),
- (2,2,130,'Added',NULL,NULL),
- (3,2,99,'Added',NULL,NULL),
- (4,2,86,'Added',NULL,NULL),
+ (1,2,185,'Added',NULL,NULL),
+ (2,2,8,'Added',NULL,NULL),
+ (3,2,95,'Added',NULL,NULL),
+ (4,2,89,'Added',NULL,NULL),
(5,2,37,'Added',NULL,NULL),
- (6,2,92,'Added',NULL,NULL),
- (7,2,53,'Added',NULL,NULL),
- (8,2,70,'Added',NULL,NULL),
- (9,2,113,'Added',NULL,NULL),
- (10,2,196,'Added',NULL,NULL),
- (11,2,141,'Added',NULL,NULL),
- (12,2,165,'Added',NULL,NULL),
- (13,2,181,'Added',NULL,NULL),
- (14,2,46,'Added',NULL,NULL),
- (15,2,137,'Added',NULL,NULL),
- (16,2,66,'Added',NULL,NULL),
- (17,2,190,'Added',NULL,NULL),
- (18,2,200,'Added',NULL,NULL),
- (19,2,183,'Added',NULL,NULL),
- (20,2,176,'Added',NULL,NULL),
- (21,2,22,'Added',NULL,NULL),
- (22,2,195,'Added',NULL,NULL),
- (23,2,110,'Added',NULL,NULL),
- (24,2,59,'Added',NULL,NULL),
- (25,2,84,'Added',NULL,NULL),
- (26,2,133,'Added',NULL,NULL),
- (27,2,93,'Added',NULL,NULL),
- (28,2,47,'Added',NULL,NULL),
- (29,2,85,'Added',NULL,NULL),
- (30,2,193,'Added',NULL,NULL),
- (31,2,101,'Added',NULL,NULL),
- (32,2,15,'Added',NULL,NULL),
- (33,2,77,'Added',NULL,NULL),
- (34,2,166,'Added',NULL,NULL),
- (35,2,50,'Added',NULL,NULL),
- (36,2,23,'Added',NULL,NULL),
- (37,2,164,'Added',NULL,NULL),
- (38,2,67,'Added',NULL,NULL),
- (39,2,121,'Added',NULL,NULL),
- (40,2,192,'Added',NULL,NULL),
- (41,2,75,'Added',NULL,NULL),
- (42,2,19,'Added',NULL,NULL),
- (43,2,146,'Added',NULL,NULL),
- (44,2,106,'Added',NULL,NULL),
- (45,2,71,'Added',NULL,NULL),
- (46,2,13,'Added',NULL,NULL),
- (47,2,14,'Added',NULL,NULL),
- (48,2,10,'Added',NULL,NULL),
- (49,2,34,'Added',NULL,NULL),
- (50,2,88,'Added',NULL,NULL),
- (51,2,163,'Added',NULL,NULL),
- (52,2,129,'Added',NULL,NULL),
- (53,2,27,'Added',NULL,NULL),
- (54,2,4,'Added',NULL,NULL),
- (55,2,168,'Added',NULL,NULL),
- (56,2,198,'Added',NULL,NULL),
- (57,2,91,'Added',NULL,NULL),
- (58,2,62,'Added',NULL,NULL),
- (59,2,60,'Added',NULL,NULL),
- (60,2,172,'Added',NULL,NULL),
- (61,3,63,'Added',NULL,NULL),
- (62,3,102,'Added',NULL,NULL),
- (63,3,128,'Added',NULL,NULL),
- (64,3,117,'Added',NULL,NULL),
- (65,3,52,'Added',NULL,NULL),
- (66,3,76,'Added',NULL,NULL),
- (67,3,17,'Added',NULL,NULL),
- (68,3,16,'Added',NULL,NULL),
- (69,3,159,'Added',NULL,NULL),
- (70,3,41,'Added',NULL,NULL),
- (71,3,30,'Added',NULL,NULL),
- (72,3,98,'Added',NULL,NULL),
- (73,3,109,'Added',NULL,NULL),
- (74,3,90,'Added',NULL,NULL),
- (75,3,155,'Added',NULL,NULL),
- (76,4,120,'Added',NULL,NULL),
- (77,4,70,'Added',NULL,NULL),
- (78,4,137,'Added',NULL,NULL),
- (79,4,195,'Added',NULL,NULL),
- (80,4,85,'Added',NULL,NULL),
- (81,4,23,'Added',NULL,NULL),
- (82,4,146,'Added',NULL,NULL),
- (83,4,88,'Added',NULL,NULL),
+ (6,2,107,'Added',NULL,NULL),
+ (7,2,73,'Added',NULL,NULL),
+ (8,2,85,'Added',NULL,NULL),
+ (9,2,200,'Added',NULL,NULL),
+ (10,2,20,'Added',NULL,NULL),
+ (11,2,111,'Added',NULL,NULL),
+ (12,2,63,'Added',NULL,NULL),
+ (13,2,158,'Added',NULL,NULL),
+ (14,2,42,'Added',NULL,NULL),
+ (15,2,198,'Added',NULL,NULL),
+ (16,2,196,'Added',NULL,NULL),
+ (17,2,116,'Added',NULL,NULL),
+ (18,2,6,'Added',NULL,NULL),
+ (19,2,36,'Added',NULL,NULL),
+ (20,2,78,'Added',NULL,NULL),
+ (21,2,13,'Added',NULL,NULL),
+ (22,2,177,'Added',NULL,NULL),
+ (23,2,21,'Added',NULL,NULL),
+ (24,2,79,'Added',NULL,NULL),
+ (25,2,171,'Added',NULL,NULL),
+ (26,2,58,'Added',NULL,NULL),
+ (27,2,154,'Added',NULL,NULL),
+ (28,2,160,'Added',NULL,NULL),
+ (29,2,22,'Added',NULL,NULL),
+ (30,2,166,'Added',NULL,NULL),
+ (31,2,167,'Added',NULL,NULL),
+ (32,2,4,'Added',NULL,NULL),
+ (33,2,94,'Added',NULL,NULL),
+ (34,2,74,'Added',NULL,NULL),
+ (35,2,136,'Added',NULL,NULL),
+ (36,2,61,'Added',NULL,NULL),
+ (37,2,96,'Added',NULL,NULL),
+ (38,2,35,'Added',NULL,NULL),
+ (39,2,76,'Added',NULL,NULL),
+ (40,2,187,'Added',NULL,NULL),
+ (41,2,122,'Added',NULL,NULL),
+ (42,2,123,'Added',NULL,NULL),
+ (43,2,159,'Added',NULL,NULL),
+ (44,2,93,'Added',NULL,NULL),
+ (45,2,60,'Added',NULL,NULL),
+ (46,2,134,'Added',NULL,NULL),
+ (47,2,197,'Added',NULL,NULL),
+ (48,2,66,'Added',NULL,NULL),
+ (49,2,81,'Added',NULL,NULL),
+ (50,2,131,'Added',NULL,NULL),
+ (51,2,128,'Added',NULL,NULL),
+ (52,2,143,'Added',NULL,NULL),
+ (53,2,138,'Added',NULL,NULL),
+ (54,2,201,'Added',NULL,NULL),
+ (55,2,92,'Added',NULL,NULL),
+ (56,2,5,'Added',NULL,NULL),
+ (57,2,112,'Added',NULL,NULL),
+ (58,2,194,'Added',NULL,NULL),
+ (59,2,145,'Added',NULL,NULL),
+ (60,2,88,'Added',NULL,NULL),
+ (61,3,28,'Added',NULL,NULL),
+ (62,3,99,'Added',NULL,NULL),
+ (63,3,55,'Added',NULL,NULL),
+ (64,3,100,'Added',NULL,NULL),
+ (65,3,125,'Added',NULL,NULL),
+ (66,3,142,'Added',NULL,NULL),
+ (67,3,189,'Added',NULL,NULL),
+ (68,3,179,'Added',NULL,NULL),
+ (69,3,186,'Added',NULL,NULL),
+ (70,3,118,'Added',NULL,NULL),
+ (71,3,65,'Added',NULL,NULL),
+ (72,3,114,'Added',NULL,NULL),
+ (73,3,54,'Added',NULL,NULL),
+ (74,3,68,'Added',NULL,NULL),
+ (75,3,52,'Added',NULL,NULL),
+ (76,4,185,'Added',NULL,NULL),
+ (77,4,85,'Added',NULL,NULL),
+ (78,4,198,'Added',NULL,NULL),
+ (79,4,177,'Added',NULL,NULL),
+ (80,4,22,'Added',NULL,NULL),
+ (81,4,61,'Added',NULL,NULL),
+ (82,4,159,'Added',NULL,NULL),
+ (83,4,131,'Added',NULL,NULL),
(84,4,202,'Added',NULL,NULL);
/*!40000 ALTER TABLE `civicrm_group_contact` ENABLE KEYS */;
UNLOCK TABLES;
@@ -4070,28 +4078,28 @@ UNLOCK TABLES;
LOCK TABLES `civicrm_job` WRITE;
/*!40000 ALTER TABLE `civicrm_job` DISABLE KEYS */;
-INSERT INTO `civicrm_job` (`id`, `domain_id`, `run_frequency`, `last_run`, `scheduled_run_date`, `name`, `description`, `api_entity`, `api_action`, `parameters`, `is_active`) VALUES
- (1,1,'Daily',NULL,NULL,'CiviCRM Update Check','Checks for version updates. https://docs.civicrm.org/user/en/latest/initial-set-up/scheduled-jobs/#job_version_check','Job','version_check',NULL,1),
- (2,1,'Always',NULL,NULL,'Send Scheduled Mailings','Sends out scheduled mailings. https://docs.civicrm.org/user/en/latest/initial-set-up/scheduled-jobs/#job_process_mailing','Job','process_mailing',NULL,0),
- (3,1,'Hourly',NULL,NULL,'Fetch Bounces','Fetches bounces from mailings. https://docs.civicrm.org/user/en/latest/initial-set-up/scheduled-jobs/#job_fetch_bounces','Job','fetch_bounces','is_create_activities=0',0),
- (4,1,'Hourly',NULL,NULL,'Process Inbound Emails','Inserts activity for a contact or a case by retrieving inbound emails. https://docs.civicrm.org/user/en/latest/initial-set-up/scheduled-jobs/#job_fetch_activities','Job','fetch_activities',NULL,0),
- (5,1,'Daily',NULL,NULL,'Process Pledges','Updates pledge records and sends out reminders. https://docs.civicrm.org/user/en/latest/initial-set-up/scheduled-jobs/#job_process_pledge','Job','process_pledge','send_reminders=0',0),
- (6,1,'Daily',NULL,NULL,'Geocode and Parse Addresses','Geocodes and/or parses street addresses. https://docs.civicrm.org/user/en/latest/initial-set-up/scheduled-jobs/#job_geocode','Job','geocode','geocoding=1\n parse=0\n throttle=0',0),
- (7,1,'Daily',NULL,NULL,'Update Individual Email Greeting','Update Individual Email Greeting. https://docs.civicrm.org/user/en/latest/initial-set-up/scheduled-jobs/#job_update_greeting','Job','update_greeting','ct=Individual\ngt=email_greeting',0),
- (8,1,'Daily',NULL,NULL,'Update Individual Postal Greeting','Update Individual Postal Greeting. https://docs.civicrm.org/user/en/latest/initial-set-up/scheduled-jobs/#job_update_greeting','Job','update_greeting','ct=Individual\ngt=postal_greeting',0),
- (9,1,'Daily',NULL,NULL,'Update Individual Addressee','Update Individual Addressee. https://docs.civicrm.org/user/en/latest/initial-set-up/scheduled-jobs/#job_update_greeting','Job','update_greeting','ct=Individual\ngt=addressee',0),
- (10,1,'Daily',NULL,NULL,'Mail Reports','Generates and sends out reports via email. https://docs.civicrm.org/user/en/latest/initial-set-up/scheduled-jobs/#job_mail_report','Job','mail_report','',0),
- (11,1,'Hourly',NULL,NULL,'Send Scheduled Reminders','Sends out scheduled reminders via email. https://docs.civicrm.org/user/en/latest/initial-set-up/scheduled-jobs/#job_send_reminder','Job','send_reminder',NULL,0),
- (12,1,'Always',NULL,NULL,'Update Participant Statuses','Updates pending event participant statuses based on time. https://docs.civicrm.org/user/en/latest/initial-set-up/scheduled-jobs/#job_process_participant','Job','process_participant',NULL,0),
- (13,1,'Daily',NULL,NULL,'Update Membership Statuses','Updates membership statuses. https://docs.civicrm.org/user/en/latest/initial-set-up/scheduled-jobs/#job_process_membership','Job','process_membership',NULL,0),
- (14,1,'Always',NULL,NULL,'Process Survey Respondents','Releases reserved survey respondents. https://docs.civicrm.org/user/en/latest/initial-set-up/scheduled-jobs/#job_process_respondent','Job','process_respondent',NULL,0),
- (15,1,'Monthly',NULL,NULL,'Clean-up Temporary Data and Files','Removes temporary data and files. https://docs.civicrm.org/user/en/latest/initial-set-up/scheduled-jobs/#job_cleanup','Job','cleanup','session=0',0),
- (16,1,'Always',NULL,NULL,'Send Scheduled SMS','Sends out scheduled SMS. https://docs.civicrm.org/user/en/latest/initial-set-up/scheduled-jobs/#job_process_sms','Job','process_sms',NULL,0),
- (17,1,'Hourly',NULL,NULL,'Rebuild Smart Group Cache','Rebuilds the smart group cache. https://docs.civicrm.org/user/en/latest/initial-set-up/scheduled-jobs/#job_group_rebuild','Job','group_rebuild','limit=0',0),
- (18,1,'Hourly',NULL,NULL,'Group Cache Flush','Purges aged smart group cache data. https://docs.civicrm.org/user/en/latest/initial-set-up/scheduled-jobs/#job_group_cache_flush','Job','group_cache_flush','',0),
- (19,1,'Daily',NULL,NULL,'Disable expired relationships','Disables relationships that have expired. https://docs.civicrm.org/user/en/latest/initial-set-up/scheduled-jobs/#job_disable_expired_relationships','Job','disable_expired_relationships',NULL,0),
- (20,1,'Daily',NULL,NULL,'Validate Email Address from Mailings.','Updates the reset_date on an email address. https://docs.civicrm.org/user/en/latest/initial-set-up/scheduled-jobs/#mailing_update_email_resetdate','Mailing','update_email_resetdate','minDays=5\n maxDays=60',0),
- (21,1,'Daily',NULL,NULL,'Dedupe Contacts','Executes the Individual, Unsupervised redupe rule. https://docs.civicrm.org/user/en/latest/initial-set-up/scheduled-jobs/#job_process_batch_merge','Job','process_batch_merge',NULL,0);
+INSERT INTO `civicrm_job` (`id`, `domain_id`, `run_frequency`, `last_run`, `last_run_end`, `scheduled_run_date`, `name`, `description`, `api_entity`, `api_action`, `parameters`, `is_active`) VALUES
+ (1,1,'Daily',NULL,NULL,NULL,'CiviCRM Update Check','Checks for version updates. https://docs.civicrm.org/user/en/latest/initial-set-up/scheduled-jobs/#job_version_check','Job','version_check',NULL,1),
+ (2,1,'Always',NULL,NULL,NULL,'Send Scheduled Mailings','Sends out scheduled mailings. https://docs.civicrm.org/user/en/latest/initial-set-up/scheduled-jobs/#job_process_mailing','Job','process_mailing',NULL,0),
+ (3,1,'Hourly',NULL,NULL,NULL,'Fetch Bounces','Fetches bounces from mailings. https://docs.civicrm.org/user/en/latest/initial-set-up/scheduled-jobs/#job_fetch_bounces','Job','fetch_bounces','is_create_activities=0',0),
+ (4,1,'Hourly',NULL,NULL,NULL,'Process Inbound Emails','Inserts activity for a contact or a case by retrieving inbound emails. https://docs.civicrm.org/user/en/latest/initial-set-up/scheduled-jobs/#job_fetch_activities','Job','fetch_activities',NULL,0),
+ (5,1,'Daily',NULL,NULL,NULL,'Process Pledges','Updates pledge records and sends out reminders. https://docs.civicrm.org/user/en/latest/initial-set-up/scheduled-jobs/#job_process_pledge','Job','process_pledge','send_reminders=0',0),
+ (6,1,'Daily',NULL,NULL,NULL,'Geocode and Parse Addresses','Geocodes and/or parses street addresses. https://docs.civicrm.org/user/en/latest/initial-set-up/scheduled-jobs/#job_geocode','Job','geocode','geocoding=1\n parse=0\n throttle=0',0),
+ (7,1,'Daily',NULL,NULL,NULL,'Update Individual Email Greeting','Update Individual Email Greeting. https://docs.civicrm.org/user/en/latest/initial-set-up/scheduled-jobs/#job_update_greeting','Job','update_greeting','ct=Individual\ngt=email_greeting',0),
+ (8,1,'Daily',NULL,NULL,NULL,'Update Individual Postal Greeting','Update Individual Postal Greeting. https://docs.civicrm.org/user/en/latest/initial-set-up/scheduled-jobs/#job_update_greeting','Job','update_greeting','ct=Individual\ngt=postal_greeting',0),
+ (9,1,'Daily',NULL,NULL,NULL,'Update Individual Addressee','Update Individual Addressee. https://docs.civicrm.org/user/en/latest/initial-set-up/scheduled-jobs/#job_update_greeting','Job','update_greeting','ct=Individual\ngt=addressee',0),
+ (10,1,'Daily',NULL,NULL,NULL,'Mail Reports','Generates and sends out reports via email. https://docs.civicrm.org/user/en/latest/initial-set-up/scheduled-jobs/#job_mail_report','Job','mail_report','',0),
+ (11,1,'Hourly',NULL,NULL,NULL,'Send Scheduled Reminders','Sends out scheduled reminders via email. https://docs.civicrm.org/user/en/latest/initial-set-up/scheduled-jobs/#job_send_reminder','Job','send_reminder',NULL,0),
+ (12,1,'Always',NULL,NULL,NULL,'Update Participant Statuses','Updates pending event participant statuses based on time. https://docs.civicrm.org/user/en/latest/initial-set-up/scheduled-jobs/#job_process_participant','Job','process_participant',NULL,0),
+ (13,1,'Daily',NULL,NULL,NULL,'Update Membership Statuses','Updates membership statuses. https://docs.civicrm.org/user/en/latest/initial-set-up/scheduled-jobs/#job_process_membership','Job','process_membership',NULL,0),
+ (14,1,'Always',NULL,NULL,NULL,'Process Survey Respondents','Releases reserved survey respondents. https://docs.civicrm.org/user/en/latest/initial-set-up/scheduled-jobs/#job_process_respondent','Job','process_respondent',NULL,0),
+ (15,1,'Monthly',NULL,NULL,NULL,'Clean-up Temporary Data and Files','Removes temporary data and files. https://docs.civicrm.org/user/en/latest/initial-set-up/scheduled-jobs/#job_cleanup','Job','cleanup','session=0',0),
+ (16,1,'Always',NULL,NULL,NULL,'Send Scheduled SMS','Sends out scheduled SMS. https://docs.civicrm.org/user/en/latest/initial-set-up/scheduled-jobs/#job_process_sms','Job','process_sms',NULL,0),
+ (17,1,'Hourly',NULL,NULL,NULL,'Rebuild Smart Group Cache','Rebuilds the smart group cache. https://docs.civicrm.org/user/en/latest/initial-set-up/scheduled-jobs/#job_group_rebuild','Job','group_rebuild','limit=0',0),
+ (18,1,'Hourly',NULL,NULL,NULL,'Group Cache Flush','Purges aged smart group cache data. https://docs.civicrm.org/user/en/latest/initial-set-up/scheduled-jobs/#job_group_cache_flush','Job','group_cache_flush','',0),
+ (19,1,'Daily',NULL,NULL,NULL,'Disable expired relationships','Disables relationships that have expired. https://docs.civicrm.org/user/en/latest/initial-set-up/scheduled-jobs/#job_disable_expired_relationships','Job','disable_expired_relationships',NULL,0),
+ (20,1,'Daily',NULL,NULL,NULL,'Validate Email Address from Mailings.','Updates the reset_date on an email address. https://docs.civicrm.org/user/en/latest/initial-set-up/scheduled-jobs/#mailing_update_email_resetdate','Mailing','update_email_resetdate','minDays=5\n maxDays=60',0),
+ (21,1,'Daily',NULL,NULL,NULL,'Dedupe Contacts','Executes the Individual, Unsupervised redupe rule. https://docs.civicrm.org/user/en/latest/initial-set-up/scheduled-jobs/#job_process_batch_merge','Job','process_batch_merge',NULL,0);
/*!40000 ALTER TABLE `civicrm_job` ENABLE KEYS */;
UNLOCK TABLES;
@@ -4144,84 +4152,84 @@ INSERT INTO `civicrm_line_item` (`id`, `entity_table`, `entity_id`, `contributio
(31,'civicrm_contribution',31,31,1,'Contribution Amount',1.00,5.00,5.00,0,1,1,0.00,0.00,NULL),
(32,'civicrm_membership',1,32,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,0.00,NULL),
(33,'civicrm_membership',3,34,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,0.00,NULL),
- (34,'civicrm_membership',5,36,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,0.00,NULL),
- (35,'civicrm_membership',7,38,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,0.00,NULL),
- (36,'civicrm_membership',9,40,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,0.00,NULL),
+ (34,'civicrm_membership',7,38,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,0.00,NULL),
+ (35,'civicrm_membership',9,40,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,0.00,NULL),
+ (36,'civicrm_membership',10,41,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,0.00,NULL),
(37,'civicrm_membership',13,44,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,0.00,NULL),
(38,'civicrm_membership',15,46,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,0.00,NULL),
(39,'civicrm_membership',17,48,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,0.00,NULL),
(40,'civicrm_membership',19,50,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,0.00,NULL),
- (41,'civicrm_membership',21,52,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,0.00,NULL),
- (42,'civicrm_membership',23,54,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,0.00,NULL),
- (43,'civicrm_membership',27,58,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,0.00,NULL),
- (44,'civicrm_membership',29,60,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,0.00,NULL),
- (45,'civicrm_membership',30,61,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,0.00,NULL),
+ (41,'civicrm_membership',20,51,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,0.00,NULL),
+ (42,'civicrm_membership',21,52,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,0.00,NULL),
+ (43,'civicrm_membership',23,54,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,0.00,NULL),
+ (44,'civicrm_membership',27,58,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,0.00,NULL),
+ (45,'civicrm_membership',29,60,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,0.00,NULL),
(46,'civicrm_membership',2,33,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,0.00,NULL),
(47,'civicrm_membership',4,35,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,0.00,NULL),
- (48,'civicrm_membership',6,37,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,0.00,NULL),
- (49,'civicrm_membership',8,39,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,0.00,NULL),
- (50,'civicrm_membership',10,41,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,0.00,NULL),
+ (48,'civicrm_membership',5,36,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,0.00,NULL),
+ (49,'civicrm_membership',6,37,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,0.00,NULL),
+ (50,'civicrm_membership',8,39,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,0.00,NULL),
(51,'civicrm_membership',12,43,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,0.00,NULL),
(52,'civicrm_membership',14,45,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,0.00,NULL),
(53,'civicrm_membership',16,47,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,0.00,NULL),
(54,'civicrm_membership',18,49,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,0.00,NULL),
- (55,'civicrm_membership',20,51,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,0.00,NULL),
- (56,'civicrm_membership',24,55,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,0.00,NULL),
- (57,'civicrm_membership',25,56,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,0.00,NULL),
- (58,'civicrm_membership',26,57,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,0.00,NULL),
- (59,'civicrm_membership',28,59,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,0.00,NULL),
+ (55,'civicrm_membership',24,55,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,0.00,NULL),
+ (56,'civicrm_membership',25,56,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,0.00,NULL),
+ (57,'civicrm_membership',26,57,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,0.00,NULL),
+ (58,'civicrm_membership',28,59,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,0.00,NULL),
+ (59,'civicrm_membership',30,61,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,0.00,NULL),
(60,'civicrm_membership',11,42,4,'Lifetime',1.00,1200.00,1200.00,NULL,9,2,0.00,0.00,NULL),
(61,'civicrm_membership',22,53,4,'Lifetime',1.00,1200.00,1200.00,NULL,9,2,0.00,0.00,NULL),
- (63,'civicrm_participant',3,104,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL),
- (64,'civicrm_participant',6,83,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL),
- (65,'civicrm_participant',9,91,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL),
- (66,'civicrm_participant',12,92,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL),
- (67,'civicrm_participant',15,105,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL),
- (68,'civicrm_participant',18,89,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL),
- (69,'civicrm_participant',21,94,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL),
- (70,'civicrm_participant',24,109,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL),
- (71,'civicrm_participant',25,64,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL),
- (72,'civicrm_participant',28,111,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL),
- (73,'civicrm_participant',31,82,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL),
- (74,'civicrm_participant',34,108,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL),
- (75,'civicrm_participant',37,77,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL),
- (76,'civicrm_participant',40,80,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL),
- (77,'civicrm_participant',43,63,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL),
- (78,'civicrm_participant',46,66,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL),
- (79,'civicrm_participant',49,75,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL),
- (80,'civicrm_participant',50,98,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL),
- (81,'civicrm_participant',1,88,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL),
- (82,'civicrm_participant',4,69,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL),
- (83,'civicrm_participant',7,72,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL),
- (84,'civicrm_participant',10,85,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL),
- (85,'civicrm_participant',13,93,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL),
- (86,'civicrm_participant',16,87,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL),
- (87,'civicrm_participant',19,110,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL),
- (88,'civicrm_participant',22,107,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL),
- (89,'civicrm_participant',26,90,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL),
- (90,'civicrm_participant',29,73,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL),
- (91,'civicrm_participant',32,68,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL),
- (92,'civicrm_participant',35,79,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL),
- (93,'civicrm_participant',38,71,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL),
- (94,'civicrm_participant',41,67,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL),
- (95,'civicrm_participant',44,100,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL),
- (96,'civicrm_participant',47,103,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL),
- (97,'civicrm_participant',2,96,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL),
- (98,'civicrm_participant',5,81,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL),
- (99,'civicrm_participant',8,78,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL),
- (100,'civicrm_participant',11,101,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL),
- (101,'civicrm_participant',14,99,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL),
- (102,'civicrm_participant',17,76,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL),
- (103,'civicrm_participant',20,74,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL),
- (104,'civicrm_participant',23,86,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL),
- (105,'civicrm_participant',27,84,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL),
- (106,'civicrm_participant',30,97,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL),
- (107,'civicrm_participant',33,65,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL),
- (108,'civicrm_participant',36,106,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL),
- (109,'civicrm_participant',39,70,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL),
- (110,'civicrm_participant',42,102,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL),
- (111,'civicrm_participant',45,112,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL),
- (112,'civicrm_participant',48,95,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL);
+ (63,'civicrm_participant',3,65,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL),
+ (64,'civicrm_participant',6,68,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL),
+ (65,'civicrm_participant',9,71,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL),
+ (66,'civicrm_participant',12,74,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL),
+ (67,'civicrm_participant',15,77,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL),
+ (68,'civicrm_participant',18,80,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL),
+ (69,'civicrm_participant',21,83,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL),
+ (70,'civicrm_participant',24,86,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL),
+ (71,'civicrm_participant',25,87,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL),
+ (72,'civicrm_participant',28,90,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL),
+ (73,'civicrm_participant',31,93,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL),
+ (74,'civicrm_participant',34,96,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL),
+ (75,'civicrm_participant',37,99,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL),
+ (76,'civicrm_participant',40,102,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL),
+ (77,'civicrm_participant',43,105,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL),
+ (78,'civicrm_participant',46,108,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL),
+ (79,'civicrm_participant',49,111,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL),
+ (80,'civicrm_participant',50,112,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL),
+ (81,'civicrm_participant',1,63,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL),
+ (82,'civicrm_participant',4,66,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL),
+ (83,'civicrm_participant',7,69,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL),
+ (84,'civicrm_participant',10,72,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL),
+ (85,'civicrm_participant',13,75,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL),
+ (86,'civicrm_participant',16,78,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL),
+ (87,'civicrm_participant',19,81,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL),
+ (88,'civicrm_participant',22,84,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL),
+ (89,'civicrm_participant',26,88,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL),
+ (90,'civicrm_participant',29,91,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL),
+ (91,'civicrm_participant',32,94,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL),
+ (92,'civicrm_participant',35,97,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL),
+ (93,'civicrm_participant',38,100,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL),
+ (94,'civicrm_participant',41,103,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL),
+ (95,'civicrm_participant',44,106,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL),
+ (96,'civicrm_participant',47,109,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL),
+ (97,'civicrm_participant',2,64,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL),
+ (98,'civicrm_participant',5,67,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL),
+ (99,'civicrm_participant',8,70,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL),
+ (100,'civicrm_participant',11,73,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL),
+ (101,'civicrm_participant',14,76,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL),
+ (102,'civicrm_participant',17,79,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL),
+ (103,'civicrm_participant',20,82,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL),
+ (104,'civicrm_participant',23,85,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL),
+ (105,'civicrm_participant',27,89,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL),
+ (106,'civicrm_participant',30,92,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL),
+ (107,'civicrm_participant',33,95,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL),
+ (108,'civicrm_participant',36,98,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL),
+ (109,'civicrm_participant',39,101,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL),
+ (110,'civicrm_participant',42,104,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL),
+ (111,'civicrm_participant',45,107,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL),
+ (112,'civicrm_participant',48,110,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL);
/*!40000 ALTER TABLE `civicrm_line_item` ENABLE KEYS */;
UNLOCK TABLES;
@@ -4232,9 +4240,9 @@ UNLOCK TABLES;
LOCK TABLES `civicrm_loc_block` WRITE;
/*!40000 ALTER TABLE `civicrm_loc_block` DISABLE KEYS */;
INSERT INTO `civicrm_loc_block` (`id`, `address_id`, `email_id`, `phone_id`, `im_id`, `address_2_id`, `email_2_id`, `phone_2_id`, `im_2_id`) VALUES
- (1,178,180,154,NULL,NULL,NULL,NULL,NULL),
- (2,179,181,155,NULL,NULL,NULL,NULL,NULL),
- (3,180,182,156,NULL,NULL,NULL,NULL,NULL);
+ (1,180,180,153,NULL,NULL,NULL,NULL,NULL),
+ (2,181,181,154,NULL,NULL,NULL,NULL,NULL),
+ (3,182,182,155,NULL,NULL,NULL,NULL,NULL);
/*!40000 ALTER TABLE `civicrm_loc_block` ENABLE KEYS */;
UNLOCK TABLES;
@@ -4260,7 +4268,7 @@ UNLOCK TABLES;
LOCK TABLES `civicrm_log` WRITE;
/*!40000 ALTER TABLE `civicrm_log` DISABLE KEYS */;
INSERT INTO `civicrm_log` (`id`, `entity_table`, `entity_id`, `data`, `modified_id`, `modified_date`) VALUES
- (1,'civicrm_contact',202,'civicrm_contact,202',202,'2024-01-06 04:30:29');
+ (1,'civicrm_contact',202,'civicrm_contact,202',202,'2024-04-26 15:50:10');
/*!40000 ALTER TABLE `civicrm_log` ENABLE KEYS */;
UNLOCK TABLES;
@@ -4684,36 +4692,36 @@ UNLOCK TABLES;
LOCK TABLES `civicrm_membership` WRITE;
/*!40000 ALTER TABLE `civicrm_membership` DISABLE KEYS */;
INSERT INTO `civicrm_membership` (`id`, `contact_id`, `membership_type_id`, `join_date`, `start_date`, `end_date`, `source`, `status_id`, `is_override`, `status_override_end_date`, `owner_membership_id`, `max_related`, `is_test`, `is_pay_later`, `contribution_recur_id`, `campaign_id`) VALUES
- (1,183,1,'2024-01-06','2024-01-06','2026-01-05','Check',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
- (2,160,2,'2024-01-05','2024-01-05','2025-01-04','Payment',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
- (3,56,1,'2024-01-04','2024-01-04','2026-01-03','Check',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
- (4,157,2,'2024-01-03','2024-01-03','2025-01-02','Check',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
- (5,102,1,'2021-12-05','2021-12-05','2023-12-04','Donation',3,0,NULL,NULL,NULL,0,0,NULL,NULL),
- (6,41,2,'2024-01-01','2024-01-01','2024-12-31','Donation',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
- (7,22,1,'2023-12-31','2023-12-31','2025-12-30','Check',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
- (8,165,2,'2023-12-30','2023-12-30','2024-12-29','Check',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
- (9,150,1,'2023-12-29','2023-12-29','2025-12-28','Check',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
- (10,129,2,'2022-12-28','2022-12-28','2023-12-27','Donation',4,0,NULL,NULL,NULL,0,0,NULL,NULL),
- (11,3,3,'2023-12-27','2023-12-27',NULL,'Payment',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
- (12,11,2,'2023-12-26','2023-12-26','2024-12-25','Payment',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
- (13,42,1,'2023-12-25','2023-12-25','2025-12-24','Donation',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
- (14,93,2,'2023-12-24','2023-12-24','2024-12-23','Donation',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
- (15,65,1,'2021-09-16','2021-09-16','2023-09-15','Donation',3,0,NULL,NULL,NULL,0,0,NULL,NULL),
- (16,202,2,'2023-12-22','2023-12-22','2024-12-21','Check',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
- (17,159,1,'2023-12-21','2023-12-21','2025-12-20','Payment',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
- (18,123,2,'2023-12-20','2023-12-20','2024-12-19','Check',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
- (19,38,1,'2023-12-19','2023-12-19','2025-12-18','Payment',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
- (20,78,2,'2022-12-18','2022-12-18','2023-12-17','Check',4,0,NULL,NULL,NULL,0,0,NULL,NULL),
- (21,9,1,'2023-12-17','2023-12-17','2025-12-16','Payment',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
- (22,139,3,'2023-12-16','2023-12-16',NULL,'Payment',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
- (23,4,1,'2023-12-15','2023-12-15','2025-12-14','Check',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
- (24,94,2,'2023-12-14','2023-12-14','2024-12-13','Check',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
- (25,35,2,'2022-12-13','2022-12-13','2023-12-12','Donation',4,0,NULL,NULL,NULL,0,0,NULL,NULL),
- (26,66,2,'2023-12-12','2023-12-12','2024-12-11','Check',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
- (27,28,1,'2023-12-11','2023-12-11','2025-12-10','Donation',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
- (28,27,2,'2023-12-10','2023-12-10','2024-12-09','Check',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
- (29,24,1,'2023-12-09','2023-12-09','2025-12-08','Donation',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
- (30,188,1,'2021-05-19','2021-05-19','2023-05-18','Check',3,0,NULL,NULL,NULL,0,0,NULL,NULL);
+ (1,194,1,'2024-04-26','2024-04-26','2026-04-25','Check',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
+ (2,87,2,'2024-04-25','2024-04-25','2025-04-24','Payment',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
+ (3,60,1,'2024-04-24','2024-04-24','2026-04-23','Check',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
+ (4,190,2,'2024-04-23','2024-04-23','2025-04-22','Check',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
+ (5,5,2,'2023-04-22','2023-04-22','2024-04-21','Check',4,0,NULL,NULL,NULL,0,0,NULL,NULL),
+ (6,13,2,'2024-04-21','2024-04-21','2025-04-20','Payment',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
+ (7,112,1,'2024-04-20','2024-04-20','2026-04-19','Donation',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
+ (8,115,2,'2024-04-19','2024-04-19','2025-04-18','Check',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
+ (9,201,1,'2024-04-18','2024-04-18','2026-04-17','Check',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
+ (10,128,1,'2022-02-13','2022-02-13','2024-02-12','Check',3,0,NULL,NULL,NULL,0,0,NULL,NULL),
+ (11,43,3,'2024-04-16','2024-04-16',NULL,'Payment',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
+ (12,4,2,'2024-04-15','2024-04-15','2025-04-14','Check',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
+ (13,142,1,'2024-04-14','2024-04-14','2026-04-13','Payment',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
+ (14,160,2,'2024-04-13','2024-04-13','2025-04-12','Donation',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
+ (15,65,1,'2022-01-04','2022-01-04','2024-01-03','Donation',3,0,NULL,NULL,NULL,0,0,NULL,NULL),
+ (16,159,2,'2024-04-11','2024-04-11','2025-04-10','Donation',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
+ (17,20,1,'2024-04-10','2024-04-10','2026-04-09','Check',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
+ (18,120,2,'2024-04-09','2024-04-09','2025-04-08','Donation',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
+ (19,200,1,'2024-04-08','2024-04-08','2026-04-07','Payment',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
+ (20,140,1,'2021-11-25','2021-11-25','2023-11-24','Check',3,0,NULL,NULL,NULL,0,0,NULL,NULL),
+ (21,62,1,'2024-04-06','2024-04-06','2026-04-05','Payment',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
+ (22,155,3,'2024-04-05','2024-04-05',NULL,'Payment',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
+ (23,75,1,'2024-04-04','2024-04-04','2026-04-03','Donation',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
+ (24,202,2,'2024-04-03','2024-04-03','2025-04-02','Donation',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
+ (25,71,2,'2023-04-02','2023-04-02','2024-04-01','Payment',4,0,NULL,NULL,NULL,0,0,NULL,NULL),
+ (26,39,2,'2024-04-01','2024-04-01','2025-03-31','Check',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
+ (27,107,1,'2024-03-31','2024-03-31','2026-03-30','Check',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
+ (28,116,2,'2024-03-30','2024-03-30','2025-03-29','Check',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
+ (29,166,1,'2024-03-29','2024-03-29','2026-03-28','Donation',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
+ (30,50,2,'2023-03-28','2023-03-28','2024-03-27','Payment',4,0,NULL,NULL,NULL,0,0,NULL,NULL);
/*!40000 ALTER TABLE `civicrm_membership` ENABLE KEYS */;
UNLOCK TABLES;
@@ -4735,36 +4743,36 @@ UNLOCK TABLES;
LOCK TABLES `civicrm_membership_log` WRITE;
/*!40000 ALTER TABLE `civicrm_membership_log` DISABLE KEYS */;
INSERT INTO `civicrm_membership_log` (`id`, `membership_id`, `status_id`, `start_date`, `end_date`, `modified_id`, `modified_date`, `membership_type_id`, `max_related`) VALUES
- (1,11,1,'2023-12-27',NULL,3,'2024-01-06',3,NULL),
- (2,23,1,'2023-12-15','2025-12-14',4,'2024-01-06',1,NULL),
- (3,21,1,'2023-12-17','2025-12-16',9,'2024-01-06',1,NULL),
- (4,12,1,'2023-12-26','2024-12-25',11,'2024-01-06',2,NULL),
- (5,7,1,'2023-12-31','2025-12-30',22,'2024-01-06',1,NULL),
- (6,29,1,'2023-12-09','2025-12-08',24,'2024-01-06',1,NULL),
- (7,28,1,'2023-12-10','2024-12-09',27,'2024-01-06',2,NULL),
- (8,27,1,'2023-12-11','2025-12-10',28,'2024-01-06',1,NULL),
- (9,25,4,'2022-12-13','2023-12-12',35,'2024-01-06',2,NULL),
- (10,19,1,'2023-12-19','2025-12-18',38,'2024-01-06',1,NULL),
- (11,6,1,'2024-01-01','2024-12-31',41,'2024-01-06',2,NULL),
- (12,13,1,'2023-12-25','2025-12-24',42,'2024-01-06',1,NULL),
- (13,3,1,'2024-01-04','2026-01-03',56,'2024-01-06',1,NULL),
- (14,15,3,'2021-09-16','2023-09-15',65,'2024-01-06',1,NULL),
- (15,26,1,'2023-12-12','2024-12-11',66,'2024-01-06',2,NULL),
- (16,20,4,'2022-12-18','2023-12-17',78,'2024-01-06',2,NULL),
- (17,14,1,'2023-12-24','2024-12-23',93,'2024-01-06',2,NULL),
- (18,24,1,'2023-12-14','2024-12-13',94,'2024-01-06',2,NULL),
- (19,5,3,'2021-12-05','2023-12-04',102,'2024-01-06',1,NULL),
- (20,18,1,'2023-12-20','2024-12-19',123,'2024-01-06',2,NULL),
- (21,10,4,'2022-12-28','2023-12-27',129,'2024-01-06',2,NULL),
- (22,22,1,'2023-12-16',NULL,139,'2024-01-06',3,NULL),
- (23,9,1,'2023-12-29','2025-12-28',150,'2024-01-06',1,NULL),
- (24,4,1,'2024-01-03','2025-01-02',157,'2024-01-06',2,NULL),
- (25,17,1,'2023-12-21','2025-12-20',159,'2024-01-06',1,NULL),
- (26,2,1,'2024-01-05','2025-01-04',160,'2024-01-06',2,NULL),
- (27,8,1,'2023-12-30','2024-12-29',165,'2024-01-06',2,NULL),
- (28,1,1,'2024-01-06','2026-01-05',183,'2024-01-06',1,NULL),
- (29,30,3,'2021-05-19','2023-05-18',188,'2024-01-06',1,NULL),
- (30,16,1,'2023-12-22','2024-12-21',202,'2024-01-06',2,NULL);
+ (1,12,1,'2024-04-15','2025-04-14',4,'2024-04-26',2,NULL),
+ (2,5,4,'2023-04-22','2024-04-21',5,'2024-04-26',2,NULL),
+ (3,6,1,'2024-04-21','2025-04-20',13,'2024-04-26',2,NULL),
+ (4,17,1,'2024-04-10','2026-04-09',20,'2024-04-26',1,NULL),
+ (5,26,1,'2024-04-01','2025-03-31',39,'2024-04-26',2,NULL),
+ (6,11,1,'2024-04-16',NULL,43,'2024-04-26',3,NULL),
+ (7,30,4,'2023-03-28','2024-03-27',50,'2024-04-26',2,NULL),
+ (8,3,1,'2024-04-24','2026-04-23',60,'2024-04-26',1,NULL),
+ (9,21,1,'2024-04-06','2026-04-05',62,'2024-04-26',1,NULL),
+ (10,15,3,'2022-01-04','2024-01-03',65,'2024-04-26',1,NULL),
+ (11,25,4,'2023-04-02','2024-04-01',71,'2024-04-26',2,NULL),
+ (12,23,1,'2024-04-04','2026-04-03',75,'2024-04-26',1,NULL),
+ (13,2,1,'2024-04-25','2025-04-24',87,'2024-04-26',2,NULL),
+ (14,27,1,'2024-03-31','2026-03-30',107,'2024-04-26',1,NULL),
+ (15,7,1,'2024-04-20','2026-04-19',112,'2024-04-26',1,NULL),
+ (16,8,1,'2024-04-19','2025-04-18',115,'2024-04-26',2,NULL),
+ (17,28,1,'2024-03-30','2025-03-29',116,'2024-04-26',2,NULL),
+ (18,18,1,'2024-04-09','2025-04-08',120,'2024-04-26',2,NULL),
+ (19,10,3,'2022-02-13','2024-02-12',128,'2024-04-26',1,NULL),
+ (20,20,3,'2021-11-25','2023-11-24',140,'2024-04-26',1,NULL),
+ (21,13,1,'2024-04-14','2026-04-13',142,'2024-04-26',1,NULL),
+ (22,22,1,'2024-04-05',NULL,155,'2024-04-26',3,NULL),
+ (23,16,1,'2024-04-11','2025-04-10',159,'2024-04-26',2,NULL),
+ (24,14,1,'2024-04-13','2025-04-12',160,'2024-04-26',2,NULL),
+ (25,29,1,'2024-03-29','2026-03-28',166,'2024-04-26',1,NULL),
+ (26,4,1,'2024-04-23','2025-04-22',190,'2024-04-26',2,NULL),
+ (27,1,1,'2024-04-26','2026-04-25',194,'2024-04-26',1,NULL),
+ (28,19,1,'2024-04-08','2026-04-07',200,'2024-04-26',1,NULL),
+ (29,9,1,'2024-04-18','2026-04-17',201,'2024-04-26',1,NULL),
+ (30,24,1,'2024-04-03','2025-04-02',202,'2024-04-26',2,NULL);
/*!40000 ALTER TABLE `civicrm_membership_log` ENABLE KEYS */;
UNLOCK TABLES;
@@ -4775,36 +4783,36 @@ UNLOCK TABLES;
LOCK TABLES `civicrm_membership_payment` WRITE;
/*!40000 ALTER TABLE `civicrm_membership_payment` DISABLE KEYS */;
INSERT INTO `civicrm_membership_payment` (`id`, `membership_id`, `contribution_id`) VALUES
- (28,1,32),
- (26,2,33),
- (13,3,34),
- (24,4,35),
- (19,5,36),
- (11,6,37),
- (5,7,38),
- (27,8,39),
- (23,9,40),
- (21,10,41),
- (1,11,42),
- (4,12,43),
- (12,13,44),
- (17,14,45),
- (14,15,46),
- (30,16,47),
- (25,17,48),
- (20,18,49),
- (10,19,50),
- (16,20,51),
- (3,21,52),
+ (1,1,32),
+ (2,2,33),
+ (3,3,34),
+ (4,4,35),
+ (5,5,36),
+ (6,6,37),
+ (7,7,38),
+ (8,8,39),
+ (9,9,40),
+ (10,10,41),
+ (11,11,42),
+ (12,12,43),
+ (13,13,44),
+ (14,14,45),
+ (15,15,46),
+ (16,16,47),
+ (17,17,48),
+ (18,18,49),
+ (19,19,50),
+ (20,20,51),
+ (21,21,52),
(22,22,53),
- (2,23,54),
- (18,24,55),
- (9,25,56),
- (15,26,57),
- (8,27,58),
- (7,28,59),
- (6,29,60),
- (29,30,61);
+ (23,23,54),
+ (24,24,55),
+ (25,25,56),
+ (26,26,57),
+ (27,27,58),
+ (28,28,59),
+ (29,29,60),
+ (30,30,61);
/*!40000 ALTER TABLE `civicrm_membership_payment` ENABLE KEYS */;
UNLOCK TABLES;
@@ -4845,467 +4853,465 @@ UNLOCK TABLES;
LOCK TABLES `civicrm_menu` WRITE;
/*!40000 ALTER TABLE `civicrm_menu` DISABLE KEYS */;
INSERT INTO `civicrm_menu` (`id`, `domain_id`, `path`, `path_arguments`, `title`, `access_callback`, `access_arguments`, `page_callback`, `page_arguments`, `breadcrumb`, `return_url`, `return_url_args`, `component_id`, `is_active`, `is_public`, `is_exposed`, `is_ssl`, `weight`, `type`, `page_type`, `skipBreadcrumb`, `module_data`) VALUES
- (1,1,'civicrm/custom/add',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Custom_Form_CustomData\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (2,1,'civicrm/ajax/optionlist',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:20:\"CRM_Custom_Page_AJAX\";i:1;s:13:\"getOptionList\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (3,1,'civicrm/ajax/reorder',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:20:\"CRM_Custom_Page_AJAX\";i:1;s:11:\"fixOrdering\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (4,1,'civicrm/ajax/multirecordfieldlist',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:20:\"CRM_Custom_Page_AJAX\";i:1;s:23:\"getMultiRecordFieldList\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (5,1,'civicrm/tag',NULL,'Tags','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:11:\"manage tags\";}i:1;s:2:\"or\";}','s:16:\"CRM_Tag_Page_Tag\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,25,1,0,0,'a:2:{s:4:\"desc\";s:158:\"Tags are useful for segmenting the contacts in your database into categories (e.g. Staff Member, Donor, Volunteer, etc.). Create and edit available tags here.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),
- (6,1,'civicrm/tag/edit','action=add','New Tag','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:11:\"manage tags\";}i:1;s:2:\"or\";}','s:17:\"CRM_Tag_Form_Edit\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:4:\"Tags\";s:3:\"url\";s:20:\"/civicrm/tag?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (7,1,'civicrm/tag/merge',NULL,'Merge Tags','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:11:\"manage tags\";}i:1;s:2:\"or\";}','s:18:\"CRM_Tag_Form_Merge\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:4:\"Tags\";s:3:\"url\";s:20:\"/civicrm/tag?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (8,1,'civicrm/ajax/tagTree',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:11:\"manage tags\";}i:1;s:2:\"or\";}','a:2:{i:0;s:19:\"CRM_Admin_Page_AJAX\";i:1;s:10:\"getTagTree\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (9,1,'civicrm/ajax/api4',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:18:\"CRM_Api4_Page_AJAX\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (10,1,'civicrm/api4',NULL,'CiviCRM','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Api4_Page_Api4Explorer\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (11,1,'civicrm/admin/custom/group',NULL,'Custom Data','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:23:\"administer CiviCRM data\";}i:1;s:3:\"and\";}','s:21:\"CRM_Custom_Page_Group\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,10,1,0,0,'a:2:{s:4:\"desc\";s:109:\"Configure custom fields to collect and store custom data which is not included in the standard CiviCRM forms.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),
- (12,1,'civicrm/admin/custom/group/edit',NULL,'Configure Custom Set','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:23:\"administer CiviCRM data\";}i:1;s:3:\"and\";}','s:21:\"CRM_Custom_Form_Group\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:11:\"Custom Data\";s:3:\"url\";s:35:\"/civicrm/admin/custom/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
- (13,1,'civicrm/admin/custom/group/preview',NULL,'Custom Field Preview','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:23:\"administer CiviCRM data\";}i:1;s:3:\"and\";}','s:23:\"CRM_Custom_Form_Preview\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:11:\"Custom Data\";s:3:\"url\";s:35:\"/civicrm/admin/custom/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
- (14,1,'civicrm/admin/custom/group/delete',NULL,'Delete Custom Set','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:23:\"administer CiviCRM data\";}i:1;s:3:\"and\";}','s:27:\"CRM_Custom_Form_DeleteGroup\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:11:\"Custom Data\";s:3:\"url\";s:35:\"/civicrm/admin/custom/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
- (15,1,'civicrm/admin/custom/group/field',NULL,'Custom Data Fields','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:23:\"administer CiviCRM data\";}i:1;s:3:\"and\";}','s:21:\"CRM_Custom_Page_Field\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:11:\"Custom Data\";s:3:\"url\";s:35:\"/civicrm/admin/custom/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,11,1,0,0,'a:0:{}'),
- (16,1,'civicrm/admin/custom/group/field/delete',NULL,'Delete Custom Field','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:23:\"administer CiviCRM data\";}i:1;s:3:\"and\";}','s:27:\"CRM_Custom_Form_DeleteField\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:11:\"Custom Data\";s:3:\"url\";s:35:\"/civicrm/admin/custom/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
- (17,1,'civicrm/admin/custom/group/field/option',NULL,'Custom Field - Options','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:23:\"administer CiviCRM data\";}i:1;s:3:\"and\";}','s:22:\"CRM_Custom_Page_Option\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:11:\"Custom Data\";s:3:\"url\";s:35:\"/civicrm/admin/custom/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
- (18,1,'civicrm/admin/custom/group/field/add',NULL,'Custom Field - Add','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:23:\"administer CiviCRM data\";}i:1;s:3:\"and\";}','s:21:\"CRM_Custom_Form_Field\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:11:\"Custom Data\";s:3:\"url\";s:35:\"/civicrm/admin/custom/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
- (19,1,'civicrm/admin/custom/group/field/update',NULL,'Custom Field - Edit','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:23:\"administer CiviCRM data\";}i:1;s:3:\"and\";}','s:21:\"CRM_Custom_Form_Field\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:11:\"Custom Data\";s:3:\"url\";s:35:\"/civicrm/admin/custom/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
- (20,1,'civicrm/admin/custom/group/field/move',NULL,'Custom Field - Move','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:23:\"administer CiviCRM data\";}i:1;s:3:\"and\";}','s:25:\"CRM_Custom_Form_MoveField\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:11:\"Custom Data\";s:3:\"url\";s:35:\"/civicrm/admin/custom/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
- (21,1,'civicrm/admin/uf/group',NULL,'Profiles','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:17:\"CRM_UF_Page_Group\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,20,1,0,0,'a:2:{s:4:\"desc\";s:151:\"Profiles allow you to aggregate groups of fields and include them in your site as input forms, contact display pages, and search and listings features.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),
- (22,1,'civicrm/admin/uf/group/preview',NULL,'Preview','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:19:\"CRM_UF_Form_Preview\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:8:\"Profiles\";s:3:\"url\";s:31:\"/civicrm/admin/uf/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
- (23,1,'civicrm/admin/uf/group/field',NULL,'CiviCRM Profile Fields','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:17:\"CRM_UF_Page_Field\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:8:\"Profiles\";s:3:\"url\";s:31:\"/civicrm/admin/uf/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,21,1,0,0,'a:0:{}'),
- (24,1,'civicrm/admin/uf/group/field/add',NULL,'Add Field','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:17:\"CRM_UF_Form_Field\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:8:\"Profiles\";s:3:\"url\";s:31:\"/civicrm/admin/uf/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,22,1,0,0,'a:0:{}'),
- (25,1,'civicrm/admin/uf/group/field/update',NULL,'Edit Field','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:17:\"CRM_UF_Form_Field\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:8:\"Profiles\";s:3:\"url\";s:31:\"/civicrm/admin/uf/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,23,1,0,0,'a:0:{}'),
- (26,1,'civicrm/admin/uf/group/add',NULL,'New CiviCRM Profile','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:17:\"CRM_UF_Form_Group\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:8:\"Profiles\";s:3:\"url\";s:31:\"/civicrm/admin/uf/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,24,1,0,0,'a:0:{}'),
- (27,1,'civicrm/admin/uf/group/update',NULL,'Profile Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:17:\"CRM_UF_Form_Group\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:8:\"Profiles\";s:3:\"url\";s:31:\"/civicrm/admin/uf/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,25,1,0,0,'a:0:{}'),
- (28,1,'civicrm/admin/uf/group/copy',NULL,'Profile Copy','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:17:\"CRM_UF_Page_Group\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:8:\"Profiles\";s:3:\"url\";s:31:\"/civicrm/admin/uf/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,26,1,0,0,'a:0:{}'),
- (29,1,'civicrm/admin/uf/group/setting',NULL,'AdditionalInfo Form','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_UF_Form_AdvanceSetting\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:8:\"Profiles\";s:3:\"url\";s:31:\"/civicrm/admin/uf/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,0,1,0,0,'a:0:{}'),
- (30,1,'civicrm/admin/options/activity_type',NULL,'Activity Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,30,1,0,0,'a:2:{s:4:\"desc\";s:155:\"CiviCRM has several built-in activity types (meetings, phone calls, emails sent). Track other types of interactions by creating custom activity types here.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),
- (31,1,'civicrm/admin/reltype',NULL,'Relationship Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:31:\"CRM_Admin_Page_RelationshipType\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,35,1,0,0,'a:2:{s:4:\"desc\";s:148:\"Contacts can be linked to each other through Relationships (e.g. Spouse, Employer, etc.). Define the types of relationships you want to record here.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),
- (32,1,'civicrm/admin/reltype/edit',NULL,'Edit Relationship Type','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:31:\"CRM_Admin_Form_RelationshipType\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:18:\"Relationship Types\";s:3:\"url\";s:30:\"/civicrm/admin/reltype?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
- (33,1,'civicrm/admin/options/subtype',NULL,'Contact Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Admin_Page_ContactType\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,40,1,0,0,'a:1:{s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),
- (34,1,'civicrm/admin/options/subtype/edit',NULL,'Edit Contact Type','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Admin_Form_ContactType\";',NULL,'a:4:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}i:3;a:2:{s:5:\"title\";s:13:\"Contact Types\";s:3:\"url\";s:38:\"/civicrm/admin/options/subtype?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
- (35,1,'civicrm/admin/options/gender',NULL,'Gender Options','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,45,1,0,0,'a:2:{s:4:\"desc\";s:79:\"Options for assigning gender to individual contacts (e.g. Male, Female, Other).\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),
- (36,1,'civicrm/admin/options/individual_prefix',NULL,'Individual Prefixes (Ms, Mr...)','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,50,1,0,0,'a:2:{s:4:\"desc\";s:66:\"Options for individual contact prefixes (e.g. Ms., Mr., Dr. etc.).\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),
- (37,1,'civicrm/admin/options/individual_suffix',NULL,'Individual Suffixes (Jr, Sr...)','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,55,1,0,0,'a:2:{s:4:\"desc\";s:61:\"Options for individual contact suffixes (e.g. Jr., Sr. etc.).\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),
- (38,1,'civicrm/admin/locationType',NULL,'Location Types (Home, Work...)','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:27:\"CRM_Admin_Page_LocationType\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,60,1,0,0,'a:2:{s:4:\"desc\";s:94:\"Options for categorizing contact addresses and phone numbers (e.g. Home, Work, Billing, etc.).\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),
- (39,1,'civicrm/admin/locationType/edit',NULL,'Edit Location Type','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:27:\"CRM_Admin_Form_LocationType\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:30:\"Location Types (Home, Work...)\";s:3:\"url\";s:35:\"/civicrm/admin/locationType?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
- (40,1,'civicrm/admin/options/website_type',NULL,'Website Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,65,1,0,0,'a:2:{s:4:\"desc\";s:48:\"Options for assigning website types to contacts.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),
- (41,1,'civicrm/admin/options/instant_messenger_service',NULL,'Instant Messenger Services','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,70,1,0,0,'a:2:{s:4:\"desc\";s:79:\"List of IM services which can be used when recording screen-names for contacts.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),
- (42,1,'civicrm/admin/options/mobile_provider',NULL,'Mobile Phone Providers','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,75,1,0,0,'a:2:{s:4:\"desc\";s:90:\"List of mobile phone providers which can be assigned when recording contact phone numbers.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),
- (43,1,'civicrm/admin/options/phone_type',NULL,'Phone Type','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,80,1,0,0,'a:2:{s:4:\"desc\";s:80:\"Options for assigning phone type to contacts (e.g Phone,\n Mobile, Fax, Pager)\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),
- (44,1,'civicrm/admin/setting/preferences/display',NULL,'Display Preferences','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:34:\"CRM_Admin_Form_Preferences_Display\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,90,1,0,0,'a:1:{s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),
- (45,1,'civicrm/admin/setting/search',NULL,'Search Preferences','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Admin_Form_Setting_Search\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,95,1,0,0,'a:1:{s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),
- (46,1,'civicrm/admin/setting/preferences/date/edit',NULL,'Date Preferences','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:30:\"CRM_Admin_Form_PreferencesDate\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:21:\"View Date Preferences\";s:3:\"url\";s:47:\"/civicrm/admin/setting/preferences/date?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,97,1,0,0,'a:1:{s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),
- (47,1,'civicrm/admin/menu',NULL,'Navigation Menu','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:25:\"CRM_Admin_Page_Navigation\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,100,1,0,0,'a:2:{s:4:\"desc\";s:79:\"Add or remove menu items, and modify the order of items on the navigation menu.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),
- (48,1,'civicrm/admin/options/wordreplacements',NULL,'Word Replacements','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:31:\"CRM_Admin_Form_WordReplacements\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,105,1,0,0,'a:2:{s:4:\"desc\";s:18:\"Word Replacements.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),
- (49,1,'civicrm/admin/options/custom_search',NULL,'Manage Custom Searches','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,110,1,0,0,'a:2:{s:4:\"desc\";s:225:\"Developers and accidental techies with a bit of PHP and SQL knowledge can create new search forms to handle specific search and reporting needs which aren\'t covered by the built-in Advanced Search and Search Builder features.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),
- (50,1,'civicrm/admin/domain','action=update','Organization Address and Contact Info','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:23:\"CRM_Contact_Form_Domain\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,10,1,0,0,'a:2:{s:4:\"desc\";s:150:\"Configure primary contact name, email, return-path and address information. This information is used by CiviMail to identify the sending organization.\";s:10:\"adminGroup\";s:14:\"Communications\";}'),
- (51,1,'civicrm/admin/options/from_email_address',NULL,'From Email Addresses','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,20,1,0,0,'a:2:{s:4:\"desc\";s:74:\"List of Email Addresses which can be used when sending emails to contacts.\";s:10:\"adminGroup\";s:14:\"Communications\";}'),
- (52,1,'civicrm/admin/messageTemplates',NULL,'Message Templates','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:22:\"edit message templates\";i:1;s:34:\"edit user-driven message templates\";i:2;s:38:\"edit system workflow message templates\";}i:1;s:2:\"or\";}','s:31:\"CRM_Admin_Page_MessageTemplates\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,30,1,0,0,'a:2:{s:4:\"desc\";s:130:\"Message templates allow you to save and re-use messages with layouts which you can use when sending email to one or more contacts.\";s:10:\"adminGroup\";s:14:\"Communications\";}'),
- (53,1,'civicrm/admin/messageTemplates/add',NULL,'Message Templates','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:22:\"edit message templates\";i:1;s:34:\"edit user-driven message templates\";i:2;s:38:\"edit system workflow message templates\";}i:1;s:2:\"or\";}','s:31:\"CRM_Admin_Form_MessageTemplates\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:17:\"Message Templates\";s:3:\"url\";s:39:\"/civicrm/admin/messageTemplates?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,262,1,0,0,'a:1:{s:4:\"desc\";s:26:\"Add/Edit Message Templates\";}'),
- (54,1,'civicrm/admin/scheduleReminders',NULL,'Schedule Reminders','s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:23:\"administer CiviCRM data\";}i:1;s:3:\"and\";}','s:32:\"CRM_Admin_Page_ScheduleReminders\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,40,1,0,0,'a:2:{s:4:\"desc\";s:19:\"Schedule Reminders.\";s:10:\"adminGroup\";s:14:\"Communications\";}'),
- (55,1,'civicrm/admin/scheduleReminders/edit',NULL,'Schedule Reminders','s:1:\"1\";','a:2:{i:0;a:2:{i:0;s:23:\"administer CiviCRM data\";i:1;s:15:\"edit all events\";}i:1;s:2:\"or\";}','s:32:\"CRM_Admin_Form_ScheduleReminders\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:18:\"Schedule Reminders\";s:3:\"url\";s:40:\"/civicrm/admin/scheduleReminders?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
- (56,1,'civicrm/admin/weight',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:16:\"CRM_Utils_Weight\";i:1;s:8:\"fixOrder\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
- (57,1,'civicrm/admin/options/preferred_communication_method',NULL,'Preferred Communication Methods','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,50,1,0,0,'a:2:{s:4:\"desc\";s:117:\"One or more preferred methods of communication can be assigned to each contact. Customize the available options here.\";s:10:\"adminGroup\";s:14:\"Communications\";}'),
- (58,1,'civicrm/admin/labelFormats',NULL,'Label Page Formats','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:27:\"CRM_Admin_Page_LabelFormats\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,60,1,0,0,'a:2:{s:4:\"desc\";s:82:\"Configure label sizes and page layouts that are used when printing mailing labels.\";s:10:\"adminGroup\";s:14:\"Communications\";}'),
- (59,1,'civicrm/admin/labelFormats/edit',NULL,'Label Page Formats','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:27:\"CRM_Admin_Page_LabelFormats\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:18:\"Label Page Formats\";s:3:\"url\";s:35:\"/civicrm/admin/labelFormats?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
- (60,1,'civicrm/admin/pdfFormats',NULL,'Print Page (PDF) Formats','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:25:\"CRM_Admin_Page_PdfFormats\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,70,1,0,0,'a:2:{s:4:\"desc\";s:95:\"Configure PDF Page Formats that can be assigned to Message Templates when creating PDF letters.\";s:10:\"adminGroup\";s:14:\"Communications\";}'),
- (61,1,'civicrm/admin/pdfFormats/edit',NULL,'Print Page (PDF) Formats','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:25:\"CRM_Admin_Page_PdfFormats\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:24:\"Print Page (PDF) Formats\";s:3:\"url\";s:33:\"/civicrm/admin/pdfFormats?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
- (62,1,'civicrm/admin/options/communication_style',NULL,'Communication Style Options','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,75,1,0,0,'a:2:{s:4:\"desc\";s:42:\"Options for Communication Style selection.\";s:10:\"adminGroup\";s:14:\"Communications\";}'),
- (63,1,'civicrm/admin/options/email_greeting',NULL,'Email Greeting Formats','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,80,1,0,0,'a:2:{s:4:\"desc\";s:75:\"Options for assigning email greetings to individual and household contacts.\";s:10:\"adminGroup\";s:14:\"Communications\";}'),
- (64,1,'civicrm/admin/options/postal_greeting',NULL,'Postal Greeting Formats','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,90,1,0,0,'a:2:{s:4:\"desc\";s:76:\"Options for assigning postal greetings to individual and household contacts.\";s:10:\"adminGroup\";s:14:\"Communications\";}'),
- (65,1,'civicrm/admin/options/addressee',NULL,'Addressee Formats','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,100,1,0,0,'a:2:{s:4:\"desc\";s:83:\"Options for assigning addressee to individual, household and organization contacts.\";s:10:\"adminGroup\";s:14:\"Communications\";}'),
- (66,1,'civicrm/admin/setting/localization',NULL,'Languages, Currency, Locations','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:35:\"CRM_Admin_Form_Setting_Localization\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,10,1,0,0,'a:1:{s:10:\"adminGroup\";s:12:\"Localization\";}'),
- (67,1,'civicrm/admin/setting/preferences/address',NULL,'Address Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:34:\"CRM_Admin_Form_Preferences_Address\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,20,1,0,0,'a:1:{s:10:\"adminGroup\";s:12:\"Localization\";}'),
- (68,1,'civicrm/admin/setting/date',NULL,'Date Formats','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:27:\"CRM_Admin_Form_Setting_Date\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,30,1,0,0,'a:1:{s:10:\"adminGroup\";s:12:\"Localization\";}'),
- (69,1,'civicrm/admin/options/languages',NULL,'Preferred Languages','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,40,1,0,0,'a:2:{s:4:\"desc\";s:30:\"Options for contact languages.\";s:10:\"adminGroup\";s:12:\"Localization\";}'),
- (70,1,'civicrm/admin/access',NULL,'Access Control','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:21:\"CRM_Admin_Page_Access\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,10,1,0,0,'a:2:{s:4:\"desc\";s:73:\"Grant or deny access to actions (view, edit...), features and components.\";s:10:\"adminGroup\";s:21:\"Users and Permissions\";}'),
- (71,1,'civicrm/admin/access/wp-permissions',NULL,'WordPress Access Control','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:34:\"CRM_ACL_Form_WordPress_Permissions\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:14:\"Access Control\";s:3:\"url\";s:29:\"/civicrm/admin/access?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,10,1,0,0,'a:1:{s:4:\"desc\";s:65:\"Grant access to CiviCRM components and other CiviCRM permissions.\";}'),
- (72,1,'civicrm/admin/synchUser',NULL,'Synchronize Users to Contacts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Form_CMSUser\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,20,1,0,0,'a:2:{s:4:\"desc\";s:71:\"Automatically create a CiviCRM contact record for each CMS user record.\";s:10:\"adminGroup\";s:21:\"Users and Permissions\";}'),
- (73,1,'civicrm/admin/configtask',NULL,'Configuration Checklist','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Admin_Page_ConfigTaskList\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}','civicrm/admin/configtask',NULL,NULL,1,0,1,1,1,1,0,0,'a:2:{s:4:\"desc\";s:55:\"List of configuration tasks with links to each setting.\";s:10:\"adminGroup\";s:15:\"System Settings\";}'),
- (74,1,'civicrm/admin/setting/component',NULL,'Enable CiviCRM Components','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:32:\"CRM_Admin_Form_Setting_Component\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,10,1,0,0,'a:2:{s:4:\"desc\";s:269:\"Enable or disable components (e.g. CiviEvent, CiviMember, etc.) for your site based on the features you need. We recommend disabling any components not being used in order to simplify the user interface. You can easily re-enable components at any time from this screen.\";s:10:\"adminGroup\";s:15:\"System Settings\";}'),
- (75,1,'civicrm/admin/extensions',NULL,'Manage Extensions','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"administer CiviCRM system\";}i:1;s:3:\"and\";}','s:25:\"CRM_Admin_Page_Extensions\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,120,1,0,0,'a:2:{s:4:\"desc\";s:0:\"\";s:10:\"adminGroup\";s:15:\"System Settings\";}'),
- (76,1,'civicrm/admin/extensions/upgrade',NULL,'Database Upgrades','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"administer CiviCRM system\";}i:1;s:3:\"and\";}','s:32:\"CRM_Admin_Page_ExtensionsUpgrade\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:17:\"Manage Extensions\";s:3:\"url\";s:33:\"/civicrm/admin/extensions?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
- (77,1,'civicrm/admin/setting/smtp',NULL,'Outbound Email Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"administer CiviCRM system\";}i:1;s:3:\"and\";}','s:27:\"CRM_Admin_Form_Setting_Smtp\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,20,1,0,0,'a:1:{s:10:\"adminGroup\";s:15:\"System Settings\";}'),
- (78,1,'civicrm/admin/paymentProcessor',NULL,'Settings - Payment Processor','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:29:\"administer payment processors\";}i:1;s:3:\"and\";}','s:31:\"CRM_Admin_Page_PaymentProcessor\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,30,1,0,0,'a:2:{s:4:\"desc\";s:48:\"Payment Processor setup for CiviCRM transactions\";s:10:\"adminGroup\";s:15:\"System Settings\";}'),
- (79,1,'civicrm/admin/paymentProcessor/edit',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:29:\"administer payment processors\";}i:1;s:3:\"and\";}','s:31:\"CRM_Admin_Form_PaymentProcessor\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:28:\"Settings - Payment Processor\";s:3:\"url\";s:39:\"/civicrm/admin/paymentProcessor?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
- (80,1,'civicrm/admin/setting/mapping',NULL,'Mapping and Geocoding','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:30:\"CRM_Admin_Form_Setting_Mapping\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,40,1,0,0,'a:1:{s:10:\"adminGroup\";s:15:\"System Settings\";}'),
- (81,1,'civicrm/admin/setting/misc',NULL,'Misc (Undelete, PDFs, Limits, Logging, etc.)','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:36:\"CRM_Admin_Form_Setting_Miscellaneous\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,50,1,0,0,'a:2:{s:4:\"desc\";s:63:\"Enable undelete/move to trash feature, detailed change logging.\";s:10:\"adminGroup\";s:15:\"System Settings\";}'),
- (82,1,'civicrm/admin/setting/path',NULL,'Directories','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:27:\"CRM_Admin_Form_Setting_Path\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,60,1,0,0,'a:1:{s:10:\"adminGroup\";s:15:\"System Settings\";}'),
- (83,1,'civicrm/admin/setting/url',NULL,'Resource URLs','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Admin_Form_Setting_Url\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,70,1,0,0,'a:1:{s:10:\"adminGroup\";s:15:\"System Settings\";}'),
- (84,1,'civicrm/admin/setting/updateConfigBackend',NULL,'Cleanup Caches and Update Paths','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:42:\"CRM_Admin_Form_Setting_UpdateConfigBackend\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,80,1,0,0,'a:2:{s:4:\"desc\";s:157:\"Reset the Base Directory Path and Base URL settings - generally when a CiviCRM site is moved to another location in the file system and/or to another domain.\";s:10:\"adminGroup\";s:15:\"System Settings\";}'),
- (85,1,'civicrm/admin/setting/uf',NULL,'CMS Database Integration','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:25:\"CRM_Admin_Form_Setting_UF\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,90,1,0,0,'a:1:{s:10:\"adminGroup\";s:15:\"System Settings\";}'),
- (86,1,'civicrm/admin/options/safe_file_extension',NULL,'Safe File Extension Options','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,100,1,0,0,'a:2:{s:4:\"desc\";s:44:\"File Extensions that can be considered safe.\";s:10:\"adminGroup\";s:15:\"System Settings\";}'),
- (87,1,'civicrm/admin/options',NULL,'Option Groups','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,105,1,0,0,'a:2:{s:4:\"desc\";s:35:\"Access all meta-data option groups.\";s:10:\"adminGroup\";s:15:\"System Settings\";}'),
- (88,1,'civicrm/admin/mapping',NULL,'Import/Export Mappings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Mapping\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,110,1,0,0,'a:2:{s:4:\"desc\";s:141:\"Import and Export mappings allow you to easily run the same job multiple times. This option allows you to rename or delete existing mappings.\";s:10:\"adminGroup\";s:15:\"System Settings\";}'),
- (89,1,'civicrm/admin/mapping/edit',NULL,'Import/Export Mappings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Form_Mapping\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:22:\"Import/Export Mappings\";s:3:\"url\";s:30:\"/civicrm/admin/mapping?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,111,1,0,0,'a:2:{s:4:\"desc\";s:141:\"Import and Export mappings allow you to easily run the same job multiple times. This option allows you to rename or delete existing mappings.\";s:10:\"adminGroup\";s:15:\"System Settings\";}'),
- (90,1,'civicrm/admin/setting/debug',NULL,'Debugging','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:32:\"CRM_Admin_Form_Setting_Debugging\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,120,1,0,0,'a:1:{s:10:\"adminGroup\";s:15:\"System Settings\";}'),
- (91,1,'civicrm/admin/setting/preferences/multisite',NULL,'Multi Site Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Form_Generic\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,130,1,0,0,'a:1:{s:10:\"adminGroup\";s:15:\"System Settings\";}'),
- (92,1,'civicrm/admin/setting/preferences/campaign',NULL,'CiviCampaign Component Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Form_Generic\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,10,1,0,0,'a:3:{s:4:\"desc\";s:40:\"Configure global CiviCampaign behaviors.\";s:10:\"adminGroup\";s:12:\"CiviCampaign\";s:9:\"component\";s:12:\"CiviCampaign\";}'),
- (93,1,'civicrm/admin/setting/preferences/event',NULL,'CiviEvent Component Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:16:\"access CiviEvent\";i:1;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Form_Generic\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,420,1,0,0,'a:2:{s:4:\"desc\";s:37:\"Configure global CiviEvent behaviors.\";s:10:\"adminGroup\";s:9:\"CiviEvent\";}'),
- (94,1,'civicrm/admin/setting/preferences/mailing',NULL,'CiviMail Component Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:15:\"access CiviMail\";i:1;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:34:\"CRM_Admin_Form_Preferences_Mailing\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,430,1,0,0,'a:2:{s:4:\"desc\";s:36:\"Configure global CiviMail behaviors.\";s:10:\"adminGroup\";s:8:\"CiviMail\";}'),
- (95,1,'civicrm/admin/setting/preferences/member',NULL,'CiviMember Component Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:17:\"access CiviMember\";i:1;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:33:\"CRM_Admin_Form_Preferences_Member\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,390,1,0,0,'a:2:{s:4:\"desc\";s:38:\"Configure global CiviMember behaviors.\";s:10:\"adminGroup\";s:10:\"CiviMember\";}'),
- (96,1,'civicrm/admin/setting/preferences/date',NULL,'View Date Preferences','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:30:\"CRM_Admin_Page_PreferencesDate\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
- (97,1,'civicrm/admin/runjobs',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:25:\"administer CiviCRM system\";}i:1;s:3:\"and\";}','a:2:{i:0;s:16:\"CRM_Utils_System\";i:1;s:20:\"executeScheduledJobs\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:1:{s:4:\"desc\";s:36:\"URL used for running scheduled jobs.\";}'),
- (98,1,'civicrm/admin/job',NULL,'Scheduled Jobs','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:25:\"administer CiviCRM system\";}i:1;s:3:\"and\";}','s:18:\"CRM_Admin_Page_Job\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1370,1,0,0,'a:2:{s:4:\"desc\";s:35:\"Managing periodially running tasks.\";s:10:\"adminGroup\";s:15:\"System Settings\";}'),
- (99,1,'civicrm/admin/job/add',NULL,'Add Scheduled Job','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:25:\"administer CiviCRM system\";}i:1;s:3:\"and\";}','s:18:\"CRM_Admin_Form_Job\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:14:\"Scheduled Jobs\";s:3:\"url\";s:26:\"/civicrm/admin/job?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:1:{s:4:\"desc\";s:31:\"Add a periodially running task.\";}'),
- (100,1,'civicrm/admin/job/edit',NULL,'Edit Scheduled Job','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:25:\"administer CiviCRM system\";}i:1;s:3:\"and\";}','s:18:\"CRM_Admin_Page_Job\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:14:\"Scheduled Jobs\";s:3:\"url\";s:26:\"/civicrm/admin/job?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1372,1,0,0,'a:2:{s:4:\"desc\";s:32:\"Edit a periodially running task.\";s:10:\"adminGroup\";s:15:\"System Settings\";}'),
- (101,1,'civicrm/admin/joblog',NULL,'Scheduled Jobs Log','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:25:\"administer CiviCRM system\";}i:1;s:3:\"and\";}','s:21:\"CRM_Admin_Page_JobLog\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1380,1,0,0,'a:2:{s:4:\"desc\";s:46:\"Browsing the log of periodially running tasks.\";s:10:\"adminGroup\";s:6:\"Manage\";}'),
- (102,1,'civicrm/admin/options/grant_type',NULL,'Grant Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,385,1,0,0,'a:2:{s:4:\"desc\";s:148:\"List of types which can be assigned to Grants. (Enable CiviGrant from Administer > System Settings > Enable Components if you want to track grants.)\";s:10:\"adminGroup\";s:12:\"Option Lists\";}'),
- (103,1,'civicrm/admin/paymentProcessorType',NULL,'Payment Processor Type','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:35:\"CRM_Admin_Page_PaymentProcessorType\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,390,1,0,0,'a:1:{s:4:\"desc\";s:34:\"Payment Processor type information\";}'),
- (104,1,'civicrm/admin',NULL,'Administer','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:20:\"CRM_Admin_Page_Admin\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,9000,1,1,0,'a:0:{}'),
- (105,1,'civicrm/ajax/navmenu',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:19:\"CRM_Admin_Page_AJAX\";i:1;s:7:\"navMenu\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (106,1,'civicrm/ajax/menutree',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:19:\"CRM_Admin_Page_AJAX\";i:1;s:8:\"menuTree\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,3,0,'a:0:{}'),
- (107,1,'civicrm/ajax/statusmsg',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:19:\"CRM_Admin_Page_AJAX\";i:1;s:12:\"getStatusMsg\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (108,1,'civicrm/admin/price',NULL,'Price Sets','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:18:\"CRM_Price_Page_Set\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,380,1,0,0,'a:2:{s:4:\"desc\";s:205:\"Price sets allow you to offer multiple options with associated fees (e.g. pre-conference workshops, additional meals, etc.). Configure Price Sets for events which need more than a single set of fee levels.\";s:10:\"adminGroup\";s:9:\"Customize\";}'),
- (109,1,'civicrm/admin/price/add','action=add','New Price Set','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:18:\"CRM_Price_Page_Set\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:10:\"Price Sets\";s:3:\"url\";s:28:\"/civicrm/admin/price?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:1:{s:4:\"desc\";s:205:\"Price sets allow you to offer multiple options with associated fees (e.g. pre-conference workshops, additional meals, etc.). Configure Price Sets for events which need more than a single set of fee levels.\";}'),
- (110,1,'civicrm/admin/price/edit',NULL,'Price Sets','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:18:\"CRM_Price_Page_Set\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:10:\"Price Sets\";s:3:\"url\";s:28:\"/civicrm/admin/price?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
- (111,1,'civicrm/admin/price/field',NULL,'Price Fields','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:20:\"CRM_Price_Page_Field\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:10:\"Price Sets\";s:3:\"url\";s:28:\"/civicrm/admin/price?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
- (112,1,'civicrm/admin/price/field/edit',NULL,'Price Fields','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:20:\"CRM_Price_Page_Field\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:10:\"Price Sets\";s:3:\"url\";s:28:\"/civicrm/admin/price?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
- (113,1,'civicrm/admin/price/field/option',NULL,'Price Field Options','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:21:\"CRM_Price_Page_Option\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:10:\"Price Sets\";s:3:\"url\";s:28:\"/civicrm/admin/price?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
- (114,1,'civicrm/admin/price/field/option/edit',NULL,'Price Field Options','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:21:\"CRM_Price_Page_Option\";',NULL,'a:4:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:10:\"Price Sets\";s:3:\"url\";s:28:\"/civicrm/admin/price?reset=1\";}i:3;a:2:{s:5:\"title\";s:19:\"Price Field Options\";s:3:\"url\";s:41:\"/civicrm/admin/price/field/option?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
- (115,1,'civicrm/admin/sms/provider',NULL,'Sms Providers','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:21:\"CRM_SMS_Page_Provider\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,500,1,0,0,'a:2:{s:4:\"desc\";s:27:\"To configure a sms provider\";s:10:\"adminGroup\";s:15:\"System Settings\";}'),
- (116,1,'civicrm/admin/sms/provider/edit',NULL,'Sms Providers','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:21:\"CRM_SMS_Form_Provider\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Sms Providers\";s:3:\"url\";s:35:\"/civicrm/admin/sms/provider?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,501,1,0,0,'a:2:{s:4:\"desc\";s:27:\"To configure a sms provider\";s:10:\"adminGroup\";s:15:\"System Settings\";}'),
- (117,1,'civicrm/sms/send',NULL,'New Mass SMS','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:8:\"send SMS\";}i:1;s:3:\"and\";}','s:23:\"CRM_SMS_Controller_Send\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,610,1,1,0,'a:0:{}'),
- (118,1,'civicrm/sms/callback',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:21:\"CRM_SMS_Page_Callback\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,1,1,0,0,'a:0:{}'),
- (119,1,'civicrm/admin/badgelayout','action=browse','Event Name Badge Layouts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:21:\"CRM_Badge_Page_Layout\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,399,1,0,0,'a:2:{s:4:\"desc\";s:107:\"Configure name badge layouts for event participants, including logos and what data to include on the badge.\";s:10:\"adminGroup\";s:9:\"CiviEvent\";}'),
- (120,1,'civicrm/admin/badgelayout/add',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:21:\"CRM_Badge_Form_Layout\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:24:\"Event Name Badge Layouts\";s:3:\"url\";s:52:\"/civicrm/admin/badgelayout?reset=1&action=browse\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
- (121,1,'civicrm/payment/form',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:26:\"CRM_Financial_Form_Payment\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:11:\"New Payment\";s:3:\"url\";s:39:\"/civicrm/payment?reset=1&action=add\";}}',NULL,NULL,2,1,1,1,0,0,1,0,0,'a:0:{}'),
- (122,1,'civicrm/payment/edit',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:30:\"CRM_Financial_Form_PaymentEdit\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:11:\"New Payment\";s:3:\"url\";s:39:\"/civicrm/payment?reset=1&action=add\";}}',NULL,NULL,2,1,0,1,0,1,1,0,0,'a:1:{s:9:\"component\";s:14:\"CiviContribute\";}'),
- (123,1,'civicrm/activity','action=add&context=standalone','New Activity','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Activity_Form_Activity\";','s:14:\"attachUpload=1\";','a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (124,1,'civicrm/activity/view',NULL,'View Activity','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:30:\"CRM_Activity_Form_ActivityView\";','s:14:\"attachUpload=1\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:12:\"New Activity\";s:3:\"url\";s:63:\"/civicrm/activity?reset=1&action=add&context=standalone\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (125,1,'civicrm/ajax/activity',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:22:\"CRM_Activity_Page_AJAX\";i:1;s:15:\"getCaseActivity\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (126,1,'civicrm/ajax/globalrelationships',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:22:\"CRM_Activity_Page_AJAX\";i:1;s:26:\"getCaseGlobalRelationships\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (127,1,'civicrm/ajax/clientrelationships',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:22:\"CRM_Activity_Page_AJAX\";i:1;s:26:\"getCaseClientRelationships\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (128,1,'civicrm/ajax/caseroles',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:22:\"CRM_Activity_Page_AJAX\";i:1;s:12:\"getCaseRoles\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (129,1,'civicrm/ajax/contactactivity',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:22:\"CRM_Activity_Page_AJAX\";i:1;s:18:\"getContactActivity\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (130,1,'civicrm/ajax/activity/convert',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:22:\"CRM_Activity_Page_AJAX\";i:1;s:21:\"convertToCaseActivity\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,3,0,'a:0:{}'),
- (131,1,'civicrm/activity/search',NULL,'Find Activities','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:30:\"CRM_Activity_Controller_Search\";','s:14:\"attachUpload=1\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:12:\"New Activity\";s:3:\"url\";s:63:\"/civicrm/activity?reset=1&action=add&context=standalone\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (132,1,'civicrm/pcp',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:16:\"CRM_PCP_Form_PCP\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,1,1,0,0,'a:0:{}'),
- (133,1,'civicrm/pcp/campaign',NULL,'Setup a Personal Campaign Page - Account Information','s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:25:\"make online contributions\";}i:1;s:3:\"and\";}','s:22:\"CRM_PCP_Controller_PCP\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,0,1,0,0,'a:0:{}'),
- (134,1,'civicrm/pcp/info',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:20:\"CRM_PCP_Page_PCPInfo\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,1,1,0,0,'a:0:{}'),
- (135,1,'civicrm/admin/pcp','context=contribute','Personal Campaign Pages','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:16:\"CRM_PCP_Page_PCP\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,362,1,0,0,'a:2:{s:4:\"desc\";s:49:\"View and manage existing personal campaign pages.\";s:10:\"adminGroup\";s:14:\"CiviContribute\";}'),
- (136,1,'civicrm',NULL,'CiviCRM','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Contact_Page_DashBoard\";',NULL,'a:0:{}',NULL,NULL,NULL,1,0,1,0,0,1,0,0,'a:0:{}'),
- (137,1,'civicrm/dashboard',NULL,'CiviCRM Home','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Contact_Page_DashBoard\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,0,1,1,0,'a:0:{}'),
- (138,1,'civicrm/contact/search',NULL,'Find Contacts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Contact_Controller_Search\";','s:8:\"mode=256\";','a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,10,1,1,0,'a:0:{}'),
- (139,1,'civicrm/contact/image',NULL,'Process Uploaded Images','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access uploaded files\";}i:1;s:3:\"and\";}','a:2:{i:0;s:23:\"CRM_Contact_BAO_Contact\";i:1;s:12:\"processImage\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (140,1,'civicrm/contact/imagefile',NULL,'Get Image File','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"*always allow*\";}i:1;s:3:\"and\";}','s:26:\"CRM_Contact_Page_ImageFile\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (141,1,'civicrm/contact/search/basic',NULL,'Find Contacts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Contact_Controller_Search\";','s:8:\"mode=256\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:13:\"Find Contacts\";s:3:\"url\";s:31:\"/civicrm/contact/search?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (142,1,'civicrm/contact/search/advanced',NULL,'Advanced Search','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Contact_Controller_Search\";','s:8:\"mode=512\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:13:\"Find Contacts\";s:3:\"url\";s:31:\"/civicrm/contact/search?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,12,1,1,0,'a:0:{}'),
- (143,1,'civicrm/contact/search/builder',NULL,'Search Builder','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Contact_Controller_Search\";','s:9:\"mode=8192\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:13:\"Find Contacts\";s:3:\"url\";s:31:\"/civicrm/contact/search?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,14,1,1,0,'a:0:{}'),
- (144,1,'civicrm/contact/add',NULL,'New Contact','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:24:\"CRM_Contact_Form_Contact\";','s:13:\"addSequence=1\";','a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (145,1,'civicrm/contact/add/individual','ct=Individual','New Individual','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:12:\"add contacts\";}i:1;s:3:\"and\";}','s:24:\"CRM_Contact_Form_Contact\";','s:13:\"addSequence=1\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:11:\"New Contact\";s:3:\"url\";s:28:\"/civicrm/contact/add?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (146,1,'civicrm/contact/add/household','ct=Household','New Household','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:12:\"add contacts\";}i:1;s:3:\"and\";}','s:24:\"CRM_Contact_Form_Contact\";','s:13:\"addSequence=1\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:11:\"New Contact\";s:3:\"url\";s:28:\"/civicrm/contact/add?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (147,1,'civicrm/contact/add/organization','ct=Organization','New Organization','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:12:\"add contacts\";}i:1;s:3:\"and\";}','s:24:\"CRM_Contact_Form_Contact\";','s:13:\"addSequence=1\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:11:\"New Contact\";s:3:\"url\";s:28:\"/civicrm/contact/add?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (148,1,'civicrm/contact/relatedcontact',NULL,'Edit Related Contact','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:24:\"access Contact Dashboard\";}i:1;s:3:\"and\";}','s:31:\"CRM_Contact_Form_RelatedContact\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,1,1,0,0,'a:0:{}'),
- (149,1,'civicrm/contact/merge',NULL,'Merge Contact','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:24:\"merge duplicate contacts\";}i:1;s:3:\"and\";}','s:22:\"CRM_Contact_Form_Merge\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (150,1,'civicrm/contact/email',NULL,'Email a Contact','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:27:\"CRM_Contact_Form_Task_Email\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (151,1,'civicrm/contact/map',NULL,'Map Location(s)','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:25:\"CRM_Contact_Form_Task_Map\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,1,1,0,0,'a:0:{}'),
- (152,1,'civicrm/contact/map/event',NULL,'Map Event Location','s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:31:\"CRM_Contact_Form_Task_Map_Event\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Map Location(s)\";s:3:\"url\";s:28:\"/civicrm/contact/map?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,1,1,0,0,'a:0:{}'),
- (153,1,'civicrm/contact/view','cid=%%cid%%','Contact Summary','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:29:\"CRM_Contact_Page_View_Summary\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (154,1,'civicrm/contact/view/delete',NULL,'Delete Contact','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:28:\"CRM_Contact_Form_Task_Delete\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (155,1,'civicrm/contact/view/activity','show=1,cid=%%cid%%','Activities','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:21:\"CRM_Activity_Page_Tab\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (156,1,'civicrm/activity/add','action=add','Activities','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Activity_Form_Activity\";','s:14:\"attachUpload=1\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:12:\"New Activity\";s:3:\"url\";s:63:\"/civicrm/activity?reset=1&action=add&context=standalone\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (157,1,'civicrm/activity/email/add','action=add','Activities','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:27:\"CRM_Contact_Form_Task_Email\";','s:14:\"attachUpload=1\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:12:\"New Activity\";s:3:\"url\";s:63:\"/civicrm/activity?reset=1&action=add&context=standalone\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (158,1,'civicrm/activity/pdf/add','action=add','Activities','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:25:\"CRM_Contact_Form_Task_PDF\";','s:14:\"attachUpload=1\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:12:\"New Activity\";s:3:\"url\";s:63:\"/civicrm/activity?reset=1&action=add&context=standalone\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (159,1,'civicrm/contact/view/rel','cid=%%cid%%','Relationships','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:34:\"CRM_Contact_Page_View_Relationship\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (160,1,'civicrm/contact/view/group','cid=%%cid%%','Groups','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:34:\"CRM_Contact_Page_View_GroupContact\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (161,1,'civicrm/contact/view/smartgroup','cid=%%cid%%','Smart Groups','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:39:\"CRM_Contact_Page_View_ContactSmartGroup\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (162,1,'civicrm/contact/view/tag','cid=%%cid%%','Tags','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:25:\"CRM_Contact_Page_View_Tag\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (163,1,'civicrm/contact/view/cd',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:32:\"CRM_Contact_Page_View_CustomData\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (164,1,'civicrm/contact/view/cd/edit',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:27:\"CRM_Contact_Form_CustomData\";','s:13:\"addSequence=1\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (165,1,'civicrm/contact/view/vcard',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:27:\"CRM_Contact_Page_View_Vcard\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (166,1,'civicrm/contact/view/print',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:27:\"CRM_Contact_Page_View_Print\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (167,1,'civicrm/contact/view/log',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:25:\"CRM_Contact_Page_View_Log\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (168,1,'civicrm/user',NULL,'Contact Dashboard','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:24:\"access Contact Dashboard\";}i:1;s:3:\"and\";}','s:35:\"CRM_Contact_Page_View_UserDashBoard\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,0,1,0,0,'a:0:{}'),
- (169,1,'civicrm/dashlet/activity',NULL,'Activity Dashlet','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:25:\"CRM_Dashlet_Page_Activity\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (170,1,'civicrm/dashlet/blog',NULL,'CiviCRM Blog','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:21:\"CRM_Dashlet_Page_Blog\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (171,1,'civicrm/dashlet/getting-started',NULL,'CiviCRM Resources','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:31:\"CRM_Dashlet_Page_GettingStarted\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (172,1,'civicrm/ajax/relation',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:12:\"relationship\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,3,0,'a:0:{}'),
- (173,1,'civicrm/ajax/groupTree',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:9:\"groupTree\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (174,1,'civicrm/ajax/custom',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:11:\"customField\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (175,1,'civicrm/ajax/customvalue',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:17:\"deleteCustomValue\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,3,0,'a:0:{}'),
- (176,1,'civicrm/ajax/cmsuser',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:13:\"checkUserName\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (177,1,'civicrm/ajax/checkemail',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:15:\"getContactEmail\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (178,1,'civicrm/ajax/checkphone',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:15:\"getContactPhone\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (179,1,'civicrm/ajax/subtype',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:13:\"buildSubTypes\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (180,1,'civicrm/ajax/signature',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:12:\"getSignature\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (181,1,'civicrm/ajax/pdfFormat',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:9:\"pdfFormat\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (182,1,'civicrm/ajax/paperSize',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:9:\"paperSize\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (183,1,'civicrm/ajax/contactref',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:31:\"access contact reference fields\";i:1;s:15:\" access CiviCRM\";}i:1;s:2:\"or\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:16:\"contactReference\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (184,1,'civicrm/dashlet/myCases',NULL,'Case Dashlet','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:24:\"CRM_Dashlet_Page_MyCases\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (185,1,'civicrm/dashlet/allCases',NULL,'All Cases Dashlet','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:31:\"access all cases and activities\";}i:1;s:3:\"and\";}','s:25:\"CRM_Dashlet_Page_AllCases\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (186,1,'civicrm/dashlet/casedashboard',NULL,'Case Dashboard Dashlet','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:30:\"CRM_Dashlet_Page_CaseDashboard\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (187,1,'civicrm/contact/deduperules',NULL,'Find and Merge Duplicate Contacts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:23:\"administer dedupe rules\";i:1;s:24:\"merge duplicate contacts\";}i:1;s:2:\"or\";}','s:28:\"CRM_Contact_Page_DedupeRules\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,105,1,0,0,'a:2:{s:4:\"desc\";s:158:\"Manage the rules used to identify potentially duplicate contact records. Scan for duplicates using a selected rule and merge duplicate contact data as needed.\";s:10:\"adminGroup\";s:6:\"Manage\";}'),
- (188,1,'civicrm/contact/dedupefind',NULL,'Find and Merge Duplicate Contacts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:24:\"merge duplicate contacts\";}i:1;s:3:\"and\";}','s:27:\"CRM_Contact_Page_DedupeFind\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (189,1,'civicrm/ajax/dedupefind',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:24:\"merge duplicate contacts\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:10:\"getDedupes\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (190,1,'civicrm/contact/dedupemerge',NULL,'Batch Merge Duplicate Contacts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:24:\"merge duplicate contacts\";}i:1;s:3:\"and\";}','s:28:\"CRM_Contact_Page_DedupeMerge\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (191,1,'civicrm/dedupe/exception',NULL,'Dedupe Exceptions','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:32:\"CRM_Contact_Page_DedupeException\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,110,1,0,0,'a:1:{s:10:\"adminGroup\";s:6:\"Manage\";}'),
- (192,1,'civicrm/ajax/dedupeRules',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:16:\"buildDedupeRules\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (193,1,'civicrm/contact/view/useradd','cid=%%cid%%','Add User','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:29:\"CRM_Contact_Page_View_Useradd\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (194,1,'civicrm/ajax/markSelection',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:22:\"selectUnselectContacts\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (195,1,'civicrm/ajax/toggleDedupeSelect',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:24:\"merge duplicate contacts\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:18:\"toggleDedupeSelect\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (196,1,'civicrm/ajax/flipDupePairs',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:24:\"merge duplicate contacts\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:13:\"flipDupePairs\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (197,1,'civicrm/activity/sms/add','action=add','Activities','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:8:\"send SMS\";}i:1;s:3:\"and\";}','s:25:\"CRM_Contact_Form_Task_SMS\";','s:14:\"attachUpload=1\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:12:\"New Activity\";s:3:\"url\";s:63:\"/civicrm/activity?reset=1&action=add&context=standalone\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (198,1,'civicrm/ajax/contactrelationships',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"view my contact\";}i:1;s:2:\"or\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:23:\"getContactRelationships\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (199,1,'civicrm/import',NULL,'Import','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:15:\"import contacts\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Contact_Import_Controller\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,400,1,1,0,'a:0:{}'),
- (200,1,'civicrm/import/contact',NULL,'Import Contacts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:15:\"import contacts\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Contact_Import_Controller\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:6:\"Import\";s:3:\"url\";s:23:\"/civicrm/import?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,410,1,1,0,'a:0:{}'),
- (201,1,'civicrm/import/contact/summary',NULL,'Import Contacts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:31:\"CRM_Contact_Import_Form_Summary\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:6:\"Import\";s:3:\"url\";s:23:\"/civicrm/import?reset=1\";}i:2;a:2:{s:5:\"title\";s:15:\"Import Contacts\";s:3:\"url\";s:31:\"/civicrm/import/contact?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,410,1,1,0,'a:0:{}'),
- (202,1,'civicrm/import/outcome',NULL,'Import results','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:16:\"CRM_Import_Forms\";i:1;s:9:\"outputCSV\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:6:\"Import\";s:3:\"url\";s:23:\"/civicrm/import?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (203,1,'civicrm/import/activity',NULL,'Import Activities','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:15:\"import contacts\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:30:\"CRM_Activity_Import_Controller\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:6:\"Import\";s:3:\"url\";s:23:\"/civicrm/import?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,420,1,1,0,'a:0:{}'),
- (204,1,'civicrm/import/contribution',NULL,'Import Contributions','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:21:\"access CiviContribute\";i:1;s:18:\"edit contributions\";}i:1;s:3:\"and\";}','s:32:\"CRM_Contribute_Import_Controller\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:6:\"Import\";s:3:\"url\";s:23:\"/civicrm/import?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,520,1,1,0,'a:0:{}'),
- (205,1,'civicrm/import/custom','id=%%id%%','Import Multi-value Custom Data','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:28:\"CRM_Custom_Import_Controller\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:6:\"Import\";s:3:\"url\";s:23:\"/civicrm/import?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,420,1,1,0,'a:0:{}'),
- (206,1,'civicrm/ajax/status',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:15:\"import contacts\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:28:\"CRM_Contact_Import_Page_AJAX\";i:1;s:6:\"status\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (207,1,'civicrm/import/datasource',NULL,'Import','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:32:\"CRM_Import_Form_DataSourceConfig\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:6:\"Import\";s:3:\"url\";s:23:\"/civicrm/import?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,450,1,1,0,'a:0:{}'),
- (208,1,'civicrm/group',NULL,'Manage Groups','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:20:\"CRM_Group_Page_Group\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,30,1,1,0,'a:0:{}'),
- (209,1,'civicrm/group/search',NULL,'Group Members','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Contact_Controller_Search\";','s:8:\"mode=256\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:13:\"Manage Groups\";s:3:\"url\";s:22:\"/civicrm/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:1:{s:7:\"comment\";s:164:\"Note: group search already respect ACL, so a strict permission at url level is not required. A simple/basic permission like \'access CiviCRM\' could be used. CRM-5417\";}'),
- (210,1,'civicrm/group/add',NULL,'New Group','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:11:\"edit groups\";}i:1;s:3:\"and\";}','s:20:\"CRM_Group_Controller\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:13:\"Manage Groups\";s:3:\"url\";s:22:\"/civicrm/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (211,1,'civicrm/group/edit',NULL,'Edit Group','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:11:\"edit groups\";}i:1;s:3:\"and\";}','s:19:\"CRM_Group_Form_Edit\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:13:\"Manage Groups\";s:3:\"url\";s:22:\"/civicrm/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (212,1,'civicrm/ajax/grouplist',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:19:\"CRM_Group_Page_AJAX\";i:1;s:12:\"getGroupList\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (213,1,'civicrm/profile',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:23:\"CRM_Profile_Page_Router\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,0,1,0,0,'a:0:{}'),
- (214,1,'civicrm/profile/create',NULL,'CiviCRM Profile Create','s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:23:\"CRM_Profile_Page_Router\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,0,1,0,0,'a:0:{}'),
- (215,1,'civicrm/profile/view',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:21:\"CRM_Profile_Page_View\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,1,1,0,0,'a:0:{}'),
- (216,1,'civicrm/custom',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:32:\"CRM_Custom_Form_CustomDataByType\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (217,1,'civicrm/upgrade',NULL,'Upgrade CiviCRM','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:24:\"CRM_Upgrade_Page_Upgrade\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (218,1,'civicrm/export',NULL,'Download Errors','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Export_BAO_Export\";i:1;s:6:\"invoke\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (219,1,'civicrm/export/contact',NULL,'Export Contacts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Export_BAO_Export\";i:1;s:6:\"invoke\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Download Errors\";s:3:\"url\";s:23:\"/civicrm/export?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,0,1,0,0,'a:0:{}'),
- (220,1,'civicrm/export/standalone',NULL,'Export','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:32:\"CRM_Export_Controller_Standalone\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Download Errors\";s:3:\"url\";s:23:\"/civicrm/export?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (221,1,'civicrm/admin/options/acl_role',NULL,'ACL Roles','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
- (222,1,'civicrm/acl',NULL,'Manage ACLs','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:16:\"CRM_ACL_Page_ACL\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (223,1,'civicrm/acl/edit',NULL,'Manage ACLs','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:16:\"CRM_ACL_Form_ACL\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:11:\"Manage ACLs\";s:3:\"url\";s:20:\"/civicrm/acl?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (224,1,'civicrm/acl/delete',NULL,'Manage ACLs','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:16:\"CRM_ACL_Form_ACL\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:11:\"Manage ACLs\";s:3:\"url\";s:20:\"/civicrm/acl?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (225,1,'civicrm/acl/entityrole',NULL,'Assign Users to ACL Roles','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:23:\"CRM_ACL_Page_EntityRole\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:11:\"Manage ACLs\";s:3:\"url\";s:20:\"/civicrm/acl?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (226,1,'civicrm/acl/entityrole/edit',NULL,'Assign Users to ACL Roles','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:23:\"CRM_ACL_Form_EntityRole\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:11:\"Manage ACLs\";s:3:\"url\";s:20:\"/civicrm/acl?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Assign Users to ACL Roles\";s:3:\"url\";s:31:\"/civicrm/acl/entityrole?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (227,1,'civicrm/file',NULL,'Browse Uploaded files','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access uploaded files\";}i:1;s:3:\"and\";}','s:18:\"CRM_Core_Page_File\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (228,1,'civicrm/file/delete',NULL,'Delete File','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:17:\"CRM_Core_BAO_File\";i:1;s:16:\"deleteAttachment\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:21:\"Browse Uploaded files\";s:3:\"url\";s:21:\"/civicrm/file?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (229,1,'civicrm/friend',NULL,'Tell a Friend','s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:15:\"CRM_Friend_Form\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,1,1,0,0,'a:0:{}'),
- (230,1,'civicrm/logout',NULL,'Log out','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:16:\"CRM_Utils_System\";i:1;s:6:\"logout\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,9999,1,1,0,'a:0:{}'),
- (231,1,'civicrm/i18n',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:17:\"translate CiviCRM\";}i:1;s:3:\"and\";}','s:18:\"CRM_Core_I18n_Form\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (232,1,'civicrm/ajax/attachment',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"access AJAX API\";}i:1;s:2:\"or\";}','a:2:{i:0;s:29:\"CRM_Core_Page_AJAX_Attachment\";i:1;s:10:\"attachFile\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (233,1,'civicrm/api',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Core_Page_Redirect\";','s:16:\"url=civicrm/api3\";','a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (234,1,'civicrm/api3',NULL,'CiviCRM API v3','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Admin_Page_APIExplorer\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (235,1,'civicrm/ajax/apidoc',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:26:\"CRM_Admin_Page_APIExplorer\";i:1;s:6:\"getDoc\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (236,1,'civicrm/ajax/rest',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"access AJAX API\";}i:1;s:2:\"or\";}','a:2:{i:0;s:14:\"CRM_Utils_REST\";i:1;s:4:\"ajax\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (237,1,'civicrm/api/json',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:14:\"CRM_Utils_REST\";i:1;s:8:\"ajaxJson\";}','s:16:\"url=civicrm/api3\";','a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (238,1,'civicrm/inline',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:14:\"CRM_Utils_REST\";i:1;s:12:\"loadTemplate\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (239,1,'civicrm/ajax/chart',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:38:\"CRM_Contribute_Form_ContributionCharts\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (240,1,'civicrm/asset/builder',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"*always allow*\";}i:1;s:3:\"and\";}','a:2:{i:0;s:23:\"\\Civi\\Core\\AssetBuilder\";i:1;s:7:\"pageRun\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,1,1,0,0,'a:0:{}'),
- (241,1,'civicrm/contribute/ajax/tableview',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Contribute_Page_DashBoard\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,0,1,0,1,1,0,0,'a:0:{}'),
- (242,1,'civicrm/payment/ipn',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','a:2:{i:0;s:16:\"CRM_Core_Payment\";i:1;s:9:\"handleIPN\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:11:\"New Payment\";s:3:\"url\";s:39:\"/civicrm/payment?reset=1&action=add\";}}',NULL,NULL,2,1,1,1,0,1,1,0,0,'a:0:{}'),
- (243,1,'civicrm/batch',NULL,'Batch Data Entry','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:20:\"CRM_Batch_Page_Batch\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (244,1,'civicrm/batch/add',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:20:\"CRM_Batch_Form_Batch\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:16:\"Batch Data Entry\";s:3:\"url\";s:22:\"/civicrm/batch?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (245,1,'civicrm/batch/entry',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:20:\"CRM_Batch_Form_Entry\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:16:\"Batch Data Entry\";s:3:\"url\";s:22:\"/civicrm/batch?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (246,1,'civicrm/ajax/batch',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','a:2:{i:0;s:19:\"CRM_Batch_Page_AJAX\";i:1;s:9:\"batchSave\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (247,1,'civicrm/ajax/batchlist',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:19:\"CRM_Batch_Page_AJAX\";i:1;s:12:\"getBatchList\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (248,1,'civicrm/ajax/inline',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:18:\"CRM_Core_Page_AJAX\";i:1;s:3:\"run\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (249,1,'civicrm/dev/qunit',NULL,'QUnit','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:19:\"CRM_Core_Page_QUnit\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (250,1,'civicrm/dev/fake-error',NULL,'Fake Error','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"*always allow*\";}i:1;s:3:\"and\";}','s:23:\"CRM_Core_Page_FakeError\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,1,1,0,0,'a:0:{}'),
- (251,1,'civicrm/profile-editor/schema',NULL,'ProfileEditor','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:25:\"CRM_UF_Page_ProfileEditor\";i:1;s:13:\"getSchemaJSON\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (252,1,'civicrm/a',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:23:\"\\Civi\\Angular\\Page\\Main\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (253,1,'civicrm/ajax/angular-modules',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"*always allow*\";}i:1;s:3:\"and\";}','s:26:\"\\Civi\\Angular\\Page\\Modules\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (254,1,'civicrm/ajax/recurringentity/update-mode',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:34:\"CRM_Core_Page_AJAX_RecurringEntity\";i:1;s:10:\"updateMode\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (255,1,'civicrm/recurringentity/preview',NULL,'Confirm dates','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:36:\"CRM_Core_Page_RecurringEntityPreview\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (256,1,'civicrm/shortcode',NULL,'Insert CiviCRM Content','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:23:\"CRM_Core_Form_ShortCode\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (257,1,'civicrm/task/add-to-group',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:32:\"CRM_Contact_Form_Task_AddToGroup\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (258,1,'civicrm/task/remove-from-group',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:37:\"CRM_Contact_Form_Task_RemoveFromGroup\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (259,1,'civicrm/task/add-to-tag',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:30:\"CRM_Contact_Form_Task_AddToTag\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (260,1,'civicrm/task/remove-from-tag',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:35:\"CRM_Contact_Form_Task_RemoveFromTag\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (261,1,'civicrm/task/send-email',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:27:\"CRM_Contact_Form_Task_Email\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (262,1,'civicrm/task/make-mailing-label',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:27:\"CRM_Contact_Form_Task_Label\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (263,1,'civicrm/task/pick-profile',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:33:\"CRM_Contact_Form_Task_PickProfile\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (264,1,'civicrm/task/print-document',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:25:\"CRM_Contact_Form_Task_PDF\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (265,1,'civicrm/task/unhold-email',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:28:\"CRM_Contact_Form_Task_Unhold\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (266,1,'civicrm/task/alter-contact-preference',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:38:\"CRM_Contact_Form_Task_AlterPreferences\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (267,1,'civicrm/task/delete-contact',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:28:\"CRM_Contact_Form_Task_Delete\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (268,1,'civicrm/task/add-activity',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Activity_Form_Activity\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (269,1,'civicrm/note',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:18:\"CRM_Note_Form_Note\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (270,1,'civicrm/ajax/jqState',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:27:\"CRM_Core_Page_AJAX_Location\";i:1;s:7:\"jqState\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,1,1,0,0,'a:0:{}'),
- (271,1,'civicrm/ajax/jqCounty',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:27:\"CRM_Core_Page_AJAX_Location\";i:1;s:8:\"jqCounty\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,1,1,0,0,'a:0:{}'),
- (272,1,'civicrm/event',NULL,'CiviEvent Dashboard','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:24:\"CRM_Event_Page_DashBoard\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,1,1,0,1,0,800,1,1,0,'a:1:{s:9:\"component\";s:9:\"CiviEvent\";}'),
- (273,1,'civicrm/participant/add','action=add','Register New Participant','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:18:\"CRM_Event_Page_Tab\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:1:{s:9:\"component\";s:9:\"CiviEvent\";}'),
- (274,1,'civicrm/event/info',NULL,'Event Information','s:1:\"1\";','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:24:\"CRM_Event_Page_EventInfo\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,1,1,0,1,1,0,0,'a:0:{}'),
- (275,1,'civicrm/event/register',NULL,'Event Registration','s:1:\"1\";','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:33:\"CRM_Event_Controller_Registration\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,1,1,1,1,1,0,0,'a:0:{}'),
- (276,1,'civicrm/event/confirm',NULL,'Confirm Event Registration','s:1:\"1\";','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:46:\"CRM_Event_Form_Registration_ParticipantConfirm\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,1,1,1,1,1,0,0,'a:0:{}'),
- (277,1,'civicrm/event/ical',NULL,'Current and Upcoming Events','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:15:\"view event info\";}i:1;s:3:\"and\";}','a:2:{i:0;s:19:\"CRM_Event_ICalendar\";i:1;s:3:\"run\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,1,1,0,0,1,0,0,'a:0:{}'),
- (278,1,'civicrm/event/list',NULL,'Current and Upcoming Events','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:15:\"view event info\";}i:1;s:3:\"and\";}','s:19:\"CRM_Event_Page_List\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,1,1,0,0,1,0,0,'a:0:{}'),
- (279,1,'civicrm/event/participant',NULL,'Event Participants List','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:23:\"view event participants\";}i:1;s:3:\"and\";}','s:33:\"CRM_Event_Page_ParticipantListing\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,1,1,0,0,1,0,0,'a:0:{}'),
- (280,1,'civicrm/admin/event',NULL,'Manage Events','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:26:\"CRM_Event_Page_ManageEvent\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,370,1,0,0,'a:2:{s:4:\"desc\";s:136:\"Create and edit event configuration including times, locations, online registration forms, and fees. Links for iCal and RSS syndication.\";s:10:\"adminGroup\";s:9:\"CiviEvent\";}'),
- (281,1,'civicrm/admin/eventTemplate',NULL,'Event Templates','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:28:\"CRM_Admin_Page_EventTemplate\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,375,1,0,0,'a:2:{s:4:\"desc\";s:115:\"Administrators can create Event Templates - which are basically master event records pre-filled with default values\";s:10:\"adminGroup\";s:9:\"CiviEvent\";}'),
- (282,1,'civicrm/admin/options/event_type',NULL,'Event Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,385,1,0,0,'a:2:{s:4:\"desc\";s:143:\"Use Event Types to categorize your events. Event feeds can be filtered by Event Type and participant searches can use Event Type as a criteria.\";s:10:\"adminGroup\";s:9:\"CiviEvent\";}'),
- (283,1,'civicrm/admin/participant_status',NULL,'Participant Status','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:36:\"CRM_Admin_Page_ParticipantStatusType\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,390,1,0,0,'a:2:{s:4:\"desc\";s:154:\"Define statuses for event participants here (e.g. Registered, Attended, Cancelled...). You can then assign statuses and search for participants by status.\";s:10:\"adminGroup\";s:9:\"CiviEvent\";}'),
- (284,1,'civicrm/admin/options/participant_role',NULL,'Participant Role','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,395,1,0,0,'a:2:{s:4:\"desc\";s:138:\"Define participant roles for events here (e.g. Attendee, Host, Speaker...). You can then assign roles and search for participants by role.\";s:10:\"adminGroup\";s:9:\"CiviEvent\";}'),
- (285,1,'civicrm/admin/options/participant_listing',NULL,'Participant Listing Templates','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,398,1,0,0,'a:2:{s:4:\"desc\";s:48:\"Template to control participant listing display.\";s:10:\"adminGroup\";s:9:\"CiviEvent\";}'),
- (286,1,'civicrm/event/search',NULL,'Find Participants','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:27:\"CRM_Event_Controller_Search\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,0,1,0,810,1,1,0,'a:0:{}'),
- (287,1,'civicrm/event/manage',NULL,'Manage Events','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:26:\"CRM_Event_Page_ManageEvent\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,0,1,1,820,1,1,0,'a:0:{}'),
- (288,1,'civicrm/event/badge',NULL,'Print Event Name Badge','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:25:\"CRM_Event_Form_Task_Badge\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,0,1,0,1,1,0,0,'a:0:{}'),
- (289,1,'civicrm/event/manage/settings',NULL,'Event Info and Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:36:\"CRM_Event_Form_ManageEvent_EventInfo\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Manage Events\";s:3:\"url\";s:29:\"/civicrm/event/manage?reset=1\";}}',NULL,NULL,1,1,0,1,1,910,1,0,0,'a:0:{}'),
- (290,1,'civicrm/event/manage/location',NULL,'Event Location','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:35:\"CRM_Event_Form_ManageEvent_Location\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Manage Events\";s:3:\"url\";s:29:\"/civicrm/event/manage?reset=1\";}}',NULL,NULL,1,1,0,1,1,930,1,0,0,'a:0:{}'),
- (291,1,'civicrm/event/manage/fee',NULL,'Event Fees','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:30:\"CRM_Event_Form_ManageEvent_Fee\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Manage Events\";s:3:\"url\";s:29:\"/civicrm/event/manage?reset=1\";}}',NULL,NULL,1,1,0,1,1,920,1,0,0,'a:0:{}'),
- (292,1,'civicrm/event/manage/registration',NULL,'Event Online Registration','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:39:\"CRM_Event_Form_ManageEvent_Registration\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Manage Events\";s:3:\"url\";s:29:\"/civicrm/event/manage?reset=1\";}}',NULL,NULL,1,1,0,1,1,930,1,0,0,'a:0:{}'),
- (293,1,'civicrm/event/manage/friend',NULL,'Tell a Friend','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:21:\"CRM_Friend_Form_Event\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Manage Events\";s:3:\"url\";s:29:\"/civicrm/event/manage?reset=1\";}}',NULL,NULL,1,1,0,1,1,940,1,0,0,'a:0:{}'),
- (294,1,'civicrm/event/manage/reminder',NULL,'Schedule Reminders','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:44:\"CRM_Event_Form_ManageEvent_ScheduleReminders\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Manage Events\";s:3:\"url\";s:29:\"/civicrm/event/manage?reset=1\";}}',NULL,NULL,1,1,0,1,1,950,1,0,0,'a:0:{}'),
- (295,1,'civicrm/event/manage/repeat',NULL,'Repeat Event','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:33:\"CRM_Event_Form_ManageEvent_Repeat\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Manage Events\";s:3:\"url\";s:29:\"/civicrm/event/manage?reset=1\";}}',NULL,NULL,1,1,0,1,1,960,1,0,0,'a:0:{}'),
- (296,1,'civicrm/event/add','action=add','New Event','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:36:\"CRM_Event_Form_ManageEvent_EventInfo\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,0,1,0,830,1,0,0,'a:0:{}'),
- (297,1,'civicrm/event/import',NULL,'Import Participants','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:16:\"access CiviEvent\";i:1;s:23:\"edit event participants\";}i:1;s:3:\"and\";}','s:27:\"CRM_Event_Import_Controller\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,0,1,0,840,1,1,0,'a:0:{}'),
- (298,1,'civicrm/event/price',NULL,'Manage Price Sets','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:18:\"CRM_Price_Page_Set\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,0,1,0,850,1,1,0,'a:0:{}'),
- (299,1,'civicrm/event/selfsvcupdate',NULL,'Self-service Registration Update','s:1:\"1\";','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:28:\"CRM_Event_Form_SelfSvcUpdate\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,1,1,0,880,1,1,0,'a:0:{}'),
- (300,1,'civicrm/event/selfsvctransfer',NULL,'Self-service Registration Transfer','s:1:\"1\";','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:30:\"CRM_Event_Form_SelfSvcTransfer\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,1,1,0,890,1,1,0,'a:0:{}'),
- (301,1,'civicrm/contact/view/participant',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:18:\"CRM_Event_Page_Tab\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,4,1,0,0,'a:0:{}'),
- (302,1,'civicrm/participant/delete',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:19:\"delete in CiviEvent\";}i:1;s:3:\"and\";}','s:33:\"CRM_Event_Form_Participant_Delete\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,4,1,0,0,'a:0:{}'),
- (303,1,'civicrm/ajax/eventFee',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','a:2:{i:0;s:19:\"CRM_Event_Page_AJAX\";i:1;s:8:\"eventFee\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (304,1,'civicrm/ajax/locBlock',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','a:2:{i:0;s:27:\"CRM_Core_Page_AJAX_Location\";i:1;s:11:\"getLocBlock\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (305,1,'civicrm/event/participant/feeselection',NULL,'Change Registration Selections','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:38:\"CRM_Event_Form_ParticipantFeeSelection\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}i:2;a:2:{s:5:\"title\";s:23:\"Event Participants List\";s:3:\"url\";s:34:\"/civicrm/event/participant?reset=1\";}}',NULL,NULL,1,1,0,1,0,1,1,0,0,'a:0:{}'),
- (306,1,'civicrm/event/manage/pcp',NULL,'Personal Campaign Pages','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:18:\"CRM_PCP_Form_Event\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Manage Events\";s:3:\"url\";s:29:\"/civicrm/event/manage?reset=1\";}}',NULL,NULL,1,1,0,1,1,540,1,1,0,'a:0:{}'),
- (307,1,'civicrm/event/pcp',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:16:\"CRM_PCP_Form_PCP\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,1,1,0,1,1,0,0,'a:0:{}'),
- (308,1,'civicrm/event/campaign',NULL,'Setup a Personal Campaign Page - Account Information','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"make online contributions\";}i:1;s:3:\"and\";}','s:22:\"CRM_PCP_Controller_PCP\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,1,1,0,0,1,0,0,'a:0:{}'),
- (309,1,'civicrm/contribute',NULL,'CiviContribute Dashboard','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:29:\"CRM_Contribute_Page_DashBoard\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,2,1,0,1,0,500,1,1,0,'a:1:{s:9:\"component\";s:14:\"CiviContribute\";}'),
- (310,1,'civicrm/contribute/add','action=add','New Contribution','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:23:\"CRM_Contribute_Page_Tab\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,0,1,0,1,1,1,0,'a:1:{s:9:\"component\";s:14:\"CiviContribute\";}'),
- (311,1,'civicrm/contribute/chart',NULL,'Contribution Summary - Chart View','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:38:\"CRM_Contribute_Form_ContributionCharts\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,0,1,0,1,1,0,0,'a:1:{s:9:\"component\";s:14:\"CiviContribute\";}'),
- (312,1,'civicrm/contribute/transact',NULL,'CiviContribute','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"make online contributions\";}i:1;s:3:\"and\";}','s:38:\"CRM_Contribute_Controller_Contribution\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,1,1,1,0,1,0,0,'a:0:{}'),
- (313,1,'civicrm/admin/contribute',NULL,'Manage Contribution Pages','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:36:\"CRM_Contribute_Page_ContributionPage\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,360,1,0,0,'a:2:{s:4:\"desc\";s:242:\"CiviContribute allows you to create and maintain any number of Online Contribution Pages. You can create different pages for different programs or campaigns - and customize text, amounts, types of information collected from contributors, etc.\";s:10:\"adminGroup\";s:14:\"CiviContribute\";}'),
- (314,1,'civicrm/admin/contribute/settings',NULL,'Title and Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:45:\"CRM_Contribute_Form_ContributionPage_Settings\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,400,1,0,0,'a:0:{}'),
- (315,1,'civicrm/admin/contribute/amount',NULL,'Contribution Amounts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:43:\"CRM_Contribute_Form_ContributionPage_Amount\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,410,1,0,0,'a:0:{}'),
- (316,1,'civicrm/admin/contribute/membership',NULL,'Membership Section','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:31:\"CRM_Member_Form_MembershipBlock\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,420,1,0,0,'a:0:{}'),
- (317,1,'civicrm/admin/contribute/custom',NULL,'Include Profiles','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:43:\"CRM_Contribute_Form_ContributionPage_Custom\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,430,1,0,0,'a:0:{}'),
- (318,1,'civicrm/admin/contribute/thankyou',NULL,'Thank-you and Receipting','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:45:\"CRM_Contribute_Form_ContributionPage_ThankYou\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,430,1,0,0,'a:0:{}'),
- (319,1,'civicrm/admin/contribute/friend',NULL,'Tell a Friend','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Friend_Form_Contribute\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,440,1,0,0,'a:0:{}'),
- (320,1,'civicrm/admin/contribute/widget',NULL,'Configure Widget','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:43:\"CRM_Contribute_Form_ContributionPage_Widget\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,460,1,0,0,'a:0:{}'),
- (321,1,'civicrm/admin/contribute/premium',NULL,'Premiums','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:44:\"CRM_Contribute_Form_ContributionPage_Premium\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,470,1,0,0,'a:0:{}'),
- (322,1,'civicrm/admin/contribute/addProductToPage',NULL,'Add Products to This Page','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:47:\"CRM_Contribute_Form_ContributionPage_AddProduct\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,480,1,0,0,'a:0:{}'),
- (323,1,'civicrm/admin/contribute/add','action=add','New Contribution Page','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:42:\"CRM_Contribute_Controller_ContributionPage\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
- (324,1,'civicrm/admin/contribute/managePremiums',NULL,'Manage Premiums','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:34:\"CRM_Contribute_Page_ManagePremiums\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,365,1,0,0,'a:2:{s:4:\"desc\";s:175:\"CiviContribute allows you to configure any number of Premiums which can be offered to contributors as incentives / thank-you gifts. Define the premiums you want to offer here.\";s:10:\"adminGroup\";s:14:\"CiviContribute\";}'),
- (325,1,'civicrm/admin/contribute/managePremiums/edit',NULL,'Manage Premiums','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:34:\"CRM_Contribute_Form_ManagePremiums\";',NULL,'a:4:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}i:3;a:2:{s:5:\"title\";s:15:\"Manage Premiums\";s:3:\"url\";s:48:\"/civicrm/admin/contribute/managePremiums?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
- (326,1,'civicrm/admin/financial/financialType',NULL,'Financial Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:32:\"CRM_Financial_Page_FinancialType\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,580,1,0,0,'a:2:{s:4:\"desc\";s:64:\"Formerly civicrm_contribution_type merged into this table in 4.1\";s:10:\"adminGroup\";s:14:\"CiviContribute\";}'),
- (327,1,'civicrm/admin/financial/financialType/edit',NULL,'Edit Financial Type','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:32:\"CRM_Financial_Form_FinancialType\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:15:\"Financial Types\";s:3:\"url\";s:46:\"/civicrm/admin/financial/financialType?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
- (328,1,'civicrm/payment','action=add','New Payment','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:37:\"CRM_Contribute_Form_AdditionalPayment\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,2,1,0,1,0,1,1,1,0,'a:1:{s:9:\"component\";s:14:\"CiviContribute\";}'),
- (329,1,'civicrm/admin/financial/financialAccount',NULL,'Financial Accounts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:35:\"CRM_Financial_Page_FinancialAccount\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,370,1,0,0,'a:2:{s:4:\"desc\";s:128:\"Financial types are used to categorize contributions for reporting and accounting purposes. These are also referred to as Funds.\";s:10:\"adminGroup\";s:14:\"CiviContribute\";}'),
- (330,1,'civicrm/admin/financial/financialAccount/edit',NULL,'Edit Financial Accounts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:35:\"CRM_Financial_Form_FinancialAccount\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:18:\"Financial Accounts\";s:3:\"url\";s:49:\"/civicrm/admin/financial/financialAccount?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
- (331,1,'civicrm/admin/options/payment_instrument',NULL,'Payment Methods','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,380,1,0,0,'a:2:{s:4:\"desc\";s:224:\"You may choose to record the payment instrument used for each contribution. Common payment methods are installed by default (e.g. Check, Cash, Credit Card...). If your site requires additional payment methods, add them here.\";s:10:\"adminGroup\";s:14:\"CiviContribute\";}'),
- (332,1,'civicrm/admin/options/accept_creditcard',NULL,'Accepted Credit Cards','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,395,1,0,0,'a:2:{s:4:\"desc\";s:94:\"Credit card options that will be offered to contributors using your Online Contribution pages.\";s:10:\"adminGroup\";s:14:\"CiviContribute\";}'),
- (333,1,'civicrm/admin/options/soft_credit_type',NULL,'Soft Credit Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:2:{s:4:\"desc\";s:86:\"Soft Credit Types that will be offered to contributors during soft credit contribution\";s:10:\"adminGroup\";s:14:\"CiviContribute\";}'),
- (334,1,'civicrm/contact/view/contribution',NULL,'Contributions','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:23:\"CRM_Contribute_Page_Tab\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (335,1,'civicrm/contact/view/contributionrecur',NULL,'Recurring Contributions','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:37:\"CRM_Contribute_Page_ContributionRecur\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (336,1,'civicrm/contact/view/contribution/additionalinfo',NULL,'Additional Info','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:34:\"CRM_Contribute_Form_AdditionalInfo\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}i:2;a:2:{s:5:\"title\";s:13:\"Contributions\";s:3:\"url\";s:42:\"/civicrm/contact/view/contribution?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (337,1,'civicrm/contribute/search',NULL,'Find Contributions','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:32:\"CRM_Contribute_Controller_Search\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,0,1,0,510,1,1,0,'a:0:{}'),
- (338,1,'civicrm/contribute/searchBatch',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:37:\"CRM_Contribute_Controller_SearchBatch\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,0,1,0,588,1,1,0,'a:0:{}'),
- (339,1,'civicrm/admin/contribute/manage',NULL,'Manage Contribution Pages','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:36:\"CRM_Contribute_Page_ContributionPage\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,530,1,1,0,'a:0:{}'),
- (340,1,'civicrm/contribute/additionalinfo',NULL,'AdditionalInfo Form','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:34:\"CRM_Contribute_Form_AdditionalInfo\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,0,1,0,0,1,0,0,'a:0:{}'),
- (341,1,'civicrm/ajax/permlocation',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"make online contributions\";}i:1;s:3:\"and\";}','a:2:{i:0;s:27:\"CRM_Core_Page_AJAX_Location\";i:1;s:23:\"getPermissionedLocation\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (342,1,'civicrm/contribute/unsubscribe',NULL,'Cancel Subscription','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"make online contributions\";}i:1;s:3:\"and\";}','s:38:\"CRM_Contribute_Form_CancelSubscription\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,0,1,0,1,1,0,0,'a:0:{}'),
- (343,1,'civicrm/contribute/onbehalf',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"make online contributions\";}i:1;s:3:\"and\";}','s:43:\"CRM_Contribute_Form_Contribution_OnBehalfOf\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,0,1,0,1,1,0,0,'a:0:{}'),
- (344,1,'civicrm/contribute/updatebilling',NULL,'Update Billing Details','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"make online contributions\";}i:1;s:3:\"and\";}','s:33:\"CRM_Contribute_Form_UpdateBilling\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,0,1,0,1,1,0,0,'a:0:{}'),
- (345,1,'civicrm/contribute/updaterecur',NULL,'Update Subscription','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"make online contributions\";}i:1;s:3:\"and\";}','s:38:\"CRM_Contribute_Form_UpdateSubscription\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,0,1,0,1,1,0,0,'a:0:{}'),
- (346,1,'civicrm/contribute/subscriptionstatus',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"make online contributions\";}i:1;s:3:\"and\";}','s:38:\"CRM_Contribute_Page_SubscriptionStatus\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,0,1,0,1,1,0,0,'a:0:{}'),
- (347,1,'civicrm/admin/financial/financialType/accounts',NULL,'Financial Type Accounts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:39:\"CRM_Financial_Page_FinancialTypeAccount\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:15:\"Financial Types\";s:3:\"url\";s:46:\"/civicrm/admin/financial/financialType?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,581,1,0,0,'a:0:{}'),
- (348,1,'civicrm/financial/batch',NULL,'Accounting Batch','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:19:\"create manual batch\";}i:1;s:3:\"and\";}','s:33:\"CRM_Financial_Page_FinancialBatch\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,585,1,0,0,'a:0:{}'),
- (349,1,'civicrm/financial/financialbatches',NULL,'Accounting Batches','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:24:\"CRM_Financial_Page_Batch\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,586,1,0,0,'a:0:{}'),
- (350,1,'civicrm/batchtransaction',NULL,'Accounting Batch','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:35:\"CRM_Financial_Page_BatchTransaction\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,600,1,0,0,'a:0:{}'),
- (351,1,'civicrm/financial/batch/export',NULL,'Accounting Batch Export','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:19:\"create manual batch\";}i:1;s:3:\"and\";}','s:25:\"CRM_Financial_Form_Export\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:16:\"Accounting Batch\";s:3:\"url\";s:32:\"/civicrm/financial/batch?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,610,1,0,0,'a:0:{}'),
- (352,1,'civicrm/payment/view','action=view','View Payment','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:31:\"CRM_Contribute_Page_PaymentInfo\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:11:\"New Payment\";s:3:\"url\";s:39:\"/civicrm/payment?reset=1&action=add\";}}',NULL,NULL,2,1,0,1,0,1,1,1,0,'a:1:{s:9:\"component\";s:14:\"CiviContribute\";}'),
- (353,1,'civicrm/admin/setting/preferences/contribute',NULL,'CiviContribute Component Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:21:\"access CiviContribute\";i:1;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:37:\"CRM_Admin_Form_Preferences_Contribute\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:2:{s:4:\"desc\";s:42:\"Configure global CiviContribute behaviors.\";s:10:\"adminGroup\";s:14:\"CiviContribute\";}'),
- (354,1,'civicrm/contribute/invoice',NULL,'PDF Invoice','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:20:\"checkDownloadInvoice\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','a:2:{i:0;s:32:\"CRM_Contribute_Form_Task_Invoice\";i:1;s:11:\"getPrintPDF\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,0,1,0,620,1,1,0,'a:1:{s:9:\"component\";s:14:\"CiviContribute\";}'),
- (355,1,'civicrm/contribute/invoice/email',NULL,'Email Invoice','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:20:\"checkDownloadInvoice\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:32:\"CRM_Contribute_Form_Task_Invoice\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}i:2;a:2:{s:5:\"title\";s:11:\"PDF Invoice\";s:3:\"url\";s:35:\"/civicrm/contribute/invoice?reset=1\";}}',NULL,NULL,2,1,0,1,0,630,1,1,0,'a:1:{s:9:\"component\";s:14:\"CiviContribute\";}'),
- (356,1,'civicrm/ajax/softcontributionlist',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:24:\"CRM_Contribute_Page_AJAX\";i:1;s:23:\"getSoftContributionRows\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (357,1,'civicrm/contribute/contributionrecur-payments',NULL,'Recurring Contribution\'s Payments','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:45:\"CRM_Contribute_Page_ContributionRecurPayments\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,0,1,0,1,1,0,0,'a:0:{}'),
- (358,1,'civicrm/membership/recurring-contributions',NULL,'Membership Recurring Contributions','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:38:\"CRM_Member_Page_RecurringContributions\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (359,1,'civicrm/contribute/widget',NULL,'CiviContribute','s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:26:\"CRM_Contribute_Page_Widget\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,1,1,0,0,1,0,0,'a:0:{}'),
- (360,1,'civicrm/contribute/task',NULL,'Contribution Task','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:30:\"CRM_Contribute_Controller_Task\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,0,1,0,1,1,0,0,'a:0:{}'),
- (361,1,'civicrm/admin/contribute/pcp',NULL,'Personal Campaign Pages','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:23:\"CRM_PCP_Form_Contribute\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,450,1,0,0,'a:0:{}'),
- (362,1,'civicrm/contribute/campaign',NULL,'Setup a Personal Campaign Page - Account Information','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"make online contributions\";}i:1;s:3:\"and\";}','s:22:\"CRM_PCP_Controller_PCP\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,1,1,0,0,1,0,0,'a:0:{}'),
- (363,1,'civicrm/member',NULL,'CiviMember Dashboard','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:17:\"access CiviMember\";}i:1;s:3:\"and\";}','s:25:\"CRM_Member_Page_DashBoard\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,3,1,0,1,0,700,1,1,0,'a:1:{s:9:\"component\";s:10:\"CiviMember\";}'),
- (364,1,'civicrm/member/add','action=add','New Membership','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:17:\"access CiviMember\";}i:1;s:3:\"and\";}','s:19:\"CRM_Member_Page_Tab\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:20:\"CiviMember Dashboard\";s:3:\"url\";s:23:\"/civicrm/member?reset=1\";}}',NULL,NULL,3,1,0,1,0,1,1,0,0,'a:1:{s:9:\"component\";s:10:\"CiviMember\";}'),
- (365,1,'civicrm/admin/member/membershipType',NULL,'Membership Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:30:\"CRM_Member_Page_MembershipType\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,370,1,0,0,'a:2:{s:4:\"desc\";s:174:\"Define the types of memberships you want to offer. For each type, you can specify a \'name\' (Gold Member, Honor Society Member...), a description, duration, and a minimum fee.\";s:10:\"adminGroup\";s:10:\"CiviMember\";}'),
- (366,1,'civicrm/admin/member/membershipStatus',NULL,'Membership Status Rules','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:32:\"CRM_Member_Page_MembershipStatus\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,380,1,0,0,'a:2:{s:4:\"desc\";s:187:\"Status \'rules\' define the current status for a membership based on that membership\'s start and end dates. You can adjust the default status options and rules as needed to meet your needs.\";s:10:\"adminGroup\";s:10:\"CiviMember\";}'),
- (367,1,'civicrm/contact/view/membership','force=1,cid=%%cid%%','Memberships','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:19:\"CRM_Member_Page_Tab\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,2,1,0,0,'a:0:{}'),
- (368,1,'civicrm/membership/view',NULL,'Memberships','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:17:\"access CiviMember\";}i:1;s:3:\"and\";}','s:30:\"CRM_Member_Form_MembershipView\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,390,1,0,0,'a:0:{}'),
- (369,1,'civicrm/member/search',NULL,'Find Memberships','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:17:\"access CiviMember\";}i:1;s:3:\"and\";}','s:28:\"CRM_Member_Controller_Search\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:20:\"CiviMember Dashboard\";s:3:\"url\";s:23:\"/civicrm/member?reset=1\";}}',NULL,NULL,3,1,0,1,0,710,1,1,0,'a:0:{}'),
- (370,1,'civicrm/member/import',NULL,'Import Memberships','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:17:\"access CiviMember\";i:1;s:16:\"edit memberships\";}i:1;s:3:\"and\";}','s:28:\"CRM_Member_Import_Controller\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:20:\"CiviMember Dashboard\";s:3:\"url\";s:23:\"/civicrm/member?reset=1\";}}',NULL,NULL,3,1,0,1,0,720,1,1,0,'a:0:{}'),
- (371,1,'civicrm/ajax/memType',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:17:\"access CiviMember\";}i:1;s:3:\"and\";}','a:2:{i:0;s:20:\"CRM_Member_Page_AJAX\";i:1;s:21:\"getMemberTypeDefaults\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (372,1,'civicrm/admin/member/membershipType/add',NULL,'Membership Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:17:\"access CiviMember\";i:1;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:30:\"CRM_Member_Form_MembershipType\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:16:\"Membership Types\";s:3:\"url\";s:44:\"/civicrm/admin/member/membershipType?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
- (373,1,'civicrm/mailing',NULL,'CiviMail','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:15:\"access CiviMail\";i:1;s:15:\"create mailings\";i:2;s:8:\"send SMS\";}i:1;s:2:\"or\";}','s:23:\"CRM_Mailing_Page_Browse\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,4,1,0,1,0,600,1,1,0,'a:1:{s:9:\"component\";s:8:\"CiviMail\";}'),
- (374,1,'civicrm/admin/mail',NULL,'Mailer Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"access CiviMail\";}i:1;s:3:\"and\";}','s:27:\"CRM_Admin_Form_Setting_Mail\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,400,1,0,0,'a:2:{s:4:\"desc\";s:61:\"Configure spool period, throttling and other mailer settings.\";s:10:\"adminGroup\";s:8:\"CiviMail\";}'),
- (375,1,'civicrm/admin/component',NULL,'Headers, Footers, and Automated Messages','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"access CiviMail\";}i:1;s:3:\"and\";}','s:26:\"CRM_Mailing_Page_Component\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,410,1,0,0,'a:2:{s:4:\"desc\";s:143:\"Configure the header and footer used for mailings. Customize the content of automated Subscribe, Unsubscribe, Resubscribe and Opt-out messages.\";s:10:\"adminGroup\";s:8:\"CiviMail\";}'),
- (376,1,'civicrm/admin/component/edit',NULL,'Headers, Footers, and Automated Messages','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"access CiviMail\";}i:1;s:3:\"and\";}','s:26:\"CRM_Mailing_Form_Component\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:40:\"Headers, Footers, and Automated Messages\";s:3:\"url\";s:32:\"/civicrm/admin/component?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,411,1,0,0,'a:2:{s:4:\"desc\";s:143:\"Configure the header and footer used for mailings. Customize the content of automated Subscribe, Unsubscribe, Resubscribe and Opt-out messages.\";s:10:\"adminGroup\";s:8:\"CiviMail\";}'),
- (377,1,'civicrm/admin/options/from_email_address/civimail',NULL,'From Email Addresses','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:4:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}i:3;a:2:{s:5:\"title\";s:20:\"From Email Addresses\";s:3:\"url\";s:49:\"/civicrm/admin/options/from_email_address?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,415,1,0,0,'a:2:{s:4:\"desc\";s:74:\"List of Email Addresses which can be used when sending emails to contacts.\";s:10:\"adminGroup\";s:8:\"CiviMail\";}'),
- (378,1,'civicrm/admin/mailSettings',NULL,'Mail Accounts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"access CiviMail\";}i:1;s:3:\"and\";}','s:27:\"CRM_Admin_Page_MailSettings\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,420,1,0,0,'a:2:{s:4:\"desc\";s:20:\"List email accounts.\";s:10:\"adminGroup\";s:8:\"CiviMail\";}'),
- (379,1,'civicrm/admin/mailSettings/edit',NULL,'Mail Accounts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"access CiviMail\";}i:1;s:3:\"and\";}','s:27:\"CRM_Admin_Form_MailSettings\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Mail Accounts\";s:3:\"url\";s:35:\"/civicrm/admin/mailSettings?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,420,1,0,0,'a:0:{}'),
- (380,1,'civicrm/mailing/send',NULL,'New Mailing','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:15:\"access CiviMail\";i:1;s:15:\"create mailings\";i:2;s:17:\"schedule mailings\";}i:1;s:2:\"or\";}','s:27:\"CRM_Mailing_Controller_Send\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,1,0,1,0,610,1,1,0,'a:0:{}'),
- (381,1,'civicrm/mailing/browse/scheduled','scheduled=true','Find Mailings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:5:{i:0;s:15:\"access CiviMail\";i:1;s:16:\"approve mailings\";i:2;s:15:\"create mailings\";i:3;s:17:\"schedule mailings\";i:4;s:8:\"send SMS\";}i:1;s:2:\"or\";}','s:23:\"CRM_Mailing_Page_Browse\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,1,0,1,0,620,1,1,0,'a:0:{}'),
- (382,1,'civicrm/mailing/browse/unscheduled','scheduled=false','Find Mailings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:15:\"access CiviMail\";i:1;s:15:\"create mailings\";i:2;s:17:\"schedule mailings\";}i:1;s:2:\"or\";}','s:23:\"CRM_Mailing_Page_Browse\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,1,0,1,0,620,1,1,0,'a:0:{}'),
- (383,1,'civicrm/mailing/browse/archived',NULL,'Find Mailings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:15:\"access CiviMail\";i:1;s:15:\"create mailings\";}i:1;s:2:\"or\";}','s:23:\"CRM_Mailing_Page_Browse\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,1,0,1,0,625,1,1,0,'a:0:{}'),
- (384,1,'civicrm/mailing/component',NULL,'Headers, Footers, and Automated Messages','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Mailing_Page_Component\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,1,0,1,0,630,1,1,0,'a:0:{}'),
- (385,1,'civicrm/mailing/unsubscribe',NULL,'Unsubscribe','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:43:\"access CiviMail subscribe/unsubscribe pages\";}i:1;s:3:\"and\";}','s:28:\"CRM_Mailing_Form_Unsubscribe\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,1,1,1,0,640,1,0,0,'a:0:{}'),
- (386,1,'civicrm/mailing/resubscribe',NULL,'Resubscribe','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:43:\"access CiviMail subscribe/unsubscribe pages\";}i:1;s:3:\"and\";}','s:28:\"CRM_Mailing_Page_Resubscribe\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,1,1,1,0,645,1,0,0,'a:0:{}'),
- (387,1,'civicrm/mailing/optout',NULL,'Opt-out','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:43:\"access CiviMail subscribe/unsubscribe pages\";}i:1;s:3:\"and\";}','s:23:\"CRM_Mailing_Form_Optout\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,1,1,1,0,650,1,0,0,'a:0:{}'),
- (388,1,'civicrm/mailing/confirm',NULL,'Confirm','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:43:\"access CiviMail subscribe/unsubscribe pages\";}i:1;s:3:\"and\";}','s:24:\"CRM_Mailing_Page_Confirm\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,1,1,1,0,660,1,0,0,'a:0:{}'),
- (389,1,'civicrm/mailing/subscribe',NULL,'Subscribe','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:43:\"access CiviMail subscribe/unsubscribe pages\";}i:1;s:3:\"and\";}','s:26:\"CRM_Mailing_Form_Subscribe\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,1,1,1,0,660,1,0,0,'a:0:{}'),
- (390,1,'civicrm/mailing/report','mid=%%mid%%','Mailing Report','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:15:\"access CiviMail\";i:1;s:15:\"create mailings\";}i:1;s:2:\"or\";}','s:23:\"CRM_Mailing_Page_Report\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,1,0,1,0,680,1,0,0,'a:0:{}'),
- (391,1,'civicrm/mailing/forward',NULL,'Forward Mailing','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:43:\"access CiviMail subscribe/unsubscribe pages\";}i:1;s:3:\"and\";}','s:31:\"CRM_Mailing_Form_ForwardMailing\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,1,1,1,0,685,1,0,0,'a:0:{}'),
- (392,1,'civicrm/mailing/report/event',NULL,'Mailing Event','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:15:\"access CiviMail\";}i:1;s:3:\"and\";}','s:22:\"CRM_Mailing_Page_Event\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}i:2;a:2:{s:5:\"title\";s:14:\"Mailing Report\";s:3:\"url\";s:47:\"/civicrm/mailing/report?reset=1&mid=%%mid%%\";}}',NULL,NULL,4,1,0,1,0,695,1,0,0,'a:0:{}'),
- (393,1,'civicrm/ajax/template',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Mailing_Page_AJAX\";i:1;s:8:\"template\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (394,1,'civicrm/mailing/view',NULL,'View Mailing','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:28:\"view public CiviMail content\";i:1;s:15:\"access CiviMail\";i:2;s:16:\"approve mailings\";}i:1;s:2:\"or\";}','s:21:\"CRM_Mailing_Page_View\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,1,1,1,0,800,1,0,0,'a:0:{}'),
- (395,1,'civicrm/mailing/approve',NULL,'Approve Mailing','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:15:\"access CiviMail\";i:1;s:16:\"approve mailings\";}i:1;s:2:\"or\";}','s:24:\"CRM_Mailing_Form_Approve\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,1,0,1,0,850,1,0,0,'a:0:{}'),
- (396,1,'civicrm/contact/view/mailing',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:20:\"CRM_Mailing_Page_Tab\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (397,1,'civicrm/ajax/contactmailing',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Mailing_Page_AJAX\";i:1;s:18:\"getContactMailings\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (398,1,'civicrm/ajax/setupMailAccount',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"access CiviMail\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Mailing_Page_AJAX\";i:1;s:5:\"setup\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (399,1,'civicrm/mailing/url',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"*always allow*\";}i:1;s:3:\"and\";}','s:20:\"CRM_Mailing_Page_Url\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,1,1,1,0,1,1,0,0,'a:0:{}'),
- (400,1,'civicrm/mailing/open',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"*always allow*\";}i:1;s:3:\"and\";}','s:21:\"CRM_Mailing_Page_Open\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,1,1,1,0,1,1,0,0,'a:0:{}'),
- (401,1,'civicrm/pledge',NULL,'CiviPledge Dashboard','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:17:\"access CiviPledge\";}i:1;s:3:\"and\";}','s:25:\"CRM_Pledge_Page_DashBoard\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,6,1,0,1,0,550,1,1,0,'a:1:{s:9:\"component\";s:10:\"CiviPledge\";}'),
- (402,1,'civicrm/pledge/search',NULL,'Find Pledges','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:17:\"access CiviPledge\";}i:1;s:3:\"and\";}','s:28:\"CRM_Pledge_Controller_Search\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:20:\"CiviPledge Dashboard\";s:3:\"url\";s:23:\"/civicrm/pledge?reset=1\";}}',NULL,NULL,6,1,0,1,0,560,1,1,0,'a:0:{}'),
- (403,1,'civicrm/contact/view/pledge','force=1,cid=%%cid%%','Pledges','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:17:\"access CiviPledge\";}i:1;s:3:\"and\";}','s:19:\"CRM_Pledge_Page_Tab\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,570,1,0,0,'a:0:{}'),
- (404,1,'civicrm/pledge/add','action=add','New Pledge','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:17:\"access CiviPledge\";}i:1;s:3:\"and\";}','s:19:\"CRM_Pledge_Page_Tab\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:20:\"CiviPledge Dashboard\";s:3:\"url\";s:23:\"/civicrm/pledge?reset=1\";}}',NULL,NULL,6,1,0,1,0,1,1,1,0,'a:1:{s:9:\"component\";s:10:\"CiviPledge\";}'),
- (405,1,'civicrm/pledge/payment',NULL,'Pledge Payments','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:17:\"access CiviPledge\";}i:1;s:3:\"and\";}','s:23:\"CRM_Pledge_Page_Payment\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:20:\"CiviPledge Dashboard\";s:3:\"url\";s:23:\"/civicrm/pledge?reset=1\";}}',NULL,NULL,6,1,0,1,0,580,1,0,0,'a:0:{}'),
- (406,1,'civicrm/ajax/pledgeAmount',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:17:\"access CiviPledge\";i:1;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:20:\"CRM_Pledge_Page_AJAX\";i:1;s:17:\"getPledgeDefaults\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (407,1,'civicrm/case',NULL,'CiviCase Dashboard','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:23:\"CRM_Case_Page_DashBoard\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,7,1,0,1,0,900,1,1,0,'a:1:{s:9:\"component\";s:8:\"CiviCase\";}'),
- (408,1,'civicrm/case/add',NULL,'Open Case','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:18:\"CRM_Case_Form_Case\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}}',NULL,NULL,7,1,0,1,0,1,1,1,0,'a:1:{s:9:\"component\";s:8:\"CiviCase\";}'),
- (409,1,'civicrm/case/search',NULL,'Find Cases','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Case_Controller_Search\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}}',NULL,NULL,7,1,0,1,0,910,1,1,0,'a:0:{}'),
- (410,1,'civicrm/case/activity',NULL,'Case Activity','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Case_Form_Activity\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}}',NULL,NULL,7,1,0,1,0,1,1,0,0,'a:0:{}'),
- (411,1,'civicrm/case/report',NULL,'Case Activity Audit','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:31:\"access all cases and activities\";}i:1;s:3:\"and\";}','s:20:\"CRM_Case_Form_Report\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}}',NULL,NULL,7,1,0,1,0,1,1,0,0,'a:0:{}'),
- (412,1,'civicrm/case/cd/edit',NULL,'Case Custom Set','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:24:\"CRM_Case_Form_CustomData\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}}',NULL,NULL,7,1,0,1,0,1,1,0,0,'a:0:{}'),
- (413,1,'civicrm/contact/view/case',NULL,'Case','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:17:\"CRM_Case_Page_Tab\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (414,1,'civicrm/case/activity/view',NULL,'Activity View','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Case_Form_ActivityView\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Case Activity\";s:3:\"url\";s:30:\"/civicrm/case/activity?reset=1\";}}',NULL,NULL,7,1,0,1,0,1,1,0,0,'a:0:{}'),
- (415,1,'civicrm/contact/view/case/editClient',NULL,'Assign to Another Client','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:24:\"CRM_Case_Form_EditClient\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}i:2;a:2:{s:5:\"title\";s:4:\"Case\";s:3:\"url\";s:34:\"/civicrm/contact/view/case?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (416,1,'civicrm/case/addToCase',NULL,'File on Case','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:28:\"CRM_Case_Form_ActivityToCase\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}}',NULL,NULL,7,1,0,1,0,1,1,0,0,'a:0:{}'),
- (417,1,'civicrm/case/details',NULL,'Case Details','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:25:\"CRM_Case_Page_CaseDetails\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}}',NULL,NULL,7,1,0,1,0,1,1,0,0,'a:0:{}'),
- (418,1,'civicrm/admin/setting/case',NULL,'CiviCase Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:27:\"CRM_Admin_Form_Setting_Case\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,380,1,0,0,'a:1:{s:10:\"adminGroup\";s:8:\"CiviCase\";}'),
- (419,1,'civicrm/admin/options/case_type',NULL,'Case Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:19:\"administer CiviCase\";}i:1;s:3:\"and\";}','s:22:\"CRM_Core_Page_Redirect\";','s:24:\"url=civicrm/a/#/caseType\";','a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,390,1,0,0,'a:2:{s:4:\"desc\";s:137:\"List of types which can be assigned to Cases. (Enable the Cases tab from System Settings - Enable Components if you want to track cases.)\";s:10:\"adminGroup\";s:8:\"CiviCase\";}'),
- (420,1,'civicrm/admin/options/redaction_rule',NULL,'Redaction Rules','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:19:\"administer CiviCase\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,400,1,0,0,'a:2:{s:4:\"desc\";s:223:\"List of rules which can be applied to user input strings so that the redacted output can be recognized as repeated instances of the same string or can be identified as a \"semantic type of the data element\" within case data.\";s:10:\"adminGroup\";s:8:\"CiviCase\";}'),
- (421,1,'civicrm/admin/options/case_status',NULL,'Case Statuses','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:19:\"administer CiviCase\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,400,1,0,0,'a:2:{s:4:\"desc\";s:48:\"List of statuses that can be assigned to a case.\";s:10:\"adminGroup\";s:8:\"CiviCase\";}'),
- (422,1,'civicrm/admin/options/encounter_medium',NULL,'Encounter Mediums','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:19:\"administer CiviCase\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,400,1,0,0,'a:2:{s:4:\"desc\";s:26:\"List of encounter mediums.\";s:10:\"adminGroup\";s:8:\"CiviCase\";}'),
- (423,1,'civicrm/case/report/print',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:31:\"access all cases and activities\";}i:1;s:3:\"and\";}','a:2:{i:0;s:28:\"CRM_Case_XMLProcessor_Report\";i:1;s:15:\"printCaseReport\";}',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}i:2;a:2:{s:5:\"title\";s:19:\"Case Activity Audit\";s:3:\"url\";s:28:\"/civicrm/case/report?reset=1\";}}',NULL,NULL,7,1,0,1,0,1,1,0,0,'a:0:{}'),
- (424,1,'civicrm/case/ajax/addclient',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:18:\"CRM_Case_Page_AJAX\";i:1;s:9:\"addClient\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}}',NULL,NULL,7,1,0,1,0,1,1,0,0,'a:0:{}'),
- (425,1,'civicrm/case/ajax/processtags',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:18:\"CRM_Case_Page_AJAX\";i:1;s:15:\"processCaseTags\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}}',NULL,NULL,7,1,0,1,0,1,1,3,0,'a:0:{}'),
- (426,1,'civicrm/case/ajax/details',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:18:\"CRM_Case_Page_AJAX\";i:1;s:11:\"CaseDetails\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}}',NULL,NULL,7,1,0,1,0,1,1,0,0,'a:0:{}'),
- (427,1,'civicrm/ajax/delcaserole',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:18:\"CRM_Case_Page_AJAX\";i:1;s:15:\"deleteCaseRoles\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (428,1,'civicrm/ajax/get-cases',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:18:\"CRM_Case_Page_AJAX\";i:1;s:8:\"getCases\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (429,1,'civicrm/case/email/add','action=add,task=email','Email','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:24:\"CRM_Case_Form_Task_Email\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}}',NULL,NULL,7,1,0,1,0,1,1,0,0,'a:0:{}'),
- (430,1,'civicrm/contact/view/case/deleteClient',NULL,'Remove Client','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:26:\"CRM_Case_Form_DeleteClient\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}i:2;a:2:{s:5:\"title\";s:4:\"Case\";s:3:\"url\";s:34:\"/civicrm/contact/view/case?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (431,1,'civicrm/report',NULL,'CiviReport','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:17:\"access CiviReport\";}i:1;s:3:\"and\";}','s:22:\"CRM_Report_Page_Report\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,8,1,0,1,0,1200,1,1,0,'a:1:{s:9:\"component\";s:10:\"CiviReport\";}'),
- (432,1,'civicrm/report/list',NULL,'CiviCRM Reports','s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:17:\"access CiviReport\";}i:1;s:3:\"and\";}','s:28:\"CRM_Report_Page_InstanceList\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"CiviReport\";s:3:\"url\";s:23:\"/civicrm/report?reset=1\";}}',NULL,NULL,8,1,0,1,0,1,1,0,0,'a:0:{}'),
- (433,1,'civicrm/report/template/list',NULL,'Create New Report from Template','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:18:\"administer Reports\";}i:1;s:3:\"and\";}','s:28:\"CRM_Report_Page_TemplateList\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"CiviReport\";s:3:\"url\";s:23:\"/civicrm/report?reset=1\";}}',NULL,NULL,8,1,0,1,0,1220,1,1,0,'a:0:{}'),
- (434,1,'civicrm/report/options/report_template',NULL,'Manage Templates','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:18:\"administer Reports\";}i:1;s:3:\"and\";}','s:23:\"CRM_Report_Page_Options\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"CiviReport\";s:3:\"url\";s:23:\"/civicrm/report?reset=1\";}}',NULL,NULL,8,1,0,1,0,1241,1,1,0,'a:0:{}'),
- (435,1,'civicrm/admin/report/register',NULL,'Register Report','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:18:\"administer Reports\";}i:1;s:3:\"and\";}','s:24:\"CRM_Report_Form_Register\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:1:{s:4:\"desc\";s:30:\"Register the Report templates.\";}'),
- (436,1,'civicrm/report/instance',NULL,'Report','s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:17:\"access CiviReport\";}i:1;s:3:\"and\";}','s:24:\"CRM_Report_Page_Instance\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"CiviReport\";s:3:\"url\";s:23:\"/civicrm/report?reset=1\";}}',NULL,NULL,8,1,0,1,0,1,1,0,0,'a:0:{}'),
- (437,1,'civicrm/admin/report/template/list',NULL,'Create New Report from Template','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:17:\"access CiviReport\";}i:1;s:3:\"and\";}','s:28:\"CRM_Report_Page_TemplateList\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:2:{s:4:\"desc\";s:49:\"Component wise listing of all available templates\";s:10:\"adminGroup\";s:10:\"CiviReport\";}'),
- (438,1,'civicrm/admin/report/options/report_template',NULL,'Manage Templates','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:17:\"access CiviReport\";}i:1;s:3:\"and\";}','s:23:\"CRM_Report_Page_Options\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:2:{s:4:\"desc\";s:45:\"Browse, Edit and Delete the Report templates.\";s:10:\"adminGroup\";s:10:\"CiviReport\";}'),
- (439,1,'civicrm/admin/report/list',NULL,'Reports Listing','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:28:\"CRM_Report_Page_InstanceList\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:2:{s:4:\"desc\";s:60:\"Browse existing report, change report criteria and settings.\";s:10:\"adminGroup\";s:10:\"CiviReport\";}'),
- (440,1,'civicrm/campaign/add',NULL,'New Campaign','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:23:\"administer CiviCampaign\";i:1;s:15:\"manage campaign\";}i:1;s:2:\"or\";}','s:26:\"CRM_Campaign_Form_Campaign\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:1:{s:9:\"component\";s:12:\"CiviCampaign\";}'),
- (441,1,'civicrm/survey/add',NULL,'New Survey','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:23:\"administer CiviCampaign\";i:1;s:15:\"manage campaign\";}i:1;s:2:\"or\";}','s:29:\"CRM_Campaign_Form_Survey_Main\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:1:{s:9:\"component\";s:12:\"CiviCampaign\";}'),
- (442,1,'civicrm/campaign/vote',NULL,'Conduct Survey','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:4:{i:0;s:23:\"administer CiviCampaign\";i:1;s:15:\"manage campaign\";i:2;s:25:\"reserve campaign contacts\";i:3;s:27:\"interview campaign contacts\";}i:1;s:2:\"or\";}','s:22:\"CRM_Campaign_Page_Vote\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:1:{s:9:\"component\";s:12:\"CiviCampaign\";}'),
- (443,1,'civicrm/admin/campaign/surveyType',NULL,'Survey Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:23:\"administer CiviCampaign\";}i:1;s:3:\"and\";}','s:28:\"CRM_Campaign_Page_SurveyType\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:2:{s:10:\"adminGroup\";s:12:\"CiviCampaign\";s:9:\"component\";s:12:\"CiviCampaign\";}'),
- (444,1,'civicrm/admin/options/campaign_type',NULL,'Campaign Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,2,1,0,0,'a:3:{s:4:\"desc\";s:47:\"categorize your campaigns using campaign types.\";s:10:\"adminGroup\";s:12:\"CiviCampaign\";s:9:\"component\";s:12:\"CiviCampaign\";}'),
- (445,1,'civicrm/admin/options/campaign_status',NULL,'Campaign Status','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,3,1,0,0,'a:3:{s:4:\"desc\";s:34:\"Define statuses for campaign here.\";s:10:\"adminGroup\";s:12:\"CiviCampaign\";s:9:\"component\";s:12:\"CiviCampaign\";}'),
- (446,1,'civicrm/admin/options/engagement_index',NULL,'Engagement Index','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,4,1,0,0,'a:3:{s:4:\"desc\";s:18:\"Engagement levels.\";s:10:\"adminGroup\";s:12:\"CiviCampaign\";s:9:\"component\";s:12:\"CiviCampaign\";}'),
- (447,1,'civicrm/survey/search','op=interview','Record Respondents Interview','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:23:\"administer CiviCampaign\";i:1;s:15:\"manage campaign\";i:2;s:27:\"interview campaign contacts\";}i:1;s:2:\"or\";}','s:30:\"CRM_Campaign_Controller_Search\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:1:{s:9:\"component\";s:12:\"CiviCampaign\";}'),
- (448,1,'civicrm/campaign/gotv',NULL,'GOTV (Track Voters)','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:4:{i:0;s:23:\"administer CiviCampaign\";i:1;s:15:\"manage campaign\";i:2;s:25:\"release campaign contacts\";i:3;s:22:\"gotv campaign contacts\";}i:1;s:2:\"or\";}','s:22:\"CRM_Campaign_Form_Gotv\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:1:{s:9:\"component\";s:12:\"CiviCampaign\";}'),
- (449,1,'civicrm/petition/add',NULL,'New Petition','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:23:\"administer CiviCampaign\";i:1;s:15:\"manage campaign\";}i:1;s:2:\"or\";}','s:26:\"CRM_Campaign_Form_Petition\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (450,1,'civicrm/petition/sign',NULL,'Sign Petition','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"sign CiviCRM Petition\";}i:1;s:3:\"and\";}','s:36:\"CRM_Campaign_Form_Petition_Signature\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,1,1,0,0,'a:0:{}'),
- (451,1,'civicrm/petition/browse',NULL,'View Petition Signatures','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Campaign_Page_Petition\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (452,1,'civicrm/petition/confirm',NULL,'Email address verified','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"sign CiviCRM Petition\";}i:1;s:3:\"and\";}','s:34:\"CRM_Campaign_Page_Petition_Confirm\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,1,1,0,0,'a:0:{}'),
- (453,1,'civicrm/petition/thankyou',NULL,'Thank You','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"sign CiviCRM Petition\";}i:1;s:3:\"and\";}','s:35:\"CRM_Campaign_Page_Petition_ThankYou\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,1,1,0,0,'a:0:{}'),
- (454,1,'civicrm/campaign/registerInterview',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:23:\"administer CiviCampaign\";i:1;s:15:\"manage campaign\";i:2;s:27:\"interview campaign contacts\";}i:1;s:2:\"or\";}','a:2:{i:0;s:22:\"CRM_Campaign_Page_AJAX\";i:1;s:17:\"registerInterview\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (455,1,'civicrm/survey/configure/main',NULL,'Configure Survey','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:23:\"administer CiviCampaign\";i:1;s:15:\"manage campaign\";}i:1;s:2:\"or\";}','s:29:\"CRM_Campaign_Form_Survey_Main\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (456,1,'civicrm/survey/configure/questions',NULL,'Configure Survey','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:23:\"administer CiviCampaign\";i:1;s:15:\"manage campaign\";}i:1;s:2:\"or\";}','s:34:\"CRM_Campaign_Form_Survey_Questions\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (457,1,'civicrm/survey/configure/results',NULL,'Configure Survey','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:23:\"administer CiviCampaign\";i:1;s:15:\"manage campaign\";}i:1;s:2:\"or\";}','s:32:\"CRM_Campaign_Form_Survey_Results\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (458,1,'civicrm/survey/delete',NULL,'Delete Survey','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:23:\"administer CiviCampaign\";i:1;s:15:\"manage campaign\";}i:1;s:2:\"or\";}','s:31:\"CRM_Campaign_Form_Survey_Delete\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (459,1,'civicrm/admin/ckeditor',NULL,'Configure CKEditor 4','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:33:\"CRM_Ckeditor4_Form_CKEditorConfig\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
- (460,1,'civicrm/admin/setting/recaptcha',NULL,'reCAPTCHA Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:20:\"administer recaptcha\";}i:1;s:2:\"or\";}','s:22:\"CRM_Admin_Form_Generic\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:2:{s:10:\"adminGroup\";s:15:\"System Settings\";s:4:\"desc\";s:108:\"Uses the Google reCAPTCHA web service to improve the CAPTCHA system. It is tough on bots and easy on humans.\";}'),
- (461,1,'admin',NULL,NULL,NULL,NULL,NULL,NULL,'a:15:{s:26:\"Customize Data and Screens\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:20:{s:13:\"{weight}.Tags\";a:6:{s:5:\"title\";s:4:\"Tags\";s:4:\"desc\";s:158:\"Tags are useful for segmenting the contacts in your database into categories (e.g. Staff Member, Donor, Volunteer, etc.). Create and edit available tags here.\";s:2:\"id\";s:4:\"Tags\";s:3:\"url\";s:20:\"/civicrm/tag?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:20:\"{weight}.Custom Data\";a:6:{s:5:\"title\";s:11:\"Custom Data\";s:4:\"desc\";s:109:\"Configure custom fields to collect and store custom data which is not included in the standard CiviCRM forms.\";s:2:\"id\";s:10:\"CustomData\";s:3:\"url\";s:35:\"/civicrm/admin/custom/group?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:17:\"{weight}.Profiles\";a:6:{s:5:\"title\";s:8:\"Profiles\";s:4:\"desc\";s:151:\"Profiles allow you to aggregate groups of fields and include them in your site as input forms, contact display pages, and search and listings features.\";s:2:\"id\";s:8:\"Profiles\";s:3:\"url\";s:31:\"/civicrm/admin/uf/group?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:23:\"{weight}.Activity Types\";a:6:{s:5:\"title\";s:14:\"Activity Types\";s:4:\"desc\";s:155:\"CiviCRM has several built-in activity types (meetings, phone calls, emails sent). Track other types of interactions by creating custom activity types here.\";s:2:\"id\";s:13:\"ActivityTypes\";s:3:\"url\";s:44:\"/civicrm/admin/options/activity_type?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:27:\"{weight}.Relationship Types\";a:6:{s:5:\"title\";s:18:\"Relationship Types\";s:4:\"desc\";s:148:\"Contacts can be linked to each other through Relationships (e.g. Spouse, Employer, etc.). Define the types of relationships you want to record here.\";s:2:\"id\";s:17:\"RelationshipTypes\";s:3:\"url\";s:30:\"/civicrm/admin/reltype?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:22:\"{weight}.Contact Types\";a:6:{s:5:\"title\";s:13:\"Contact Types\";s:4:\"desc\";N;s:2:\"id\";s:12:\"ContactTypes\";s:3:\"url\";s:38:\"/civicrm/admin/options/subtype?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:23:\"{weight}.Gender Options\";a:6:{s:5:\"title\";s:14:\"Gender Options\";s:4:\"desc\";s:79:\"Options for assigning gender to individual contacts (e.g. Male, Female, Other).\";s:2:\"id\";s:13:\"GenderOptions\";s:3:\"url\";s:37:\"/civicrm/admin/options/gender?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:40:\"{weight}.Individual Prefixes (Ms, Mr...)\";a:6:{s:5:\"title\";s:31:\"Individual Prefixes (Ms, Mr...)\";s:4:\"desc\";s:66:\"Options for individual contact prefixes (e.g. Ms., Mr., Dr. etc.).\";s:2:\"id\";s:27:\"IndividualPrefixes_Ms_Mr...\";s:3:\"url\";s:48:\"/civicrm/admin/options/individual_prefix?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:40:\"{weight}.Individual Suffixes (Jr, Sr...)\";a:6:{s:5:\"title\";s:31:\"Individual Suffixes (Jr, Sr...)\";s:4:\"desc\";s:61:\"Options for individual contact suffixes (e.g. Jr., Sr. etc.).\";s:2:\"id\";s:27:\"IndividualSuffixes_Jr_Sr...\";s:3:\"url\";s:48:\"/civicrm/admin/options/individual_suffix?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:39:\"{weight}.Location Types (Home, Work...)\";a:6:{s:5:\"title\";s:30:\"Location Types (Home, Work...)\";s:4:\"desc\";s:94:\"Options for categorizing contact addresses and phone numbers (e.g. Home, Work, Billing, etc.).\";s:2:\"id\";s:26:\"LocationTypes_Home_Work...\";s:3:\"url\";s:35:\"/civicrm/admin/locationType?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:22:\"{weight}.Website Types\";a:6:{s:5:\"title\";s:13:\"Website Types\";s:4:\"desc\";s:48:\"Options for assigning website types to contacts.\";s:2:\"id\";s:12:\"WebsiteTypes\";s:3:\"url\";s:43:\"/civicrm/admin/options/website_type?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:35:\"{weight}.Instant Messenger Services\";a:6:{s:5:\"title\";s:26:\"Instant Messenger Services\";s:4:\"desc\";s:79:\"List of IM services which can be used when recording screen-names for contacts.\";s:2:\"id\";s:24:\"InstantMessengerServices\";s:3:\"url\";s:56:\"/civicrm/admin/options/instant_messenger_service?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:31:\"{weight}.Mobile Phone Providers\";a:6:{s:5:\"title\";s:22:\"Mobile Phone Providers\";s:4:\"desc\";s:90:\"List of mobile phone providers which can be assigned when recording contact phone numbers.\";s:2:\"id\";s:20:\"MobilePhoneProviders\";s:3:\"url\";s:46:\"/civicrm/admin/options/mobile_provider?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:19:\"{weight}.Phone Type\";a:6:{s:5:\"title\";s:10:\"Phone Type\";s:4:\"desc\";s:80:\"Options for assigning phone type to contacts (e.g Phone,\n Mobile, Fax, Pager)\";s:2:\"id\";s:9:\"PhoneType\";s:3:\"url\";s:41:\"/civicrm/admin/options/phone_type?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:28:\"{weight}.Display Preferences\";a:6:{s:5:\"title\";s:19:\"Display Preferences\";s:4:\"desc\";N;s:2:\"id\";s:18:\"DisplayPreferences\";s:3:\"url\";s:50:\"/civicrm/admin/setting/preferences/display?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:27:\"{weight}.Search Preferences\";a:6:{s:5:\"title\";s:18:\"Search Preferences\";s:4:\"desc\";N;s:2:\"id\";s:17:\"SearchPreferences\";s:3:\"url\";s:37:\"/civicrm/admin/setting/search?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:25:\"{weight}.Date Preferences\";a:6:{s:5:\"title\";s:16:\"Date Preferences\";s:4:\"desc\";N;s:2:\"id\";s:15:\"DatePreferences\";s:3:\"url\";s:52:\"/civicrm/admin/setting/preferences/date/edit?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:24:\"{weight}.Navigation Menu\";a:6:{s:5:\"title\";s:15:\"Navigation Menu\";s:4:\"desc\";s:79:\"Add or remove menu items, and modify the order of items on the navigation menu.\";s:2:\"id\";s:14:\"NavigationMenu\";s:3:\"url\";s:27:\"/civicrm/admin/menu?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:26:\"{weight}.Word Replacements\";a:6:{s:5:\"title\";s:17:\"Word Replacements\";s:4:\"desc\";s:18:\"Word Replacements.\";s:2:\"id\";s:16:\"WordReplacements\";s:3:\"url\";s:47:\"/civicrm/admin/options/wordreplacements?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:31:\"{weight}.Manage Custom Searches\";a:6:{s:5:\"title\";s:22:\"Manage Custom Searches\";s:4:\"desc\";s:225:\"Developers and accidental techies with a bit of PHP and SQL knowledge can create new search forms to handle specific search and reporting needs which aren\'t covered by the built-in Advanced Search and Search Builder features.\";s:2:\"id\";s:20:\"ManageCustomSearches\";s:3:\"url\";s:44:\"/civicrm/admin/options/custom_search?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:14:\"Communications\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:11:{s:46:\"{weight}.Organization Address and Contact Info\";a:6:{s:5:\"title\";s:37:\"Organization Address and Contact Info\";s:4:\"desc\";s:150:\"Configure primary contact name, email, return-path and address information. This information is used by CiviMail to identify the sending organization.\";s:2:\"id\";s:33:\"OrganizationAddressandContactInfo\";s:3:\"url\";s:47:\"/civicrm/admin/domain?action=update&reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:29:\"{weight}.From Email Addresses\";a:6:{s:5:\"title\";s:20:\"From Email Addresses\";s:4:\"desc\";s:74:\"List of Email Addresses which can be used when sending emails to contacts.\";s:2:\"id\";s:18:\"FromEmailAddresses\";s:3:\"url\";s:49:\"/civicrm/admin/options/from_email_address?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:26:\"{weight}.Message Templates\";a:6:{s:5:\"title\";s:17:\"Message Templates\";s:4:\"desc\";s:130:\"Message templates allow you to save and re-use messages with layouts which you can use when sending email to one or more contacts.\";s:2:\"id\";s:16:\"MessageTemplates\";s:3:\"url\";s:39:\"/civicrm/admin/messageTemplates?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:27:\"{weight}.Schedule Reminders\";a:6:{s:5:\"title\";s:18:\"Schedule Reminders\";s:4:\"desc\";s:19:\"Schedule Reminders.\";s:2:\"id\";s:17:\"ScheduleReminders\";s:3:\"url\";s:40:\"/civicrm/admin/scheduleReminders?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:40:\"{weight}.Preferred Communication Methods\";a:6:{s:5:\"title\";s:31:\"Preferred Communication Methods\";s:4:\"desc\";s:117:\"One or more preferred methods of communication can be assigned to each contact. Customize the available options here.\";s:2:\"id\";s:29:\"PreferredCommunicationMethods\";s:3:\"url\";s:61:\"/civicrm/admin/options/preferred_communication_method?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:27:\"{weight}.Label Page Formats\";a:6:{s:5:\"title\";s:18:\"Label Page Formats\";s:4:\"desc\";s:82:\"Configure label sizes and page layouts that are used when printing mailing labels.\";s:2:\"id\";s:16:\"LabelPageFormats\";s:3:\"url\";s:35:\"/civicrm/admin/labelFormats?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:33:\"{weight}.Print Page (PDF) Formats\";a:6:{s:5:\"title\";s:24:\"Print Page (PDF) Formats\";s:4:\"desc\";s:95:\"Configure PDF Page Formats that can be assigned to Message Templates when creating PDF letters.\";s:2:\"id\";s:20:\"PrintPage_PDFFormats\";s:3:\"url\";s:33:\"/civicrm/admin/pdfFormats?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:36:\"{weight}.Communication Style Options\";a:6:{s:5:\"title\";s:27:\"Communication Style Options\";s:4:\"desc\";s:42:\"Options for Communication Style selection.\";s:2:\"id\";s:25:\"CommunicationStyleOptions\";s:3:\"url\";s:50:\"/civicrm/admin/options/communication_style?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:31:\"{weight}.Email Greeting Formats\";a:6:{s:5:\"title\";s:22:\"Email Greeting Formats\";s:4:\"desc\";s:75:\"Options for assigning email greetings to individual and household contacts.\";s:2:\"id\";s:20:\"EmailGreetingFormats\";s:3:\"url\";s:45:\"/civicrm/admin/options/email_greeting?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:32:\"{weight}.Postal Greeting Formats\";a:6:{s:5:\"title\";s:23:\"Postal Greeting Formats\";s:4:\"desc\";s:76:\"Options for assigning postal greetings to individual and household contacts.\";s:2:\"id\";s:21:\"PostalGreetingFormats\";s:3:\"url\";s:46:\"/civicrm/admin/options/postal_greeting?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:26:\"{weight}.Addressee Formats\";a:6:{s:5:\"title\";s:17:\"Addressee Formats\";s:4:\"desc\";s:83:\"Options for assigning addressee to individual, household and organization contacts.\";s:2:\"id\";s:16:\"AddresseeFormats\";s:3:\"url\";s:40:\"/civicrm/admin/options/addressee?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:12:\"Localization\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:4:{s:39:\"{weight}.Languages, Currency, Locations\";a:6:{s:5:\"title\";s:30:\"Languages, Currency, Locations\";s:4:\"desc\";N;s:2:\"id\";s:28:\"Languages_Currency_Locations\";s:3:\"url\";s:43:\"/civicrm/admin/setting/localization?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:25:\"{weight}.Address Settings\";a:6:{s:5:\"title\";s:16:\"Address Settings\";s:4:\"desc\";N;s:2:\"id\";s:15:\"AddressSettings\";s:3:\"url\";s:50:\"/civicrm/admin/setting/preferences/address?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:21:\"{weight}.Date Formats\";a:6:{s:5:\"title\";s:12:\"Date Formats\";s:4:\"desc\";N;s:2:\"id\";s:11:\"DateFormats\";s:3:\"url\";s:35:\"/civicrm/admin/setting/date?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:28:\"{weight}.Preferred Languages\";a:6:{s:5:\"title\";s:19:\"Preferred Languages\";s:4:\"desc\";s:30:\"Options for contact languages.\";s:2:\"id\";s:18:\"PreferredLanguages\";s:3:\"url\";s:40:\"/civicrm/admin/options/languages?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:21:\"Users and Permissions\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:2:{s:23:\"{weight}.Access Control\";a:6:{s:5:\"title\";s:14:\"Access Control\";s:4:\"desc\";s:73:\"Grant or deny access to actions (view, edit...), features and components.\";s:2:\"id\";s:13:\"AccessControl\";s:3:\"url\";s:29:\"/civicrm/admin/access?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:38:\"{weight}.Synchronize Users to Contacts\";a:6:{s:5:\"title\";s:29:\"Synchronize Users to Contacts\";s:4:\"desc\";s:71:\"Automatically create a CiviCRM contact record for each CMS user record.\";s:2:\"id\";s:26:\"SynchronizeUserstoContacts\";s:3:\"url\";s:32:\"/civicrm/admin/synchUser?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:15:\"System Settings\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:20:{s:32:\"{weight}.Configuration Checklist\";a:6:{s:5:\"title\";s:23:\"Configuration Checklist\";s:4:\"desc\";s:55:\"List of configuration tasks with links to each setting.\";s:2:\"id\";s:22:\"ConfigurationChecklist\";s:3:\"url\";s:33:\"/civicrm/admin/configtask?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:34:\"{weight}.Enable CiviCRM Components\";a:6:{s:5:\"title\";s:25:\"Enable CiviCRM Components\";s:4:\"desc\";s:269:\"Enable or disable components (e.g. CiviEvent, CiviMember, etc.) for your site based on the features you need. We recommend disabling any components not being used in order to simplify the user interface. You can easily re-enable components at any time from this screen.\";s:2:\"id\";s:23:\"EnableCiviCRMComponents\";s:3:\"url\";s:40:\"/civicrm/admin/setting/component?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:26:\"{weight}.Manage Extensions\";a:6:{s:5:\"title\";s:17:\"Manage Extensions\";s:4:\"desc\";s:0:\"\";s:2:\"id\";s:16:\"ManageExtensions\";s:3:\"url\";s:33:\"/civicrm/admin/extensions?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:32:\"{weight}.Outbound Email Settings\";a:6:{s:5:\"title\";s:23:\"Outbound Email Settings\";s:4:\"desc\";N;s:2:\"id\";s:21:\"OutboundEmailSettings\";s:3:\"url\";s:35:\"/civicrm/admin/setting/smtp?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:37:\"{weight}.Settings - Payment Processor\";a:6:{s:5:\"title\";s:28:\"Settings - Payment Processor\";s:4:\"desc\";s:48:\"Payment Processor setup for CiviCRM transactions\";s:2:\"id\";s:25:\"Settings-PaymentProcessor\";s:3:\"url\";s:39:\"/civicrm/admin/paymentProcessor?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:30:\"{weight}.Mapping and Geocoding\";a:6:{s:5:\"title\";s:21:\"Mapping and Geocoding\";s:4:\"desc\";N;s:2:\"id\";s:19:\"MappingandGeocoding\";s:3:\"url\";s:38:\"/civicrm/admin/setting/mapping?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:53:\"{weight}.Misc (Undelete, PDFs, Limits, Logging, etc.)\";a:6:{s:5:\"title\";s:44:\"Misc (Undelete, PDFs, Limits, Logging, etc.)\";s:4:\"desc\";s:63:\"Enable undelete/move to trash feature, detailed change logging.\";s:2:\"id\";s:38:\"Misc_Undelete_PDFs_Limits_Logging_etc.\";s:3:\"url\";s:35:\"/civicrm/admin/setting/misc?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:20:\"{weight}.Directories\";a:6:{s:5:\"title\";s:11:\"Directories\";s:4:\"desc\";N;s:2:\"id\";s:11:\"Directories\";s:3:\"url\";s:35:\"/civicrm/admin/setting/path?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:22:\"{weight}.Resource URLs\";a:6:{s:5:\"title\";s:13:\"Resource URLs\";s:4:\"desc\";N;s:2:\"id\";s:12:\"ResourceURLs\";s:3:\"url\";s:34:\"/civicrm/admin/setting/url?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:40:\"{weight}.Cleanup Caches and Update Paths\";a:6:{s:5:\"title\";s:31:\"Cleanup Caches and Update Paths\";s:4:\"desc\";s:157:\"Reset the Base Directory Path and Base URL settings - generally when a CiviCRM site is moved to another location in the file system and/or to another domain.\";s:2:\"id\";s:27:\"CleanupCachesandUpdatePaths\";s:3:\"url\";s:50:\"/civicrm/admin/setting/updateConfigBackend?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:33:\"{weight}.CMS Database Integration\";a:6:{s:5:\"title\";s:24:\"CMS Database Integration\";s:4:\"desc\";N;s:2:\"id\";s:22:\"CMSDatabaseIntegration\";s:3:\"url\";s:33:\"/civicrm/admin/setting/uf?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:36:\"{weight}.Safe File Extension Options\";a:6:{s:5:\"title\";s:27:\"Safe File Extension Options\";s:4:\"desc\";s:44:\"File Extensions that can be considered safe.\";s:2:\"id\";s:24:\"SafeFileExtensionOptions\";s:3:\"url\";s:50:\"/civicrm/admin/options/safe_file_extension?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:22:\"{weight}.Option Groups\";a:6:{s:5:\"title\";s:13:\"Option Groups\";s:4:\"desc\";s:35:\"Access all meta-data option groups.\";s:2:\"id\";s:12:\"OptionGroups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:31:\"{weight}.Import/Export Mappings\";a:6:{s:5:\"title\";s:22:\"Import/Export Mappings\";s:4:\"desc\";s:141:\"Import and Export mappings allow you to easily run the same job multiple times. This option allows you to rename or delete existing mappings.\";s:2:\"id\";s:21:\"Import_ExportMappings\";s:3:\"url\";s:35:\"/civicrm/admin/mapping/edit?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:18:\"{weight}.Debugging\";a:6:{s:5:\"title\";s:9:\"Debugging\";s:4:\"desc\";N;s:2:\"id\";s:9:\"Debugging\";s:3:\"url\";s:36:\"/civicrm/admin/setting/debug?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:28:\"{weight}.Multi Site Settings\";a:6:{s:5:\"title\";s:19:\"Multi Site Settings\";s:4:\"desc\";N;s:2:\"id\";s:17:\"MultiSiteSettings\";s:3:\"url\";s:52:\"/civicrm/admin/setting/preferences/multisite?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:23:\"{weight}.Scheduled Jobs\";a:6:{s:5:\"title\";s:14:\"Scheduled Jobs\";s:4:\"desc\";s:35:\"Managing periodially running tasks.\";s:2:\"id\";s:13:\"ScheduledJobs\";s:3:\"url\";s:26:\"/civicrm/admin/job?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:27:\"{weight}.Edit Scheduled Job\";a:6:{s:5:\"title\";s:18:\"Edit Scheduled Job\";s:4:\"desc\";s:32:\"Edit a periodially running task.\";s:2:\"id\";s:16:\"EditScheduledJob\";s:3:\"url\";s:31:\"/civicrm/admin/job/edit?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:22:\"{weight}.Sms Providers\";a:6:{s:5:\"title\";s:13:\"Sms Providers\";s:4:\"desc\";s:27:\"To configure a sms provider\";s:2:\"id\";s:12:\"SmsProviders\";s:3:\"url\";s:40:\"/civicrm/admin/sms/provider/edit?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:27:\"{weight}.reCAPTCHA Settings\";a:6:{s:5:\"title\";s:18:\"reCAPTCHA Settings\";s:4:\"desc\";s:108:\"Uses the Google reCAPTCHA web service to improve the CAPTCHA system. It is tough on bots and easy on humans.\";s:2:\"id\";s:17:\"reCAPTCHASettings\";s:3:\"url\";s:40:\"/civicrm/admin/setting/recaptcha?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:12:\"CiviCampaign\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:5:{s:40:\"{weight}.CiviCampaign Component Settings\";a:6:{s:5:\"title\";s:31:\"CiviCampaign Component Settings\";s:4:\"desc\";s:40:\"Configure global CiviCampaign behaviors.\";s:2:\"id\";s:29:\"CiviCampaignComponentSettings\";s:3:\"url\";s:51:\"/civicrm/admin/setting/preferences/campaign?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:21:\"{weight}.Survey Types\";a:6:{s:5:\"title\";s:12:\"Survey Types\";s:4:\"desc\";N;s:2:\"id\";s:11:\"SurveyTypes\";s:3:\"url\";s:42:\"/civicrm/admin/campaign/surveyType?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:23:\"{weight}.Campaign Types\";a:6:{s:5:\"title\";s:14:\"Campaign Types\";s:4:\"desc\";s:47:\"categorize your campaigns using campaign types.\";s:2:\"id\";s:13:\"CampaignTypes\";s:3:\"url\";s:44:\"/civicrm/admin/options/campaign_type?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:24:\"{weight}.Campaign Status\";a:6:{s:5:\"title\";s:15:\"Campaign Status\";s:4:\"desc\";s:34:\"Define statuses for campaign here.\";s:2:\"id\";s:14:\"CampaignStatus\";s:3:\"url\";s:46:\"/civicrm/admin/options/campaign_status?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:25:\"{weight}.Engagement Index\";a:6:{s:5:\"title\";s:16:\"Engagement Index\";s:4:\"desc\";s:18:\"Engagement levels.\";s:2:\"id\";s:15:\"EngagementIndex\";s:3:\"url\";s:47:\"/civicrm/admin/options/engagement_index?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:9:\"CiviEvent\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:8:{s:37:\"{weight}.CiviEvent Component Settings\";a:6:{s:5:\"title\";s:28:\"CiviEvent Component Settings\";s:4:\"desc\";s:37:\"Configure global CiviEvent behaviors.\";s:2:\"id\";s:26:\"CiviEventComponentSettings\";s:3:\"url\";s:48:\"/civicrm/admin/setting/preferences/event?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:33:\"{weight}.Event Name Badge Layouts\";a:6:{s:5:\"title\";s:24:\"Event Name Badge Layouts\";s:4:\"desc\";s:107:\"Configure name badge layouts for event participants, including logos and what data to include on the badge.\";s:2:\"id\";s:21:\"EventNameBadgeLayouts\";s:3:\"url\";s:52:\"/civicrm/admin/badgelayout?action=browse&reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:22:\"{weight}.Manage Events\";a:6:{s:5:\"title\";s:13:\"Manage Events\";s:4:\"desc\";s:136:\"Create and edit event configuration including times, locations, online registration forms, and fees. Links for iCal and RSS syndication.\";s:2:\"id\";s:12:\"ManageEvents\";s:3:\"url\";s:28:\"/civicrm/admin/event?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:24:\"{weight}.Event Templates\";a:6:{s:5:\"title\";s:15:\"Event Templates\";s:4:\"desc\";s:115:\"Administrators can create Event Templates - which are basically master event records pre-filled with default values\";s:2:\"id\";s:14:\"EventTemplates\";s:3:\"url\";s:36:\"/civicrm/admin/eventTemplate?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:20:\"{weight}.Event Types\";a:6:{s:5:\"title\";s:11:\"Event Types\";s:4:\"desc\";s:143:\"Use Event Types to categorize your events. Event feeds can be filtered by Event Type and participant searches can use Event Type as a criteria.\";s:2:\"id\";s:10:\"EventTypes\";s:3:\"url\";s:41:\"/civicrm/admin/options/event_type?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:27:\"{weight}.Participant Status\";a:6:{s:5:\"title\";s:18:\"Participant Status\";s:4:\"desc\";s:154:\"Define statuses for event participants here (e.g. Registered, Attended, Cancelled...). You can then assign statuses and search for participants by status.\";s:2:\"id\";s:17:\"ParticipantStatus\";s:3:\"url\";s:41:\"/civicrm/admin/participant_status?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:25:\"{weight}.Participant Role\";a:6:{s:5:\"title\";s:16:\"Participant Role\";s:4:\"desc\";s:138:\"Define participant roles for events here (e.g. Attendee, Host, Speaker...). You can then assign roles and search for participants by role.\";s:2:\"id\";s:15:\"ParticipantRole\";s:3:\"url\";s:47:\"/civicrm/admin/options/participant_role?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:38:\"{weight}.Participant Listing Templates\";a:6:{s:5:\"title\";s:29:\"Participant Listing Templates\";s:4:\"desc\";s:48:\"Template to control participant listing display.\";s:2:\"id\";s:27:\"ParticipantListingTemplates\";s:3:\"url\";s:50:\"/civicrm/admin/options/participant_listing?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:8:\"CiviMail\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:5:{s:36:\"{weight}.CiviMail Component Settings\";a:6:{s:5:\"title\";s:27:\"CiviMail Component Settings\";s:4:\"desc\";s:36:\"Configure global CiviMail behaviors.\";s:2:\"id\";s:25:\"CiviMailComponentSettings\";s:3:\"url\";s:50:\"/civicrm/admin/setting/preferences/mailing?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:24:\"{weight}.Mailer Settings\";a:6:{s:5:\"title\";s:15:\"Mailer Settings\";s:4:\"desc\";s:61:\"Configure spool period, throttling and other mailer settings.\";s:2:\"id\";s:14:\"MailerSettings\";s:3:\"url\";s:27:\"/civicrm/admin/mail?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:49:\"{weight}.Headers, Footers, and Automated Messages\";a:6:{s:5:\"title\";s:40:\"Headers, Footers, and Automated Messages\";s:4:\"desc\";s:143:\"Configure the header and footer used for mailings. Customize the content of automated Subscribe, Unsubscribe, Resubscribe and Opt-out messages.\";s:2:\"id\";s:36:\"Headers_Footers_andAutomatedMessages\";s:3:\"url\";s:37:\"/civicrm/admin/component/edit?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:29:\"{weight}.From Email Addresses\";a:6:{s:5:\"title\";s:20:\"From Email Addresses\";s:4:\"desc\";s:74:\"List of Email Addresses which can be used when sending emails to contacts.\";s:2:\"id\";s:18:\"FromEmailAddresses\";s:3:\"url\";s:58:\"/civicrm/admin/options/from_email_address/civimail?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:22:\"{weight}.Mail Accounts\";a:6:{s:5:\"title\";s:13:\"Mail Accounts\";s:4:\"desc\";s:20:\"List email accounts.\";s:2:\"id\";s:12:\"MailAccounts\";s:3:\"url\";s:35:\"/civicrm/admin/mailSettings?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:10:\"CiviMember\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:3:{s:38:\"{weight}.CiviMember Component Settings\";a:6:{s:5:\"title\";s:29:\"CiviMember Component Settings\";s:4:\"desc\";s:38:\"Configure global CiviMember behaviors.\";s:2:\"id\";s:27:\"CiviMemberComponentSettings\";s:3:\"url\";s:49:\"/civicrm/admin/setting/preferences/member?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:25:\"{weight}.Membership Types\";a:6:{s:5:\"title\";s:16:\"Membership Types\";s:4:\"desc\";s:174:\"Define the types of memberships you want to offer. For each type, you can specify a \'name\' (Gold Member, Honor Society Member...), a description, duration, and a minimum fee.\";s:2:\"id\";s:15:\"MembershipTypes\";s:3:\"url\";s:44:\"/civicrm/admin/member/membershipType?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:32:\"{weight}.Membership Status Rules\";a:6:{s:5:\"title\";s:23:\"Membership Status Rules\";s:4:\"desc\";s:187:\"Status \'rules\' define the current status for a membership based on that membership\'s start and end dates. You can adjust the default status options and rules as needed to meet your needs.\";s:2:\"id\";s:21:\"MembershipStatusRules\";s:3:\"url\";s:46:\"/civicrm/admin/member/membershipStatus?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:6:\"Manage\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:3:{s:27:\"{weight}.Scheduled Jobs Log\";a:6:{s:5:\"title\";s:18:\"Scheduled Jobs Log\";s:4:\"desc\";s:46:\"Browsing the log of periodially running tasks.\";s:2:\"id\";s:16:\"ScheduledJobsLog\";s:3:\"url\";s:29:\"/civicrm/admin/joblog?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:42:\"{weight}.Find and Merge Duplicate Contacts\";a:6:{s:5:\"title\";s:33:\"Find and Merge Duplicate Contacts\";s:4:\"desc\";s:158:\"Manage the rules used to identify potentially duplicate contact records. Scan for duplicates using a selected rule and merge duplicate contact data as needed.\";s:2:\"id\";s:29:\"FindandMergeDuplicateContacts\";s:3:\"url\";s:36:\"/civicrm/contact/deduperules?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:26:\"{weight}.Dedupe Exceptions\";a:6:{s:5:\"title\";s:17:\"Dedupe Exceptions\";s:4:\"desc\";N;s:2:\"id\";s:16:\"DedupeExceptions\";s:3:\"url\";s:33:\"/civicrm/dedupe/exception?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:12:\"Option Lists\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:1:{s:20:\"{weight}.Grant Types\";a:6:{s:5:\"title\";s:11:\"Grant Types\";s:4:\"desc\";s:148:\"List of types which can be assigned to Grants. (Enable CiviGrant from Administer > System Settings > Enable Components if you want to track grants.)\";s:2:\"id\";s:10:\"GrantTypes\";s:3:\"url\";s:41:\"/civicrm/admin/options/grant_type?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:9:\"Customize\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:1:{s:19:\"{weight}.Price Sets\";a:6:{s:5:\"title\";s:10:\"Price Sets\";s:4:\"desc\";s:205:\"Price sets allow you to offer multiple options with associated fees (e.g. pre-conference workshops, additional meals, etc.). Configure Price Sets for events which need more than a single set of fee levels.\";s:2:\"id\";s:9:\"PriceSets\";s:3:\"url\";s:28:\"/civicrm/admin/price?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:14:\"CiviContribute\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:9:{s:32:\"{weight}.Personal Campaign Pages\";a:6:{s:5:\"title\";s:23:\"Personal Campaign Pages\";s:4:\"desc\";s:49:\"View and manage existing personal campaign pages.\";s:2:\"id\";s:21:\"PersonalCampaignPages\";s:3:\"url\";s:49:\"/civicrm/admin/pcp?context=contribute&reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:34:\"{weight}.Manage Contribution Pages\";a:6:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:4:\"desc\";s:242:\"CiviContribute allows you to create and maintain any number of Online Contribution Pages. You can create different pages for different programs or campaigns - and customize text, amounts, types of information collected from contributors, etc.\";s:2:\"id\";s:23:\"ManageContributionPages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:24:\"{weight}.Manage Premiums\";a:6:{s:5:\"title\";s:15:\"Manage Premiums\";s:4:\"desc\";s:175:\"CiviContribute allows you to configure any number of Premiums which can be offered to contributors as incentives / thank-you gifts. Define the premiums you want to offer here.\";s:2:\"id\";s:14:\"ManagePremiums\";s:3:\"url\";s:48:\"/civicrm/admin/contribute/managePremiums?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:24:\"{weight}.Financial Types\";a:6:{s:5:\"title\";s:15:\"Financial Types\";s:4:\"desc\";s:64:\"Formerly civicrm_contribution_type merged into this table in 4.1\";s:2:\"id\";s:14:\"FinancialTypes\";s:3:\"url\";s:46:\"/civicrm/admin/financial/financialType?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:27:\"{weight}.Financial Accounts\";a:6:{s:5:\"title\";s:18:\"Financial Accounts\";s:4:\"desc\";s:128:\"Financial types are used to categorize contributions for reporting and accounting purposes. These are also referred to as Funds.\";s:2:\"id\";s:17:\"FinancialAccounts\";s:3:\"url\";s:49:\"/civicrm/admin/financial/financialAccount?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:24:\"{weight}.Payment Methods\";a:6:{s:5:\"title\";s:15:\"Payment Methods\";s:4:\"desc\";s:224:\"You may choose to record the payment instrument used for each contribution. Common payment methods are installed by default (e.g. Check, Cash, Credit Card...). If your site requires additional payment methods, add them here.\";s:2:\"id\";s:14:\"PaymentMethods\";s:3:\"url\";s:49:\"/civicrm/admin/options/payment_instrument?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:30:\"{weight}.Accepted Credit Cards\";a:6:{s:5:\"title\";s:21:\"Accepted Credit Cards\";s:4:\"desc\";s:94:\"Credit card options that will be offered to contributors using your Online Contribution pages.\";s:2:\"id\";s:19:\"AcceptedCreditCards\";s:3:\"url\";s:48:\"/civicrm/admin/options/accept_creditcard?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:26:\"{weight}.Soft Credit Types\";a:6:{s:5:\"title\";s:17:\"Soft Credit Types\";s:4:\"desc\";s:86:\"Soft Credit Types that will be offered to contributors during soft credit contribution\";s:2:\"id\";s:15:\"SoftCreditTypes\";s:3:\"url\";s:47:\"/civicrm/admin/options/soft_credit_type?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:42:\"{weight}.CiviContribute Component Settings\";a:6:{s:5:\"title\";s:33:\"CiviContribute Component Settings\";s:4:\"desc\";s:42:\"Configure global CiviContribute behaviors.\";s:2:\"id\";s:31:\"CiviContributeComponentSettings\";s:3:\"url\";s:53:\"/civicrm/admin/setting/preferences/contribute?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:8:\"CiviCase\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:5:{s:26:\"{weight}.CiviCase Settings\";a:6:{s:5:\"title\";s:17:\"CiviCase Settings\";s:4:\"desc\";N;s:2:\"id\";s:16:\"CiviCaseSettings\";s:3:\"url\";s:35:\"/civicrm/admin/setting/case?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:19:\"{weight}.Case Types\";a:6:{s:5:\"title\";s:10:\"Case Types\";s:4:\"desc\";s:137:\"List of types which can be assigned to Cases. (Enable the Cases tab from System Settings - Enable Components if you want to track cases.)\";s:2:\"id\";s:9:\"CaseTypes\";s:3:\"url\";s:40:\"/civicrm/admin/options/case_type?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:24:\"{weight}.Redaction Rules\";a:6:{s:5:\"title\";s:15:\"Redaction Rules\";s:4:\"desc\";s:223:\"List of rules which can be applied to user input strings so that the redacted output can be recognized as repeated instances of the same string or can be identified as a \"semantic type of the data element\" within case data.\";s:2:\"id\";s:14:\"RedactionRules\";s:3:\"url\";s:45:\"/civicrm/admin/options/redaction_rule?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:22:\"{weight}.Case Statuses\";a:6:{s:5:\"title\";s:13:\"Case Statuses\";s:4:\"desc\";s:48:\"List of statuses that can be assigned to a case.\";s:2:\"id\";s:12:\"CaseStatuses\";s:3:\"url\";s:42:\"/civicrm/admin/options/case_status?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:26:\"{weight}.Encounter Mediums\";a:6:{s:5:\"title\";s:17:\"Encounter Mediums\";s:4:\"desc\";s:26:\"List of encounter mediums.\";s:2:\"id\";s:16:\"EncounterMediums\";s:3:\"url\";s:47:\"/civicrm/admin/options/encounter_medium?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:10:\"CiviReport\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:3:{s:40:\"{weight}.Create New Report from Template\";a:6:{s:5:\"title\";s:31:\"Create New Report from Template\";s:4:\"desc\";s:49:\"Component wise listing of all available templates\";s:2:\"id\";s:27:\"CreateNewReportfromTemplate\";s:3:\"url\";s:43:\"/civicrm/admin/report/template/list?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:25:\"{weight}.Manage Templates\";a:6:{s:5:\"title\";s:16:\"Manage Templates\";s:4:\"desc\";s:45:\"Browse, Edit and Delete the Report templates.\";s:2:\"id\";s:15:\"ManageTemplates\";s:3:\"url\";s:53:\"/civicrm/admin/report/options/report_template?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:24:\"{weight}.Reports Listing\";a:6:{s:5:\"title\";s:15:\"Reports Listing\";s:4:\"desc\";s:60:\"Browse existing report, change report criteria and settings.\";s:2:\"id\";s:14:\"ReportsListing\";s:3:\"url\";s:34:\"/civicrm/admin/report/list?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}}',NULL,NULL,NULL,1,0,1,1,1,1,1,0,'a:0:{}');
+ (1,1,'civicrm/tag',NULL,'Tags','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:11:\"manage tags\";}i:1;s:2:\"or\";}','s:16:\"CRM_Tag_Page_Tag\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,25,1,0,0,'a:2:{s:4:\"desc\";s:158:\"Tags are useful for segmenting the contacts in your database into categories (e.g. Staff Member, Donor, Volunteer, etc.). Create and edit available tags here.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),
+ (2,1,'civicrm/tag/edit','action=add','New Tag','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:11:\"manage tags\";}i:1;s:2:\"or\";}','s:17:\"CRM_Tag_Form_Edit\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:4:\"Tags\";s:3:\"url\";s:20:\"/civicrm/tag?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (3,1,'civicrm/tag/merge',NULL,'Merge Tags','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:11:\"manage tags\";}i:1;s:2:\"or\";}','s:18:\"CRM_Tag_Form_Merge\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:4:\"Tags\";s:3:\"url\";s:20:\"/civicrm/tag?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (4,1,'civicrm/ajax/tagTree',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:11:\"manage tags\";}i:1;s:2:\"or\";}','a:2:{i:0;s:19:\"CRM_Admin_Page_AJAX\";i:1;s:10:\"getTagTree\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (5,1,'civicrm/payment/form',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:26:\"CRM_Financial_Form_Payment\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:11:\"New Payment\";s:3:\"url\";s:39:\"/civicrm/payment?reset=1&action=add\";}}',NULL,NULL,2,1,1,1,0,0,1,0,0,'a:0:{}'),
+ (6,1,'civicrm/payment/edit',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:30:\"CRM_Financial_Form_PaymentEdit\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:11:\"New Payment\";s:3:\"url\";s:39:\"/civicrm/payment?reset=1&action=add\";}}',NULL,NULL,2,1,0,1,0,1,1,0,0,'a:1:{s:9:\"component\";s:14:\"CiviContribute\";}'),
+ (7,1,'civicrm/ajax/jqState',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:27:\"CRM_Core_Page_AJAX_Location\";i:1;s:7:\"jqState\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,1,1,0,0,'a:0:{}'),
+ (8,1,'civicrm/ajax/jqCounty',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:27:\"CRM_Core_Page_AJAX_Location\";i:1;s:8:\"jqCounty\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,1,1,0,0,'a:0:{}'),
+ (9,1,'civicrm/custom',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:32:\"CRM_Custom_Form_CustomDataByType\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (10,1,'civicrm/profile',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:23:\"CRM_Profile_Page_Router\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,0,1,0,0,'a:0:{}'),
+ (11,1,'civicrm/profile/create',NULL,'CiviCRM Profile Create','s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:23:\"CRM_Profile_Page_Router\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,0,1,0,0,'a:0:{}'),
+ (12,1,'civicrm/profile/view',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:21:\"CRM_Profile_Page_View\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,1,1,0,0,'a:0:{}'),
+ (13,1,'civicrm/pcp',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:16:\"CRM_PCP_Form_PCP\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,1,1,0,0,'a:0:{}'),
+ (14,1,'civicrm/pcp/campaign',NULL,'Setup a Personal Campaign Page - Account Information','s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:25:\"make online contributions\";}i:1;s:3:\"and\";}','s:22:\"CRM_PCP_Controller_PCP\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,0,1,0,0,'a:0:{}'),
+ (15,1,'civicrm/pcp/info',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:20:\"CRM_PCP_Page_PCPInfo\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,1,1,0,0,'a:0:{}'),
+ (16,1,'civicrm/admin/pcp','context=contribute','Personal Campaign Pages','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:16:\"CRM_PCP_Page_PCP\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,362,1,0,0,'a:2:{s:4:\"desc\";s:49:\"View and manage existing personal campaign pages.\";s:10:\"adminGroup\";s:14:\"CiviContribute\";}'),
+ (17,1,'civicrm/activity','action=add&context=standalone','New Activity','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Activity_Form_Activity\";','s:14:\"attachUpload=1\";','a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (18,1,'civicrm/activity/view',NULL,'View Activity','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:30:\"CRM_Activity_Form_ActivityView\";','s:14:\"attachUpload=1\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:12:\"New Activity\";s:3:\"url\";s:63:\"/civicrm/activity?reset=1&action=add&context=standalone\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (19,1,'civicrm/ajax/activity',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:22:\"CRM_Activity_Page_AJAX\";i:1;s:15:\"getCaseActivity\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (20,1,'civicrm/ajax/globalrelationships',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:22:\"CRM_Activity_Page_AJAX\";i:1;s:26:\"getCaseGlobalRelationships\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (21,1,'civicrm/ajax/clientrelationships',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:22:\"CRM_Activity_Page_AJAX\";i:1;s:26:\"getCaseClientRelationships\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (22,1,'civicrm/ajax/caseroles',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:22:\"CRM_Activity_Page_AJAX\";i:1;s:12:\"getCaseRoles\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (23,1,'civicrm/ajax/contactactivity',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:22:\"CRM_Activity_Page_AJAX\";i:1;s:18:\"getContactActivity\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (24,1,'civicrm/ajax/activity/convert',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:22:\"CRM_Activity_Page_AJAX\";i:1;s:21:\"convertToCaseActivity\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,3,0,'a:0:{}'),
+ (25,1,'civicrm/activity/search',NULL,'Find Activities','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:30:\"CRM_Activity_Controller_Search\";','s:14:\"attachUpload=1\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:12:\"New Activity\";s:3:\"url\";s:63:\"/civicrm/activity?reset=1&action=add&context=standalone\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (26,1,'civicrm/upgrade',NULL,'Upgrade CiviCRM','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:24:\"CRM_Upgrade_Page_Upgrade\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (27,1,'civicrm/export',NULL,'Download Errors','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Export_BAO_Export\";i:1;s:6:\"invoke\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (28,1,'civicrm/export/contact',NULL,'Export Contacts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Export_BAO_Export\";i:1;s:6:\"invoke\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Download Errors\";s:3:\"url\";s:23:\"/civicrm/export?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,0,1,0,0,'a:0:{}'),
+ (29,1,'civicrm/export/standalone',NULL,'Export','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:32:\"CRM_Export_Controller_Standalone\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Download Errors\";s:3:\"url\";s:23:\"/civicrm/export?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (30,1,'civicrm/admin/options/acl_role',NULL,'ACL Roles','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
+ (31,1,'civicrm/acl',NULL,'Manage ACLs','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:16:\"CRM_ACL_Page_ACL\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (32,1,'civicrm/acl/edit',NULL,'Manage ACLs','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:16:\"CRM_ACL_Form_ACL\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:11:\"Manage ACLs\";s:3:\"url\";s:20:\"/civicrm/acl?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (33,1,'civicrm/acl/delete',NULL,'Manage ACLs','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:16:\"CRM_ACL_Form_ACL\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:11:\"Manage ACLs\";s:3:\"url\";s:20:\"/civicrm/acl?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (34,1,'civicrm/acl/entityrole',NULL,'Assign Users to ACL Roles','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:23:\"CRM_ACL_Page_EntityRole\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:11:\"Manage ACLs\";s:3:\"url\";s:20:\"/civicrm/acl?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (35,1,'civicrm/acl/entityrole/edit',NULL,'Assign Users to ACL Roles','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:23:\"CRM_ACL_Form_EntityRole\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:11:\"Manage ACLs\";s:3:\"url\";s:20:\"/civicrm/acl?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Assign Users to ACL Roles\";s:3:\"url\";s:31:\"/civicrm/acl/entityrole?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (36,1,'civicrm/file',NULL,'Browse Uploaded files','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access uploaded files\";}i:1;s:3:\"and\";}','s:18:\"CRM_Core_Page_File\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (37,1,'civicrm/file/delete',NULL,'Delete File','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:17:\"CRM_Core_BAO_File\";i:1;s:16:\"deleteAttachment\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:21:\"Browse Uploaded files\";s:3:\"url\";s:21:\"/civicrm/file?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (38,1,'civicrm/friend',NULL,'Tell a Friend','s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:15:\"CRM_Friend_Form\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,1,1,0,0,'a:0:{}'),
+ (39,1,'civicrm/logout',NULL,'Log out','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:16:\"CRM_Utils_System\";i:1;s:6:\"logout\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,9999,1,1,0,'a:0:{}'),
+ (40,1,'civicrm/i18n',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:17:\"translate CiviCRM\";}i:1;s:3:\"and\";}','s:18:\"CRM_Core_I18n_Form\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (41,1,'civicrm/ajax/attachment',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"access AJAX API\";}i:1;s:2:\"or\";}','a:2:{i:0;s:29:\"CRM_Core_Page_AJAX_Attachment\";i:1;s:10:\"attachFile\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (42,1,'civicrm/api',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Core_Page_Redirect\";','s:16:\"url=civicrm/api3\";','a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (43,1,'civicrm/api3',NULL,'CiviCRM API v3','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Admin_Page_APIExplorer\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (44,1,'civicrm/ajax/apidoc',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:26:\"CRM_Admin_Page_APIExplorer\";i:1;s:6:\"getDoc\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (45,1,'civicrm/ajax/rest',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"access AJAX API\";}i:1;s:2:\"or\";}','a:2:{i:0;s:14:\"CRM_Utils_REST\";i:1;s:4:\"ajax\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (46,1,'civicrm/api/json',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:14:\"CRM_Utils_REST\";i:1;s:8:\"ajaxJson\";}','s:16:\"url=civicrm/api3\";','a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (47,1,'civicrm/inline',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:14:\"CRM_Utils_REST\";i:1;s:12:\"loadTemplate\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (48,1,'civicrm/ajax/chart',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:38:\"CRM_Contribute_Form_ContributionCharts\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (49,1,'civicrm/asset/builder',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"*always allow*\";}i:1;s:3:\"and\";}','a:2:{i:0;s:23:\"\\Civi\\Core\\AssetBuilder\";i:1;s:7:\"pageRun\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,1,1,0,0,'a:0:{}'),
+ (50,1,'civicrm/contribute/ajax/tableview',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Contribute_Page_DashBoard\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (51,1,'civicrm/payment/ipn',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','a:2:{i:0;s:16:\"CRM_Core_Payment\";i:1;s:9:\"handleIPN\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:11:\"New Payment\";s:3:\"url\";s:39:\"/civicrm/payment?reset=1&action=add\";}}',NULL,NULL,2,1,1,1,0,1,1,0,0,'a:0:{}'),
+ (52,1,'civicrm/batch',NULL,'Batch Data Entry','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:20:\"CRM_Batch_Page_Batch\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (53,1,'civicrm/batch/add',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:20:\"CRM_Batch_Form_Batch\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:16:\"Batch Data Entry\";s:3:\"url\";s:22:\"/civicrm/batch?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (54,1,'civicrm/batch/entry',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:20:\"CRM_Batch_Form_Entry\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:16:\"Batch Data Entry\";s:3:\"url\";s:22:\"/civicrm/batch?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (55,1,'civicrm/ajax/batch',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','a:2:{i:0;s:19:\"CRM_Batch_Page_AJAX\";i:1;s:9:\"batchSave\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (56,1,'civicrm/ajax/batchlist',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:19:\"CRM_Batch_Page_AJAX\";i:1;s:12:\"getBatchList\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (57,1,'civicrm/ajax/inline',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:18:\"CRM_Core_Page_AJAX\";i:1;s:3:\"run\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (58,1,'civicrm/dev/qunit',NULL,'QUnit','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:19:\"CRM_Core_Page_QUnit\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (59,1,'civicrm/dev/fake-error',NULL,'Fake Error','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"*always allow*\";}i:1;s:3:\"and\";}','s:23:\"CRM_Core_Page_FakeError\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,1,1,0,0,'a:0:{}'),
+ (60,1,'civicrm/profile-editor/schema',NULL,'ProfileEditor','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:25:\"CRM_UF_Page_ProfileEditor\";i:1;s:13:\"getSchemaJSON\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (61,1,'civicrm/a',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:23:\"\\Civi\\Angular\\Page\\Main\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (62,1,'civicrm/ajax/angular-modules',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"*always allow*\";}i:1;s:3:\"and\";}','s:26:\"\\Civi\\Angular\\Page\\Modules\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (63,1,'civicrm/ajax/recurringentity/update-mode',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:34:\"CRM_Core_Page_AJAX_RecurringEntity\";i:1;s:10:\"updateMode\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (64,1,'civicrm/recurringentity/preview',NULL,'Confirm dates','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:36:\"CRM_Core_Page_RecurringEntityPreview\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (65,1,'civicrm/shortcode',NULL,'Insert CiviCRM Content','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:23:\"CRM_Core_Form_ShortCode\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (66,1,'civicrm/task/add-to-group',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:32:\"CRM_Contact_Form_Task_AddToGroup\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (67,1,'civicrm/task/remove-from-group',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:37:\"CRM_Contact_Form_Task_RemoveFromGroup\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (68,1,'civicrm/task/add-to-tag',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:30:\"CRM_Contact_Form_Task_AddToTag\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (69,1,'civicrm/task/remove-from-tag',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:35:\"CRM_Contact_Form_Task_RemoveFromTag\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (70,1,'civicrm/task/send-email',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:27:\"CRM_Contact_Form_Task_Email\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (71,1,'civicrm/task/make-mailing-label',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:27:\"CRM_Contact_Form_Task_Label\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (72,1,'civicrm/task/pick-profile',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:33:\"CRM_Contact_Form_Task_PickProfile\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (73,1,'civicrm/task/print-document',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:25:\"CRM_Contact_Form_Task_PDF\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (74,1,'civicrm/task/unhold-email',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:28:\"CRM_Contact_Form_Task_Unhold\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (75,1,'civicrm/task/alter-contact-preference',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:38:\"CRM_Contact_Form_Task_AlterPreferences\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (76,1,'civicrm/task/delete-contact',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:28:\"CRM_Contact_Form_Task_Delete\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (77,1,'civicrm/task/add-activity',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Activity_Form_Activity\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (78,1,'civicrm/note',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:18:\"CRM_Note_Form_Note\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (79,1,'civicrm/ajax/api4',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:18:\"CRM_Api4_Page_AJAX\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (80,1,'civicrm/api4',NULL,'CiviCRM','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Api4_Page_Api4Explorer\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (81,1,'civicrm/import',NULL,'Import','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:15:\"import contacts\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:21:\"CRM_Import_Controller\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,400,1,1,0,'a:0:{}'),
+ (82,1,'civicrm/import/contact',NULL,'Import Contacts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:15:\"import contacts\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:21:\"CRM_Import_Controller\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:6:\"Import\";s:3:\"url\";s:23:\"/civicrm/import?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,410,1,1,0,'a:0:{}'),
+ (83,1,'civicrm/import/contact/summary',NULL,'Import Contacts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:31:\"CRM_Contact_Import_Form_Summary\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:6:\"Import\";s:3:\"url\";s:23:\"/civicrm/import?reset=1\";}i:2;a:2:{s:5:\"title\";s:15:\"Import Contacts\";s:3:\"url\";s:31:\"/civicrm/import/contact?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,410,1,1,0,'a:0:{}'),
+ (84,1,'civicrm/import/outcome',NULL,'Import results','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:16:\"CRM_Import_Forms\";i:1;s:9:\"outputCSV\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:6:\"Import\";s:3:\"url\";s:23:\"/civicrm/import?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (85,1,'civicrm/import/activity',NULL,'Import Activities','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:15:\"import contacts\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:21:\"CRM_Import_Controller\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:6:\"Import\";s:3:\"url\";s:23:\"/civicrm/import?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,420,1,1,0,'a:0:{}'),
+ (86,1,'civicrm/import/contribution',NULL,'Import Contributions','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:21:\"access CiviContribute\";i:1;s:18:\"edit contributions\";}i:1;s:3:\"and\";}','s:21:\"CRM_Import_Controller\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:6:\"Import\";s:3:\"url\";s:23:\"/civicrm/import?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,520,1,1,0,'a:0:{}'),
+ (87,1,'civicrm/import/custom','id=%%id%%','Import Multi-value Custom Data','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:21:\"CRM_Import_Controller\";','s:30:\"class_prefix=CRM_Custom_Import\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:6:\"Import\";s:3:\"url\";s:23:\"/civicrm/import?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,420,1,1,0,'a:0:{}'),
+ (88,1,'civicrm/ajax/status',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:15:\"import contacts\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:28:\"CRM_Contact_Import_Page_AJAX\";i:1;s:6:\"status\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (89,1,'civicrm/import/datasource',NULL,'Import','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:32:\"CRM_Import_Form_DataSourceConfig\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:6:\"Import\";s:3:\"url\";s:23:\"/civicrm/import?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,450,1,1,0,'a:0:{}'),
+ (90,1,'civicrm',NULL,'CiviCRM','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Contact_Page_DashBoard\";',NULL,'a:0:{}',NULL,NULL,NULL,1,0,1,0,0,1,0,0,'a:0:{}'),
+ (91,1,'civicrm/dashboard',NULL,'CiviCRM Home','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Contact_Page_DashBoard\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,0,1,1,0,'a:0:{}'),
+ (92,1,'civicrm/contact/search',NULL,'Find Contacts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Contact_Controller_Search\";','s:8:\"mode=256\";','a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,10,1,1,0,'a:0:{}'),
+ (93,1,'civicrm/contact/image',NULL,'Process Uploaded Images','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access uploaded files\";}i:1;s:3:\"and\";}','a:2:{i:0;s:23:\"CRM_Contact_BAO_Contact\";i:1;s:12:\"processImage\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (94,1,'civicrm/contact/imagefile',NULL,'Get Image File','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"*always allow*\";}i:1;s:3:\"and\";}','s:26:\"CRM_Contact_Page_ImageFile\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (95,1,'civicrm/contact/search/basic',NULL,'Find Contacts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Contact_Controller_Search\";','s:8:\"mode=256\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:13:\"Find Contacts\";s:3:\"url\";s:31:\"/civicrm/contact/search?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (96,1,'civicrm/contact/search/advanced',NULL,'Advanced Search','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Contact_Controller_Search\";','s:8:\"mode=512\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:13:\"Find Contacts\";s:3:\"url\";s:31:\"/civicrm/contact/search?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,12,1,1,0,'a:0:{}'),
+ (97,1,'civicrm/contact/search/builder',NULL,'Search Builder','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Contact_Controller_Search\";','s:9:\"mode=8192\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:13:\"Find Contacts\";s:3:\"url\";s:31:\"/civicrm/contact/search?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,14,1,1,0,'a:0:{}'),
+ (98,1,'civicrm/contact/add',NULL,'New Contact','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:24:\"CRM_Contact_Form_Contact\";','s:13:\"addSequence=1\";','a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (99,1,'civicrm/contact/add/individual','ct=Individual','New Individual','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:12:\"add contacts\";}i:1;s:3:\"and\";}','s:24:\"CRM_Contact_Form_Contact\";','s:13:\"addSequence=1\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:11:\"New Contact\";s:3:\"url\";s:28:\"/civicrm/contact/add?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (100,1,'civicrm/contact/add/household','ct=Household','New Household','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:12:\"add contacts\";}i:1;s:3:\"and\";}','s:24:\"CRM_Contact_Form_Contact\";','s:13:\"addSequence=1\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:11:\"New Contact\";s:3:\"url\";s:28:\"/civicrm/contact/add?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (101,1,'civicrm/contact/add/organization','ct=Organization','New Organization','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:12:\"add contacts\";}i:1;s:3:\"and\";}','s:24:\"CRM_Contact_Form_Contact\";','s:13:\"addSequence=1\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:11:\"New Contact\";s:3:\"url\";s:28:\"/civicrm/contact/add?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (102,1,'civicrm/contact/relatedcontact',NULL,'Edit Related Contact','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:24:\"access Contact Dashboard\";}i:1;s:3:\"and\";}','s:31:\"CRM_Contact_Form_RelatedContact\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,1,1,0,0,'a:0:{}'),
+ (103,1,'civicrm/contact/merge',NULL,'Merge Contact','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:24:\"merge duplicate contacts\";}i:1;s:3:\"and\";}','s:22:\"CRM_Contact_Form_Merge\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (104,1,'civicrm/contact/email',NULL,'Email a Contact','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:27:\"CRM_Contact_Form_Task_Email\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (105,1,'civicrm/contact/map',NULL,'Map Location(s)','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:25:\"CRM_Contact_Form_Task_Map\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,1,1,0,0,'a:0:{}'),
+ (106,1,'civicrm/contact/map/event',NULL,'Map Event Location','s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:31:\"CRM_Contact_Form_Task_Map_Event\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Map Location(s)\";s:3:\"url\";s:28:\"/civicrm/contact/map?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,1,1,0,0,'a:0:{}'),
+ (107,1,'civicrm/contact/view','cid=%%cid%%','Contact Summary','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:29:\"CRM_Contact_Page_View_Summary\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (108,1,'civicrm/contact/view/delete',NULL,'Delete Contact','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:28:\"CRM_Contact_Form_Task_Delete\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (109,1,'civicrm/contact/view/activity','show=1,cid=%%cid%%','Activities','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:21:\"CRM_Activity_Page_Tab\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (110,1,'civicrm/activity/add','action=add','Activities','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Activity_Form_Activity\";','s:14:\"attachUpload=1\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:12:\"New Activity\";s:3:\"url\";s:63:\"/civicrm/activity?reset=1&action=add&context=standalone\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (111,1,'civicrm/activity/email/add','action=add','Activities','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:27:\"CRM_Contact_Form_Task_Email\";','s:14:\"attachUpload=1\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:12:\"New Activity\";s:3:\"url\";s:63:\"/civicrm/activity?reset=1&action=add&context=standalone\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (112,1,'civicrm/activity/pdf/add','action=add','Activities','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:25:\"CRM_Contact_Form_Task_PDF\";','s:14:\"attachUpload=1\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:12:\"New Activity\";s:3:\"url\";s:63:\"/civicrm/activity?reset=1&action=add&context=standalone\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (113,1,'civicrm/contact/view/rel','cid=%%cid%%','Relationships','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:34:\"CRM_Contact_Page_View_Relationship\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (114,1,'civicrm/contact/view/group','cid=%%cid%%','Groups','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:34:\"CRM_Contact_Page_View_GroupContact\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (115,1,'civicrm/contact/view/smartgroup','cid=%%cid%%','Smart Groups','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:39:\"CRM_Contact_Page_View_ContactSmartGroup\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (116,1,'civicrm/contact/view/tag','cid=%%cid%%','Tags','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:25:\"CRM_Contact_Page_View_Tag\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (117,1,'civicrm/contact/view/cd',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:32:\"CRM_Contact_Page_View_CustomData\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (118,1,'civicrm/contact/view/cd/edit',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:27:\"CRM_Contact_Form_CustomData\";','s:13:\"addSequence=1\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (119,1,'civicrm/contact/view/vcard',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:27:\"CRM_Contact_Page_View_Vcard\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (120,1,'civicrm/contact/view/print',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:27:\"CRM_Contact_Page_View_Print\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (121,1,'civicrm/contact/view/log',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:25:\"CRM_Contact_Page_View_Log\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (122,1,'civicrm/user',NULL,'Contact Dashboard','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:24:\"access Contact Dashboard\";}i:1;s:3:\"and\";}','s:35:\"CRM_Contact_Page_View_UserDashBoard\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,0,1,0,0,'a:0:{}'),
+ (123,1,'civicrm/dashlet/activity',NULL,'Activity Dashlet','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:25:\"CRM_Dashlet_Page_Activity\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (124,1,'civicrm/dashlet/blog',NULL,'CiviCRM Blog','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:21:\"CRM_Dashlet_Page_Blog\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (125,1,'civicrm/dashlet/getting-started',NULL,'CiviCRM Resources','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:31:\"CRM_Dashlet_Page_GettingStarted\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (126,1,'civicrm/ajax/relation',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:12:\"relationship\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,3,0,'a:0:{}'),
+ (127,1,'civicrm/ajax/groupTree',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:9:\"groupTree\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (128,1,'civicrm/ajax/customvalue',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:17:\"deleteCustomValue\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,3,0,'a:0:{}'),
+ (129,1,'civicrm/ajax/cmsuser',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:13:\"checkUserName\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (130,1,'civicrm/ajax/checkemail',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:15:\"getContactEmail\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (131,1,'civicrm/ajax/subtype',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:13:\"buildSubTypes\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (132,1,'civicrm/ajax/signature',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:12:\"getSignature\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (133,1,'civicrm/ajax/pdfFormat',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:9:\"pdfFormat\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (134,1,'civicrm/ajax/paperSize',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:9:\"paperSize\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (135,1,'civicrm/ajax/contactref',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:31:\"access contact reference fields\";i:1;s:15:\" access CiviCRM\";}i:1;s:2:\"or\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:16:\"contactReference\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (136,1,'civicrm/dashlet/myCases',NULL,'Case Dashlet','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:24:\"CRM_Dashlet_Page_MyCases\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (137,1,'civicrm/dashlet/allCases',NULL,'All Cases Dashlet','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:31:\"access all cases and activities\";}i:1;s:3:\"and\";}','s:25:\"CRM_Dashlet_Page_AllCases\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (138,1,'civicrm/dashlet/casedashboard',NULL,'Case Dashboard Dashlet','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:30:\"CRM_Dashlet_Page_CaseDashboard\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (139,1,'civicrm/contact/deduperules',NULL,'Find and Merge Duplicate Contacts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:23:\"administer dedupe rules\";i:1;s:24:\"merge duplicate contacts\";}i:1;s:2:\"or\";}','s:28:\"CRM_Contact_Page_DedupeRules\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,105,1,0,0,'a:2:{s:4:\"desc\";s:158:\"Manage the rules used to identify potentially duplicate contact records. Scan for duplicates using a selected rule and merge duplicate contact data as needed.\";s:10:\"adminGroup\";s:6:\"Manage\";}'),
+ (140,1,'civicrm/contact/dedupefind',NULL,'Find and Merge Duplicate Contacts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:24:\"merge duplicate contacts\";}i:1;s:3:\"and\";}','s:27:\"CRM_Contact_Page_DedupeFind\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (141,1,'civicrm/ajax/dedupefind',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:24:\"merge duplicate contacts\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:10:\"getDedupes\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (142,1,'civicrm/contact/dedupemerge',NULL,'Batch Merge Duplicate Contacts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:24:\"merge duplicate contacts\";}i:1;s:3:\"and\";}','s:28:\"CRM_Contact_Page_DedupeMerge\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (143,1,'civicrm/dedupe/exception',NULL,'Dedupe Exceptions','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:32:\"CRM_Contact_Page_DedupeException\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,110,1,0,0,'a:1:{s:10:\"adminGroup\";s:6:\"Manage\";}'),
+ (144,1,'civicrm/ajax/dedupeRules',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:16:\"buildDedupeRules\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (145,1,'civicrm/contact/view/useradd','cid=%%cid%%','Add User','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:29:\"CRM_Contact_Page_View_Useradd\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (146,1,'civicrm/ajax/markSelection',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:22:\"selectUnselectContacts\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (147,1,'civicrm/ajax/toggleDedupeSelect',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:24:\"merge duplicate contacts\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:18:\"toggleDedupeSelect\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (148,1,'civicrm/ajax/flipDupePairs',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:24:\"merge duplicate contacts\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:13:\"flipDupePairs\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (149,1,'civicrm/activity/sms/add','action=add','Activities','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:8:\"send SMS\";}i:1;s:3:\"and\";}','s:25:\"CRM_Contact_Form_Task_SMS\";','s:14:\"attachUpload=1\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:12:\"New Activity\";s:3:\"url\";s:63:\"/civicrm/activity?reset=1&action=add&context=standalone\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (150,1,'civicrm/ajax/contactrelationships',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"view my contact\";}i:1;s:2:\"or\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:23:\"getContactRelationships\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (151,1,'civicrm/custom/add',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Custom_Form_CustomData\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (152,1,'civicrm/ajax/optionlist',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:20:\"CRM_Custom_Page_AJAX\";i:1;s:13:\"getOptionList\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (153,1,'civicrm/ajax/reorder',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:20:\"CRM_Custom_Page_AJAX\";i:1;s:11:\"fixOrdering\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (154,1,'civicrm/ajax/multirecordfieldlist',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:20:\"CRM_Custom_Page_AJAX\";i:1;s:23:\"getMultiRecordFieldList\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (155,1,'civicrm/admin/custom/group',NULL,'Custom Data','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:23:\"administer CiviCRM data\";}i:1;s:3:\"and\";}','s:21:\"CRM_Custom_Page_Group\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,10,1,0,0,'a:2:{s:4:\"desc\";s:109:\"Configure custom fields to collect and store custom data which is not included in the standard CiviCRM forms.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),
+ (156,1,'civicrm/admin/custom/group/edit',NULL,'Configure Custom Set','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:23:\"administer CiviCRM data\";}i:1;s:3:\"and\";}','s:21:\"CRM_Custom_Form_Group\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:11:\"Custom Data\";s:3:\"url\";s:35:\"/civicrm/admin/custom/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
+ (157,1,'civicrm/admin/custom/group/preview',NULL,'Custom Field Preview','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:23:\"administer CiviCRM data\";}i:1;s:3:\"and\";}','s:23:\"CRM_Custom_Form_Preview\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:11:\"Custom Data\";s:3:\"url\";s:35:\"/civicrm/admin/custom/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
+ (158,1,'civicrm/admin/custom/group/delete',NULL,'Delete Custom Set','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:23:\"administer CiviCRM data\";}i:1;s:3:\"and\";}','s:27:\"CRM_Custom_Form_DeleteGroup\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:11:\"Custom Data\";s:3:\"url\";s:35:\"/civicrm/admin/custom/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
+ (159,1,'civicrm/admin/custom/group/field',NULL,'Custom Data Fields','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:23:\"administer CiviCRM data\";}i:1;s:3:\"and\";}','s:21:\"CRM_Custom_Page_Field\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:11:\"Custom Data\";s:3:\"url\";s:35:\"/civicrm/admin/custom/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,11,1,0,0,'a:0:{}'),
+ (160,1,'civicrm/admin/custom/group/field/delete',NULL,'Delete Custom Field','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:23:\"administer CiviCRM data\";}i:1;s:3:\"and\";}','s:27:\"CRM_Custom_Form_DeleteField\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:11:\"Custom Data\";s:3:\"url\";s:35:\"/civicrm/admin/custom/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
+ (161,1,'civicrm/admin/custom/group/field/option',NULL,'Custom Field - Options','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:23:\"administer CiviCRM data\";}i:1;s:3:\"and\";}','s:22:\"CRM_Custom_Page_Option\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:11:\"Custom Data\";s:3:\"url\";s:35:\"/civicrm/admin/custom/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
+ (162,1,'civicrm/admin/custom/group/field/add',NULL,'Custom Field - Add','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:23:\"administer CiviCRM data\";}i:1;s:3:\"and\";}','s:21:\"CRM_Custom_Form_Field\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:11:\"Custom Data\";s:3:\"url\";s:35:\"/civicrm/admin/custom/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
+ (163,1,'civicrm/admin/custom/group/field/update',NULL,'Custom Field - Edit','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:23:\"administer CiviCRM data\";}i:1;s:3:\"and\";}','s:21:\"CRM_Custom_Form_Field\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:11:\"Custom Data\";s:3:\"url\";s:35:\"/civicrm/admin/custom/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
+ (164,1,'civicrm/admin/custom/group/field/move',NULL,'Custom Field - Move','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:23:\"administer CiviCRM data\";}i:1;s:3:\"and\";}','s:25:\"CRM_Custom_Form_MoveField\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:11:\"Custom Data\";s:3:\"url\";s:35:\"/civicrm/admin/custom/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
+ (165,1,'civicrm/admin/uf/group',NULL,'Profiles','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:17:\"CRM_UF_Page_Group\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,20,1,0,0,'a:2:{s:4:\"desc\";s:151:\"Profiles allow you to aggregate groups of fields and include them in your site as input forms, contact display pages, and search and listings features.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),
+ (166,1,'civicrm/admin/uf/group/preview',NULL,'Preview','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:19:\"CRM_UF_Form_Preview\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:8:\"Profiles\";s:3:\"url\";s:31:\"/civicrm/admin/uf/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
+ (167,1,'civicrm/admin/uf/group/field',NULL,'CiviCRM Profile Fields','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:17:\"CRM_UF_Page_Field\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:8:\"Profiles\";s:3:\"url\";s:31:\"/civicrm/admin/uf/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,21,1,0,0,'a:0:{}'),
+ (168,1,'civicrm/admin/uf/group/field/add',NULL,'Add Field','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:17:\"CRM_UF_Form_Field\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:8:\"Profiles\";s:3:\"url\";s:31:\"/civicrm/admin/uf/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,22,1,0,0,'a:0:{}'),
+ (169,1,'civicrm/admin/uf/group/field/update',NULL,'Edit Field','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:17:\"CRM_UF_Form_Field\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:8:\"Profiles\";s:3:\"url\";s:31:\"/civicrm/admin/uf/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,23,1,0,0,'a:0:{}'),
+ (170,1,'civicrm/admin/uf/group/add',NULL,'New CiviCRM Profile','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:17:\"CRM_UF_Form_Group\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:8:\"Profiles\";s:3:\"url\";s:31:\"/civicrm/admin/uf/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,24,1,0,0,'a:0:{}'),
+ (171,1,'civicrm/admin/uf/group/update',NULL,'Profile Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:17:\"CRM_UF_Form_Group\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:8:\"Profiles\";s:3:\"url\";s:31:\"/civicrm/admin/uf/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,25,1,0,0,'a:0:{}'),
+ (172,1,'civicrm/admin/uf/group/copy',NULL,'Profile Copy','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:17:\"CRM_UF_Page_Group\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:8:\"Profiles\";s:3:\"url\";s:31:\"/civicrm/admin/uf/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,26,1,0,0,'a:0:{}'),
+ (173,1,'civicrm/admin/uf/group/setting',NULL,'AdditionalInfo Form','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_UF_Form_AdvanceSetting\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:8:\"Profiles\";s:3:\"url\";s:31:\"/civicrm/admin/uf/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,0,1,0,0,'a:0:{}'),
+ (174,1,'civicrm/admin/options/activity_type',NULL,'Activity Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,30,1,0,0,'a:2:{s:4:\"desc\";s:155:\"CiviCRM has several built-in activity types (meetings, phone calls, emails sent). Track other types of interactions by creating custom activity types here.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),
+ (175,1,'civicrm/admin/reltype',NULL,'Relationship Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:31:\"CRM_Admin_Page_RelationshipType\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,35,1,0,0,'a:2:{s:4:\"desc\";s:148:\"Contacts can be linked to each other through Relationships (e.g. Spouse, Employer, etc.). Define the types of relationships you want to record here.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),
+ (176,1,'civicrm/admin/reltype/edit',NULL,'Edit Relationship Type','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:31:\"CRM_Admin_Form_RelationshipType\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:18:\"Relationship Types\";s:3:\"url\";s:30:\"/civicrm/admin/reltype?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
+ (177,1,'civicrm/admin/options/subtype',NULL,'Contact Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Admin_Page_ContactType\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,40,1,0,0,'a:1:{s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),
+ (178,1,'civicrm/admin/options/subtype/edit',NULL,'Edit Contact Type','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Admin_Form_ContactType\";',NULL,'a:4:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}i:3;a:2:{s:5:\"title\";s:13:\"Contact Types\";s:3:\"url\";s:38:\"/civicrm/admin/options/subtype?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
+ (179,1,'civicrm/admin/options/gender',NULL,'Gender Options','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,45,1,0,0,'a:2:{s:4:\"desc\";s:79:\"Options for assigning gender to individual contacts (e.g. Male, Female, Other).\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),
+ (180,1,'civicrm/admin/options/individual_prefix',NULL,'Individual Prefixes (Ms, Mr...)','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,50,1,0,0,'a:2:{s:4:\"desc\";s:66:\"Options for individual contact prefixes (e.g. Ms., Mr., Dr. etc.).\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),
+ (181,1,'civicrm/admin/options/individual_suffix',NULL,'Individual Suffixes (Jr, Sr...)','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,55,1,0,0,'a:2:{s:4:\"desc\";s:61:\"Options for individual contact suffixes (e.g. Jr., Sr. etc.).\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),
+ (182,1,'civicrm/admin/locationType',NULL,'Location Types (Home, Work...)','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:27:\"CRM_Admin_Page_LocationType\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,60,1,0,0,'a:2:{s:4:\"desc\";s:94:\"Options for categorizing contact addresses and phone numbers (e.g. Home, Work, Billing, etc.).\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),
+ (183,1,'civicrm/admin/locationType/edit',NULL,'Edit Location Type','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:27:\"CRM_Admin_Form_LocationType\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:30:\"Location Types (Home, Work...)\";s:3:\"url\";s:35:\"/civicrm/admin/locationType?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
+ (184,1,'civicrm/admin/options/website_type',NULL,'Website Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,65,1,0,0,'a:2:{s:4:\"desc\";s:48:\"Options for assigning website types to contacts.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),
+ (185,1,'civicrm/admin/options/instant_messenger_service',NULL,'Instant Messenger Services','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,70,1,0,0,'a:2:{s:4:\"desc\";s:79:\"List of IM services which can be used when recording screen-names for contacts.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),
+ (186,1,'civicrm/admin/options/mobile_provider',NULL,'Mobile Phone Providers','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,75,1,0,0,'a:2:{s:4:\"desc\";s:90:\"List of mobile phone providers which can be assigned when recording contact phone numbers.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),
+ (187,1,'civicrm/admin/options/phone_type',NULL,'Phone Type','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,80,1,0,0,'a:2:{s:4:\"desc\";s:80:\"Options for assigning phone type to contacts (e.g Phone,\n Mobile, Fax, Pager)\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),
+ (188,1,'civicrm/admin/setting/preferences/display',NULL,'Display Preferences','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:34:\"CRM_Admin_Form_Preferences_Display\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,90,1,0,0,'a:1:{s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),
+ (189,1,'civicrm/admin/setting/search',NULL,'Search Preferences','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Admin_Form_Setting_Search\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,95,1,0,0,'a:1:{s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),
+ (190,1,'civicrm/admin/setting/preferences/date/edit',NULL,'Date Preferences','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:30:\"CRM_Admin_Form_PreferencesDate\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:21:\"View Date Preferences\";s:3:\"url\";s:47:\"/civicrm/admin/setting/preferences/date?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,97,1,0,0,'a:1:{s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),
+ (191,1,'civicrm/admin/menu',NULL,'Navigation Menu','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:25:\"CRM_Admin_Page_Navigation\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,100,1,0,0,'a:2:{s:4:\"desc\";s:79:\"Add or remove menu items, and modify the order of items on the navigation menu.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),
+ (192,1,'civicrm/admin/options/wordreplacements',NULL,'Word Replacements','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:31:\"CRM_Admin_Form_WordReplacements\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,105,1,0,0,'a:2:{s:4:\"desc\";s:18:\"Word Replacements.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),
+ (193,1,'civicrm/admin/options/custom_search',NULL,'Manage Custom Searches','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,110,1,0,0,'a:2:{s:4:\"desc\";s:225:\"Developers and accidental techies with a bit of PHP and SQL knowledge can create new search forms to handle specific search and reporting needs which aren\'t covered by the built-in Advanced Search and Search Builder features.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),
+ (194,1,'civicrm/admin/domain','action=update','Organization Address and Contact Info','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:23:\"CRM_Contact_Form_Domain\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,10,1,0,0,'a:2:{s:4:\"desc\";s:150:\"Configure primary contact name, email, return-path and address information. This information is used by CiviMail to identify the sending organization.\";s:10:\"adminGroup\";s:14:\"Communications\";}'),
+ (195,1,'civicrm/admin/options/from_email_address',NULL,'From Email Addresses','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,20,1,0,0,'a:2:{s:4:\"desc\";s:74:\"List of Email Addresses which can be used when sending emails to contacts.\";s:10:\"adminGroup\";s:14:\"Communications\";}'),
+ (196,1,'civicrm/admin/messageTemplates',NULL,'Message Templates','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:22:\"edit message templates\";i:1;s:34:\"edit user-driven message templates\";i:2;s:38:\"edit system workflow message templates\";}i:1;s:2:\"or\";}','s:31:\"CRM_Admin_Page_MessageTemplates\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,30,1,0,0,'a:2:{s:4:\"desc\";s:130:\"Message templates allow you to save and re-use messages with layouts which you can use when sending email to one or more contacts.\";s:10:\"adminGroup\";s:14:\"Communications\";}'),
+ (197,1,'civicrm/admin/messageTemplates/add',NULL,'Message Templates','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:22:\"edit message templates\";i:1;s:34:\"edit user-driven message templates\";i:2;s:38:\"edit system workflow message templates\";}i:1;s:2:\"or\";}','s:31:\"CRM_Admin_Form_MessageTemplates\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:17:\"Message Templates\";s:3:\"url\";s:39:\"/civicrm/admin/messageTemplates?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,262,1,0,0,'a:1:{s:4:\"desc\";s:26:\"Add/Edit Message Templates\";}'),
+ (198,1,'civicrm/admin/scheduleReminders',NULL,'Schedule Reminders','s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:23:\"administer CiviCRM data\";}i:1;s:3:\"and\";}','s:32:\"CRM_Admin_Page_ScheduleReminders\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,40,1,0,0,'a:2:{s:4:\"desc\";s:19:\"Schedule Reminders.\";s:10:\"adminGroup\";s:14:\"Communications\";}'),
+ (199,1,'civicrm/admin/scheduleReminders/edit',NULL,'Schedule Reminders','s:1:\"1\";','a:2:{i:0;a:2:{i:0;s:23:\"administer CiviCRM data\";i:1;s:15:\"edit all events\";}i:1;s:2:\"or\";}','s:32:\"CRM_Admin_Form_ScheduleReminders\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:18:\"Schedule Reminders\";s:3:\"url\";s:40:\"/civicrm/admin/scheduleReminders?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
+ (200,1,'civicrm/admin/weight',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:16:\"CRM_Utils_Weight\";i:1;s:8:\"fixOrder\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
+ (201,1,'civicrm/admin/options/preferred_communication_method',NULL,'Preferred Communication Methods','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,50,1,0,0,'a:2:{s:4:\"desc\";s:117:\"One or more preferred methods of communication can be assigned to each contact. Customize the available options here.\";s:10:\"adminGroup\";s:14:\"Communications\";}'),
+ (202,1,'civicrm/admin/labelFormats',NULL,'Label Page Formats','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:27:\"CRM_Admin_Page_LabelFormats\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,60,1,0,0,'a:2:{s:4:\"desc\";s:82:\"Configure label sizes and page layouts that are used when printing mailing labels.\";s:10:\"adminGroup\";s:14:\"Communications\";}'),
+ (203,1,'civicrm/admin/labelFormats/edit',NULL,'Label Page Formats','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:27:\"CRM_Admin_Page_LabelFormats\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:18:\"Label Page Formats\";s:3:\"url\";s:35:\"/civicrm/admin/labelFormats?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
+ (204,1,'civicrm/admin/pdfFormats',NULL,'Print Page (PDF) Formats','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:25:\"CRM_Admin_Page_PdfFormats\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,70,1,0,0,'a:2:{s:4:\"desc\";s:95:\"Configure PDF Page Formats that can be assigned to Message Templates when creating PDF letters.\";s:10:\"adminGroup\";s:14:\"Communications\";}'),
+ (205,1,'civicrm/admin/pdfFormats/edit',NULL,'Print Page (PDF) Formats','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:25:\"CRM_Admin_Page_PdfFormats\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:24:\"Print Page (PDF) Formats\";s:3:\"url\";s:33:\"/civicrm/admin/pdfFormats?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
+ (206,1,'civicrm/admin/options/communication_style',NULL,'Communication Style Options','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,75,1,0,0,'a:2:{s:4:\"desc\";s:42:\"Options for Communication Style selection.\";s:10:\"adminGroup\";s:14:\"Communications\";}'),
+ (207,1,'civicrm/admin/options/email_greeting',NULL,'Email Greeting Formats','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,80,1,0,0,'a:2:{s:4:\"desc\";s:75:\"Options for assigning email greetings to individual and household contacts.\";s:10:\"adminGroup\";s:14:\"Communications\";}'),
+ (208,1,'civicrm/admin/options/postal_greeting',NULL,'Postal Greeting Formats','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,90,1,0,0,'a:2:{s:4:\"desc\";s:76:\"Options for assigning postal greetings to individual and household contacts.\";s:10:\"adminGroup\";s:14:\"Communications\";}'),
+ (209,1,'civicrm/admin/options/addressee',NULL,'Addressee Formats','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,100,1,0,0,'a:2:{s:4:\"desc\";s:83:\"Options for assigning addressee to individual, household and organization contacts.\";s:10:\"adminGroup\";s:14:\"Communications\";}'),
+ (210,1,'civicrm/admin/setting/localization',NULL,'Languages, Currency, Locations','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:35:\"CRM_Admin_Form_Setting_Localization\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,10,1,0,0,'a:1:{s:10:\"adminGroup\";s:12:\"Localization\";}'),
+ (211,1,'civicrm/admin/setting/preferences/address',NULL,'Address Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:34:\"CRM_Admin_Form_Preferences_Address\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,20,1,0,0,'a:1:{s:10:\"adminGroup\";s:12:\"Localization\";}'),
+ (212,1,'civicrm/admin/setting/date',NULL,'Date Formats','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:27:\"CRM_Admin_Form_Setting_Date\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,30,1,0,0,'a:1:{s:10:\"adminGroup\";s:12:\"Localization\";}'),
+ (213,1,'civicrm/admin/options/languages',NULL,'Preferred Languages','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,40,1,0,0,'a:2:{s:4:\"desc\";s:30:\"Options for contact languages.\";s:10:\"adminGroup\";s:12:\"Localization\";}'),
+ (214,1,'civicrm/admin/access',NULL,'Access Control','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:21:\"CRM_Admin_Page_Access\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,10,1,0,0,'a:2:{s:4:\"desc\";s:73:\"Grant or deny access to actions (view, edit...), features and components.\";s:10:\"adminGroup\";s:21:\"Users and Permissions\";}'),
+ (215,1,'civicrm/admin/access/wp-permissions',NULL,'WordPress Access Control','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:34:\"CRM_ACL_Form_WordPress_Permissions\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:14:\"Access Control\";s:3:\"url\";s:29:\"/civicrm/admin/access?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,10,1,0,0,'a:1:{s:4:\"desc\";s:65:\"Grant access to CiviCRM components and other CiviCRM permissions.\";}'),
+ (216,1,'civicrm/admin/synchUser',NULL,'Synchronize Users to Contacts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Form_CMSUser\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,20,1,0,0,'a:2:{s:4:\"desc\";s:71:\"Automatically create a CiviCRM contact record for each CMS user record.\";s:10:\"adminGroup\";s:21:\"Users and Permissions\";}'),
+ (217,1,'civicrm/admin/configtask',NULL,'Configuration Checklist','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Admin_Page_ConfigTaskList\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}','civicrm/admin/configtask',NULL,NULL,1,0,1,1,1,1,0,0,'a:2:{s:4:\"desc\";s:55:\"List of configuration tasks with links to each setting.\";s:10:\"adminGroup\";s:15:\"System Settings\";}'),
+ (218,1,'civicrm/admin/setting/component',NULL,'Enable CiviCRM Components','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:32:\"CRM_Admin_Form_Setting_Component\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,10,1,0,0,'a:2:{s:4:\"desc\";s:269:\"Enable or disable components (e.g. CiviEvent, CiviMember, etc.) for your site based on the features you need. We recommend disabling any components not being used in order to simplify the user interface. You can easily re-enable components at any time from this screen.\";s:10:\"adminGroup\";s:15:\"System Settings\";}'),
+ (219,1,'civicrm/admin/extensions',NULL,'Manage Extensions','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"administer CiviCRM system\";}i:1;s:3:\"and\";}','s:25:\"CRM_Admin_Page_Extensions\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,120,1,0,0,'a:2:{s:4:\"desc\";s:0:\"\";s:10:\"adminGroup\";s:15:\"System Settings\";}'),
+ (220,1,'civicrm/admin/extensions/upgrade',NULL,'Database Upgrades','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"administer CiviCRM system\";}i:1;s:3:\"and\";}','s:32:\"CRM_Admin_Page_ExtensionsUpgrade\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:17:\"Manage Extensions\";s:3:\"url\";s:33:\"/civicrm/admin/extensions?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
+ (221,1,'civicrm/admin/setting/smtp',NULL,'Outbound Email Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"administer CiviCRM system\";}i:1;s:3:\"and\";}','s:27:\"CRM_Admin_Form_Setting_Smtp\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,20,1,0,0,'a:1:{s:10:\"adminGroup\";s:15:\"System Settings\";}'),
+ (222,1,'civicrm/admin/paymentProcessor',NULL,'Settings - Payment Processor','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:29:\"administer payment processors\";}i:1;s:3:\"and\";}','s:31:\"CRM_Admin_Page_PaymentProcessor\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,30,1,0,0,'a:2:{s:4:\"desc\";s:48:\"Payment Processor setup for CiviCRM transactions\";s:10:\"adminGroup\";s:15:\"System Settings\";}'),
+ (223,1,'civicrm/admin/paymentProcessor/edit',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:29:\"administer payment processors\";}i:1;s:3:\"and\";}','s:31:\"CRM_Admin_Form_PaymentProcessor\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:28:\"Settings - Payment Processor\";s:3:\"url\";s:39:\"/civicrm/admin/paymentProcessor?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
+ (224,1,'civicrm/admin/setting/mapping',NULL,'Mapping and Geocoding','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:30:\"CRM_Admin_Form_Setting_Mapping\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,40,1,0,0,'a:1:{s:10:\"adminGroup\";s:15:\"System Settings\";}'),
+ (225,1,'civicrm/admin/setting/misc',NULL,'Misc (Undelete, PDFs, Limits, Logging, etc.)','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:36:\"CRM_Admin_Form_Setting_Miscellaneous\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,50,1,0,0,'a:2:{s:4:\"desc\";s:63:\"Enable undelete/move to trash feature, detailed change logging.\";s:10:\"adminGroup\";s:15:\"System Settings\";}'),
+ (226,1,'civicrm/admin/setting/path',NULL,'Directories','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:27:\"CRM_Admin_Form_Setting_Path\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,60,1,0,0,'a:1:{s:10:\"adminGroup\";s:15:\"System Settings\";}'),
+ (227,1,'civicrm/admin/setting/url',NULL,'Resource URLs','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Admin_Form_Setting_Url\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,70,1,0,0,'a:1:{s:10:\"adminGroup\";s:15:\"System Settings\";}'),
+ (228,1,'civicrm/admin/setting/updateConfigBackend',NULL,'Cleanup Caches and Update Paths','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:42:\"CRM_Admin_Form_Setting_UpdateConfigBackend\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,80,1,0,0,'a:2:{s:4:\"desc\";s:157:\"Reset the Base Directory Path and Base URL settings - generally when a CiviCRM site is moved to another location in the file system and/or to another domain.\";s:10:\"adminGroup\";s:15:\"System Settings\";}'),
+ (229,1,'civicrm/admin/setting/uf',NULL,'CMS Database Integration','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:25:\"CRM_Admin_Form_Setting_UF\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,90,1,0,0,'a:1:{s:10:\"adminGroup\";s:15:\"System Settings\";}'),
+ (230,1,'civicrm/admin/options/safe_file_extension',NULL,'Safe File Extension Options','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,100,1,0,0,'a:2:{s:4:\"desc\";s:44:\"File Extensions that can be considered safe.\";s:10:\"adminGroup\";s:15:\"System Settings\";}'),
+ (231,1,'civicrm/admin/options',NULL,'Option Groups','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,105,1,0,0,'a:2:{s:4:\"desc\";s:35:\"Access all meta-data option groups.\";s:10:\"adminGroup\";s:15:\"System Settings\";}'),
+ (232,1,'civicrm/admin/mapping',NULL,'Import/Export Mappings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Mapping\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,110,1,0,0,'a:2:{s:4:\"desc\";s:141:\"Import and Export mappings allow you to easily run the same job multiple times. This option allows you to rename or delete existing mappings.\";s:10:\"adminGroup\";s:15:\"System Settings\";}'),
+ (233,1,'civicrm/admin/mapping/edit',NULL,'Import/Export Mappings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Form_Mapping\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:22:\"Import/Export Mappings\";s:3:\"url\";s:30:\"/civicrm/admin/mapping?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,111,1,0,0,'a:2:{s:4:\"desc\";s:141:\"Import and Export mappings allow you to easily run the same job multiple times. This option allows you to rename or delete existing mappings.\";s:10:\"adminGroup\";s:15:\"System Settings\";}'),
+ (234,1,'civicrm/admin/setting/debug',NULL,'Debugging','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:32:\"CRM_Admin_Form_Setting_Debugging\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,120,1,0,0,'a:1:{s:10:\"adminGroup\";s:15:\"System Settings\";}'),
+ (235,1,'civicrm/admin/setting/preferences/multisite',NULL,'Multi Site Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Form_Generic\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,130,1,0,0,'a:1:{s:10:\"adminGroup\";s:15:\"System Settings\";}'),
+ (236,1,'civicrm/admin/setting/preferences/campaign',NULL,'CiviCampaign Component Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Form_Generic\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,10,1,0,0,'a:3:{s:4:\"desc\";s:40:\"Configure global CiviCampaign behaviors.\";s:10:\"adminGroup\";s:12:\"CiviCampaign\";s:9:\"component\";s:12:\"CiviCampaign\";}'),
+ (237,1,'civicrm/admin/setting/preferences/event',NULL,'CiviEvent Component Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:16:\"access CiviEvent\";i:1;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Form_Generic\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,420,1,0,0,'a:2:{s:4:\"desc\";s:37:\"Configure global CiviEvent behaviors.\";s:10:\"adminGroup\";s:9:\"CiviEvent\";}'),
+ (238,1,'civicrm/admin/setting/preferences/mailing',NULL,'CiviMail Component Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:15:\"access CiviMail\";i:1;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:34:\"CRM_Admin_Form_Preferences_Mailing\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,430,1,0,0,'a:2:{s:4:\"desc\";s:36:\"Configure global CiviMail behaviors.\";s:10:\"adminGroup\";s:8:\"CiviMail\";}'),
+ (239,1,'civicrm/admin/setting/preferences/member',NULL,'CiviMember Component Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:17:\"access CiviMember\";i:1;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:33:\"CRM_Admin_Form_Preferences_Member\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,390,1,0,0,'a:2:{s:4:\"desc\";s:38:\"Configure global CiviMember behaviors.\";s:10:\"adminGroup\";s:10:\"CiviMember\";}'),
+ (240,1,'civicrm/admin/setting/preferences/date',NULL,'View Date Preferences','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:30:\"CRM_Admin_Page_PreferencesDate\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
+ (241,1,'civicrm/admin/runjobs',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:25:\"administer CiviCRM system\";}i:1;s:3:\"and\";}','a:2:{i:0;s:16:\"CRM_Utils_System\";i:1;s:20:\"executeScheduledJobs\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:1:{s:4:\"desc\";s:36:\"URL used for running scheduled jobs.\";}'),
+ (242,1,'civicrm/admin/job',NULL,'Scheduled Jobs','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:25:\"administer CiviCRM system\";}i:1;s:3:\"and\";}','s:18:\"CRM_Admin_Page_Job\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1370,1,0,0,'a:2:{s:4:\"desc\";s:35:\"Managing periodially running tasks.\";s:10:\"adminGroup\";s:15:\"System Settings\";}'),
+ (243,1,'civicrm/admin/job/add',NULL,'Add Scheduled Job','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:25:\"administer CiviCRM system\";}i:1;s:3:\"and\";}','s:18:\"CRM_Admin_Form_Job\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:14:\"Scheduled Jobs\";s:3:\"url\";s:26:\"/civicrm/admin/job?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:1:{s:4:\"desc\";s:31:\"Add a periodially running task.\";}'),
+ (244,1,'civicrm/admin/job/edit',NULL,'Edit Scheduled Job','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:25:\"administer CiviCRM system\";}i:1;s:3:\"and\";}','s:18:\"CRM_Admin_Page_Job\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:14:\"Scheduled Jobs\";s:3:\"url\";s:26:\"/civicrm/admin/job?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1372,1,0,0,'a:2:{s:4:\"desc\";s:32:\"Edit a periodially running task.\";s:10:\"adminGroup\";s:15:\"System Settings\";}'),
+ (245,1,'civicrm/admin/joblog',NULL,'Scheduled Jobs Log','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:25:\"administer CiviCRM system\";}i:1;s:3:\"and\";}','s:21:\"CRM_Admin_Page_JobLog\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1380,1,0,0,'a:2:{s:4:\"desc\";s:46:\"Browsing the log of periodially running tasks.\";s:10:\"adminGroup\";s:6:\"Manage\";}'),
+ (246,1,'civicrm/admin/options/grant_type',NULL,'Grant Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,385,1,0,0,'a:2:{s:4:\"desc\";s:148:\"List of types which can be assigned to Grants. (Enable CiviGrant from Administer > System Settings > Enable Components if you want to track grants.)\";s:10:\"adminGroup\";s:12:\"Option Lists\";}'),
+ (247,1,'civicrm/admin/paymentProcessorType',NULL,'Payment Processor Type','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:35:\"CRM_Admin_Page_PaymentProcessorType\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,390,1,0,0,'a:1:{s:4:\"desc\";s:34:\"Payment Processor type information\";}'),
+ (248,1,'civicrm/admin',NULL,'Administer','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:20:\"CRM_Admin_Page_Admin\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,9000,1,1,0,'a:0:{}'),
+ (249,1,'civicrm/ajax/navmenu',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:19:\"CRM_Admin_Page_AJAX\";i:1;s:7:\"navMenu\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (250,1,'civicrm/ajax/menutree',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:19:\"CRM_Admin_Page_AJAX\";i:1;s:8:\"menuTree\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,3,0,'a:0:{}'),
+ (251,1,'civicrm/ajax/statusmsg',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:19:\"CRM_Admin_Page_AJAX\";i:1;s:12:\"getStatusMsg\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (252,1,'civicrm/admin/price',NULL,'Price Sets','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:18:\"CRM_Price_Page_Set\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,380,1,0,0,'a:2:{s:4:\"desc\";s:205:\"Price sets allow you to offer multiple options with associated fees (e.g. pre-conference workshops, additional meals, etc.). Configure Price Sets for events which need more than a single set of fee levels.\";s:10:\"adminGroup\";s:9:\"Customize\";}'),
+ (253,1,'civicrm/admin/price/add','action=add','New Price Set','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:18:\"CRM_Price_Page_Set\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:10:\"Price Sets\";s:3:\"url\";s:28:\"/civicrm/admin/price?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:1:{s:4:\"desc\";s:205:\"Price sets allow you to offer multiple options with associated fees (e.g. pre-conference workshops, additional meals, etc.). Configure Price Sets for events which need more than a single set of fee levels.\";}'),
+ (254,1,'civicrm/admin/price/edit',NULL,'Price Sets','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:18:\"CRM_Price_Page_Set\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:10:\"Price Sets\";s:3:\"url\";s:28:\"/civicrm/admin/price?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
+ (255,1,'civicrm/admin/price/field',NULL,'Price Fields','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:20:\"CRM_Price_Page_Field\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:10:\"Price Sets\";s:3:\"url\";s:28:\"/civicrm/admin/price?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
+ (256,1,'civicrm/admin/price/field/edit',NULL,'Price Fields','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:20:\"CRM_Price_Page_Field\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:10:\"Price Sets\";s:3:\"url\";s:28:\"/civicrm/admin/price?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
+ (257,1,'civicrm/admin/price/field/option',NULL,'Price Field Options','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:21:\"CRM_Price_Page_Option\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:10:\"Price Sets\";s:3:\"url\";s:28:\"/civicrm/admin/price?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
+ (258,1,'civicrm/admin/price/field/option/edit',NULL,'Price Field Options','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:21:\"CRM_Price_Page_Option\";',NULL,'a:4:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:10:\"Price Sets\";s:3:\"url\";s:28:\"/civicrm/admin/price?reset=1\";}i:3;a:2:{s:5:\"title\";s:19:\"Price Field Options\";s:3:\"url\";s:41:\"/civicrm/admin/price/field/option?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
+ (259,1,'civicrm/admin/sms/provider',NULL,'Sms Providers','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:21:\"CRM_SMS_Page_Provider\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,500,1,0,0,'a:2:{s:4:\"desc\";s:27:\"To configure a sms provider\";s:10:\"adminGroup\";s:15:\"System Settings\";}'),
+ (260,1,'civicrm/admin/sms/provider/edit',NULL,'Sms Providers','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:21:\"CRM_SMS_Form_Provider\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Sms Providers\";s:3:\"url\";s:35:\"/civicrm/admin/sms/provider?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,501,1,0,0,'a:2:{s:4:\"desc\";s:27:\"To configure a sms provider\";s:10:\"adminGroup\";s:15:\"System Settings\";}'),
+ (261,1,'civicrm/sms/send',NULL,'New Mass SMS','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:8:\"send SMS\";}i:1;s:3:\"and\";}','s:23:\"CRM_SMS_Controller_Send\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,610,1,1,0,'a:0:{}'),
+ (262,1,'civicrm/sms/callback',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:21:\"CRM_SMS_Page_Callback\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,1,1,0,0,'a:0:{}'),
+ (263,1,'civicrm/admin/badgelayout','action=browse','Event Name Badge Layouts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:21:\"CRM_Badge_Page_Layout\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,399,1,0,0,'a:2:{s:4:\"desc\";s:107:\"Configure name badge layouts for event participants, including logos and what data to include on the badge.\";s:10:\"adminGroup\";s:9:\"CiviEvent\";}'),
+ (264,1,'civicrm/admin/badgelayout/add',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:21:\"CRM_Badge_Form_Layout\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:24:\"Event Name Badge Layouts\";s:3:\"url\";s:52:\"/civicrm/admin/badgelayout?reset=1&action=browse\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
+ (265,1,'civicrm/group',NULL,'Manage Groups','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:20:\"CRM_Group_Page_Group\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,30,1,1,0,'a:0:{}'),
+ (266,1,'civicrm/group/search',NULL,'Group Members','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Contact_Controller_Search\";','s:8:\"mode=256\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:13:\"Manage Groups\";s:3:\"url\";s:22:\"/civicrm/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:1:{s:7:\"comment\";s:164:\"Note: group search already respect ACL, so a strict permission at url level is not required. A simple/basic permission like \'access CiviCRM\' could be used. CRM-5417\";}'),
+ (267,1,'civicrm/group/add',NULL,'New Group','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:11:\"edit groups\";}i:1;s:3:\"and\";}','s:20:\"CRM_Group_Controller\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:13:\"Manage Groups\";s:3:\"url\";s:22:\"/civicrm/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (268,1,'civicrm/group/edit',NULL,'Edit Group','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:11:\"edit groups\";}i:1;s:3:\"and\";}','s:19:\"CRM_Group_Form_Edit\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:13:\"Manage Groups\";s:3:\"url\";s:22:\"/civicrm/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (269,1,'civicrm/ajax/grouplist',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:19:\"CRM_Group_Page_AJAX\";i:1;s:12:\"getGroupList\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (270,1,'civicrm/event/manage/pcp',NULL,'Personal Campaign Pages','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:18:\"CRM_PCP_Form_Event\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Manage Events\";s:3:\"url\";s:29:\"/civicrm/event/manage?reset=1\";}}',NULL,NULL,1,1,0,1,1,540,1,1,0,'a:0:{}'),
+ (271,1,'civicrm/event/pcp',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:16:\"CRM_PCP_Form_PCP\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,1,1,0,1,1,0,0,'a:0:{}'),
+ (272,1,'civicrm/event/campaign',NULL,'Setup a Personal Campaign Page - Account Information','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"make online contributions\";}i:1;s:3:\"and\";}','s:22:\"CRM_PCP_Controller_PCP\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,1,1,0,0,1,0,0,'a:0:{}'),
+ (273,1,'civicrm/event',NULL,'CiviEvent Dashboard','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:24:\"CRM_Event_Page_DashBoard\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,1,1,0,1,0,800,1,1,0,'a:1:{s:9:\"component\";s:9:\"CiviEvent\";}'),
+ (274,1,'civicrm/participant/add','action=add','Register New Participant','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:18:\"CRM_Event_Page_Tab\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:1:{s:9:\"component\";s:9:\"CiviEvent\";}'),
+ (275,1,'civicrm/event/info',NULL,'Event Information','s:1:\"1\";','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:24:\"CRM_Event_Page_EventInfo\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,1,1,0,1,1,0,0,'a:0:{}'),
+ (276,1,'civicrm/event/register',NULL,'Event Registration','s:1:\"1\";','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:33:\"CRM_Event_Controller_Registration\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,1,1,1,1,1,0,0,'a:0:{}'),
+ (277,1,'civicrm/event/confirm',NULL,'Confirm Event Registration','s:1:\"1\";','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:46:\"CRM_Event_Form_Registration_ParticipantConfirm\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,1,1,1,1,1,0,0,'a:0:{}'),
+ (278,1,'civicrm/event/ical',NULL,'Current and Upcoming Events','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:15:\"view event info\";}i:1;s:3:\"and\";}','a:2:{i:0;s:19:\"CRM_Event_ICalendar\";i:1;s:3:\"run\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,1,1,0,0,1,0,0,'a:0:{}'),
+ (279,1,'civicrm/event/list',NULL,'Current and Upcoming Events','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:15:\"view event info\";}i:1;s:3:\"and\";}','s:19:\"CRM_Event_Page_List\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,1,1,0,0,1,0,0,'a:0:{}'),
+ (280,1,'civicrm/event/participant',NULL,'Event Participants List','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:23:\"view event participants\";}i:1;s:3:\"and\";}','s:33:\"CRM_Event_Page_ParticipantListing\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,1,1,0,0,1,0,0,'a:0:{}'),
+ (281,1,'civicrm/admin/event',NULL,'Manage Events','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:26:\"CRM_Event_Page_ManageEvent\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,370,1,0,0,'a:2:{s:4:\"desc\";s:136:\"Create and edit event configuration including times, locations, online registration forms, and fees. Links for iCal and RSS syndication.\";s:10:\"adminGroup\";s:9:\"CiviEvent\";}'),
+ (282,1,'civicrm/admin/eventTemplate',NULL,'Event Templates','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:28:\"CRM_Admin_Page_EventTemplate\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,375,1,0,0,'a:2:{s:4:\"desc\";s:115:\"Administrators can create Event Templates - which are basically master event records pre-filled with default values\";s:10:\"adminGroup\";s:9:\"CiviEvent\";}'),
+ (283,1,'civicrm/admin/options/event_type',NULL,'Event Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,385,1,0,0,'a:2:{s:4:\"desc\";s:143:\"Use Event Types to categorize your events. Event feeds can be filtered by Event Type and participant searches can use Event Type as a criteria.\";s:10:\"adminGroup\";s:9:\"CiviEvent\";}'),
+ (284,1,'civicrm/admin/participant_status',NULL,'Participant Status','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:36:\"CRM_Admin_Page_ParticipantStatusType\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,390,1,0,0,'a:2:{s:4:\"desc\";s:154:\"Define statuses for event participants here (e.g. Registered, Attended, Cancelled...). You can then assign statuses and search for participants by status.\";s:10:\"adminGroup\";s:9:\"CiviEvent\";}'),
+ (285,1,'civicrm/admin/options/participant_role',NULL,'Participant Role','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,395,1,0,0,'a:2:{s:4:\"desc\";s:138:\"Define participant roles for events here (e.g. Attendee, Host, Speaker...). You can then assign roles and search for participants by role.\";s:10:\"adminGroup\";s:9:\"CiviEvent\";}'),
+ (286,1,'civicrm/admin/options/participant_listing',NULL,'Participant Listing Templates','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,398,1,0,0,'a:2:{s:4:\"desc\";s:48:\"Template to control participant listing display.\";s:10:\"adminGroup\";s:9:\"CiviEvent\";}'),
+ (287,1,'civicrm/event/search',NULL,'Find Participants','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:27:\"CRM_Event_Controller_Search\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,0,1,0,810,1,1,0,'a:0:{}'),
+ (288,1,'civicrm/event/manage',NULL,'Manage Events','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:26:\"CRM_Event_Page_ManageEvent\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,0,1,1,820,1,1,0,'a:0:{}'),
+ (289,1,'civicrm/event/badge',NULL,'Print Event Name Badge','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:25:\"CRM_Event_Form_Task_Badge\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (290,1,'civicrm/event/manage/settings',NULL,'Event Info and Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:36:\"CRM_Event_Form_ManageEvent_EventInfo\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Manage Events\";s:3:\"url\";s:29:\"/civicrm/event/manage?reset=1\";}}',NULL,NULL,1,1,0,1,1,910,1,0,0,'a:0:{}'),
+ (291,1,'civicrm/event/manage/location',NULL,'Event Location','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:35:\"CRM_Event_Form_ManageEvent_Location\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Manage Events\";s:3:\"url\";s:29:\"/civicrm/event/manage?reset=1\";}}',NULL,NULL,1,1,0,1,1,930,1,0,0,'a:0:{}'),
+ (292,1,'civicrm/event/manage/fee',NULL,'Event Fees','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:30:\"CRM_Event_Form_ManageEvent_Fee\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Manage Events\";s:3:\"url\";s:29:\"/civicrm/event/manage?reset=1\";}}',NULL,NULL,1,1,0,1,1,920,1,0,0,'a:0:{}'),
+ (293,1,'civicrm/event/manage/registration',NULL,'Event Online Registration','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:39:\"CRM_Event_Form_ManageEvent_Registration\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Manage Events\";s:3:\"url\";s:29:\"/civicrm/event/manage?reset=1\";}}',NULL,NULL,1,1,0,1,1,930,1,0,0,'a:0:{}'),
+ (294,1,'civicrm/event/manage/friend',NULL,'Tell a Friend','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:21:\"CRM_Friend_Form_Event\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Manage Events\";s:3:\"url\";s:29:\"/civicrm/event/manage?reset=1\";}}',NULL,NULL,1,1,0,1,1,940,1,0,0,'a:0:{}'),
+ (295,1,'civicrm/event/manage/reminder',NULL,'Schedule Reminders','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:44:\"CRM_Event_Form_ManageEvent_ScheduleReminders\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Manage Events\";s:3:\"url\";s:29:\"/civicrm/event/manage?reset=1\";}}',NULL,NULL,1,1,0,1,1,950,1,0,0,'a:0:{}'),
+ (296,1,'civicrm/event/manage/repeat',NULL,'Repeat Event','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:33:\"CRM_Event_Form_ManageEvent_Repeat\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Manage Events\";s:3:\"url\";s:29:\"/civicrm/event/manage?reset=1\";}}',NULL,NULL,1,1,0,1,1,960,1,0,0,'a:0:{}'),
+ (297,1,'civicrm/event/add','action=add','New Event','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:36:\"CRM_Event_Form_ManageEvent_EventInfo\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,0,1,0,830,1,0,0,'a:0:{}'),
+ (298,1,'civicrm/import/participant',NULL,'Import Participants','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:16:\"access CiviEvent\";i:1;s:23:\"edit event participants\";}i:1;s:3:\"and\";}','s:21:\"CRM_Import_Controller\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:6:\"Import\";s:3:\"url\";s:23:\"/civicrm/import?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,840,1,1,0,'a:0:{}'),
+ (299,1,'civicrm/event/price',NULL,'Manage Price Sets','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:18:\"CRM_Price_Page_Set\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,0,1,0,850,1,1,0,'a:0:{}'),
+ (300,1,'civicrm/event/selfsvcupdate',NULL,'Self-service Registration Update','s:1:\"1\";','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:28:\"CRM_Event_Form_SelfSvcUpdate\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,1,1,0,880,1,1,0,'a:0:{}'),
+ (301,1,'civicrm/event/selfsvctransfer',NULL,'Self-service Registration Transfer','s:1:\"1\";','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:30:\"CRM_Event_Form_SelfSvcTransfer\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,1,1,0,890,1,1,0,'a:0:{}'),
+ (302,1,'civicrm/contact/view/participant',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:18:\"CRM_Event_Page_Tab\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,4,1,0,0,'a:0:{}'),
+ (303,1,'civicrm/participant/delete',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:19:\"delete in CiviEvent\";}i:1;s:3:\"and\";}','s:33:\"CRM_Event_Form_Participant_Delete\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,4,1,0,0,'a:0:{}'),
+ (304,1,'civicrm/ajax/eventFee',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','a:2:{i:0;s:19:\"CRM_Event_Page_AJAX\";i:1;s:8:\"eventFee\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (305,1,'civicrm/ajax/locBlock',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','a:2:{i:0;s:27:\"CRM_Core_Page_AJAX_Location\";i:1;s:11:\"getLocBlock\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (306,1,'civicrm/event/participant/feeselection',NULL,'Change Registration Selections','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:38:\"CRM_Event_Form_ParticipantFeeSelection\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}i:2;a:2:{s:5:\"title\";s:23:\"Event Participants List\";s:3:\"url\";s:34:\"/civicrm/event/participant?reset=1\";}}',NULL,NULL,1,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (307,1,'civicrm/contribute',NULL,'CiviContribute Dashboard','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:29:\"CRM_Contribute_Page_DashBoard\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,2,1,0,1,0,500,1,1,0,'a:1:{s:9:\"component\";s:14:\"CiviContribute\";}'),
+ (308,1,'civicrm/contribute/add','action=add','New Contribution','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:23:\"CRM_Contribute_Page_Tab\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,0,1,0,1,1,1,0,'a:1:{s:9:\"component\";s:14:\"CiviContribute\";}'),
+ (309,1,'civicrm/contribute/chart',NULL,'Contribution Summary - Chart View','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:38:\"CRM_Contribute_Form_ContributionCharts\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,0,1,0,1,1,0,0,'a:1:{s:9:\"component\";s:14:\"CiviContribute\";}'),
+ (310,1,'civicrm/contribute/transact',NULL,'CiviContribute','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"make online contributions\";}i:1;s:3:\"and\";}','s:38:\"CRM_Contribute_Controller_Contribution\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,1,1,1,0,1,0,0,'a:0:{}'),
+ (311,1,'civicrm/admin/contribute',NULL,'Manage Contribution Pages','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:36:\"CRM_Contribute_Page_ContributionPage\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,360,1,0,0,'a:2:{s:4:\"desc\";s:242:\"CiviContribute allows you to create and maintain any number of Online Contribution Pages. You can create different pages for different programs or campaigns - and customize text, amounts, types of information collected from contributors, etc.\";s:10:\"adminGroup\";s:14:\"CiviContribute\";}'),
+ (312,1,'civicrm/admin/contribute/settings',NULL,'Title and Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:45:\"CRM_Contribute_Form_ContributionPage_Settings\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,400,1,0,0,'a:0:{}'),
+ (313,1,'civicrm/admin/contribute/amount',NULL,'Contribution Amounts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:43:\"CRM_Contribute_Form_ContributionPage_Amount\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,410,1,0,0,'a:0:{}'),
+ (314,1,'civicrm/admin/contribute/membership',NULL,'Membership Section','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:31:\"CRM_Member_Form_MembershipBlock\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,420,1,0,0,'a:0:{}'),
+ (315,1,'civicrm/admin/contribute/custom',NULL,'Include Profiles','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:43:\"CRM_Contribute_Form_ContributionPage_Custom\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,430,1,0,0,'a:0:{}'),
+ (316,1,'civicrm/admin/contribute/thankyou',NULL,'Thank-you and Receipting','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:45:\"CRM_Contribute_Form_ContributionPage_ThankYou\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,430,1,0,0,'a:0:{}'),
+ (317,1,'civicrm/admin/contribute/friend',NULL,'Tell a Friend','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Friend_Form_Contribute\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,440,1,0,0,'a:0:{}'),
+ (318,1,'civicrm/admin/contribute/widget',NULL,'Configure Widget','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:43:\"CRM_Contribute_Form_ContributionPage_Widget\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,460,1,0,0,'a:0:{}'),
+ (319,1,'civicrm/admin/contribute/premium',NULL,'Premiums','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:44:\"CRM_Contribute_Form_ContributionPage_Premium\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,470,1,0,0,'a:0:{}'),
+ (320,1,'civicrm/admin/contribute/addProductToPage',NULL,'Add Products to This Page','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:47:\"CRM_Contribute_Form_ContributionPage_AddProduct\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,480,1,0,0,'a:0:{}'),
+ (321,1,'civicrm/admin/contribute/add','action=add','New Contribution Page','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:42:\"CRM_Contribute_Controller_ContributionPage\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
+ (322,1,'civicrm/admin/contribute/managePremiums',NULL,'Manage Premiums','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:34:\"CRM_Contribute_Page_ManagePremiums\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,365,1,0,0,'a:2:{s:4:\"desc\";s:175:\"CiviContribute allows you to configure any number of Premiums which can be offered to contributors as incentives / thank-you gifts. Define the premiums you want to offer here.\";s:10:\"adminGroup\";s:14:\"CiviContribute\";}'),
+ (323,1,'civicrm/admin/contribute/managePremiums/edit',NULL,'Manage Premiums','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:34:\"CRM_Contribute_Form_ManagePremiums\";',NULL,'a:4:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}i:3;a:2:{s:5:\"title\";s:15:\"Manage Premiums\";s:3:\"url\";s:48:\"/civicrm/admin/contribute/managePremiums?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
+ (324,1,'civicrm/admin/financial/financialType',NULL,'Financial Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:32:\"CRM_Financial_Page_FinancialType\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,580,1,0,0,'a:2:{s:4:\"desc\";s:64:\"Formerly civicrm_contribution_type merged into this table in 4.1\";s:10:\"adminGroup\";s:14:\"CiviContribute\";}'),
+ (325,1,'civicrm/admin/financial/financialType/edit',NULL,'Edit Financial Type','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:32:\"CRM_Financial_Form_FinancialType\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:15:\"Financial Types\";s:3:\"url\";s:46:\"/civicrm/admin/financial/financialType?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
+ (326,1,'civicrm/payment','action=add','New Payment','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:37:\"CRM_Contribute_Form_AdditionalPayment\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,2,1,0,1,0,1,1,1,0,'a:1:{s:9:\"component\";s:14:\"CiviContribute\";}'),
+ (327,1,'civicrm/admin/financial/financialAccount',NULL,'Financial Accounts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:35:\"CRM_Financial_Page_FinancialAccount\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,370,1,0,0,'a:2:{s:4:\"desc\";s:128:\"Financial types are used to categorize contributions for reporting and accounting purposes. These are also referred to as Funds.\";s:10:\"adminGroup\";s:14:\"CiviContribute\";}'),
+ (328,1,'civicrm/admin/financial/financialAccount/edit',NULL,'Edit Financial Accounts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:35:\"CRM_Financial_Form_FinancialAccount\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:18:\"Financial Accounts\";s:3:\"url\";s:49:\"/civicrm/admin/financial/financialAccount?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
+ (329,1,'civicrm/admin/options/payment_instrument',NULL,'Payment Methods','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,380,1,0,0,'a:2:{s:4:\"desc\";s:224:\"You may choose to record the payment instrument used for each contribution. Common payment methods are installed by default (e.g. Check, Cash, Credit Card...). If your site requires additional payment methods, add them here.\";s:10:\"adminGroup\";s:14:\"CiviContribute\";}'),
+ (330,1,'civicrm/admin/options/accept_creditcard',NULL,'Accepted Credit Cards','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,395,1,0,0,'a:2:{s:4:\"desc\";s:94:\"Credit card options that will be offered to contributors using your Online Contribution pages.\";s:10:\"adminGroup\";s:14:\"CiviContribute\";}'),
+ (331,1,'civicrm/admin/options/soft_credit_type',NULL,'Soft Credit Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:2:{s:4:\"desc\";s:86:\"Soft Credit Types that will be offered to contributors during soft credit contribution\";s:10:\"adminGroup\";s:14:\"CiviContribute\";}'),
+ (332,1,'civicrm/contact/view/contribution',NULL,'Contributions','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:23:\"CRM_Contribute_Page_Tab\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (333,1,'civicrm/contact/view/contributionrecur',NULL,'Recurring Contributions','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:37:\"CRM_Contribute_Page_ContributionRecur\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (334,1,'civicrm/contact/view/contribution/additionalinfo',NULL,'Additional Info','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:34:\"CRM_Contribute_Form_AdditionalInfo\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}i:2;a:2:{s:5:\"title\";s:13:\"Contributions\";s:3:\"url\";s:42:\"/civicrm/contact/view/contribution?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (335,1,'civicrm/contribute/search',NULL,'Find Contributions','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:32:\"CRM_Contribute_Controller_Search\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,0,1,0,510,1,1,0,'a:0:{}'),
+ (336,1,'civicrm/contribute/searchBatch',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:37:\"CRM_Contribute_Controller_SearchBatch\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,0,1,0,588,1,1,0,'a:0:{}'),
+ (337,1,'civicrm/admin/contribute/manage',NULL,'Manage Contribution Pages','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:36:\"CRM_Contribute_Page_ContributionPage\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,530,1,1,0,'a:0:{}'),
+ (338,1,'civicrm/contribute/additionalinfo',NULL,'AdditionalInfo Form','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:34:\"CRM_Contribute_Form_AdditionalInfo\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,0,1,0,0,1,0,0,'a:0:{}'),
+ (339,1,'civicrm/ajax/permlocation',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"make online contributions\";}i:1;s:3:\"and\";}','a:2:{i:0;s:27:\"CRM_Core_Page_AJAX_Location\";i:1;s:23:\"getPermissionedLocation\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (340,1,'civicrm/contribute/unsubscribe',NULL,'Cancel Subscription','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"make online contributions\";}i:1;s:3:\"and\";}','s:38:\"CRM_Contribute_Form_CancelSubscription\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (341,1,'civicrm/contribute/onbehalf',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"make online contributions\";}i:1;s:3:\"and\";}','s:43:\"CRM_Contribute_Form_Contribution_OnBehalfOf\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (342,1,'civicrm/contribute/updatebilling',NULL,'Update Billing Details','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"make online contributions\";}i:1;s:3:\"and\";}','s:33:\"CRM_Contribute_Form_UpdateBilling\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (343,1,'civicrm/contribute/updaterecur',NULL,'Update Subscription','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"make online contributions\";}i:1;s:3:\"and\";}','s:38:\"CRM_Contribute_Form_UpdateSubscription\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (344,1,'civicrm/contribute/subscriptionstatus',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"make online contributions\";}i:1;s:3:\"and\";}','s:38:\"CRM_Contribute_Page_SubscriptionStatus\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (345,1,'civicrm/admin/financial/financialType/accounts',NULL,'Financial Type Accounts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:39:\"CRM_Financial_Page_FinancialTypeAccount\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:15:\"Financial Types\";s:3:\"url\";s:46:\"/civicrm/admin/financial/financialType?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,581,1,0,0,'a:0:{}'),
+ (346,1,'civicrm/financial/batch',NULL,'Accounting Batch','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:19:\"create manual batch\";}i:1;s:3:\"and\";}','s:33:\"CRM_Financial_Page_FinancialBatch\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,585,1,0,0,'a:0:{}'),
+ (347,1,'civicrm/financial/financialbatches',NULL,'Accounting Batches','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:24:\"CRM_Financial_Page_Batch\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,586,1,0,0,'a:0:{}'),
+ (348,1,'civicrm/batchtransaction',NULL,'Accounting Batch','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:35:\"CRM_Financial_Page_BatchTransaction\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,600,1,0,0,'a:0:{}'),
+ (349,1,'civicrm/financial/batch/export',NULL,'Accounting Batch Export','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:19:\"create manual batch\";}i:1;s:3:\"and\";}','s:25:\"CRM_Financial_Form_Export\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:16:\"Accounting Batch\";s:3:\"url\";s:32:\"/civicrm/financial/batch?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,610,1,0,0,'a:0:{}'),
+ (350,1,'civicrm/payment/view','action=view','View Payment','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:31:\"CRM_Contribute_Page_PaymentInfo\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:11:\"New Payment\";s:3:\"url\";s:39:\"/civicrm/payment?reset=1&action=add\";}}',NULL,NULL,2,1,0,1,0,1,1,1,0,'a:1:{s:9:\"component\";s:14:\"CiviContribute\";}'),
+ (351,1,'civicrm/admin/setting/preferences/contribute',NULL,'CiviContribute Component Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:21:\"access CiviContribute\";i:1;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:37:\"CRM_Admin_Form_Preferences_Contribute\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:2:{s:4:\"desc\";s:42:\"Configure global CiviContribute behaviors.\";s:10:\"adminGroup\";s:14:\"CiviContribute\";}'),
+ (352,1,'civicrm/contribute/invoice',NULL,'PDF Invoice','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:20:\"checkDownloadInvoice\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','a:2:{i:0;s:32:\"CRM_Contribute_Form_Task_Invoice\";i:1;s:11:\"getPrintPDF\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,0,1,0,620,1,1,0,'a:1:{s:9:\"component\";s:14:\"CiviContribute\";}'),
+ (353,1,'civicrm/contribute/invoice/email',NULL,'Email Invoice','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:20:\"checkDownloadInvoice\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:32:\"CRM_Contribute_Form_Task_Invoice\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}i:2;a:2:{s:5:\"title\";s:11:\"PDF Invoice\";s:3:\"url\";s:35:\"/civicrm/contribute/invoice?reset=1\";}}',NULL,NULL,2,1,0,1,0,630,1,1,0,'a:1:{s:9:\"component\";s:14:\"CiviContribute\";}'),
+ (354,1,'civicrm/ajax/softcontributionlist',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:24:\"CRM_Contribute_Page_AJAX\";i:1;s:23:\"getSoftContributionRows\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (355,1,'civicrm/contribute/contributionrecur-payments',NULL,'Recurring Contribution\'s Payments','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:45:\"CRM_Contribute_Page_ContributionRecurPayments\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (356,1,'civicrm/membership/recurring-contributions',NULL,'Membership Recurring Contributions','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:38:\"CRM_Member_Page_RecurringContributions\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (357,1,'civicrm/contribute/widget',NULL,'CiviContribute','s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:26:\"CRM_Contribute_Page_Widget\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,1,1,0,0,1,0,0,'a:0:{}'),
+ (358,1,'civicrm/contribute/task',NULL,'Contribution Task','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:30:\"CRM_Contribute_Controller_Task\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (359,1,'civicrm/admin/contribute/pcp',NULL,'Personal Campaign Pages','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:23:\"CRM_PCP_Form_Contribute\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,450,1,0,0,'a:0:{}'),
+ (360,1,'civicrm/contribute/campaign',NULL,'Setup a Personal Campaign Page - Account Information','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"make online contributions\";}i:1;s:3:\"and\";}','s:22:\"CRM_PCP_Controller_PCP\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,1,1,0,0,1,0,0,'a:0:{}'),
+ (361,1,'civicrm/member',NULL,'CiviMember Dashboard','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:17:\"access CiviMember\";}i:1;s:3:\"and\";}','s:25:\"CRM_Member_Page_DashBoard\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,3,1,0,1,0,700,1,1,0,'a:1:{s:9:\"component\";s:10:\"CiviMember\";}'),
+ (362,1,'civicrm/member/add','action=add','New Membership','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:17:\"access CiviMember\";}i:1;s:3:\"and\";}','s:19:\"CRM_Member_Page_Tab\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:20:\"CiviMember Dashboard\";s:3:\"url\";s:23:\"/civicrm/member?reset=1\";}}',NULL,NULL,3,1,0,1,0,1,1,0,0,'a:1:{s:9:\"component\";s:10:\"CiviMember\";}'),
+ (363,1,'civicrm/admin/member/membershipType',NULL,'Membership Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:30:\"CRM_Member_Page_MembershipType\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,370,1,0,0,'a:2:{s:4:\"desc\";s:174:\"Define the types of memberships you want to offer. For each type, you can specify a \'name\' (Gold Member, Honor Society Member...), a description, duration, and a minimum fee.\";s:10:\"adminGroup\";s:10:\"CiviMember\";}'),
+ (364,1,'civicrm/admin/member/membershipStatus',NULL,'Membership Status Rules','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:32:\"CRM_Member_Page_MembershipStatus\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,380,1,0,0,'a:2:{s:4:\"desc\";s:187:\"Status \'rules\' define the current status for a membership based on that membership\'s start and end dates. You can adjust the default status options and rules as needed to meet your needs.\";s:10:\"adminGroup\";s:10:\"CiviMember\";}'),
+ (365,1,'civicrm/contact/view/membership','force=1,cid=%%cid%%','Memberships','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:19:\"CRM_Member_Page_Tab\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,2,1,0,0,'a:0:{}'),
+ (366,1,'civicrm/membership/view',NULL,'Memberships','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:17:\"access CiviMember\";}i:1;s:3:\"and\";}','s:30:\"CRM_Member_Form_MembershipView\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,390,1,0,0,'a:0:{}'),
+ (367,1,'civicrm/member/search',NULL,'Find Memberships','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:17:\"access CiviMember\";}i:1;s:3:\"and\";}','s:28:\"CRM_Member_Controller_Search\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:20:\"CiviMember Dashboard\";s:3:\"url\";s:23:\"/civicrm/member?reset=1\";}}',NULL,NULL,3,1,0,1,0,710,1,1,0,'a:0:{}'),
+ (368,1,'civicrm/import/membership',NULL,'Import Memberships','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:17:\"access CiviMember\";i:1;s:16:\"edit memberships\";}i:1;s:3:\"and\";}','s:21:\"CRM_Import_Controller\";','s:20:\"entity_prefix=Member\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:20:\"CiviMember Dashboard\";s:3:\"url\";s:23:\"/civicrm/member?reset=1\";}}',NULL,NULL,3,1,0,1,0,720,1,1,0,'a:0:{}'),
+ (369,1,'civicrm/ajax/memType',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:17:\"access CiviMember\";}i:1;s:3:\"and\";}','a:2:{i:0;s:20:\"CRM_Member_Page_AJAX\";i:1;s:21:\"getMemberTypeDefaults\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (370,1,'civicrm/admin/member/membershipType/add',NULL,'Membership Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:17:\"access CiviMember\";i:1;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:30:\"CRM_Member_Form_MembershipType\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:16:\"Membership Types\";s:3:\"url\";s:44:\"/civicrm/admin/member/membershipType?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
+ (371,1,'civicrm/mailing',NULL,'CiviMail','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:15:\"access CiviMail\";i:1;s:15:\"create mailings\";i:2;s:8:\"send SMS\";}i:1;s:2:\"or\";}','s:23:\"CRM_Mailing_Page_Browse\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,4,1,0,1,0,600,1,1,0,'a:1:{s:9:\"component\";s:8:\"CiviMail\";}'),
+ (372,1,'civicrm/admin/mail',NULL,'Mailer Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"access CiviMail\";}i:1;s:3:\"and\";}','s:27:\"CRM_Admin_Form_Setting_Mail\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,400,1,0,0,'a:2:{s:4:\"desc\";s:61:\"Configure spool period, throttling and other mailer settings.\";s:10:\"adminGroup\";s:8:\"CiviMail\";}'),
+ (373,1,'civicrm/admin/component',NULL,'Headers, Footers, and Automated Messages','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"access CiviMail\";}i:1;s:3:\"and\";}','s:26:\"CRM_Mailing_Page_Component\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,410,1,0,0,'a:2:{s:4:\"desc\";s:143:\"Configure the header and footer used for mailings. Customize the content of automated Subscribe, Unsubscribe, Resubscribe and Opt-out messages.\";s:10:\"adminGroup\";s:8:\"CiviMail\";}'),
+ (374,1,'civicrm/admin/component/edit',NULL,'Headers, Footers, and Automated Messages','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"access CiviMail\";}i:1;s:3:\"and\";}','s:26:\"CRM_Mailing_Form_Component\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:40:\"Headers, Footers, and Automated Messages\";s:3:\"url\";s:32:\"/civicrm/admin/component?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,411,1,0,0,'a:2:{s:4:\"desc\";s:143:\"Configure the header and footer used for mailings. Customize the content of automated Subscribe, Unsubscribe, Resubscribe and Opt-out messages.\";s:10:\"adminGroup\";s:8:\"CiviMail\";}'),
+ (375,1,'civicrm/admin/options/from_email_address/civimail',NULL,'From Email Addresses','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:4:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}i:3;a:2:{s:5:\"title\";s:20:\"From Email Addresses\";s:3:\"url\";s:49:\"/civicrm/admin/options/from_email_address?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,415,1,0,0,'a:2:{s:4:\"desc\";s:74:\"List of Email Addresses which can be used when sending emails to contacts.\";s:10:\"adminGroup\";s:8:\"CiviMail\";}'),
+ (376,1,'civicrm/admin/mailSettings',NULL,'Mail Accounts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"access CiviMail\";}i:1;s:3:\"and\";}','s:27:\"CRM_Admin_Page_MailSettings\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,420,1,0,0,'a:2:{s:4:\"desc\";s:20:\"List email accounts.\";s:10:\"adminGroup\";s:8:\"CiviMail\";}'),
+ (377,1,'civicrm/admin/mailSettings/edit',NULL,'Mail Accounts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"access CiviMail\";}i:1;s:3:\"and\";}','s:27:\"CRM_Admin_Form_MailSettings\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Mail Accounts\";s:3:\"url\";s:35:\"/civicrm/admin/mailSettings?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,420,1,0,0,'a:0:{}'),
+ (378,1,'civicrm/mailing/send',NULL,'New Mailing','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:15:\"access CiviMail\";i:1;s:15:\"create mailings\";i:2;s:17:\"schedule mailings\";}i:1;s:2:\"or\";}','s:27:\"CRM_Mailing_Controller_Send\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,1,0,1,0,610,1,1,0,'a:0:{}'),
+ (379,1,'civicrm/mailing/browse/scheduled','scheduled=true','Find Mailings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:5:{i:0;s:15:\"access CiviMail\";i:1;s:16:\"approve mailings\";i:2;s:15:\"create mailings\";i:3;s:17:\"schedule mailings\";i:4;s:8:\"send SMS\";}i:1;s:2:\"or\";}','s:23:\"CRM_Mailing_Page_Browse\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,1,0,1,0,620,1,1,0,'a:0:{}'),
+ (380,1,'civicrm/mailing/browse/unscheduled','scheduled=false','Find Mailings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:15:\"access CiviMail\";i:1;s:15:\"create mailings\";i:2;s:17:\"schedule mailings\";}i:1;s:2:\"or\";}','s:23:\"CRM_Mailing_Page_Browse\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,1,0,1,0,620,1,1,0,'a:0:{}'),
+ (381,1,'civicrm/mailing/browse/archived',NULL,'Find Mailings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:15:\"access CiviMail\";i:1;s:15:\"create mailings\";}i:1;s:2:\"or\";}','s:23:\"CRM_Mailing_Page_Browse\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,1,0,1,0,625,1,1,0,'a:0:{}'),
+ (382,1,'civicrm/mailing/component',NULL,'Headers, Footers, and Automated Messages','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Mailing_Page_Component\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,1,0,1,0,630,1,1,0,'a:0:{}'),
+ (383,1,'civicrm/mailing/unsubscribe',NULL,'Unsubscribe','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:43:\"access CiviMail subscribe/unsubscribe pages\";}i:1;s:3:\"and\";}','s:28:\"CRM_Mailing_Page_Unsubscribe\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,1,1,1,0,640,1,0,0,'a:0:{}'),
+ (384,1,'civicrm/mailing/resubscribe',NULL,'Resubscribe','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:43:\"access CiviMail subscribe/unsubscribe pages\";}i:1;s:3:\"and\";}','s:28:\"CRM_Mailing_Page_Resubscribe\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,1,1,1,0,645,1,0,0,'a:0:{}'),
+ (385,1,'civicrm/mailing/optout',NULL,'Opt-out','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:43:\"access CiviMail subscribe/unsubscribe pages\";}i:1;s:3:\"and\";}','s:23:\"CRM_Mailing_Form_Optout\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,1,1,1,0,650,1,0,0,'a:0:{}'),
+ (386,1,'civicrm/mailing/confirm',NULL,'Confirm','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:43:\"access CiviMail subscribe/unsubscribe pages\";}i:1;s:3:\"and\";}','s:24:\"CRM_Mailing_Page_Confirm\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,1,1,1,0,660,1,0,0,'a:0:{}'),
+ (387,1,'civicrm/mailing/subscribe',NULL,'Subscribe','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:43:\"access CiviMail subscribe/unsubscribe pages\";}i:1;s:3:\"and\";}','s:26:\"CRM_Mailing_Form_Subscribe\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,1,1,1,0,660,1,0,0,'a:0:{}'),
+ (388,1,'civicrm/mailing/report','mid=%%mid%%','Mailing Report','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:15:\"access CiviMail\";i:1;s:15:\"create mailings\";}i:1;s:2:\"or\";}','s:23:\"CRM_Mailing_Page_Report\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,1,0,1,0,680,1,0,0,'a:0:{}'),
+ (389,1,'civicrm/mailing/forward',NULL,'Forward Mailing','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:43:\"access CiviMail subscribe/unsubscribe pages\";}i:1;s:3:\"and\";}','s:31:\"CRM_Mailing_Form_ForwardMailing\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,1,1,1,0,685,1,0,0,'a:0:{}'),
+ (390,1,'civicrm/mailing/report/event',NULL,'Mailing Event','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:15:\"access CiviMail\";}i:1;s:3:\"and\";}','s:22:\"CRM_Mailing_Page_Event\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}i:2;a:2:{s:5:\"title\";s:14:\"Mailing Report\";s:3:\"url\";s:47:\"/civicrm/mailing/report?reset=1&mid=%%mid%%\";}}',NULL,NULL,4,1,0,1,0,695,1,0,0,'a:0:{}'),
+ (391,1,'civicrm/ajax/template',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Mailing_Page_AJAX\";i:1;s:8:\"template\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (392,1,'civicrm/mailing/view',NULL,'View Mailing','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:28:\"view public CiviMail content\";i:1;s:15:\"access CiviMail\";i:2;s:16:\"approve mailings\";}i:1;s:2:\"or\";}','s:21:\"CRM_Mailing_Page_View\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,1,1,1,0,800,1,0,0,'a:0:{}'),
+ (393,1,'civicrm/mailing/approve',NULL,'Approve Mailing','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:15:\"access CiviMail\";i:1;s:16:\"approve mailings\";}i:1;s:2:\"or\";}','s:24:\"CRM_Mailing_Form_Approve\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,1,0,1,0,850,1,0,0,'a:0:{}'),
+ (394,1,'civicrm/contact/view/mailing',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:20:\"CRM_Mailing_Page_Tab\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (395,1,'civicrm/ajax/contactmailing',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Mailing_Page_AJAX\";i:1;s:18:\"getContactMailings\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (396,1,'civicrm/ajax/setupMailAccount',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"access CiviMail\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Mailing_Page_AJAX\";i:1;s:5:\"setup\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (397,1,'civicrm/mailing/url',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"*always allow*\";}i:1;s:3:\"and\";}','s:20:\"CRM_Mailing_Page_Url\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,1,1,1,0,1,1,0,0,'a:0:{}'),
+ (398,1,'civicrm/mailing/open',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"*always allow*\";}i:1;s:3:\"and\";}','s:21:\"CRM_Mailing_Page_Open\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,1,1,1,0,1,1,0,0,'a:0:{}'),
+ (399,1,'civicrm/pledge',NULL,'CiviPledge Dashboard','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:17:\"access CiviPledge\";}i:1;s:3:\"and\";}','s:25:\"CRM_Pledge_Page_DashBoard\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,6,1,0,1,0,550,1,1,0,'a:1:{s:9:\"component\";s:10:\"CiviPledge\";}'),
+ (400,1,'civicrm/pledge/search',NULL,'Find Pledges','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:17:\"access CiviPledge\";}i:1;s:3:\"and\";}','s:28:\"CRM_Pledge_Controller_Search\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:20:\"CiviPledge Dashboard\";s:3:\"url\";s:23:\"/civicrm/pledge?reset=1\";}}',NULL,NULL,6,1,0,1,0,560,1,1,0,'a:0:{}'),
+ (401,1,'civicrm/contact/view/pledge','force=1,cid=%%cid%%','Pledges','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:17:\"access CiviPledge\";}i:1;s:3:\"and\";}','s:19:\"CRM_Pledge_Page_Tab\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,570,1,0,0,'a:0:{}'),
+ (402,1,'civicrm/pledge/add','action=add','New Pledge','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:17:\"access CiviPledge\";}i:1;s:3:\"and\";}','s:19:\"CRM_Pledge_Page_Tab\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:20:\"CiviPledge Dashboard\";s:3:\"url\";s:23:\"/civicrm/pledge?reset=1\";}}',NULL,NULL,6,1,0,1,0,1,1,1,0,'a:1:{s:9:\"component\";s:10:\"CiviPledge\";}'),
+ (403,1,'civicrm/pledge/payment',NULL,'Pledge Payments','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:17:\"access CiviPledge\";}i:1;s:3:\"and\";}','s:23:\"CRM_Pledge_Page_Payment\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:20:\"CiviPledge Dashboard\";s:3:\"url\";s:23:\"/civicrm/pledge?reset=1\";}}',NULL,NULL,6,1,0,1,0,580,1,0,0,'a:0:{}'),
+ (404,1,'civicrm/ajax/pledgeAmount',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:17:\"access CiviPledge\";i:1;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:20:\"CRM_Pledge_Page_AJAX\";i:1;s:17:\"getPledgeDefaults\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (405,1,'civicrm/case',NULL,'CiviCase Dashboard','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:23:\"CRM_Case_Page_DashBoard\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,7,1,0,1,0,900,1,1,0,'a:1:{s:9:\"component\";s:8:\"CiviCase\";}'),
+ (406,1,'civicrm/case/add',NULL,'Open Case','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:18:\"CRM_Case_Form_Case\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}}',NULL,NULL,7,1,0,1,0,1,1,1,0,'a:1:{s:9:\"component\";s:8:\"CiviCase\";}'),
+ (407,1,'civicrm/case/search',NULL,'Find Cases','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Case_Controller_Search\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}}',NULL,NULL,7,1,0,1,0,910,1,1,0,'a:0:{}'),
+ (408,1,'civicrm/case/activity',NULL,'Case Activity','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Case_Form_Activity\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}}',NULL,NULL,7,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (409,1,'civicrm/case/report',NULL,'Case Activity Audit','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:31:\"access all cases and activities\";}i:1;s:3:\"and\";}','s:20:\"CRM_Case_Form_Report\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}}',NULL,NULL,7,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (410,1,'civicrm/case/cd/edit',NULL,'Case Custom Set','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:24:\"CRM_Case_Form_CustomData\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}}',NULL,NULL,7,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (411,1,'civicrm/contact/view/case',NULL,'Case','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:17:\"CRM_Case_Page_Tab\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (412,1,'civicrm/case/activity/view',NULL,'Activity View','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Case_Form_ActivityView\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Case Activity\";s:3:\"url\";s:30:\"/civicrm/case/activity?reset=1\";}}',NULL,NULL,7,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (413,1,'civicrm/contact/view/case/editClient',NULL,'Assign to Another Client','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:24:\"CRM_Case_Form_EditClient\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}i:2;a:2:{s:5:\"title\";s:4:\"Case\";s:3:\"url\";s:34:\"/civicrm/contact/view/case?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (414,1,'civicrm/case/addToCase',NULL,'File on Case','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:28:\"CRM_Case_Form_ActivityToCase\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}}',NULL,NULL,7,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (415,1,'civicrm/case/details',NULL,'Case Details','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:25:\"CRM_Case_Page_CaseDetails\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}}',NULL,NULL,7,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (416,1,'civicrm/admin/setting/case',NULL,'CiviCase Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:27:\"CRM_Admin_Form_Setting_Case\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,380,1,0,0,'a:1:{s:10:\"adminGroup\";s:8:\"CiviCase\";}'),
+ (417,1,'civicrm/admin/options/case_type',NULL,'Case Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:19:\"administer CiviCase\";}i:1;s:3:\"and\";}','s:22:\"CRM_Core_Page_Redirect\";','s:24:\"url=civicrm/a/#/caseType\";','a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,390,1,0,0,'a:2:{s:4:\"desc\";s:137:\"List of types which can be assigned to Cases. (Enable the Cases tab from System Settings - Enable Components if you want to track cases.)\";s:10:\"adminGroup\";s:8:\"CiviCase\";}'),
+ (418,1,'civicrm/admin/options/redaction_rule',NULL,'Redaction Rules','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:19:\"administer CiviCase\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,400,1,0,0,'a:2:{s:4:\"desc\";s:223:\"List of rules which can be applied to user input strings so that the redacted output can be recognized as repeated instances of the same string or can be identified as a \"semantic type of the data element\" within case data.\";s:10:\"adminGroup\";s:8:\"CiviCase\";}'),
+ (419,1,'civicrm/admin/options/case_status',NULL,'Case Statuses','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:19:\"administer CiviCase\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,400,1,0,0,'a:2:{s:4:\"desc\";s:48:\"List of statuses that can be assigned to a case.\";s:10:\"adminGroup\";s:8:\"CiviCase\";}'),
+ (420,1,'civicrm/admin/options/encounter_medium',NULL,'Encounter Mediums','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:19:\"administer CiviCase\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,400,1,0,0,'a:2:{s:4:\"desc\";s:26:\"List of encounter mediums.\";s:10:\"adminGroup\";s:8:\"CiviCase\";}'),
+ (421,1,'civicrm/case/report/print',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:31:\"access all cases and activities\";}i:1;s:3:\"and\";}','a:2:{i:0;s:28:\"CRM_Case_XMLProcessor_Report\";i:1;s:15:\"printCaseReport\";}',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}i:2;a:2:{s:5:\"title\";s:19:\"Case Activity Audit\";s:3:\"url\";s:28:\"/civicrm/case/report?reset=1\";}}',NULL,NULL,7,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (422,1,'civicrm/case/ajax/addclient',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:18:\"CRM_Case_Page_AJAX\";i:1;s:9:\"addClient\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}}',NULL,NULL,7,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (423,1,'civicrm/case/ajax/processtags',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:18:\"CRM_Case_Page_AJAX\";i:1;s:15:\"processCaseTags\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}}',NULL,NULL,7,1,0,1,0,1,1,3,0,'a:0:{}'),
+ (424,1,'civicrm/case/ajax/details',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:18:\"CRM_Case_Page_AJAX\";i:1;s:11:\"CaseDetails\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}}',NULL,NULL,7,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (425,1,'civicrm/ajax/delcaserole',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:18:\"CRM_Case_Page_AJAX\";i:1;s:15:\"deleteCaseRoles\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (426,1,'civicrm/ajax/get-cases',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:18:\"CRM_Case_Page_AJAX\";i:1;s:8:\"getCases\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (427,1,'civicrm/case/email/add','action=add,task=email','Email','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:24:\"CRM_Case_Form_Task_Email\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}}',NULL,NULL,7,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (428,1,'civicrm/contact/view/case/deleteClient',NULL,'Remove Client','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:26:\"CRM_Case_Form_DeleteClient\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}i:2;a:2:{s:5:\"title\";s:4:\"Case\";s:3:\"url\";s:34:\"/civicrm/contact/view/case?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (429,1,'civicrm/report',NULL,'CiviReport','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:17:\"access CiviReport\";}i:1;s:3:\"and\";}','s:22:\"CRM_Report_Page_Report\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,8,1,0,1,0,1200,1,1,0,'a:1:{s:9:\"component\";s:10:\"CiviReport\";}'),
+ (430,1,'civicrm/report/list',NULL,'CiviCRM Reports','s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:17:\"access CiviReport\";}i:1;s:3:\"and\";}','s:28:\"CRM_Report_Page_InstanceList\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"CiviReport\";s:3:\"url\";s:23:\"/civicrm/report?reset=1\";}}',NULL,NULL,8,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (431,1,'civicrm/report/template/list',NULL,'Create New Report from Template','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:18:\"administer Reports\";}i:1;s:3:\"and\";}','s:28:\"CRM_Report_Page_TemplateList\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"CiviReport\";s:3:\"url\";s:23:\"/civicrm/report?reset=1\";}}',NULL,NULL,8,1,0,1,0,1220,1,1,0,'a:0:{}'),
+ (432,1,'civicrm/report/options/report_template',NULL,'Manage Templates','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:18:\"administer Reports\";}i:1;s:3:\"and\";}','s:23:\"CRM_Report_Page_Options\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"CiviReport\";s:3:\"url\";s:23:\"/civicrm/report?reset=1\";}}',NULL,NULL,8,1,0,1,0,1241,1,1,0,'a:0:{}'),
+ (433,1,'civicrm/admin/report/register',NULL,'Register Report','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:18:\"administer Reports\";}i:1;s:3:\"and\";}','s:24:\"CRM_Report_Form_Register\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:1:{s:4:\"desc\";s:30:\"Register the Report templates.\";}'),
+ (434,1,'civicrm/report/instance',NULL,'Report','s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:17:\"access CiviReport\";}i:1;s:3:\"and\";}','s:24:\"CRM_Report_Page_Instance\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"CiviReport\";s:3:\"url\";s:23:\"/civicrm/report?reset=1\";}}',NULL,NULL,8,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (435,1,'civicrm/admin/report/template/list',NULL,'Create New Report from Template','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:17:\"access CiviReport\";}i:1;s:3:\"and\";}','s:28:\"CRM_Report_Page_TemplateList\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:2:{s:4:\"desc\";s:49:\"Component wise listing of all available templates\";s:10:\"adminGroup\";s:10:\"CiviReport\";}'),
+ (436,1,'civicrm/admin/report/options/report_template',NULL,'Manage Templates','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:17:\"access CiviReport\";}i:1;s:3:\"and\";}','s:23:\"CRM_Report_Page_Options\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:2:{s:4:\"desc\";s:45:\"Browse, Edit and Delete the Report templates.\";s:10:\"adminGroup\";s:10:\"CiviReport\";}'),
+ (437,1,'civicrm/admin/report/list',NULL,'Reports Listing','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:28:\"CRM_Report_Page_InstanceList\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:2:{s:4:\"desc\";s:60:\"Browse existing report, change report criteria and settings.\";s:10:\"adminGroup\";s:10:\"CiviReport\";}'),
+ (438,1,'civicrm/campaign/add',NULL,'New Campaign','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:23:\"administer CiviCampaign\";i:1;s:15:\"manage campaign\";}i:1;s:2:\"or\";}','s:26:\"CRM_Campaign_Form_Campaign\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:1:{s:9:\"component\";s:12:\"CiviCampaign\";}'),
+ (439,1,'civicrm/survey/add',NULL,'New Survey','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:23:\"administer CiviCampaign\";i:1;s:15:\"manage campaign\";}i:1;s:2:\"or\";}','s:29:\"CRM_Campaign_Form_Survey_Main\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:1:{s:9:\"component\";s:12:\"CiviCampaign\";}'),
+ (440,1,'civicrm/campaign/vote',NULL,'Conduct Survey','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:4:{i:0;s:23:\"administer CiviCampaign\";i:1;s:15:\"manage campaign\";i:2;s:25:\"reserve campaign contacts\";i:3;s:27:\"interview campaign contacts\";}i:1;s:2:\"or\";}','s:22:\"CRM_Campaign_Page_Vote\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:1:{s:9:\"component\";s:12:\"CiviCampaign\";}'),
+ (441,1,'civicrm/admin/campaign/surveyType',NULL,'Survey Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:23:\"administer CiviCampaign\";}i:1;s:3:\"and\";}','s:28:\"CRM_Campaign_Page_SurveyType\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:2:{s:10:\"adminGroup\";s:12:\"CiviCampaign\";s:9:\"component\";s:12:\"CiviCampaign\";}'),
+ (442,1,'civicrm/admin/options/campaign_type',NULL,'Campaign Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,2,1,0,0,'a:3:{s:4:\"desc\";s:47:\"categorize your campaigns using campaign types.\";s:10:\"adminGroup\";s:12:\"CiviCampaign\";s:9:\"component\";s:12:\"CiviCampaign\";}'),
+ (443,1,'civicrm/admin/options/campaign_status',NULL,'Campaign Status','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,3,1,0,0,'a:3:{s:4:\"desc\";s:34:\"Define statuses for campaign here.\";s:10:\"adminGroup\";s:12:\"CiviCampaign\";s:9:\"component\";s:12:\"CiviCampaign\";}'),
+ (444,1,'civicrm/admin/options/engagement_index',NULL,'Engagement Index','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,4,1,0,0,'a:3:{s:4:\"desc\";s:18:\"Engagement levels.\";s:10:\"adminGroup\";s:12:\"CiviCampaign\";s:9:\"component\";s:12:\"CiviCampaign\";}'),
+ (445,1,'civicrm/survey/search','op=interview','Record Respondents Interview','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:23:\"administer CiviCampaign\";i:1;s:15:\"manage campaign\";i:2;s:27:\"interview campaign contacts\";}i:1;s:2:\"or\";}','s:30:\"CRM_Campaign_Controller_Search\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:1:{s:9:\"component\";s:12:\"CiviCampaign\";}'),
+ (446,1,'civicrm/campaign/gotv',NULL,'GOTV (Track Voters)','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:4:{i:0;s:23:\"administer CiviCampaign\";i:1;s:15:\"manage campaign\";i:2;s:25:\"release campaign contacts\";i:3;s:22:\"gotv campaign contacts\";}i:1;s:2:\"or\";}','s:22:\"CRM_Campaign_Form_Gotv\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:1:{s:9:\"component\";s:12:\"CiviCampaign\";}'),
+ (447,1,'civicrm/petition/add',NULL,'New Petition','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:23:\"administer CiviCampaign\";i:1;s:15:\"manage campaign\";}i:1;s:2:\"or\";}','s:26:\"CRM_Campaign_Form_Petition\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (448,1,'civicrm/petition/sign',NULL,'Sign Petition','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"sign CiviCRM Petition\";}i:1;s:3:\"and\";}','s:36:\"CRM_Campaign_Form_Petition_Signature\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,1,1,0,0,'a:0:{}'),
+ (449,1,'civicrm/petition/browse',NULL,'View Petition Signatures','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Campaign_Page_Petition\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (450,1,'civicrm/petition/confirm',NULL,'Email address verified','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"sign CiviCRM Petition\";}i:1;s:3:\"and\";}','s:34:\"CRM_Campaign_Page_Petition_Confirm\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,1,1,0,0,'a:0:{}'),
+ (451,1,'civicrm/petition/thankyou',NULL,'Thank You','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"sign CiviCRM Petition\";}i:1;s:3:\"and\";}','s:35:\"CRM_Campaign_Page_Petition_ThankYou\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,1,1,0,0,'a:0:{}'),
+ (452,1,'civicrm/campaign/registerInterview',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:23:\"administer CiviCampaign\";i:1;s:15:\"manage campaign\";i:2;s:27:\"interview campaign contacts\";}i:1;s:2:\"or\";}','a:2:{i:0;s:22:\"CRM_Campaign_Page_AJAX\";i:1;s:17:\"registerInterview\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (453,1,'civicrm/survey/configure/main',NULL,'Configure Survey','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:23:\"administer CiviCampaign\";i:1;s:15:\"manage campaign\";}i:1;s:2:\"or\";}','s:29:\"CRM_Campaign_Form_Survey_Main\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (454,1,'civicrm/survey/configure/questions',NULL,'Configure Survey','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:23:\"administer CiviCampaign\";i:1;s:15:\"manage campaign\";}i:1;s:2:\"or\";}','s:34:\"CRM_Campaign_Form_Survey_Questions\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (455,1,'civicrm/survey/configure/results',NULL,'Configure Survey','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:23:\"administer CiviCampaign\";i:1;s:15:\"manage campaign\";}i:1;s:2:\"or\";}','s:32:\"CRM_Campaign_Form_Survey_Results\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (456,1,'civicrm/survey/delete',NULL,'Delete Survey','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:23:\"administer CiviCampaign\";i:1;s:15:\"manage campaign\";}i:1;s:2:\"or\";}','s:31:\"CRM_Campaign_Form_Survey_Delete\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (457,1,'civicrm/admin/ckeditor',NULL,'Configure CKEditor 4','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:33:\"CRM_Ckeditor4_Form_CKEditorConfig\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
+ (458,1,'civicrm/admin/setting/recaptcha',NULL,'reCAPTCHA Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:20:\"administer recaptcha\";}i:1;s:2:\"or\";}','s:22:\"CRM_Admin_Form_Generic\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"Administer\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:2:{s:10:\"adminGroup\";s:15:\"System Settings\";s:4:\"desc\";s:108:\"Uses the Google reCAPTCHA web service to improve the CAPTCHA system. It is tough on bots and easy on humans.\";}'),
+ (459,1,'admin',NULL,NULL,NULL,NULL,NULL,NULL,'a:15:{s:26:\"Customize Data and Screens\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:20:{s:13:\"{weight}.Tags\";a:6:{s:5:\"title\";s:4:\"Tags\";s:4:\"desc\";s:158:\"Tags are useful for segmenting the contacts in your database into categories (e.g. Staff Member, Donor, Volunteer, etc.). Create and edit available tags here.\";s:2:\"id\";s:4:\"Tags\";s:3:\"url\";s:20:\"/civicrm/tag?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:20:\"{weight}.Custom Data\";a:6:{s:5:\"title\";s:11:\"Custom Data\";s:4:\"desc\";s:109:\"Configure custom fields to collect and store custom data which is not included in the standard CiviCRM forms.\";s:2:\"id\";s:10:\"CustomData\";s:3:\"url\";s:35:\"/civicrm/admin/custom/group?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:17:\"{weight}.Profiles\";a:6:{s:5:\"title\";s:8:\"Profiles\";s:4:\"desc\";s:151:\"Profiles allow you to aggregate groups of fields and include them in your site as input forms, contact display pages, and search and listings features.\";s:2:\"id\";s:8:\"Profiles\";s:3:\"url\";s:31:\"/civicrm/admin/uf/group?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:23:\"{weight}.Activity Types\";a:6:{s:5:\"title\";s:14:\"Activity Types\";s:4:\"desc\";s:155:\"CiviCRM has several built-in activity types (meetings, phone calls, emails sent). Track other types of interactions by creating custom activity types here.\";s:2:\"id\";s:13:\"ActivityTypes\";s:3:\"url\";s:44:\"/civicrm/admin/options/activity_type?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:27:\"{weight}.Relationship Types\";a:6:{s:5:\"title\";s:18:\"Relationship Types\";s:4:\"desc\";s:148:\"Contacts can be linked to each other through Relationships (e.g. Spouse, Employer, etc.). Define the types of relationships you want to record here.\";s:2:\"id\";s:17:\"RelationshipTypes\";s:3:\"url\";s:30:\"/civicrm/admin/reltype?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:22:\"{weight}.Contact Types\";a:6:{s:5:\"title\";s:13:\"Contact Types\";s:4:\"desc\";N;s:2:\"id\";s:12:\"ContactTypes\";s:3:\"url\";s:38:\"/civicrm/admin/options/subtype?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:23:\"{weight}.Gender Options\";a:6:{s:5:\"title\";s:14:\"Gender Options\";s:4:\"desc\";s:79:\"Options for assigning gender to individual contacts (e.g. Male, Female, Other).\";s:2:\"id\";s:13:\"GenderOptions\";s:3:\"url\";s:37:\"/civicrm/admin/options/gender?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:40:\"{weight}.Individual Prefixes (Ms, Mr...)\";a:6:{s:5:\"title\";s:31:\"Individual Prefixes (Ms, Mr...)\";s:4:\"desc\";s:66:\"Options for individual contact prefixes (e.g. Ms., Mr., Dr. etc.).\";s:2:\"id\";s:27:\"IndividualPrefixes_Ms_Mr...\";s:3:\"url\";s:48:\"/civicrm/admin/options/individual_prefix?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:40:\"{weight}.Individual Suffixes (Jr, Sr...)\";a:6:{s:5:\"title\";s:31:\"Individual Suffixes (Jr, Sr...)\";s:4:\"desc\";s:61:\"Options for individual contact suffixes (e.g. Jr., Sr. etc.).\";s:2:\"id\";s:27:\"IndividualSuffixes_Jr_Sr...\";s:3:\"url\";s:48:\"/civicrm/admin/options/individual_suffix?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:39:\"{weight}.Location Types (Home, Work...)\";a:6:{s:5:\"title\";s:30:\"Location Types (Home, Work...)\";s:4:\"desc\";s:94:\"Options for categorizing contact addresses and phone numbers (e.g. Home, Work, Billing, etc.).\";s:2:\"id\";s:26:\"LocationTypes_Home_Work...\";s:3:\"url\";s:35:\"/civicrm/admin/locationType?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:22:\"{weight}.Website Types\";a:6:{s:5:\"title\";s:13:\"Website Types\";s:4:\"desc\";s:48:\"Options for assigning website types to contacts.\";s:2:\"id\";s:12:\"WebsiteTypes\";s:3:\"url\";s:43:\"/civicrm/admin/options/website_type?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:35:\"{weight}.Instant Messenger Services\";a:6:{s:5:\"title\";s:26:\"Instant Messenger Services\";s:4:\"desc\";s:79:\"List of IM services which can be used when recording screen-names for contacts.\";s:2:\"id\";s:24:\"InstantMessengerServices\";s:3:\"url\";s:56:\"/civicrm/admin/options/instant_messenger_service?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:31:\"{weight}.Mobile Phone Providers\";a:6:{s:5:\"title\";s:22:\"Mobile Phone Providers\";s:4:\"desc\";s:90:\"List of mobile phone providers which can be assigned when recording contact phone numbers.\";s:2:\"id\";s:20:\"MobilePhoneProviders\";s:3:\"url\";s:46:\"/civicrm/admin/options/mobile_provider?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:19:\"{weight}.Phone Type\";a:6:{s:5:\"title\";s:10:\"Phone Type\";s:4:\"desc\";s:80:\"Options for assigning phone type to contacts (e.g Phone,\n Mobile, Fax, Pager)\";s:2:\"id\";s:9:\"PhoneType\";s:3:\"url\";s:41:\"/civicrm/admin/options/phone_type?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:28:\"{weight}.Display Preferences\";a:6:{s:5:\"title\";s:19:\"Display Preferences\";s:4:\"desc\";N;s:2:\"id\";s:18:\"DisplayPreferences\";s:3:\"url\";s:50:\"/civicrm/admin/setting/preferences/display?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:27:\"{weight}.Search Preferences\";a:6:{s:5:\"title\";s:18:\"Search Preferences\";s:4:\"desc\";N;s:2:\"id\";s:17:\"SearchPreferences\";s:3:\"url\";s:37:\"/civicrm/admin/setting/search?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:25:\"{weight}.Date Preferences\";a:6:{s:5:\"title\";s:16:\"Date Preferences\";s:4:\"desc\";N;s:2:\"id\";s:15:\"DatePreferences\";s:3:\"url\";s:52:\"/civicrm/admin/setting/preferences/date/edit?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:24:\"{weight}.Navigation Menu\";a:6:{s:5:\"title\";s:15:\"Navigation Menu\";s:4:\"desc\";s:79:\"Add or remove menu items, and modify the order of items on the navigation menu.\";s:2:\"id\";s:14:\"NavigationMenu\";s:3:\"url\";s:27:\"/civicrm/admin/menu?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:26:\"{weight}.Word Replacements\";a:6:{s:5:\"title\";s:17:\"Word Replacements\";s:4:\"desc\";s:18:\"Word Replacements.\";s:2:\"id\";s:16:\"WordReplacements\";s:3:\"url\";s:47:\"/civicrm/admin/options/wordreplacements?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:31:\"{weight}.Manage Custom Searches\";a:6:{s:5:\"title\";s:22:\"Manage Custom Searches\";s:4:\"desc\";s:225:\"Developers and accidental techies with a bit of PHP and SQL knowledge can create new search forms to handle specific search and reporting needs which aren\'t covered by the built-in Advanced Search and Search Builder features.\";s:2:\"id\";s:20:\"ManageCustomSearches\";s:3:\"url\";s:44:\"/civicrm/admin/options/custom_search?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:14:\"CiviContribute\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:9:{s:32:\"{weight}.Personal Campaign Pages\";a:6:{s:5:\"title\";s:23:\"Personal Campaign Pages\";s:4:\"desc\";s:49:\"View and manage existing personal campaign pages.\";s:2:\"id\";s:21:\"PersonalCampaignPages\";s:3:\"url\";s:49:\"/civicrm/admin/pcp?context=contribute&reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:34:\"{weight}.Manage Contribution Pages\";a:6:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:4:\"desc\";s:242:\"CiviContribute allows you to create and maintain any number of Online Contribution Pages. You can create different pages for different programs or campaigns - and customize text, amounts, types of information collected from contributors, etc.\";s:2:\"id\";s:23:\"ManageContributionPages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:24:\"{weight}.Manage Premiums\";a:6:{s:5:\"title\";s:15:\"Manage Premiums\";s:4:\"desc\";s:175:\"CiviContribute allows you to configure any number of Premiums which can be offered to contributors as incentives / thank-you gifts. Define the premiums you want to offer here.\";s:2:\"id\";s:14:\"ManagePremiums\";s:3:\"url\";s:48:\"/civicrm/admin/contribute/managePremiums?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:24:\"{weight}.Financial Types\";a:6:{s:5:\"title\";s:15:\"Financial Types\";s:4:\"desc\";s:64:\"Formerly civicrm_contribution_type merged into this table in 4.1\";s:2:\"id\";s:14:\"FinancialTypes\";s:3:\"url\";s:46:\"/civicrm/admin/financial/financialType?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:27:\"{weight}.Financial Accounts\";a:6:{s:5:\"title\";s:18:\"Financial Accounts\";s:4:\"desc\";s:128:\"Financial types are used to categorize contributions for reporting and accounting purposes. These are also referred to as Funds.\";s:2:\"id\";s:17:\"FinancialAccounts\";s:3:\"url\";s:49:\"/civicrm/admin/financial/financialAccount?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:24:\"{weight}.Payment Methods\";a:6:{s:5:\"title\";s:15:\"Payment Methods\";s:4:\"desc\";s:224:\"You may choose to record the payment instrument used for each contribution. Common payment methods are installed by default (e.g. Check, Cash, Credit Card...). If your site requires additional payment methods, add them here.\";s:2:\"id\";s:14:\"PaymentMethods\";s:3:\"url\";s:49:\"/civicrm/admin/options/payment_instrument?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:30:\"{weight}.Accepted Credit Cards\";a:6:{s:5:\"title\";s:21:\"Accepted Credit Cards\";s:4:\"desc\";s:94:\"Credit card options that will be offered to contributors using your Online Contribution pages.\";s:2:\"id\";s:19:\"AcceptedCreditCards\";s:3:\"url\";s:48:\"/civicrm/admin/options/accept_creditcard?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:26:\"{weight}.Soft Credit Types\";a:6:{s:5:\"title\";s:17:\"Soft Credit Types\";s:4:\"desc\";s:86:\"Soft Credit Types that will be offered to contributors during soft credit contribution\";s:2:\"id\";s:15:\"SoftCreditTypes\";s:3:\"url\";s:47:\"/civicrm/admin/options/soft_credit_type?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:42:\"{weight}.CiviContribute Component Settings\";a:6:{s:5:\"title\";s:33:\"CiviContribute Component Settings\";s:4:\"desc\";s:42:\"Configure global CiviContribute behaviors.\";s:2:\"id\";s:31:\"CiviContributeComponentSettings\";s:3:\"url\";s:53:\"/civicrm/admin/setting/preferences/contribute?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:6:\"Manage\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:3:{s:42:\"{weight}.Find and Merge Duplicate Contacts\";a:6:{s:5:\"title\";s:33:\"Find and Merge Duplicate Contacts\";s:4:\"desc\";s:158:\"Manage the rules used to identify potentially duplicate contact records. Scan for duplicates using a selected rule and merge duplicate contact data as needed.\";s:2:\"id\";s:29:\"FindandMergeDuplicateContacts\";s:3:\"url\";s:36:\"/civicrm/contact/deduperules?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:26:\"{weight}.Dedupe Exceptions\";a:6:{s:5:\"title\";s:17:\"Dedupe Exceptions\";s:4:\"desc\";N;s:2:\"id\";s:16:\"DedupeExceptions\";s:3:\"url\";s:33:\"/civicrm/dedupe/exception?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:27:\"{weight}.Scheduled Jobs Log\";a:6:{s:5:\"title\";s:18:\"Scheduled Jobs Log\";s:4:\"desc\";s:46:\"Browsing the log of periodially running tasks.\";s:2:\"id\";s:16:\"ScheduledJobsLog\";s:3:\"url\";s:29:\"/civicrm/admin/joblog?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:14:\"Communications\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:11:{s:46:\"{weight}.Organization Address and Contact Info\";a:6:{s:5:\"title\";s:37:\"Organization Address and Contact Info\";s:4:\"desc\";s:150:\"Configure primary contact name, email, return-path and address information. This information is used by CiviMail to identify the sending organization.\";s:2:\"id\";s:33:\"OrganizationAddressandContactInfo\";s:3:\"url\";s:47:\"/civicrm/admin/domain?action=update&reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:29:\"{weight}.From Email Addresses\";a:6:{s:5:\"title\";s:20:\"From Email Addresses\";s:4:\"desc\";s:74:\"List of Email Addresses which can be used when sending emails to contacts.\";s:2:\"id\";s:18:\"FromEmailAddresses\";s:3:\"url\";s:49:\"/civicrm/admin/options/from_email_address?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:26:\"{weight}.Message Templates\";a:6:{s:5:\"title\";s:17:\"Message Templates\";s:4:\"desc\";s:130:\"Message templates allow you to save and re-use messages with layouts which you can use when sending email to one or more contacts.\";s:2:\"id\";s:16:\"MessageTemplates\";s:3:\"url\";s:39:\"/civicrm/admin/messageTemplates?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:27:\"{weight}.Schedule Reminders\";a:6:{s:5:\"title\";s:18:\"Schedule Reminders\";s:4:\"desc\";s:19:\"Schedule Reminders.\";s:2:\"id\";s:17:\"ScheduleReminders\";s:3:\"url\";s:40:\"/civicrm/admin/scheduleReminders?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:40:\"{weight}.Preferred Communication Methods\";a:6:{s:5:\"title\";s:31:\"Preferred Communication Methods\";s:4:\"desc\";s:117:\"One or more preferred methods of communication can be assigned to each contact. Customize the available options here.\";s:2:\"id\";s:29:\"PreferredCommunicationMethods\";s:3:\"url\";s:61:\"/civicrm/admin/options/preferred_communication_method?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:27:\"{weight}.Label Page Formats\";a:6:{s:5:\"title\";s:18:\"Label Page Formats\";s:4:\"desc\";s:82:\"Configure label sizes and page layouts that are used when printing mailing labels.\";s:2:\"id\";s:16:\"LabelPageFormats\";s:3:\"url\";s:35:\"/civicrm/admin/labelFormats?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:33:\"{weight}.Print Page (PDF) Formats\";a:6:{s:5:\"title\";s:24:\"Print Page (PDF) Formats\";s:4:\"desc\";s:95:\"Configure PDF Page Formats that can be assigned to Message Templates when creating PDF letters.\";s:2:\"id\";s:20:\"PrintPage_PDFFormats\";s:3:\"url\";s:33:\"/civicrm/admin/pdfFormats?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:36:\"{weight}.Communication Style Options\";a:6:{s:5:\"title\";s:27:\"Communication Style Options\";s:4:\"desc\";s:42:\"Options for Communication Style selection.\";s:2:\"id\";s:25:\"CommunicationStyleOptions\";s:3:\"url\";s:50:\"/civicrm/admin/options/communication_style?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:31:\"{weight}.Email Greeting Formats\";a:6:{s:5:\"title\";s:22:\"Email Greeting Formats\";s:4:\"desc\";s:75:\"Options for assigning email greetings to individual and household contacts.\";s:2:\"id\";s:20:\"EmailGreetingFormats\";s:3:\"url\";s:45:\"/civicrm/admin/options/email_greeting?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:32:\"{weight}.Postal Greeting Formats\";a:6:{s:5:\"title\";s:23:\"Postal Greeting Formats\";s:4:\"desc\";s:76:\"Options for assigning postal greetings to individual and household contacts.\";s:2:\"id\";s:21:\"PostalGreetingFormats\";s:3:\"url\";s:46:\"/civicrm/admin/options/postal_greeting?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:26:\"{weight}.Addressee Formats\";a:6:{s:5:\"title\";s:17:\"Addressee Formats\";s:4:\"desc\";s:83:\"Options for assigning addressee to individual, household and organization contacts.\";s:2:\"id\";s:16:\"AddresseeFormats\";s:3:\"url\";s:40:\"/civicrm/admin/options/addressee?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:12:\"Localization\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:4:{s:39:\"{weight}.Languages, Currency, Locations\";a:6:{s:5:\"title\";s:30:\"Languages, Currency, Locations\";s:4:\"desc\";N;s:2:\"id\";s:28:\"Languages_Currency_Locations\";s:3:\"url\";s:43:\"/civicrm/admin/setting/localization?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:25:\"{weight}.Address Settings\";a:6:{s:5:\"title\";s:16:\"Address Settings\";s:4:\"desc\";N;s:2:\"id\";s:15:\"AddressSettings\";s:3:\"url\";s:50:\"/civicrm/admin/setting/preferences/address?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:21:\"{weight}.Date Formats\";a:6:{s:5:\"title\";s:12:\"Date Formats\";s:4:\"desc\";N;s:2:\"id\";s:11:\"DateFormats\";s:3:\"url\";s:35:\"/civicrm/admin/setting/date?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:28:\"{weight}.Preferred Languages\";a:6:{s:5:\"title\";s:19:\"Preferred Languages\";s:4:\"desc\";s:30:\"Options for contact languages.\";s:2:\"id\";s:18:\"PreferredLanguages\";s:3:\"url\";s:40:\"/civicrm/admin/options/languages?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:21:\"Users and Permissions\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:2:{s:23:\"{weight}.Access Control\";a:6:{s:5:\"title\";s:14:\"Access Control\";s:4:\"desc\";s:73:\"Grant or deny access to actions (view, edit...), features and components.\";s:2:\"id\";s:13:\"AccessControl\";s:3:\"url\";s:29:\"/civicrm/admin/access?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:38:\"{weight}.Synchronize Users to Contacts\";a:6:{s:5:\"title\";s:29:\"Synchronize Users to Contacts\";s:4:\"desc\";s:71:\"Automatically create a CiviCRM contact record for each CMS user record.\";s:2:\"id\";s:26:\"SynchronizeUserstoContacts\";s:3:\"url\";s:32:\"/civicrm/admin/synchUser?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:15:\"System Settings\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:20:{s:32:\"{weight}.Configuration Checklist\";a:6:{s:5:\"title\";s:23:\"Configuration Checklist\";s:4:\"desc\";s:55:\"List of configuration tasks with links to each setting.\";s:2:\"id\";s:22:\"ConfigurationChecklist\";s:3:\"url\";s:33:\"/civicrm/admin/configtask?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:34:\"{weight}.Enable CiviCRM Components\";a:6:{s:5:\"title\";s:25:\"Enable CiviCRM Components\";s:4:\"desc\";s:269:\"Enable or disable components (e.g. CiviEvent, CiviMember, etc.) for your site based on the features you need. We recommend disabling any components not being used in order to simplify the user interface. You can easily re-enable components at any time from this screen.\";s:2:\"id\";s:23:\"EnableCiviCRMComponents\";s:3:\"url\";s:40:\"/civicrm/admin/setting/component?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:26:\"{weight}.Manage Extensions\";a:6:{s:5:\"title\";s:17:\"Manage Extensions\";s:4:\"desc\";s:0:\"\";s:2:\"id\";s:16:\"ManageExtensions\";s:3:\"url\";s:33:\"/civicrm/admin/extensions?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:32:\"{weight}.Outbound Email Settings\";a:6:{s:5:\"title\";s:23:\"Outbound Email Settings\";s:4:\"desc\";N;s:2:\"id\";s:21:\"OutboundEmailSettings\";s:3:\"url\";s:35:\"/civicrm/admin/setting/smtp?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:37:\"{weight}.Settings - Payment Processor\";a:6:{s:5:\"title\";s:28:\"Settings - Payment Processor\";s:4:\"desc\";s:48:\"Payment Processor setup for CiviCRM transactions\";s:2:\"id\";s:25:\"Settings-PaymentProcessor\";s:3:\"url\";s:39:\"/civicrm/admin/paymentProcessor?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:30:\"{weight}.Mapping and Geocoding\";a:6:{s:5:\"title\";s:21:\"Mapping and Geocoding\";s:4:\"desc\";N;s:2:\"id\";s:19:\"MappingandGeocoding\";s:3:\"url\";s:38:\"/civicrm/admin/setting/mapping?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:53:\"{weight}.Misc (Undelete, PDFs, Limits, Logging, etc.)\";a:6:{s:5:\"title\";s:44:\"Misc (Undelete, PDFs, Limits, Logging, etc.)\";s:4:\"desc\";s:63:\"Enable undelete/move to trash feature, detailed change logging.\";s:2:\"id\";s:38:\"Misc_Undelete_PDFs_Limits_Logging_etc.\";s:3:\"url\";s:35:\"/civicrm/admin/setting/misc?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:20:\"{weight}.Directories\";a:6:{s:5:\"title\";s:11:\"Directories\";s:4:\"desc\";N;s:2:\"id\";s:11:\"Directories\";s:3:\"url\";s:35:\"/civicrm/admin/setting/path?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:22:\"{weight}.Resource URLs\";a:6:{s:5:\"title\";s:13:\"Resource URLs\";s:4:\"desc\";N;s:2:\"id\";s:12:\"ResourceURLs\";s:3:\"url\";s:34:\"/civicrm/admin/setting/url?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:40:\"{weight}.Cleanup Caches and Update Paths\";a:6:{s:5:\"title\";s:31:\"Cleanup Caches and Update Paths\";s:4:\"desc\";s:157:\"Reset the Base Directory Path and Base URL settings - generally when a CiviCRM site is moved to another location in the file system and/or to another domain.\";s:2:\"id\";s:27:\"CleanupCachesandUpdatePaths\";s:3:\"url\";s:50:\"/civicrm/admin/setting/updateConfigBackend?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:33:\"{weight}.CMS Database Integration\";a:6:{s:5:\"title\";s:24:\"CMS Database Integration\";s:4:\"desc\";N;s:2:\"id\";s:22:\"CMSDatabaseIntegration\";s:3:\"url\";s:33:\"/civicrm/admin/setting/uf?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:36:\"{weight}.Safe File Extension Options\";a:6:{s:5:\"title\";s:27:\"Safe File Extension Options\";s:4:\"desc\";s:44:\"File Extensions that can be considered safe.\";s:2:\"id\";s:24:\"SafeFileExtensionOptions\";s:3:\"url\";s:50:\"/civicrm/admin/options/safe_file_extension?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:22:\"{weight}.Option Groups\";a:6:{s:5:\"title\";s:13:\"Option Groups\";s:4:\"desc\";s:35:\"Access all meta-data option groups.\";s:2:\"id\";s:12:\"OptionGroups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:31:\"{weight}.Import/Export Mappings\";a:6:{s:5:\"title\";s:22:\"Import/Export Mappings\";s:4:\"desc\";s:141:\"Import and Export mappings allow you to easily run the same job multiple times. This option allows you to rename or delete existing mappings.\";s:2:\"id\";s:21:\"Import_ExportMappings\";s:3:\"url\";s:35:\"/civicrm/admin/mapping/edit?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:18:\"{weight}.Debugging\";a:6:{s:5:\"title\";s:9:\"Debugging\";s:4:\"desc\";N;s:2:\"id\";s:9:\"Debugging\";s:3:\"url\";s:36:\"/civicrm/admin/setting/debug?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:28:\"{weight}.Multi Site Settings\";a:6:{s:5:\"title\";s:19:\"Multi Site Settings\";s:4:\"desc\";N;s:2:\"id\";s:17:\"MultiSiteSettings\";s:3:\"url\";s:52:\"/civicrm/admin/setting/preferences/multisite?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:23:\"{weight}.Scheduled Jobs\";a:6:{s:5:\"title\";s:14:\"Scheduled Jobs\";s:4:\"desc\";s:35:\"Managing periodially running tasks.\";s:2:\"id\";s:13:\"ScheduledJobs\";s:3:\"url\";s:26:\"/civicrm/admin/job?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:27:\"{weight}.Edit Scheduled Job\";a:6:{s:5:\"title\";s:18:\"Edit Scheduled Job\";s:4:\"desc\";s:32:\"Edit a periodially running task.\";s:2:\"id\";s:16:\"EditScheduledJob\";s:3:\"url\";s:31:\"/civicrm/admin/job/edit?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:22:\"{weight}.Sms Providers\";a:6:{s:5:\"title\";s:13:\"Sms Providers\";s:4:\"desc\";s:27:\"To configure a sms provider\";s:2:\"id\";s:12:\"SmsProviders\";s:3:\"url\";s:40:\"/civicrm/admin/sms/provider/edit?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:27:\"{weight}.reCAPTCHA Settings\";a:6:{s:5:\"title\";s:18:\"reCAPTCHA Settings\";s:4:\"desc\";s:108:\"Uses the Google reCAPTCHA web service to improve the CAPTCHA system. It is tough on bots and easy on humans.\";s:2:\"id\";s:17:\"reCAPTCHASettings\";s:3:\"url\";s:40:\"/civicrm/admin/setting/recaptcha?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:12:\"CiviCampaign\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:5:{s:40:\"{weight}.CiviCampaign Component Settings\";a:6:{s:5:\"title\";s:31:\"CiviCampaign Component Settings\";s:4:\"desc\";s:40:\"Configure global CiviCampaign behaviors.\";s:2:\"id\";s:29:\"CiviCampaignComponentSettings\";s:3:\"url\";s:51:\"/civicrm/admin/setting/preferences/campaign?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:21:\"{weight}.Survey Types\";a:6:{s:5:\"title\";s:12:\"Survey Types\";s:4:\"desc\";N;s:2:\"id\";s:11:\"SurveyTypes\";s:3:\"url\";s:42:\"/civicrm/admin/campaign/surveyType?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:23:\"{weight}.Campaign Types\";a:6:{s:5:\"title\";s:14:\"Campaign Types\";s:4:\"desc\";s:47:\"categorize your campaigns using campaign types.\";s:2:\"id\";s:13:\"CampaignTypes\";s:3:\"url\";s:44:\"/civicrm/admin/options/campaign_type?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:24:\"{weight}.Campaign Status\";a:6:{s:5:\"title\";s:15:\"Campaign Status\";s:4:\"desc\";s:34:\"Define statuses for campaign here.\";s:2:\"id\";s:14:\"CampaignStatus\";s:3:\"url\";s:46:\"/civicrm/admin/options/campaign_status?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:25:\"{weight}.Engagement Index\";a:6:{s:5:\"title\";s:16:\"Engagement Index\";s:4:\"desc\";s:18:\"Engagement levels.\";s:2:\"id\";s:15:\"EngagementIndex\";s:3:\"url\";s:47:\"/civicrm/admin/options/engagement_index?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:9:\"CiviEvent\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:8:{s:37:\"{weight}.CiviEvent Component Settings\";a:6:{s:5:\"title\";s:28:\"CiviEvent Component Settings\";s:4:\"desc\";s:37:\"Configure global CiviEvent behaviors.\";s:2:\"id\";s:26:\"CiviEventComponentSettings\";s:3:\"url\";s:48:\"/civicrm/admin/setting/preferences/event?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:33:\"{weight}.Event Name Badge Layouts\";a:6:{s:5:\"title\";s:24:\"Event Name Badge Layouts\";s:4:\"desc\";s:107:\"Configure name badge layouts for event participants, including logos and what data to include on the badge.\";s:2:\"id\";s:21:\"EventNameBadgeLayouts\";s:3:\"url\";s:52:\"/civicrm/admin/badgelayout?action=browse&reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:22:\"{weight}.Manage Events\";a:6:{s:5:\"title\";s:13:\"Manage Events\";s:4:\"desc\";s:136:\"Create and edit event configuration including times, locations, online registration forms, and fees. Links for iCal and RSS syndication.\";s:2:\"id\";s:12:\"ManageEvents\";s:3:\"url\";s:28:\"/civicrm/admin/event?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:24:\"{weight}.Event Templates\";a:6:{s:5:\"title\";s:15:\"Event Templates\";s:4:\"desc\";s:115:\"Administrators can create Event Templates - which are basically master event records pre-filled with default values\";s:2:\"id\";s:14:\"EventTemplates\";s:3:\"url\";s:36:\"/civicrm/admin/eventTemplate?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:20:\"{weight}.Event Types\";a:6:{s:5:\"title\";s:11:\"Event Types\";s:4:\"desc\";s:143:\"Use Event Types to categorize your events. Event feeds can be filtered by Event Type and participant searches can use Event Type as a criteria.\";s:2:\"id\";s:10:\"EventTypes\";s:3:\"url\";s:41:\"/civicrm/admin/options/event_type?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:27:\"{weight}.Participant Status\";a:6:{s:5:\"title\";s:18:\"Participant Status\";s:4:\"desc\";s:154:\"Define statuses for event participants here (e.g. Registered, Attended, Cancelled...). You can then assign statuses and search for participants by status.\";s:2:\"id\";s:17:\"ParticipantStatus\";s:3:\"url\";s:41:\"/civicrm/admin/participant_status?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:25:\"{weight}.Participant Role\";a:6:{s:5:\"title\";s:16:\"Participant Role\";s:4:\"desc\";s:138:\"Define participant roles for events here (e.g. Attendee, Host, Speaker...). You can then assign roles and search for participants by role.\";s:2:\"id\";s:15:\"ParticipantRole\";s:3:\"url\";s:47:\"/civicrm/admin/options/participant_role?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:38:\"{weight}.Participant Listing Templates\";a:6:{s:5:\"title\";s:29:\"Participant Listing Templates\";s:4:\"desc\";s:48:\"Template to control participant listing display.\";s:2:\"id\";s:27:\"ParticipantListingTemplates\";s:3:\"url\";s:50:\"/civicrm/admin/options/participant_listing?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:8:\"CiviMail\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:5:{s:36:\"{weight}.CiviMail Component Settings\";a:6:{s:5:\"title\";s:27:\"CiviMail Component Settings\";s:4:\"desc\";s:36:\"Configure global CiviMail behaviors.\";s:2:\"id\";s:25:\"CiviMailComponentSettings\";s:3:\"url\";s:50:\"/civicrm/admin/setting/preferences/mailing?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:24:\"{weight}.Mailer Settings\";a:6:{s:5:\"title\";s:15:\"Mailer Settings\";s:4:\"desc\";s:61:\"Configure spool period, throttling and other mailer settings.\";s:2:\"id\";s:14:\"MailerSettings\";s:3:\"url\";s:27:\"/civicrm/admin/mail?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:49:\"{weight}.Headers, Footers, and Automated Messages\";a:6:{s:5:\"title\";s:40:\"Headers, Footers, and Automated Messages\";s:4:\"desc\";s:143:\"Configure the header and footer used for mailings. Customize the content of automated Subscribe, Unsubscribe, Resubscribe and Opt-out messages.\";s:2:\"id\";s:36:\"Headers_Footers_andAutomatedMessages\";s:3:\"url\";s:37:\"/civicrm/admin/component/edit?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:29:\"{weight}.From Email Addresses\";a:6:{s:5:\"title\";s:20:\"From Email Addresses\";s:4:\"desc\";s:74:\"List of Email Addresses which can be used when sending emails to contacts.\";s:2:\"id\";s:18:\"FromEmailAddresses\";s:3:\"url\";s:58:\"/civicrm/admin/options/from_email_address/civimail?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:22:\"{weight}.Mail Accounts\";a:6:{s:5:\"title\";s:13:\"Mail Accounts\";s:4:\"desc\";s:20:\"List email accounts.\";s:2:\"id\";s:12:\"MailAccounts\";s:3:\"url\";s:35:\"/civicrm/admin/mailSettings?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:10:\"CiviMember\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:3:{s:38:\"{weight}.CiviMember Component Settings\";a:6:{s:5:\"title\";s:29:\"CiviMember Component Settings\";s:4:\"desc\";s:38:\"Configure global CiviMember behaviors.\";s:2:\"id\";s:27:\"CiviMemberComponentSettings\";s:3:\"url\";s:49:\"/civicrm/admin/setting/preferences/member?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:25:\"{weight}.Membership Types\";a:6:{s:5:\"title\";s:16:\"Membership Types\";s:4:\"desc\";s:174:\"Define the types of memberships you want to offer. For each type, you can specify a \'name\' (Gold Member, Honor Society Member...), a description, duration, and a minimum fee.\";s:2:\"id\";s:15:\"MembershipTypes\";s:3:\"url\";s:44:\"/civicrm/admin/member/membershipType?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:32:\"{weight}.Membership Status Rules\";a:6:{s:5:\"title\";s:23:\"Membership Status Rules\";s:4:\"desc\";s:187:\"Status \'rules\' define the current status for a membership based on that membership\'s start and end dates. You can adjust the default status options and rules as needed to meet your needs.\";s:2:\"id\";s:21:\"MembershipStatusRules\";s:3:\"url\";s:46:\"/civicrm/admin/member/membershipStatus?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:12:\"Option Lists\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:1:{s:20:\"{weight}.Grant Types\";a:6:{s:5:\"title\";s:11:\"Grant Types\";s:4:\"desc\";s:148:\"List of types which can be assigned to Grants. (Enable CiviGrant from Administer > System Settings > Enable Components if you want to track grants.)\";s:2:\"id\";s:10:\"GrantTypes\";s:3:\"url\";s:41:\"/civicrm/admin/options/grant_type?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:9:\"Customize\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:1:{s:19:\"{weight}.Price Sets\";a:6:{s:5:\"title\";s:10:\"Price Sets\";s:4:\"desc\";s:205:\"Price sets allow you to offer multiple options with associated fees (e.g. pre-conference workshops, additional meals, etc.). Configure Price Sets for events which need more than a single set of fee levels.\";s:2:\"id\";s:9:\"PriceSets\";s:3:\"url\";s:28:\"/civicrm/admin/price?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:8:\"CiviCase\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:5:{s:26:\"{weight}.CiviCase Settings\";a:6:{s:5:\"title\";s:17:\"CiviCase Settings\";s:4:\"desc\";N;s:2:\"id\";s:16:\"CiviCaseSettings\";s:3:\"url\";s:35:\"/civicrm/admin/setting/case?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:19:\"{weight}.Case Types\";a:6:{s:5:\"title\";s:10:\"Case Types\";s:4:\"desc\";s:137:\"List of types which can be assigned to Cases. (Enable the Cases tab from System Settings - Enable Components if you want to track cases.)\";s:2:\"id\";s:9:\"CaseTypes\";s:3:\"url\";s:40:\"/civicrm/admin/options/case_type?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:24:\"{weight}.Redaction Rules\";a:6:{s:5:\"title\";s:15:\"Redaction Rules\";s:4:\"desc\";s:223:\"List of rules which can be applied to user input strings so that the redacted output can be recognized as repeated instances of the same string or can be identified as a \"semantic type of the data element\" within case data.\";s:2:\"id\";s:14:\"RedactionRules\";s:3:\"url\";s:45:\"/civicrm/admin/options/redaction_rule?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:22:\"{weight}.Case Statuses\";a:6:{s:5:\"title\";s:13:\"Case Statuses\";s:4:\"desc\";s:48:\"List of statuses that can be assigned to a case.\";s:2:\"id\";s:12:\"CaseStatuses\";s:3:\"url\";s:42:\"/civicrm/admin/options/case_status?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:26:\"{weight}.Encounter Mediums\";a:6:{s:5:\"title\";s:17:\"Encounter Mediums\";s:4:\"desc\";s:26:\"List of encounter mediums.\";s:2:\"id\";s:16:\"EncounterMediums\";s:3:\"url\";s:47:\"/civicrm/admin/options/encounter_medium?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:10:\"CiviReport\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:3:{s:40:\"{weight}.Create New Report from Template\";a:6:{s:5:\"title\";s:31:\"Create New Report from Template\";s:4:\"desc\";s:49:\"Component wise listing of all available templates\";s:2:\"id\";s:27:\"CreateNewReportfromTemplate\";s:3:\"url\";s:43:\"/civicrm/admin/report/template/list?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:25:\"{weight}.Manage Templates\";a:6:{s:5:\"title\";s:16:\"Manage Templates\";s:4:\"desc\";s:45:\"Browse, Edit and Delete the Report templates.\";s:2:\"id\";s:15:\"ManageTemplates\";s:3:\"url\";s:53:\"/civicrm/admin/report/options/report_template?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:24:\"{weight}.Reports Listing\";a:6:{s:5:\"title\";s:15:\"Reports Listing\";s:4:\"desc\";s:60:\"Browse existing report, change report criteria and settings.\";s:2:\"id\";s:14:\"ReportsListing\";s:3:\"url\";s:34:\"/civicrm/admin/report/list?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}}',NULL,NULL,NULL,1,0,1,1,1,1,1,0,'a:0:{}');
/*!40000 ALTER TABLE `civicrm_menu` ENABLE KEYS */;
UNLOCK TABLES;
@@ -5316,66 +5322,66 @@ UNLOCK TABLES;
LOCK TABLES `civicrm_msg_template` WRITE;
/*!40000 ALTER TABLE `civicrm_msg_template` DISABLE KEYS */;
INSERT INTO `civicrm_msg_template` (`id`, `msg_title`, `msg_subject`, `msg_text`, `msg_html`, `is_active`, `workflow_id`, `workflow_name`, `is_default`, `is_reserved`, `is_sms`, `pdf_format_id`) VALUES
- (1,'Cases - Send Copy of an Activity','{if !empty($idHash)}[case #{$idHash}]{/if} {$activitySubject}\n','===========================================================\n{ts}Activity Summary{/ts} - {$activityTypeName}\n===========================================================\n{if !empty($isCaseActivity)}\n{ts}Your Case Role(s){/ts} : {$contact.role|default:\'\'}\n{if !empty($manageCaseURL)}\n{ts}Manage Case{/ts} : {$manageCaseURL}\n{/if}\n{/if}\n\n{if !empty($editActURL)}\n{ts}Edit activity{/ts} : {$editActURL}\n{/if}\n{if !empty($viewActURL)}\n{ts}View activity{/ts} : {$viewActURL}\n{/if}\n\n{foreach from=$activity.fields item=field}\n{if $field.type eq \'Date\'}\n{$field.label} : {$field.value|crmDate:$config->dateformatDatetime}\n{else}\n{$field.label} : {$field.value}\n{/if}\n{/foreach}\n\n{if !empty($activity.customGroups)}\n{foreach from=$activity.customGroups key=customGroupName item=customGroup}\n==========================================================\n{$customGroupName}\n==========================================================\n{foreach from=$customGroup item=field}\n{if $field.type eq \'Date\'}\n{$field.label} : {$field.value|crmDate:$config->dateformatDatetime}\n{else}\n{$field.label} : {$field.value}\n{/if}\n{/foreach}\n\n{/foreach}\n{/if}\n','\n\n\n \n \n\n\n\n {capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n {capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n {capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n \n\n \n \n \n\n \n\n \n \n \n \n \n {ts}Activity Summary{/ts} - {$activityTypeName}\n \n \n {if !empty($isCaseActivity)}\n \n \n {ts}Your Case Role(s){/ts}\n \n \n {$contact.role|default:\'\'}\n \n \n {if !empty($manageCaseURL)}\n \n \n {ts}Manage Case{/ts} \n \n \n {/if}\n {/if}\n {if !empty($editActURL)}\n \n \n {ts}Edit activity{/ts} \n \n \n {/if}\n {if !empty($viewActURL)}\n \n \n {ts}View activity{/ts} \n \n \n {/if}\n {foreach from=$activity.fields item=field}\n \n \n {$field.label}\n \n \n {if $field.type eq \'Date\'}\n {$field.value|crmDate:$config->dateformatDatetime}\n {else}\n {$field.value}\n {/if}\n \n \n {/foreach}\n\n {if !empty($activity.customGroups)}\n {foreach from=$activity.customGroups key=customGroupName item=customGroup}\n \n \n {$customGroupName}\n \n \n {foreach from=$customGroup item=field}\n \n \n {$field.label}\n \n \n {if $field.type eq \'Date\'}\n {$field.value|crmDate:$config->dateformatDatetime}\n {else}\n {$field.value}\n {/if}\n \n \n {/foreach}\n {/foreach}\n {/if}\n
\n \n \n
\n\n\n',1,814,'case_activity',1,0,0,NULL),
- (2,'Cases - Send Copy of an Activity','{if !empty($idHash)}[case #{$idHash}]{/if} {$activitySubject}\n','===========================================================\n{ts}Activity Summary{/ts} - {$activityTypeName}\n===========================================================\n{if !empty($isCaseActivity)}\n{ts}Your Case Role(s){/ts} : {$contact.role|default:\'\'}\n{if !empty($manageCaseURL)}\n{ts}Manage Case{/ts} : {$manageCaseURL}\n{/if}\n{/if}\n\n{if !empty($editActURL)}\n{ts}Edit activity{/ts} : {$editActURL}\n{/if}\n{if !empty($viewActURL)}\n{ts}View activity{/ts} : {$viewActURL}\n{/if}\n\n{foreach from=$activity.fields item=field}\n{if $field.type eq \'Date\'}\n{$field.label} : {$field.value|crmDate:$config->dateformatDatetime}\n{else}\n{$field.label} : {$field.value}\n{/if}\n{/foreach}\n\n{if !empty($activity.customGroups)}\n{foreach from=$activity.customGroups key=customGroupName item=customGroup}\n==========================================================\n{$customGroupName}\n==========================================================\n{foreach from=$customGroup item=field}\n{if $field.type eq \'Date\'}\n{$field.label} : {$field.value|crmDate:$config->dateformatDatetime}\n{else}\n{$field.label} : {$field.value}\n{/if}\n{/foreach}\n\n{/foreach}\n{/if}\n','\n\n\n \n \n\n\n\n {capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n {capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n {capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n \n\n \n \n \n\n \n\n \n \n \n \n \n {ts}Activity Summary{/ts} - {$activityTypeName}\n \n \n {if !empty($isCaseActivity)}\n \n \n {ts}Your Case Role(s){/ts}\n \n \n {$contact.role|default:\'\'}\n \n \n {if !empty($manageCaseURL)}\n \n \n {ts}Manage Case{/ts} \n \n \n {/if}\n {/if}\n {if !empty($editActURL)}\n \n \n {ts}Edit activity{/ts} \n \n \n {/if}\n {if !empty($viewActURL)}\n \n \n {ts}View activity{/ts} \n \n \n {/if}\n {foreach from=$activity.fields item=field}\n \n \n {$field.label}\n \n \n {if $field.type eq \'Date\'}\n {$field.value|crmDate:$config->dateformatDatetime}\n {else}\n {$field.value}\n {/if}\n \n \n {/foreach}\n\n {if !empty($activity.customGroups)}\n {foreach from=$activity.customGroups key=customGroupName item=customGroup}\n \n \n {$customGroupName}\n \n \n {foreach from=$customGroup item=field}\n \n \n {$field.label}\n \n \n {if $field.type eq \'Date\'}\n {$field.value|crmDate:$config->dateformatDatetime}\n {else}\n {$field.value}\n {/if}\n \n \n {/foreach}\n {/foreach}\n {/if}\n
\n \n \n
\n\n\n',1,814,'case_activity',0,1,0,NULL),
- (3,'Contributions - Duplicate Organization Alert','{ts}CiviContribute Alert: Possible Duplicate Contact Record{/ts} - {contact.display_name}\n','{ts}A contribution / membership signup was made on behalf of the organization listed below.{/ts}\n{ts}The information provided matched multiple existing database records based on the configured Duplicate Matching Rules for your site.{/ts}\n\n{ts}Organization Name{/ts}: {$onBehalfName}\n{ts}Organization Email{/ts}: {$onBehalfEmail}\n{ts}Organization Contact ID{/ts}: {$onBehalfID}\n\n{ts}If you think this may be a duplicate contact which should be merged with an existing record - Go to \"Contacts >> Find and Merge Duplicate Contacts\". Use the strict rule for Organizations to find the potential duplicates and merge them if appropriate.{/ts}\n\n{if $receiptMessage}\n###########################################################\n{ts}Copy of Contribution Receipt{/ts}\n\n###########################################################\n{$receiptMessage}\n\n{/if}\n','\n\n\n \n \n\n\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n \n\n \n \n \n\n \n\n \n \n {ts}A contribution / membership signup was made on behalf of the organization listed below.{/ts}
\n {ts}The information provided matched multiple existing database records based on the configured Duplicate Matching Rules for your site.{/ts}
\n \n \n \n \n \n \n \n {ts}Organization Name{/ts}\n \n \n {$onBehalfName}\n \n \n \n \n {ts}Organization Email{/ts}\n \n \n {$onBehalfEmail}\n \n \n \n \n {ts}Organization Contact ID{/ts}\n \n \n {$onBehalfID}\n \n \n
\n \n \n \n \n {ts}If you think this may be a duplicate contact which should be merged with an existing record - Go to \"Contacts >> Find and Merge Duplicate Contacts\". Use the strict rule for Organizations to find the potential duplicates and merge them if appropriate.{/ts}
\n \n \n {if $receiptMessage}\n \n \n \n \n \n {ts}Copy of Contribution Receipt{/ts}\n \n \n \n \n {* FIXME: the below is most probably not HTML-ised *}\n {$receiptMessage}\n \n \n
\n \n \n {/if}\n
\n\n\n',1,815,'contribution_dupalert',1,0,0,NULL),
- (4,'Contributions - Duplicate Organization Alert','{ts}CiviContribute Alert: Possible Duplicate Contact Record{/ts} - {contact.display_name}\n','{ts}A contribution / membership signup was made on behalf of the organization listed below.{/ts}\n{ts}The information provided matched multiple existing database records based on the configured Duplicate Matching Rules for your site.{/ts}\n\n{ts}Organization Name{/ts}: {$onBehalfName}\n{ts}Organization Email{/ts}: {$onBehalfEmail}\n{ts}Organization Contact ID{/ts}: {$onBehalfID}\n\n{ts}If you think this may be a duplicate contact which should be merged with an existing record - Go to \"Contacts >> Find and Merge Duplicate Contacts\". Use the strict rule for Organizations to find the potential duplicates and merge them if appropriate.{/ts}\n\n{if $receiptMessage}\n###########################################################\n{ts}Copy of Contribution Receipt{/ts}\n\n###########################################################\n{$receiptMessage}\n\n{/if}\n','\n\n\n \n \n\n\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n \n\n \n \n \n\n \n\n \n \n {ts}A contribution / membership signup was made on behalf of the organization listed below.{/ts}
\n {ts}The information provided matched multiple existing database records based on the configured Duplicate Matching Rules for your site.{/ts}
\n \n \n \n \n \n \n \n {ts}Organization Name{/ts}\n \n \n {$onBehalfName}\n \n \n \n \n {ts}Organization Email{/ts}\n \n \n {$onBehalfEmail}\n \n \n \n \n {ts}Organization Contact ID{/ts}\n \n \n {$onBehalfID}\n \n \n
\n \n \n \n \n {ts}If you think this may be a duplicate contact which should be merged with an existing record - Go to \"Contacts >> Find and Merge Duplicate Contacts\". Use the strict rule for Organizations to find the potential duplicates and merge them if appropriate.{/ts}
\n \n \n {if $receiptMessage}\n \n \n \n \n \n {ts}Copy of Contribution Receipt{/ts}\n \n \n \n \n {* FIXME: the below is most probably not HTML-ised *}\n {$receiptMessage}\n \n \n
\n \n \n {/if}\n
\n\n\n',1,815,'contribution_dupalert',0,1,0,NULL),
- (5,'Contributions - Receipt (off-line)','{ts}Contribution Receipt{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{if {contribution.contribution_page_id.receipt_text|boolean}}\n{contribution.contribution_page_id.receipt_text}\n{elseif {contribution.paid_amount|boolean}} {ts}Below you will find a receipt for this contribution.{/ts}\n{/if}\n\n===========================================================\n{ts}Contribution Information{/ts}\n\n===========================================================\n{ts}Contributor{/ts}: {contact.display_name}\n{if \'{contribution.financial_type_id}\'}\n{ts}Financial Type{/ts}: {contribution.financial_type_id:label}\n{/if}\n{if $isShowLineItems}\n---------------------------------------------------------\n{capture assign=ts_item}{ts}Item{/ts}{/capture}\n{capture assign=ts_qty}{ts}Qty{/ts}{/capture}\n{capture assign=ts_each}{ts}Each{/ts}{/capture}\n{if $isShowTax && {contribution.tax_amount|boolean}}\n{capture assign=ts_subtotal}{ts}Subtotal{/ts}{/capture}\n{capture assign=ts_taxRate}{ts}Tax Rate{/ts}{/capture}\n{capture assign=ts_taxAmount}{ts}Tax Amount{/ts}{/capture}\n{/if}\n{capture assign=ts_total}{ts}Total{/ts}{/capture}\n{$ts_item|string_format:\"%-30s\"} {$ts_qty|string_format:\"%5s\"} {$ts_each|string_format:\"%10s\"} {if $isShowTax && {contribution.tax_amount|boolean}} {$ts_subtotal|string_format:\"%10s\"} {$ts_taxRate} {$ts_taxAmount|string_format:\"%10s\"} {/if} {$ts_total|string_format:\"%10s\"}\n----------------------------------------------------------\n{foreach from=$lineItems item=line}\n{capture assign=ts_item}{$line.title}{/capture}{$ts_item|truncate:30:\"...\"|string_format:\"%-30s\"} {$line.qty|string_format:\"%5s\"} {$line.unit_price|crmMoney:\'{contribution.currency}\'|string_format:\"%10s\"} {if $isShowTax && {contribution.tax_amount|boolean}}{$line.line_total|crmMoney:\'{contribution.currency}\'|string_format:\"%10s\"} {if $line.tax_rate || $line.tax_amount != \"\"} {$line.tax_rate|string_format:\"%.2f\"} % {$line.tax_amount|crmMoney:\'{contribution.currency}\'|string_format:\"%10s\"} {else} {/if} {/if} {$line.line_total_inclusive|crmMoney:\'{contribution.currency}\'|string_format:\"%10s\"}\n{/foreach}\n{/if}\n\n\n{if $isShowTax && {contribution.tax_amount|boolean}}\n{ts}Amount before Tax{/ts} : {contribution.tax_exclusive_amount}\n{/if}\n{foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n{if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else}{$taxTerm} {$taxDetail.percentage}%{/if} : {$taxDetail.amount|crmMoney:\'{contribution.currency}\'}\n{/foreach}\n\n{if $isShowTax}\n{ts}Total Tax Amount{/ts} : {contribution.tax_amount}\n{/if}\n{ts}Total Amount{/ts} : {contribution.total_amount}\n{if \'{contribution.receive_date}\'}\n{ts}Contribution Date{/ts}: {contribution.receive_date|crmDate:\"shortdate\"}\n{/if}\n{if \'{contribution.receipt_date}\'}\n{ts}Receipt Date{/ts}: {contribution.receipt_date|crmDate:\"shortdate\"}\n{/if}\n{if {contribution.payment_instrument_id|boolean} && {contribution.paid_amount|boolean}}\n{ts}Paid By{/ts}: {contribution.payment_instrument_id:label}\n{if \'{contribution.check_number}\'}\n{ts}Check Number{/ts}: {contribution.check_number}\n{/if}\n{/if}\n{if \'{contribution.trxn_id}\'}\n{ts}Transaction ID{/ts}: {contribution.trxn_id}\n{/if}\n\n{if !empty($ccContribution)}\n===========================================================\n{ts}Billing Name and Address{/ts}\n\n===========================================================\n{$billingName}\n{$address}\n\n===========================================================\n{ts}Credit Card Information{/ts}\n\n===========================================================\n{$credit_card_type}\n{$credit_card_number}\n{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n{/if}\n{if !empty($customGroup)}\n{foreach from=$customGroup item=value key=customName}\n===========================================================\n{$customName}\n===========================================================\n{foreach from=$value item=v key=n}\n{$n}: {$v}\n{/foreach}\n{/foreach}\n{/if}\n\n{if !empty($softCreditTypes) and !empty($softCredits)}\n{foreach from=$softCreditTypes item=softCreditType key=n}\n===========================================================\n{$softCreditType}\n===========================================================\n{foreach from=$softCredits.$n item=value key=label}\n{$label}: {$value}\n{/foreach}\n{/foreach}\n{/if}\n\n{if !empty($formValues.product_name)}\n===========================================================\n{ts}Premium Information{/ts}\n\n===========================================================\n{$formValues.product_name}\n{if $formValues.product_option}\n{ts}Option{/ts}: {$formValues.product_option}\n{/if}\n{if $formValues.product_sku}\n{ts}SKU{/ts}: {$formValues.product_sku}\n{/if}\n{if !empty($fulfilled_date)}\n{ts}Sent{/ts}: {$fulfilled_date|crmDate}\n{/if}\n{/if}\n','\n\n\n \n \n\n\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n \n\n \n \n \n\n \n\n \n \n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},
{/if}\n \n {if {contribution.contribution_page_id.receipt_text|boolean}}{contribution.contribution_page_id.receipt_text}\n {elseif {contribution.paid_amount|boolean}}{ts}Below you will find a receipt for this contribution.{/ts}{/if}\n
\n \n \n \n \n \n \n \n {ts}Contribution Information{/ts}\n \n \n \n \n {ts}Contributor Name{/ts}\n \n \n {contact.display_name}\n \n \n \n {if \'{contribution.financial_type_id}\'}\n \n {ts}Financial Type{/ts}\n \n \n {contribution.financial_type_id:label}\n \n {/if}\n \n\n {if $isShowLineItems}\n \n \n \n \n {ts}Item{/ts} \n {ts}Qty{/ts} \n {ts}Each{/ts} \n {if $isShowTax && {contribution.tax_amount|boolean}}\n {ts}Subtotal{/ts} \n {ts}Tax Rate{/ts} \n {ts}Tax Amount{/ts} \n {/if}\n {ts}Total{/ts} \n \n {foreach from=$lineItems item=line}\n \n \n {$line.title}\n \n \n {$line.qty}\n \n \n {$line.unit_price|crmMoney:\'{contribution.currency}\'}\n \n {if $isShowTax && {contribution.tax_amount|boolean}}\n \n {$line.line_total|crmMoney:\'{contribution.currency}\'}\n \n {if $line.tax_rate || $line.tax_amount != \"\"}\n \n {$line.tax_rate|string_format:\"%.2f\"}%\n \n \n {$line.tax_amount|crmMoney:\'{contribution.currency}\'}\n \n {else}\n \n \n {/if}\n {/if}\n \n {$line.line_total_inclusive|crmMoney:\'{contribution.currency}\'}\n \n \n {/foreach}\n
\n \n \n\n {/if}\n {if $isShowTax && {contribution.tax_amount|boolean}}\n \n \n {ts} Amount before Tax : {/ts}\n \n \n {contribution.tax_exclusive_amount}\n \n \n\n {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n \n {if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else}{$taxTerm} {$taxDetail.percentage}%{/if} \n {$taxDetail.amount|crmMoney:\'{contribution.currency}\'} \n \n {/foreach}\n {/if}\n\n {if $isShowTax}\n \n \n {ts}Total Tax Amount{/ts}\n \n \n {contribution.tax_amount}\n \n \n {/if}\n\n \n \n {ts}Total Amount{/ts}\n \n \n {contribution.total_amount}\n \n \n\n {if \'{contribution.receive_date}\'}\n \n \n {ts}Contribution Date{/ts}\n \n \n {contribution.receive_date|crmDate:\"shortdate\"}\n \n \n {/if}\n\n {if \'{contribution.receipt_date}\'}\n \n \n {ts}Receipt Date{/ts}\n \n \n {contribution.receipt_date|crmDate:\"shortdate\"}\n \n \n {/if}\n\n {if {contribution.payment_instrument_id|boolean} && {contribution.paid_amount|boolean}}\n \n \n {ts}Paid By{/ts}\n \n \n {contribution.payment_instrument_id:label}\n \n \n {if \'{contribution.check_number}\'}\n \n \n {ts}Check Number{/ts}\n \n \n {contribution.check_number}\n \n \n {/if}\n {/if}\n\n {if \'{contribution.trxn_id}\'}\n \n \n {ts}Transaction ID{/ts}\n \n \n {contribution.trxn_id}\n \n \n {/if}\n\n {if !empty($ccContribution)}\n \n \n {ts}Billing Name and Address{/ts}\n \n \n \n \n {$billingName} \n {$address|nl2br}\n \n \n \n \n {ts}Credit Card Information{/ts}\n \n \n \n \n {$credit_card_type} \n {$credit_card_number} \n {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n \n \n {/if}\n\n {if !empty($softCreditTypes) and !empty($softCredits)}\n {foreach from=$softCreditTypes item=softCreditType key=n}\n \n \n {$softCreditType}\n \n \n {foreach from=$softCredits.$n item=value key=label}\n \n \n {$label}\n \n \n {$value}\n \n \n {/foreach}\n {/foreach}\n {/if}\n\n {if !empty($customGroup)}\n {foreach from=$customGroup item=value key=customName}\n \n \n {$customName}\n \n \n {foreach from=$value item=v key=n}\n \n \n {$n}\n \n \n {$v}\n \n \n {/foreach}\n {/foreach}\n {/if}\n\n {if !empty($formValues.product_name)}\n \n \n {ts}Premium Information{/ts}\n \n \n \n \n {$formValues.product_name}\n \n \n {if $formValues.product_option}\n \n \n {ts}Option{/ts}\n \n \n {$formValues.product_option}\n \n \n {/if}\n {if $formValues.product_sku}\n \n \n {ts}SKU{/ts}\n \n \n {$formValues.product_sku}\n \n \n {/if}\n {if !empty($fulfilled_date)}\n \n \n {ts}Sent{/ts}\n \n \n {$fulfilled_date|truncate:10:\'\'|crmDate}\n \n \n {/if}\n {/if}\n\n
\n \n \n\n
\n\n\n\n',1,816,'contribution_offline_receipt',1,0,0,NULL),
- (6,'Contributions - Receipt (off-line)','{ts}Contribution Receipt{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{if {contribution.contribution_page_id.receipt_text|boolean}}\n{contribution.contribution_page_id.receipt_text}\n{elseif {contribution.paid_amount|boolean}} {ts}Below you will find a receipt for this contribution.{/ts}\n{/if}\n\n===========================================================\n{ts}Contribution Information{/ts}\n\n===========================================================\n{ts}Contributor{/ts}: {contact.display_name}\n{if \'{contribution.financial_type_id}\'}\n{ts}Financial Type{/ts}: {contribution.financial_type_id:label}\n{/if}\n{if $isShowLineItems}\n---------------------------------------------------------\n{capture assign=ts_item}{ts}Item{/ts}{/capture}\n{capture assign=ts_qty}{ts}Qty{/ts}{/capture}\n{capture assign=ts_each}{ts}Each{/ts}{/capture}\n{if $isShowTax && {contribution.tax_amount|boolean}}\n{capture assign=ts_subtotal}{ts}Subtotal{/ts}{/capture}\n{capture assign=ts_taxRate}{ts}Tax Rate{/ts}{/capture}\n{capture assign=ts_taxAmount}{ts}Tax Amount{/ts}{/capture}\n{/if}\n{capture assign=ts_total}{ts}Total{/ts}{/capture}\n{$ts_item|string_format:\"%-30s\"} {$ts_qty|string_format:\"%5s\"} {$ts_each|string_format:\"%10s\"} {if $isShowTax && {contribution.tax_amount|boolean}} {$ts_subtotal|string_format:\"%10s\"} {$ts_taxRate} {$ts_taxAmount|string_format:\"%10s\"} {/if} {$ts_total|string_format:\"%10s\"}\n----------------------------------------------------------\n{foreach from=$lineItems item=line}\n{capture assign=ts_item}{$line.title}{/capture}{$ts_item|truncate:30:\"...\"|string_format:\"%-30s\"} {$line.qty|string_format:\"%5s\"} {$line.unit_price|crmMoney:\'{contribution.currency}\'|string_format:\"%10s\"} {if $isShowTax && {contribution.tax_amount|boolean}}{$line.line_total|crmMoney:\'{contribution.currency}\'|string_format:\"%10s\"} {if $line.tax_rate || $line.tax_amount != \"\"} {$line.tax_rate|string_format:\"%.2f\"} % {$line.tax_amount|crmMoney:\'{contribution.currency}\'|string_format:\"%10s\"} {else} {/if} {/if} {$line.line_total_inclusive|crmMoney:\'{contribution.currency}\'|string_format:\"%10s\"}\n{/foreach}\n{/if}\n\n\n{if $isShowTax && {contribution.tax_amount|boolean}}\n{ts}Amount before Tax{/ts} : {contribution.tax_exclusive_amount}\n{/if}\n{foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n{if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else}{$taxTerm} {$taxDetail.percentage}%{/if} : {$taxDetail.amount|crmMoney:\'{contribution.currency}\'}\n{/foreach}\n\n{if $isShowTax}\n{ts}Total Tax Amount{/ts} : {contribution.tax_amount}\n{/if}\n{ts}Total Amount{/ts} : {contribution.total_amount}\n{if \'{contribution.receive_date}\'}\n{ts}Contribution Date{/ts}: {contribution.receive_date|crmDate:\"shortdate\"}\n{/if}\n{if \'{contribution.receipt_date}\'}\n{ts}Receipt Date{/ts}: {contribution.receipt_date|crmDate:\"shortdate\"}\n{/if}\n{if {contribution.payment_instrument_id|boolean} && {contribution.paid_amount|boolean}}\n{ts}Paid By{/ts}: {contribution.payment_instrument_id:label}\n{if \'{contribution.check_number}\'}\n{ts}Check Number{/ts}: {contribution.check_number}\n{/if}\n{/if}\n{if \'{contribution.trxn_id}\'}\n{ts}Transaction ID{/ts}: {contribution.trxn_id}\n{/if}\n\n{if !empty($ccContribution)}\n===========================================================\n{ts}Billing Name and Address{/ts}\n\n===========================================================\n{$billingName}\n{$address}\n\n===========================================================\n{ts}Credit Card Information{/ts}\n\n===========================================================\n{$credit_card_type}\n{$credit_card_number}\n{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n{/if}\n{if !empty($customGroup)}\n{foreach from=$customGroup item=value key=customName}\n===========================================================\n{$customName}\n===========================================================\n{foreach from=$value item=v key=n}\n{$n}: {$v}\n{/foreach}\n{/foreach}\n{/if}\n\n{if !empty($softCreditTypes) and !empty($softCredits)}\n{foreach from=$softCreditTypes item=softCreditType key=n}\n===========================================================\n{$softCreditType}\n===========================================================\n{foreach from=$softCredits.$n item=value key=label}\n{$label}: {$value}\n{/foreach}\n{/foreach}\n{/if}\n\n{if !empty($formValues.product_name)}\n===========================================================\n{ts}Premium Information{/ts}\n\n===========================================================\n{$formValues.product_name}\n{if $formValues.product_option}\n{ts}Option{/ts}: {$formValues.product_option}\n{/if}\n{if $formValues.product_sku}\n{ts}SKU{/ts}: {$formValues.product_sku}\n{/if}\n{if !empty($fulfilled_date)}\n{ts}Sent{/ts}: {$fulfilled_date|crmDate}\n{/if}\n{/if}\n','\n\n\n \n \n\n\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n \n\n \n \n \n\n \n\n \n \n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},
{/if}\n \n {if {contribution.contribution_page_id.receipt_text|boolean}}{contribution.contribution_page_id.receipt_text}\n {elseif {contribution.paid_amount|boolean}}{ts}Below you will find a receipt for this contribution.{/ts}{/if}\n
\n \n \n \n \n \n \n \n {ts}Contribution Information{/ts}\n \n \n \n \n {ts}Contributor Name{/ts}\n \n \n {contact.display_name}\n \n \n \n {if \'{contribution.financial_type_id}\'}\n \n {ts}Financial Type{/ts}\n \n \n {contribution.financial_type_id:label}\n \n {/if}\n \n\n {if $isShowLineItems}\n \n \n \n \n {ts}Item{/ts} \n {ts}Qty{/ts} \n {ts}Each{/ts} \n {if $isShowTax && {contribution.tax_amount|boolean}}\n {ts}Subtotal{/ts} \n {ts}Tax Rate{/ts} \n {ts}Tax Amount{/ts} \n {/if}\n {ts}Total{/ts} \n \n {foreach from=$lineItems item=line}\n \n \n {$line.title}\n \n \n {$line.qty}\n \n \n {$line.unit_price|crmMoney:\'{contribution.currency}\'}\n \n {if $isShowTax && {contribution.tax_amount|boolean}}\n \n {$line.line_total|crmMoney:\'{contribution.currency}\'}\n \n {if $line.tax_rate || $line.tax_amount != \"\"}\n \n {$line.tax_rate|string_format:\"%.2f\"}%\n \n \n {$line.tax_amount|crmMoney:\'{contribution.currency}\'}\n \n {else}\n \n \n {/if}\n {/if}\n \n {$line.line_total_inclusive|crmMoney:\'{contribution.currency}\'}\n \n \n {/foreach}\n
\n \n \n\n {/if}\n {if $isShowTax && {contribution.tax_amount|boolean}}\n \n \n {ts} Amount before Tax : {/ts}\n \n \n {contribution.tax_exclusive_amount}\n \n \n\n {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n \n {if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else}{$taxTerm} {$taxDetail.percentage}%{/if} \n {$taxDetail.amount|crmMoney:\'{contribution.currency}\'} \n \n {/foreach}\n {/if}\n\n {if $isShowTax}\n \n \n {ts}Total Tax Amount{/ts}\n \n \n {contribution.tax_amount}\n \n \n {/if}\n\n \n \n {ts}Total Amount{/ts}\n \n \n {contribution.total_amount}\n \n \n\n {if \'{contribution.receive_date}\'}\n \n \n {ts}Contribution Date{/ts}\n \n \n {contribution.receive_date|crmDate:\"shortdate\"}\n \n \n {/if}\n\n {if \'{contribution.receipt_date}\'}\n \n \n {ts}Receipt Date{/ts}\n \n \n {contribution.receipt_date|crmDate:\"shortdate\"}\n \n \n {/if}\n\n {if {contribution.payment_instrument_id|boolean} && {contribution.paid_amount|boolean}}\n \n \n {ts}Paid By{/ts}\n \n \n {contribution.payment_instrument_id:label}\n \n \n {if \'{contribution.check_number}\'}\n \n \n {ts}Check Number{/ts}\n \n \n {contribution.check_number}\n \n \n {/if}\n {/if}\n\n {if \'{contribution.trxn_id}\'}\n \n \n {ts}Transaction ID{/ts}\n \n \n {contribution.trxn_id}\n \n \n {/if}\n\n {if !empty($ccContribution)}\n \n \n {ts}Billing Name and Address{/ts}\n \n \n \n \n {$billingName} \n {$address|nl2br}\n \n \n \n \n {ts}Credit Card Information{/ts}\n \n \n \n \n {$credit_card_type} \n {$credit_card_number} \n {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n \n \n {/if}\n\n {if !empty($softCreditTypes) and !empty($softCredits)}\n {foreach from=$softCreditTypes item=softCreditType key=n}\n \n \n {$softCreditType}\n \n \n {foreach from=$softCredits.$n item=value key=label}\n \n \n {$label}\n \n \n {$value}\n \n \n {/foreach}\n {/foreach}\n {/if}\n\n {if !empty($customGroup)}\n {foreach from=$customGroup item=value key=customName}\n \n \n {$customName}\n \n \n {foreach from=$value item=v key=n}\n \n \n {$n}\n \n \n {$v}\n \n \n {/foreach}\n {/foreach}\n {/if}\n\n {if !empty($formValues.product_name)}\n \n \n {ts}Premium Information{/ts}\n \n \n \n \n {$formValues.product_name}\n \n \n {if $formValues.product_option}\n \n \n {ts}Option{/ts}\n \n \n {$formValues.product_option}\n \n \n {/if}\n {if $formValues.product_sku}\n \n \n {ts}SKU{/ts}\n \n \n {$formValues.product_sku}\n \n \n {/if}\n {if !empty($fulfilled_date)}\n \n \n {ts}Sent{/ts}\n \n \n {$fulfilled_date|truncate:10:\'\'|crmDate}\n \n \n {/if}\n {/if}\n\n
\n \n \n\n
\n\n\n\n',1,816,'contribution_offline_receipt',0,1,0,NULL),
- (7,'Contributions - Receipt (on-line)','{if \'{contribution.contribution_status_id:name}\' === \'Pending\'}{ts}Invoice{/ts}{else}{ts}Receipt{/ts}{/if} - {$title} - {contact.display_name}\n','','\n\n\n \n \n\n\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n\n\n \n \n \n\n \n\n \n \n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},
{/if}\n {if !empty($receipt_text)}\n {$receipt_text|htmlize}
\n {/if}\n\n {if $is_pay_later}\n {$pay_later_receipt}
{* FIXME: this might be text rather than HTML *}\n {/if}\n\n \n \n
\n\n {if {contribution.total_amount|boolean}}\n \n \n {ts}Contribution Information{/ts}\n \n \n\n {if $isShowLineItems}\n \n \n \n \n {ts}Item{/ts} \n {ts}Qty{/ts} \n {ts}Each{/ts} \n {if $isShowTax && {contribution.tax_amount|boolean}}\n {ts}Subtotal{/ts} \n {ts}Tax Rate{/ts} \n {ts}Tax Amount{/ts} \n {/if}\n {ts}Total{/ts} \n \n {foreach from=$lineItems item=line}\n \n {$line.title} \n {$line.qty} \n {$line.unit_price|crmMoney:$currency} \n {if $isShowTax && {contribution.tax_amount|boolean}}\n {$line.line_total|crmMoney:$currency} \n {if $line.tax_rate || $line.tax_amount != \"\"}\n {$line.tax_rate|string_format:\"%.2f\"}% \n {$line.tax_amount|crmMoney:$currency} \n {else}\n \n \n {/if}\n {/if}\n \n {$line.line_total_inclusive|crmMoney:$currency}\n \n \n {/foreach}\n
\n \n \n\n {if $isShowTax && {contribution.tax_amount|boolean}}\n \n \n {ts} Amount before Tax : {/ts}\n \n \n {contribution.tax_exclusive_amount}\n \n \n\n {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n \n {if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else}{$taxTerm} {$taxDetail.percentage}%{/if} \n {$taxDetail.amount|crmMoney:\'{contribution.currency}\'} \n \n {/foreach}\n\n {/if}\n {if $isShowTax}\n \n \n {ts}Total Tax{/ts}\n \n \n {contribution.tax_amount}\n \n \n {/if}\n \n \n {ts}Total Amount{/ts}\n \n \n {contribution.total_amount}\n \n \n {else}\n {if {contribution.tax_amount|boolean}}\n \n \n {ts}Total Tax Amount{/ts}\n \n \n {contribution.tax_amount}\n \n \n {/if}\n \n \n {ts}Amount{/ts}\n \n \n {contribution.total_amount} {if \'{contribution.amount_level}\'} - {contribution.amount_level}{/if}\n \n \n\n {/if}\n\n {/if}\n\n\n {if !empty($receive_date)}\n \n \n {ts}Date{/ts}\n \n \n {$receive_date|crmDate}\n \n \n {/if}\n\n {if {contribution.trxn_id|boolean}}\n \n \n {ts}Transaction #{/ts}\n \n \n {contribution.trxn_id}\n \n \n {/if}\n\n {if !empty($is_recur)}\n \n \n {ts}This is a recurring contribution.{/ts}\n {if $cancelSubscriptionUrl}\n {ts 1=$cancelSubscriptionUrl}You can cancel future contributions by visiting this web page .{/ts}\n {/if}\n \n \n {if $updateSubscriptionBillingUrl}\n \n \n {ts 1=$updateSubscriptionBillingUrl}You can update billing details for this recurring contribution by visiting this web page .{/ts}\n \n \n {/if}\n {if $updateSubscriptionUrl}\n \n \n {ts 1=$updateSubscriptionUrl}You can update recurring contribution amount or change the number of installments for this recurring contribution by visiting this web page .{/ts}\n \n \n {/if}\n {/if}\n\n {if $honor_block_is_active}\n \n \n {$soft_credit_type}\n \n \n {foreach from=$honoreeProfile item=value key=label}\n \n \n {$label}\n \n \n {$value}\n \n \n {/foreach}\n {elseif !empty($softCreditTypes) and !empty($softCredits)}\n {foreach from=$softCreditTypes item=softCreditType key=n}\n \n \n {$softCreditType}\n \n \n {foreach from=$softCredits.$n item=value key=label}\n \n \n {$label}\n \n \n {$value}\n \n \n {/foreach}\n {/foreach}\n {/if}\n\n {if !empty($pcpBlock)}\n \n \n {ts}Personal Campaign Page{/ts}\n \n \n \n \n {ts}Display In Honor Roll{/ts}\n \n \n {if $pcp_display_in_roll}{ts}Yes{/ts}{else}{ts}No{/ts}{/if}\n \n \n {if $pcp_roll_nickname}\n \n \n {ts}Nickname{/ts}\n \n \n {$pcp_roll_nickname}\n \n \n {/if}\n {if $pcp_personal_note}\n \n \n {ts}Personal Note{/ts}\n \n \n {$pcp_personal_note}\n \n \n {/if}\n {/if}\n\n {if !empty($onBehalfProfile)}\n \n \n {$onBehalfProfile_grouptitle}\n \n \n {foreach from=$onBehalfProfile item=onBehalfValue key=onBehalfName}\n \n \n {$onBehalfName}\n \n \n {$onBehalfValue}\n \n \n {/foreach}\n {/if}\n\n {if {contribution.contribution_page_id.is_share|boolean}}\n \n \n {capture assign=contributionUrl}{crmURL p=\'civicrm/contribute/transact\' q=\"reset=1&id={contribution.contribution_page_id}\" a=true fe=1 h=1}{/capture}\n {include file=\"CRM/common/SocialNetwork.tpl\" emailMode=true url=$contributionUrl title=$title pageURL=$contributionUrl}\n \n \n {/if}\n\n {if !empty($billingName)}\n \n \n {ts}Billing Name and Address{/ts}\n \n \n \n \n {$billingName} \n {$address|nl2br} \n {$email}\n \n \n {elseif !empty($email)}\n \n \n {ts}Registered Email{/ts}\n \n \n \n \n {$email}\n \n \n {/if}\n\n {if !empty($credit_card_type)}\n \n \n {ts}Credit Card Information{/ts}\n \n \n \n \n {$credit_card_type} \n {$credit_card_number} \n {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate} \n \n \n {/if}\n\n {if !empty($selectPremium)}\n \n \n {ts}Premium Information{/ts}\n \n \n \n \n {$product_name}\n \n \n {if $option}\n \n \n {ts}Option{/ts}\n \n \n {$option}\n \n \n {/if}\n {if $sku}\n \n \n {ts}SKU{/ts}\n \n \n {$sku}\n \n \n {/if}\n {if $start_date}\n \n \n {ts}Start Date{/ts}\n \n \n {$start_date|crmDate}\n \n \n {/if}\n {if $end_date}\n \n \n {ts}End Date{/ts}\n \n \n {$end_date|crmDate}\n \n \n {/if}\n {if !empty($contact_email) OR !empty($contact_phone)}\n \n \n {ts}For information about this premium, contact:{/ts}
\n {if !empty($contact_email)}\n {$contact_email}
\n {/if}\n {if !empty($contact_phone)}\n {$contact_phone}
\n {/if}\n \n \n {/if}\n {if $is_deductible AND !empty($price)}\n \n \n {ts 1=$price|crmMoney:$currency}The value of this premium is %1. This may affect the amount of the tax deduction you can claim. Consult your tax advisor for more information.{/ts}
\n \n \n {/if}\n {/if}\n\n {if !empty($customPre)}\n \n \n {$customPre_grouptitle}\n \n \n {foreach from=$customPre item=customValue key=customName}\n \n \n {$customName}\n \n \n {$customValue}\n \n \n {/foreach}\n {/if}\n\n {if !empty($customPost)}\n \n \n {$customPost_grouptitle}\n \n \n {foreach from=$customPost item=customValue key=customName}\n \n \n {$customName}\n \n \n {$customValue}\n \n \n {/foreach}\n {/if}\n\n
\n\n\n\n',1,817,'contribution_online_receipt',1,0,0,NULL),
- (8,'Contributions - Receipt (on-line)','{if \'{contribution.contribution_status_id:name}\' === \'Pending\'}{ts}Invoice{/ts}{else}{ts}Receipt{/ts}{/if} - {$title} - {contact.display_name}\n','','\n\n\n \n \n\n\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n\n\n \n \n \n\n \n\n \n \n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},
{/if}\n {if !empty($receipt_text)}\n {$receipt_text|htmlize}
\n {/if}\n\n {if $is_pay_later}\n {$pay_later_receipt}
{* FIXME: this might be text rather than HTML *}\n {/if}\n\n \n \n
\n\n {if {contribution.total_amount|boolean}}\n \n \n {ts}Contribution Information{/ts}\n \n \n\n {if $isShowLineItems}\n \n \n \n \n {ts}Item{/ts} \n {ts}Qty{/ts} \n {ts}Each{/ts} \n {if $isShowTax && {contribution.tax_amount|boolean}}\n {ts}Subtotal{/ts} \n {ts}Tax Rate{/ts} \n {ts}Tax Amount{/ts} \n {/if}\n {ts}Total{/ts} \n \n {foreach from=$lineItems item=line}\n \n {$line.title} \n {$line.qty} \n {$line.unit_price|crmMoney:$currency} \n {if $isShowTax && {contribution.tax_amount|boolean}}\n {$line.line_total|crmMoney:$currency} \n {if $line.tax_rate || $line.tax_amount != \"\"}\n {$line.tax_rate|string_format:\"%.2f\"}% \n {$line.tax_amount|crmMoney:$currency} \n {else}\n \n \n {/if}\n {/if}\n \n {$line.line_total_inclusive|crmMoney:$currency}\n \n \n {/foreach}\n
\n \n \n\n {if $isShowTax && {contribution.tax_amount|boolean}}\n \n \n {ts} Amount before Tax : {/ts}\n \n \n {contribution.tax_exclusive_amount}\n \n \n\n {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n \n {if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else}{$taxTerm} {$taxDetail.percentage}%{/if} \n {$taxDetail.amount|crmMoney:\'{contribution.currency}\'} \n \n {/foreach}\n\n {/if}\n {if $isShowTax}\n \n \n {ts}Total Tax{/ts}\n \n \n {contribution.tax_amount}\n \n \n {/if}\n \n \n {ts}Total Amount{/ts}\n \n \n {contribution.total_amount}\n \n \n {else}\n {if {contribution.tax_amount|boolean}}\n \n \n {ts}Total Tax Amount{/ts}\n \n \n {contribution.tax_amount}\n \n \n {/if}\n \n \n {ts}Amount{/ts}\n \n \n {contribution.total_amount} {if \'{contribution.amount_level}\'} - {contribution.amount_level}{/if}\n \n \n\n {/if}\n\n {/if}\n\n\n {if !empty($receive_date)}\n \n \n {ts}Date{/ts}\n \n \n {$receive_date|crmDate}\n \n \n {/if}\n\n {if {contribution.trxn_id|boolean}}\n \n \n {ts}Transaction #{/ts}\n \n \n {contribution.trxn_id}\n \n \n {/if}\n\n {if !empty($is_recur)}\n \n \n {ts}This is a recurring contribution.{/ts}\n {if $cancelSubscriptionUrl}\n {ts 1=$cancelSubscriptionUrl}You can cancel future contributions by visiting this web page .{/ts}\n {/if}\n \n \n {if $updateSubscriptionBillingUrl}\n \n \n {ts 1=$updateSubscriptionBillingUrl}You can update billing details for this recurring contribution by visiting this web page .{/ts}\n \n \n {/if}\n {if $updateSubscriptionUrl}\n \n \n {ts 1=$updateSubscriptionUrl}You can update recurring contribution amount or change the number of installments for this recurring contribution by visiting this web page .{/ts}\n \n \n {/if}\n {/if}\n\n {if $honor_block_is_active}\n \n \n {$soft_credit_type}\n \n \n {foreach from=$honoreeProfile item=value key=label}\n \n \n {$label}\n \n \n {$value}\n \n \n {/foreach}\n {elseif !empty($softCreditTypes) and !empty($softCredits)}\n {foreach from=$softCreditTypes item=softCreditType key=n}\n \n \n {$softCreditType}\n \n \n {foreach from=$softCredits.$n item=value key=label}\n \n \n {$label}\n \n \n {$value}\n \n \n {/foreach}\n {/foreach}\n {/if}\n\n {if !empty($pcpBlock)}\n \n \n {ts}Personal Campaign Page{/ts}\n \n \n \n \n {ts}Display In Honor Roll{/ts}\n \n \n {if $pcp_display_in_roll}{ts}Yes{/ts}{else}{ts}No{/ts}{/if}\n \n \n {if $pcp_roll_nickname}\n \n \n {ts}Nickname{/ts}\n \n \n {$pcp_roll_nickname}\n \n \n {/if}\n {if $pcp_personal_note}\n \n \n {ts}Personal Note{/ts}\n \n \n {$pcp_personal_note}\n \n \n {/if}\n {/if}\n\n {if !empty($onBehalfProfile)}\n \n \n {$onBehalfProfile_grouptitle}\n \n \n {foreach from=$onBehalfProfile item=onBehalfValue key=onBehalfName}\n \n \n {$onBehalfName}\n \n \n {$onBehalfValue}\n \n \n {/foreach}\n {/if}\n\n {if {contribution.contribution_page_id.is_share|boolean}}\n \n \n {capture assign=contributionUrl}{crmURL p=\'civicrm/contribute/transact\' q=\"reset=1&id={contribution.contribution_page_id}\" a=true fe=1 h=1}{/capture}\n {include file=\"CRM/common/SocialNetwork.tpl\" emailMode=true url=$contributionUrl title=$title pageURL=$contributionUrl}\n \n \n {/if}\n\n {if !empty($billingName)}\n \n \n {ts}Billing Name and Address{/ts}\n \n \n \n \n {$billingName} \n {$address|nl2br} \n {$email}\n \n \n {elseif !empty($email)}\n \n \n {ts}Registered Email{/ts}\n \n \n \n \n {$email}\n \n \n {/if}\n\n {if !empty($credit_card_type)}\n \n \n {ts}Credit Card Information{/ts}\n \n \n \n \n {$credit_card_type} \n {$credit_card_number} \n {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate} \n \n \n {/if}\n\n {if !empty($selectPremium)}\n \n \n {ts}Premium Information{/ts}\n \n \n \n \n {$product_name}\n \n \n {if $option}\n \n \n {ts}Option{/ts}\n \n \n {$option}\n \n \n {/if}\n {if $sku}\n \n \n {ts}SKU{/ts}\n \n \n {$sku}\n \n \n {/if}\n {if $start_date}\n \n \n {ts}Start Date{/ts}\n \n \n {$start_date|crmDate}\n \n \n {/if}\n {if $end_date}\n \n \n {ts}End Date{/ts}\n \n \n {$end_date|crmDate}\n \n \n {/if}\n {if !empty($contact_email) OR !empty($contact_phone)}\n \n \n {ts}For information about this premium, contact:{/ts}
\n {if !empty($contact_email)}\n {$contact_email}
\n {/if}\n {if !empty($contact_phone)}\n {$contact_phone}
\n {/if}\n \n \n {/if}\n {if $is_deductible AND !empty($price)}\n \n \n {ts 1=$price|crmMoney:$currency}The value of this premium is %1. This may affect the amount of the tax deduction you can claim. Consult your tax advisor for more information.{/ts}
\n \n \n {/if}\n {/if}\n\n {if !empty($customPre)}\n \n \n {$customPre_grouptitle}\n \n \n {foreach from=$customPre item=customValue key=customName}\n \n \n {$customName}\n \n \n {$customValue}\n \n \n {/foreach}\n {/if}\n\n {if !empty($customPost)}\n \n \n {$customPost_grouptitle}\n \n \n {foreach from=$customPost item=customValue key=customName}\n \n \n {$customName}\n \n \n {$customValue}\n \n \n {/foreach}\n {/if}\n\n
\n\n\n\n',1,817,'contribution_online_receipt',0,1,0,NULL),
- (9,'Contributions - Invoice','{if $title}\n {if $component}\n {if $component == \'event\'}\n {ts 1=$title}Event Registration Invoice: %1{/ts}\n {else}\n {ts 1=$title}Contribution Invoice: %1{/ts}\n {/if}\n {/if}\n{else}\n {ts}Invoice{/ts}\n{/if}\n - {contact.display_name}\n','{ts}Contribution Invoice{/ts}\n','\n\n \n \n \n \n \n \n {if $config->empoweredBy}\n
\n \n \n \n
\n {/if}\n
\n {if $userText}\n \n {$userText} \n \n {/if}\n \n {ts}INVOICE{/ts} \n {ts}Invoice Date:{/ts} \n {domain.name} \n \n \n {contact.display_name}{if \'{contact.current_employer}\'} ({contact.current_employer}){/if} \n {$invoice_date} \n \n {domain.street_address}\n {domain.supplemental_address_1}\n \n \n \n {$street_address} {$supplemental_address_1} \n {ts}Invoice Number:{/ts} \n \n {domain.supplemental_address_2}\n {domain.state_province_id:label}\n \n \n \n {$supplemental_address_2} {$stateProvinceAbbreviation} \n {contribution.invoice_number} \n \n {domain.city}\n {domain.postal_code}\n \n \n \n {$city} {$postal_code} \n {ts}Reference:{/ts} \n {domain.country_id:label} \n \n \n {$country} \n {contribution.source} \n {domain.email} \n \n \n \n \n {domain.phone} \n \n
\n\n
\n \n {ts}Description{/ts} \n {ts}Quantity{/ts} \n {ts}Unit Price{/ts} \n {domain.tax_term} \n {ts 1=$currency}Amount %1{/ts} \n \n {foreach from=$lineItems item=line}\n \n \n {$line.title}\n \n {$line.qty} \n {$line.unit_price|crmMoney:$currency} \n {if $line.tax_amount != \'\'}\n {if $line.tax_rate}{$line.tax_rate|crmNumberFormat}%{/if} \n {else}\n {if \'{domain.tax_term}\'}{ts 1=\'{domain.tax_term}\'}-{/ts}{/if} \n {/if}\n {$line.line_total|crmMoney:\'{contribution.currency}\'} \n \n {/foreach}\n \n \n {ts}Sub Total{/ts} \n {$subTotal|crmMoney:$currency} \n \n {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n {if $taxRate != 0}\n \n \n {if \'{domain.tax_term}\'}{ts 1=\'{domain.tax_term}\' 2=$taxRate|crmNumberFormat}TOTAL %1 %2%{/ts}{/if} \n {$taxDetail.amount|crmMoney:\'{contribution.currency}\'} \n \n {/if}\n {/foreach}\n \n \n {ts 1=$currency}TOTAL %1{/ts} \n {$amount|crmMoney:$currency} \n \n \n \n \n {if \'{contribution.contribution_status_id:name}\' == \'Refunded\'}\n {ts}Amount Credited{/ts}\n {else}\n {ts}Amount Paid{/ts}\n {/if}\n \n {$amountPaid|crmMoney:$currency} \n \n \n \n \n \n \n \n {ts}AMOUNT DUE:{/ts} \n {$amountDue|crmMoney:$currency} \n \n \n \n \n {if \'{contribution.contribution_status_id:name}\' == \'Pending\' && \'{contribution.is_pay_later}\' == 1}\n \n {ts 1=$dueDate}DUE DATE: %1{/ts} \n \n \n {/if}\n
\n\n {if \'{contribution.contribution_status_id:name}\' == \'Pending\' && \'{contribution.is_pay_later}\' == 1}\n
\n \n \n \n
\n\n
\n \n {ts}PAYMENT ADVICE{/ts} \n {ts}To:{/ts} \n {domain.name} \n {domain.street_address} {domain.supplemental_address_1} \n {domain.supplemental_address_2} {domain.state_province_id:label} \n {domain.city} {domain.postal_code} \n {domain.country_id:label} \n {domain.email}
\n {domain.phone} \n \n {$notes} \n \n \n \n \n {ts}Customer:{/ts} \n {contact.display_name} \n \n \n {ts}Invoice Number:{/ts} \n {contribution.invoice_number} \n \n \n {if $is_pay_later == 1}\n \n {ts}Amount Due:{/ts} \n {$amount|crmMoney:$currency} \n \n {else}\n \n {ts}Amount Due:{/ts} \n {$amountDue|crmMoney:$currency} \n \n {/if}\n \n {ts}Due Date:{/ts} \n {$dueDate} \n \n \n \n \n
\n \n \n
\n {/if}\n\n {if \'{contribution.contribution_status_id:name}\' === \'Refunded\' || \'{contribution.contribution_status_id:name}\' === \'Cancelled\'}\n {if $config->empoweredBy}\n
\n \n \n \n
\n {/if}\n\n
\n \n {ts}CREDIT NOTE{/ts} \n {ts}Date:{/ts} \n {domain.name} \n \n \n {contact.display_name}{if \'{contact.current_employer}\'} ({contact.current_employer}){/if} \n {$invoice_date} \n \n {domain.street_address}\n {domain.supplemental_address_1}\n \n \n \n {$street_address} {$supplemental_address_1} \n {ts}Credit Note Number:{/ts} \n \n {domain.supplemental_address_2}\n {domain.state_province_id:label}\n \n \n \n {$supplemental_address_2} {$stateProvinceAbbreviation} \n {contribution.creditnote_id} \n \n {domain.city}\n {domain.postal_code}\n \n \n \n {$city} {$postal_code} \n {ts}Reference:{/ts} \n \n {domain.country_id:label}\n \n \n \n \n {contribution.source} \n \n {domain.email}\n \n \n \n \n \n \n {domain.phone}\n \n \n
\n\n
\n \n \n \n \n {ts}Description{/ts} \n {ts}Quantity{/ts} \n {ts}Unit Price{/ts} \n {domain.tax_term} \n {ts 1=$currency}Amount %1{/ts} \n \n {foreach from=$lineItems item=line key=index}\n \n \n \n {$line.title}\n \n {$line.qty} \n {$line.unit_price|crmMoney:$currency} \n {if $line.tax_amount != \'\'}\n {if $line.tax_rate}{$line.tax_rate|crmNumberFormat}%{/if} \n {else}\n {if \'{domain.tax_term}\'}{ts 1=\'{domain.tax_term}\'}No %1{/ts}{/if} \n {/if}\n {$line.line_total|crmMoney:\'{contribution.currency}\'} \n \n {/foreach}\n \n \n \n {ts}Sub Total{/ts} \n {$subTotal|crmMoney:$currency} \n \n {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n {if $taxRate != 0}\n \n \n {if \'{domain.tax_term}\'}{ts 1=\'{domain.tax_term}\' 2=$taxRate|crmNumberFormat}TOTAL %1 %2%{/ts}{/if} \n {$taxDetail.amount|crmMoney:\'{contribution.currency}\'} \n \n {/if}\n {/foreach}\n \n \n \n \n \n \n {ts 1=$currency}TOTAL %1{/ts} \n {$amount|crmMoney:$currency} \n \n {if \'{contribution.is_pay_later}\' == 0}\n \n \n {ts}LESS Credit to invoice(s){/ts} \n {$amount|crmMoney:$currency} \n \n \n \n \n \n \n \n {ts}REMAINING CREDIT{/ts} \n {$amountDue|crmMoney:$currency} \n \n \n {/if}\n \n \n \n \n \n \n \n \n
\n \n \n
\n\n
\n \n \n \n
\n\n
\n \n {ts}CREDIT ADVICE{/ts} {ts}Please do not pay on this advice. Deduct the amount of this Credit Note from your next payment to us{/ts}
\n \n \n \n \n {ts}Customer:{/ts} \n {contact.display_name} \n \n \n \n {ts}Credit Note#:{/ts} \n {contribution.creditnote_id} \n \n \n \n \n {ts}Credit Amount:{/ts} \n {$amount|crmMoney:$currency} \n \n
\n \n \n
\n {/if}\n\n
\n \n\n',1,818,'contribution_invoice_receipt',1,0,0,NULL),
- (10,'Contributions - Invoice','{if $title}\n {if $component}\n {if $component == \'event\'}\n {ts 1=$title}Event Registration Invoice: %1{/ts}\n {else}\n {ts 1=$title}Contribution Invoice: %1{/ts}\n {/if}\n {/if}\n{else}\n {ts}Invoice{/ts}\n{/if}\n - {contact.display_name}\n','{ts}Contribution Invoice{/ts}\n','\n\n \n \n \n \n \n \n {if $config->empoweredBy}\n
\n \n \n \n
\n {/if}\n
\n {if $userText}\n \n {$userText} \n \n {/if}\n \n {ts}INVOICE{/ts} \n {ts}Invoice Date:{/ts} \n {domain.name} \n \n \n {contact.display_name}{if \'{contact.current_employer}\'} ({contact.current_employer}){/if} \n {$invoice_date} \n \n {domain.street_address}\n {domain.supplemental_address_1}\n \n \n \n {$street_address} {$supplemental_address_1} \n {ts}Invoice Number:{/ts} \n \n {domain.supplemental_address_2}\n {domain.state_province_id:label}\n \n \n \n {$supplemental_address_2} {$stateProvinceAbbreviation} \n {contribution.invoice_number} \n \n {domain.city}\n {domain.postal_code}\n \n \n \n {$city} {$postal_code} \n {ts}Reference:{/ts} \n {domain.country_id:label} \n \n \n {$country} \n {contribution.source} \n {domain.email} \n \n \n \n \n {domain.phone} \n \n
\n\n
\n \n {ts}Description{/ts} \n {ts}Quantity{/ts} \n {ts}Unit Price{/ts} \n {domain.tax_term} \n {ts 1=$currency}Amount %1{/ts} \n \n {foreach from=$lineItems item=line}\n \n \n {$line.title}\n \n {$line.qty} \n {$line.unit_price|crmMoney:$currency} \n {if $line.tax_amount != \'\'}\n {if $line.tax_rate}{$line.tax_rate|crmNumberFormat}%{/if} \n {else}\n {if \'{domain.tax_term}\'}{ts 1=\'{domain.tax_term}\'}-{/ts}{/if} \n {/if}\n {$line.line_total|crmMoney:\'{contribution.currency}\'} \n \n {/foreach}\n \n \n {ts}Sub Total{/ts} \n {$subTotal|crmMoney:$currency} \n \n {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n {if $taxRate != 0}\n \n \n {if \'{domain.tax_term}\'}{ts 1=\'{domain.tax_term}\' 2=$taxRate|crmNumberFormat}TOTAL %1 %2%{/ts}{/if} \n {$taxDetail.amount|crmMoney:\'{contribution.currency}\'} \n \n {/if}\n {/foreach}\n \n \n {ts 1=$currency}TOTAL %1{/ts} \n {$amount|crmMoney:$currency} \n \n \n \n \n {if \'{contribution.contribution_status_id:name}\' == \'Refunded\'}\n {ts}Amount Credited{/ts}\n {else}\n {ts}Amount Paid{/ts}\n {/if}\n \n {$amountPaid|crmMoney:$currency} \n \n \n \n \n \n \n \n {ts}AMOUNT DUE:{/ts} \n {$amountDue|crmMoney:$currency} \n \n \n \n \n {if \'{contribution.contribution_status_id:name}\' == \'Pending\' && \'{contribution.is_pay_later}\' == 1}\n \n {ts 1=$dueDate}DUE DATE: %1{/ts} \n \n \n {/if}\n
\n\n {if \'{contribution.contribution_status_id:name}\' == \'Pending\' && \'{contribution.is_pay_later}\' == 1}\n
\n \n \n \n
\n\n
\n \n {ts}PAYMENT ADVICE{/ts} \n {ts}To:{/ts} \n {domain.name} \n {domain.street_address} {domain.supplemental_address_1} \n {domain.supplemental_address_2} {domain.state_province_id:label} \n {domain.city} {domain.postal_code} \n {domain.country_id:label} \n {domain.email}
\n {domain.phone} \n \n {$notes} \n \n \n \n \n {ts}Customer:{/ts} \n {contact.display_name} \n \n \n {ts}Invoice Number:{/ts} \n {contribution.invoice_number} \n \n \n {if $is_pay_later == 1}\n \n {ts}Amount Due:{/ts} \n {$amount|crmMoney:$currency} \n \n {else}\n \n {ts}Amount Due:{/ts} \n {$amountDue|crmMoney:$currency} \n \n {/if}\n \n {ts}Due Date:{/ts} \n {$dueDate} \n \n \n \n \n
\n \n \n
\n {/if}\n\n {if \'{contribution.contribution_status_id:name}\' === \'Refunded\' || \'{contribution.contribution_status_id:name}\' === \'Cancelled\'}\n {if $config->empoweredBy}\n
\n \n \n \n
\n {/if}\n\n
\n \n {ts}CREDIT NOTE{/ts} \n {ts}Date:{/ts} \n {domain.name} \n \n \n {contact.display_name}{if \'{contact.current_employer}\'} ({contact.current_employer}){/if} \n {$invoice_date} \n \n {domain.street_address}\n {domain.supplemental_address_1}\n \n \n \n {$street_address} {$supplemental_address_1} \n {ts}Credit Note Number:{/ts} \n \n {domain.supplemental_address_2}\n {domain.state_province_id:label}\n \n \n \n {$supplemental_address_2} {$stateProvinceAbbreviation} \n {contribution.creditnote_id} \n \n {domain.city}\n {domain.postal_code}\n \n \n \n {$city} {$postal_code} \n {ts}Reference:{/ts} \n \n {domain.country_id:label}\n \n \n \n \n {contribution.source} \n \n {domain.email}\n \n \n \n \n \n \n {domain.phone}\n \n \n
\n\n
\n \n \n \n \n {ts}Description{/ts} \n {ts}Quantity{/ts} \n {ts}Unit Price{/ts} \n {domain.tax_term} \n {ts 1=$currency}Amount %1{/ts} \n \n {foreach from=$lineItems item=line key=index}\n \n \n \n {$line.title}\n \n {$line.qty} \n {$line.unit_price|crmMoney:$currency} \n {if $line.tax_amount != \'\'}\n {if $line.tax_rate}{$line.tax_rate|crmNumberFormat}%{/if} \n {else}\n {if \'{domain.tax_term}\'}{ts 1=\'{domain.tax_term}\'}No %1{/ts}{/if} \n {/if}\n {$line.line_total|crmMoney:\'{contribution.currency}\'} \n \n {/foreach}\n \n \n \n {ts}Sub Total{/ts} \n {$subTotal|crmMoney:$currency} \n \n {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n {if $taxRate != 0}\n \n \n {if \'{domain.tax_term}\'}{ts 1=\'{domain.tax_term}\' 2=$taxRate|crmNumberFormat}TOTAL %1 %2%{/ts}{/if} \n {$taxDetail.amount|crmMoney:\'{contribution.currency}\'} \n \n {/if}\n {/foreach}\n \n \n \n \n \n \n {ts 1=$currency}TOTAL %1{/ts} \n {$amount|crmMoney:$currency} \n \n {if \'{contribution.is_pay_later}\' == 0}\n \n \n {ts}LESS Credit to invoice(s){/ts} \n {$amount|crmMoney:$currency} \n \n \n \n \n \n \n \n {ts}REMAINING CREDIT{/ts} \n {$amountDue|crmMoney:$currency} \n \n \n {/if}\n \n \n \n \n \n \n \n \n
\n \n \n
\n\n
\n \n \n \n
\n\n
\n \n {ts}CREDIT ADVICE{/ts} {ts}Please do not pay on this advice. Deduct the amount of this Credit Note from your next payment to us{/ts}
\n \n \n \n \n {ts}Customer:{/ts} \n {contact.display_name} \n \n \n \n {ts}Credit Note#:{/ts} \n {contribution.creditnote_id} \n \n \n \n \n {ts}Credit Amount:{/ts} \n {$amount|crmMoney:$currency} \n \n
\n \n \n
\n {/if}\n\n
\n \n\n',1,818,'contribution_invoice_receipt',0,1,0,NULL),
+ (1,'Cases - Send Copy of an Activity','{if !empty($idHash)}[case #{$idHash}]{/if} {$activitySubject}\n','','\n\n\n \n \n\n\n\n {capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n {capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n {capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n \n\n \n \n \n\n \n\n \n \n \n \n \n {ts}Activity Summary{/ts} - {activity.activity_type_id:label}\n \n \n {if !empty($isCaseActivity)}\n \n \n {ts}Your Case Role(s){/ts}\n \n \n {$contact.role|default:\'\'}\n \n \n {if !empty($manageCaseURL)}\n \n \n {ts}Manage Case{/ts} \n \n \n {/if}\n {/if}\n {if !empty($editActURL)}\n \n \n {ts}Edit activity{/ts} \n \n \n {/if}\n {if !empty($viewActURL)}\n \n \n {ts}View activity{/ts} \n \n \n {/if}\n {foreach from=$activity.fields item=field}\n \n \n {$field.label}\n \n \n {if $field.type eq \'Date\'}\n {$field.value|crmDate:$config->dateformatDatetime}\n {else}\n {$field.value}\n {/if}\n \n \n {/foreach}\n\n {if !empty($activity.customGroups)}\n {foreach from=$activity.customGroups key=customGroupName item=customGroup}\n \n \n {$customGroupName}\n \n \n {foreach from=$customGroup item=field}\n \n \n {$field.label}\n \n \n {if $field.type eq \'Date\'}\n {$field.value|crmDate:$config->dateformatDatetime}\n {else}\n {$field.value}\n {/if}\n \n \n {/foreach}\n {/foreach}\n {/if}\n
\n \n \n
\n\n\n',1,814,'case_activity',1,0,0,NULL),
+ (2,'Cases - Send Copy of an Activity','{if !empty($idHash)}[case #{$idHash}]{/if} {$activitySubject}\n','','\n\n\n \n \n\n\n\n {capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n {capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n {capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n \n\n \n \n \n\n \n\n \n \n \n \n \n {ts}Activity Summary{/ts} - {activity.activity_type_id:label}\n \n \n {if !empty($isCaseActivity)}\n \n \n {ts}Your Case Role(s){/ts}\n \n \n {$contact.role|default:\'\'}\n \n \n {if !empty($manageCaseURL)}\n \n \n {ts}Manage Case{/ts} \n \n \n {/if}\n {/if}\n {if !empty($editActURL)}\n \n \n {ts}Edit activity{/ts} \n \n \n {/if}\n {if !empty($viewActURL)}\n \n \n {ts}View activity{/ts} \n \n \n {/if}\n {foreach from=$activity.fields item=field}\n \n \n {$field.label}\n \n \n {if $field.type eq \'Date\'}\n {$field.value|crmDate:$config->dateformatDatetime}\n {else}\n {$field.value}\n {/if}\n \n \n {/foreach}\n\n {if !empty($activity.customGroups)}\n {foreach from=$activity.customGroups key=customGroupName item=customGroup}\n \n \n {$customGroupName}\n \n \n {foreach from=$customGroup item=field}\n \n \n {$field.label}\n \n \n {if $field.type eq \'Date\'}\n {$field.value|crmDate:$config->dateformatDatetime}\n {else}\n {$field.value}\n {/if}\n \n \n {/foreach}\n {/foreach}\n {/if}\n
\n \n \n
\n\n\n',1,814,'case_activity',0,1,0,NULL),
+ (3,'Contributions - Duplicate Organization Alert','{ts}CiviContribute Alert: Possible Duplicate Contact Record{/ts} - {contact.display_name}\n','','\n\n\n \n \n\n\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n \n\n \n \n \n\n \n\n \n \n {ts}A contribution / membership signup was made on behalf of the organization listed below.{/ts}
\n {ts}The information provided matched multiple existing database records based on the configured Duplicate Matching Rules for your site.{/ts}
\n \n \n \n \n \n \n \n {ts}Organization Name{/ts}\n \n \n {$onBehalfName}\n \n \n \n \n {ts}Organization Email{/ts}\n \n \n {$onBehalfEmail}\n \n \n \n \n {ts}Organization Contact ID{/ts}\n \n \n {$onBehalfID}\n \n \n
\n \n \n \n \n {ts}If you think this may be a duplicate contact which should be merged with an existing record - Go to \"Contacts >> Find and Merge Duplicate Contacts\". Use the strict rule for Organizations to find the potential duplicates and merge them if appropriate.{/ts}
\n \n \n {if $receiptMessage}\n \n \n \n \n \n {ts}Copy of Contribution Receipt{/ts}\n \n \n \n \n {* FIXME: the below is most probably not HTML-ised *}\n {$receiptMessage}\n \n \n
\n \n \n {/if}\n
\n\n\n',1,815,'contribution_dupalert',1,0,0,NULL),
+ (4,'Contributions - Duplicate Organization Alert','{ts}CiviContribute Alert: Possible Duplicate Contact Record{/ts} - {contact.display_name}\n','','\n\n\n \n \n\n\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n \n\n \n \n \n\n \n\n \n \n {ts}A contribution / membership signup was made on behalf of the organization listed below.{/ts}
\n {ts}The information provided matched multiple existing database records based on the configured Duplicate Matching Rules for your site.{/ts}
\n \n \n \n \n \n \n \n {ts}Organization Name{/ts}\n \n \n {$onBehalfName}\n \n \n \n \n {ts}Organization Email{/ts}\n \n \n {$onBehalfEmail}\n \n \n \n \n {ts}Organization Contact ID{/ts}\n \n \n {$onBehalfID}\n \n \n
\n \n \n \n \n {ts}If you think this may be a duplicate contact which should be merged with an existing record - Go to \"Contacts >> Find and Merge Duplicate Contacts\". Use the strict rule for Organizations to find the potential duplicates and merge them if appropriate.{/ts}
\n \n \n {if $receiptMessage}\n \n \n \n \n \n {ts}Copy of Contribution Receipt{/ts}\n \n \n \n \n {* FIXME: the below is most probably not HTML-ised *}\n {$receiptMessage}\n \n \n
\n \n \n {/if}\n
\n\n\n',1,815,'contribution_dupalert',0,1,0,NULL),
+ (5,'Contributions - Receipt (off-line)','{ts}Contribution Receipt{/ts} - {contact.display_name}\n','','\n\n\n \n \n\n\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n \n\n \n \n \n\n \n\n \n \n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},
{/if}\n \n {if {contribution.contribution_page_id.receipt_text|boolean}}{contribution.contribution_page_id.receipt_text}\n {elseif {contribution.paid_amount|boolean}}{ts}Below you will find a receipt for this contribution.{/ts}{/if}\n
\n \n \n \n \n \n \n \n {ts}Contribution Information{/ts}\n \n \n \n \n {ts}Contributor Name{/ts}\n \n \n {contact.display_name}\n \n \n \n {if \'{contribution.financial_type_id}\'}\n \n {ts}Financial Type{/ts}\n \n \n {contribution.financial_type_id:label}\n \n {/if}\n \n\n {if $isShowLineItems}\n \n \n \n \n {ts}Item{/ts} \n {ts}Qty{/ts} \n {ts}Each{/ts} \n {if $isShowTax && {contribution.tax_amount|boolean}}\n {ts}Subtotal{/ts} \n {ts}Tax Rate{/ts} \n {ts}Tax Amount{/ts} \n {/if}\n {ts}Total{/ts} \n \n {foreach from=$lineItems item=line}\n \n \n {$line.title}\n \n \n {$line.qty}\n \n \n {$line.unit_price|crmMoney:\'{contribution.currency}\'}\n \n {if $isShowTax && {contribution.tax_amount|boolean}}\n \n {$line.line_total|crmMoney:\'{contribution.currency}\'}\n \n {if $line.tax_rate || $line.tax_amount != \"\"}\n \n {$line.tax_rate|string_format:\"%.2f\"}%\n \n \n {$line.tax_amount|crmMoney:\'{contribution.currency}\'}\n \n {else}\n \n \n {/if}\n {/if}\n \n {$line.line_total_inclusive|crmMoney:\'{contribution.currency}\'}\n \n \n {/foreach}\n
\n \n \n\n {/if}\n {if $isShowTax && {contribution.tax_amount|boolean}}\n \n \n {ts} Amount before Tax : {/ts}\n \n \n {contribution.tax_exclusive_amount}\n \n \n\n {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n \n {if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else}{$taxTerm} {$taxDetail.percentage}%{/if} \n {$taxDetail.amount|crmMoney:\'{contribution.currency}\'} \n \n {/foreach}\n {/if}\n\n {if $isShowTax}\n \n \n {ts}Total Tax Amount{/ts}\n \n \n {contribution.tax_amount}\n \n \n {/if}\n\n \n \n {ts}Total Amount{/ts}\n \n \n {contribution.total_amount}\n \n \n\n {if \'{contribution.receive_date}\'}\n \n \n {ts}Contribution Date{/ts}\n \n \n {contribution.receive_date|crmDate:\"shortdate\"}\n \n \n {/if}\n\n {if \'{contribution.receipt_date}\'}\n \n \n {ts}Receipt Date{/ts}\n \n \n {contribution.receipt_date|crmDate:\"shortdate\"}\n \n \n {/if}\n\n {if {contribution.payment_instrument_id|boolean} && {contribution.paid_amount|boolean}}\n \n \n {ts}Paid By{/ts}\n \n \n {contribution.payment_instrument_id:label}\n \n \n {if \'{contribution.check_number}\'}\n \n \n {ts}Check Number{/ts}\n \n \n {contribution.check_number}\n \n \n {/if}\n {/if}\n\n {if \'{contribution.trxn_id}\'}\n \n \n {ts}Transaction ID{/ts}\n \n \n {contribution.trxn_id}\n \n \n {/if}\n\n {if !empty($ccContribution)}\n \n \n {ts}Billing Name and Address{/ts}\n \n \n \n \n {$billingName} \n {$address|nl2br}\n \n \n \n \n {ts}Credit Card Information{/ts}\n \n \n \n \n {$credit_card_type} \n {$credit_card_number} \n {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n \n \n {/if}\n\n {if !empty($softCreditTypes) and !empty($softCredits)}\n {foreach from=$softCreditTypes item=softCreditType key=n}\n \n \n {$softCreditType}\n \n \n {foreach from=$softCredits.$n item=value key=label}\n \n \n {$label}\n \n \n {$value}\n \n \n {/foreach}\n {/foreach}\n {/if}\n\n {if !empty($customGroup)}\n {foreach from=$customGroup item=value key=customName}\n \n \n {$customName}\n \n \n {foreach from=$value item=v key=n}\n \n \n {$n}\n \n \n {$v}\n \n \n {/foreach}\n {/foreach}\n {/if}\n\n {if !empty($formValues.product_name)}\n \n \n {ts}Premium Information{/ts}\n \n \n \n \n {$formValues.product_name}\n \n \n {if $formValues.product_option}\n \n \n {ts}Option{/ts}\n \n \n {$formValues.product_option}\n \n \n {/if}\n {if $formValues.product_sku}\n \n \n {ts}SKU{/ts}\n \n \n {$formValues.product_sku}\n \n \n {/if}\n {if !empty($fulfilled_date)}\n \n \n {ts}Sent{/ts}\n \n \n {$fulfilled_date|truncate:10:\'\'|crmDate}\n \n \n {/if}\n {/if}\n\n
\n \n \n\n
\n\n\n\n',1,816,'contribution_offline_receipt',1,0,0,NULL),
+ (6,'Contributions - Receipt (off-line)','{ts}Contribution Receipt{/ts} - {contact.display_name}\n','','\n\n\n \n \n\n\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n \n\n \n \n \n\n \n\n \n \n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},
{/if}\n \n {if {contribution.contribution_page_id.receipt_text|boolean}}{contribution.contribution_page_id.receipt_text}\n {elseif {contribution.paid_amount|boolean}}{ts}Below you will find a receipt for this contribution.{/ts}{/if}\n
\n \n \n \n \n \n \n \n {ts}Contribution Information{/ts}\n \n \n \n \n {ts}Contributor Name{/ts}\n \n \n {contact.display_name}\n \n \n \n {if \'{contribution.financial_type_id}\'}\n \n {ts}Financial Type{/ts}\n \n \n {contribution.financial_type_id:label}\n \n {/if}\n \n\n {if $isShowLineItems}\n \n \n \n \n {ts}Item{/ts} \n {ts}Qty{/ts} \n {ts}Each{/ts} \n {if $isShowTax && {contribution.tax_amount|boolean}}\n {ts}Subtotal{/ts} \n {ts}Tax Rate{/ts} \n {ts}Tax Amount{/ts} \n {/if}\n {ts}Total{/ts} \n \n {foreach from=$lineItems item=line}\n \n \n {$line.title}\n \n \n {$line.qty}\n \n \n {$line.unit_price|crmMoney:\'{contribution.currency}\'}\n \n {if $isShowTax && {contribution.tax_amount|boolean}}\n \n {$line.line_total|crmMoney:\'{contribution.currency}\'}\n \n {if $line.tax_rate || $line.tax_amount != \"\"}\n \n {$line.tax_rate|string_format:\"%.2f\"}%\n \n \n {$line.tax_amount|crmMoney:\'{contribution.currency}\'}\n \n {else}\n \n \n {/if}\n {/if}\n \n {$line.line_total_inclusive|crmMoney:\'{contribution.currency}\'}\n \n \n {/foreach}\n
\n \n \n\n {/if}\n {if $isShowTax && {contribution.tax_amount|boolean}}\n \n \n {ts} Amount before Tax : {/ts}\n \n \n {contribution.tax_exclusive_amount}\n \n \n\n {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n \n {if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else}{$taxTerm} {$taxDetail.percentage}%{/if} \n {$taxDetail.amount|crmMoney:\'{contribution.currency}\'} \n \n {/foreach}\n {/if}\n\n {if $isShowTax}\n \n \n {ts}Total Tax Amount{/ts}\n \n \n {contribution.tax_amount}\n \n \n {/if}\n\n \n \n {ts}Total Amount{/ts}\n \n \n {contribution.total_amount}\n \n \n\n {if \'{contribution.receive_date}\'}\n \n \n {ts}Contribution Date{/ts}\n \n \n {contribution.receive_date|crmDate:\"shortdate\"}\n \n \n {/if}\n\n {if \'{contribution.receipt_date}\'}\n \n \n {ts}Receipt Date{/ts}\n \n \n {contribution.receipt_date|crmDate:\"shortdate\"}\n \n \n {/if}\n\n {if {contribution.payment_instrument_id|boolean} && {contribution.paid_amount|boolean}}\n \n \n {ts}Paid By{/ts}\n \n \n {contribution.payment_instrument_id:label}\n \n \n {if \'{contribution.check_number}\'}\n \n \n {ts}Check Number{/ts}\n \n \n {contribution.check_number}\n \n \n {/if}\n {/if}\n\n {if \'{contribution.trxn_id}\'}\n \n \n {ts}Transaction ID{/ts}\n \n \n {contribution.trxn_id}\n \n \n {/if}\n\n {if !empty($ccContribution)}\n \n \n {ts}Billing Name and Address{/ts}\n \n \n \n \n {$billingName} \n {$address|nl2br}\n \n \n \n \n {ts}Credit Card Information{/ts}\n \n \n \n \n {$credit_card_type} \n {$credit_card_number} \n {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n \n \n {/if}\n\n {if !empty($softCreditTypes) and !empty($softCredits)}\n {foreach from=$softCreditTypes item=softCreditType key=n}\n \n \n {$softCreditType}\n \n \n {foreach from=$softCredits.$n item=value key=label}\n \n \n {$label}\n \n \n {$value}\n \n \n {/foreach}\n {/foreach}\n {/if}\n\n {if !empty($customGroup)}\n {foreach from=$customGroup item=value key=customName}\n \n \n {$customName}\n \n \n {foreach from=$value item=v key=n}\n \n \n {$n}\n \n \n {$v}\n \n \n {/foreach}\n {/foreach}\n {/if}\n\n {if !empty($formValues.product_name)}\n \n \n {ts}Premium Information{/ts}\n \n \n \n \n {$formValues.product_name}\n \n \n {if $formValues.product_option}\n \n \n {ts}Option{/ts}\n \n \n {$formValues.product_option}\n \n \n {/if}\n {if $formValues.product_sku}\n \n \n {ts}SKU{/ts}\n \n \n {$formValues.product_sku}\n \n \n {/if}\n {if !empty($fulfilled_date)}\n \n \n {ts}Sent{/ts}\n \n \n {$fulfilled_date|truncate:10:\'\'|crmDate}\n \n \n {/if}\n {/if}\n\n
\n \n \n\n
\n\n\n\n',1,816,'contribution_offline_receipt',0,1,0,NULL),
+ (7,'Contributions - Receipt (on-line)','{if \'{contribution.contribution_status_id:name}\' === \'Pending\'}{ts}Invoice{/ts}{else}{ts}Receipt{/ts}{/if} - {$title} - {contact.display_name}\n','','\n\n\n \n \n\n\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n\n\n \n \n \n\n \n\n \n \n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},
{/if}\n {if $userText}\n {$userText}
\n {elseif {contribution.contribution_page_id.receipt_text|boolean}}\n {contribution.contribution_page_id.receipt_text}
\n {/if}\n\n {if $is_pay_later}\n {$pay_later_receipt}
{* FIXME: this might be text rather than HTML *}\n {/if}\n\n \n \n
\n\n {if {contribution.total_amount|boolean}}\n \n \n {ts}Contribution Information{/ts}\n \n \n\n {if $isShowLineItems}\n \n \n \n \n {ts}Item{/ts} \n {ts}Qty{/ts} \n {ts}Each{/ts} \n {if $isShowTax && {contribution.tax_amount|boolean}}\n {ts}Subtotal{/ts} \n {ts}Tax Rate{/ts} \n {ts}Tax Amount{/ts} \n {/if}\n {ts}Total{/ts} \n \n {foreach from=$lineItems item=line}\n \n {$line.title} \n {$line.qty} \n {$line.unit_price|crmMoney:$currency} \n {if $isShowTax && {contribution.tax_amount|boolean}}\n {$line.line_total|crmMoney:$currency} \n {if $line.tax_rate || $line.tax_amount != \"\"}\n {$line.tax_rate|string_format:\"%.2f\"}% \n {$line.tax_amount|crmMoney:$currency} \n {else}\n \n \n {/if}\n {/if}\n \n {$line.line_total_inclusive|crmMoney:$currency}\n \n \n {/foreach}\n
\n \n \n\n {if $isShowTax && {contribution.tax_amount|boolean}}\n \n \n {ts} Amount before Tax : {/ts}\n \n \n {contribution.tax_exclusive_amount}\n \n \n\n {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n \n {if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else}{$taxTerm} {$taxDetail.percentage}%{/if} \n {$taxDetail.amount|crmMoney:\'{contribution.currency}\'} \n \n {/foreach}\n\n {/if}\n {if $isShowTax}\n \n \n {ts}Total Tax{/ts}\n \n \n {contribution.tax_amount}\n \n \n {/if}\n \n \n {ts}Total Amount{/ts}\n \n \n {contribution.total_amount}\n \n \n {else}\n {if {contribution.tax_amount|boolean}}\n \n \n {ts}Total Tax Amount{/ts}\n \n \n {contribution.tax_amount}\n \n \n {/if}\n \n \n {ts}Amount{/ts}\n \n \n {contribution.total_amount} {if \'{contribution.amount_level}\'} - {contribution.amount_level}{/if}\n \n \n\n {/if}\n\n {/if}\n\n\n {if !empty($receive_date)}\n \n \n {ts}Date{/ts}\n \n \n {$receive_date|crmDate}\n \n \n {/if}\n\n {if {contribution.trxn_id|boolean}}\n \n \n {ts}Transaction #{/ts}\n \n \n {contribution.trxn_id}\n \n \n {/if}\n\n {if !empty($is_recur)}\n \n \n {ts}This is a recurring contribution.{/ts}\n {if $cancelSubscriptionUrl}\n {ts 1=$cancelSubscriptionUrl}You can cancel future contributions by visiting this web page .{/ts}\n {/if}\n \n \n {if $updateSubscriptionBillingUrl}\n \n \n {ts 1=$updateSubscriptionBillingUrl}You can update billing details for this recurring contribution by visiting this web page .{/ts}\n \n \n {/if}\n {if $updateSubscriptionUrl}\n \n \n {ts 1=$updateSubscriptionUrl}You can update recurring contribution amount or change the number of installments for this recurring contribution by visiting this web page .{/ts}\n \n \n {/if}\n {/if}\n\n {if $honor_block_is_active}\n \n \n {$soft_credit_type}\n \n \n {foreach from=$honoreeProfile item=value key=label}\n \n \n {$label}\n \n \n {$value}\n \n \n {/foreach}\n {elseif !empty($softCreditTypes) and !empty($softCredits)}\n {foreach from=$softCreditTypes item=softCreditType key=n}\n \n \n {$softCreditType}\n \n \n {foreach from=$softCredits.$n item=value key=label}\n \n \n {$label}\n \n \n {$value}\n \n \n {/foreach}\n {/foreach}\n {/if}\n\n {if !empty($pcpBlock)}\n \n \n {ts}Personal Campaign Page{/ts}\n \n \n \n \n {ts}Display In Honor Roll{/ts}\n \n \n {if $pcp_display_in_roll}{ts}Yes{/ts}{else}{ts}No{/ts}{/if}\n \n \n {if $pcp_roll_nickname}\n \n \n {ts}Nickname{/ts}\n \n \n {$pcp_roll_nickname}\n \n \n {/if}\n {if $pcp_personal_note}\n \n \n {ts}Personal Note{/ts}\n \n \n {$pcp_personal_note}\n \n \n {/if}\n {/if}\n\n {if !empty($onBehalfProfile)}\n \n \n {$onBehalfProfile_grouptitle}\n \n \n {foreach from=$onBehalfProfile item=onBehalfValue key=onBehalfName}\n \n \n {$onBehalfName}\n \n \n {$onBehalfValue}\n \n \n {/foreach}\n {/if}\n\n {if {contribution.contribution_page_id.is_share|boolean}}\n \n \n {capture assign=contributionUrl}{crmURL p=\'civicrm/contribute/transact\' q=\"reset=1&id={contribution.contribution_page_id}\" a=true fe=1 h=1}{/capture}\n {include file=\"CRM/common/SocialNetwork.tpl\" emailMode=true url=$contributionUrl title=$title pageURL=$contributionUrl}\n \n \n {/if}\n\n {if !empty($billingName)}\n \n \n {ts}Billing Name and Address{/ts}\n \n \n \n \n {$billingName} \n {$address|nl2br} \n {$email}\n \n \n {elseif !empty($email)}\n \n \n {ts}Registered Email{/ts}\n \n \n \n \n {$email}\n \n \n {/if}\n\n {if !empty($credit_card_type)}\n \n \n {ts}Credit Card Information{/ts}\n \n \n \n \n {$credit_card_type} \n {$credit_card_number} \n {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate} \n \n \n {/if}\n\n {if !empty($selectPremium)}\n \n \n {ts}Premium Information{/ts}\n \n \n \n \n {$product_name}\n \n \n {if $option}\n \n \n {ts}Option{/ts}\n \n \n {$option}\n \n \n {/if}\n {if $sku}\n \n \n {ts}SKU{/ts}\n \n \n {$sku}\n \n \n {/if}\n {if $start_date}\n \n \n {ts}Start Date{/ts}\n \n \n {$start_date|crmDate}\n \n \n {/if}\n {if $end_date}\n \n \n {ts}End Date{/ts}\n \n \n {$end_date|crmDate}\n \n \n {/if}\n {if !empty($contact_email) OR !empty($contact_phone)}\n \n \n {ts}For information about this premium, contact:{/ts}
\n {if !empty($contact_email)}\n {$contact_email}
\n {/if}\n {if !empty($contact_phone)}\n {$contact_phone}
\n {/if}\n \n \n {/if}\n {if $is_deductible AND !empty($price)}\n \n \n {ts 1=$price|crmMoney:$currency}The value of this premium is %1. This may affect the amount of the tax deduction you can claim. Consult your tax advisor for more information.{/ts}
\n \n \n {/if}\n {/if}\n\n {if !empty($customPre)}\n \n \n {$customPre_grouptitle}\n \n \n {foreach from=$customPre item=customValue key=customName}\n \n \n {$customName}\n \n \n {$customValue}\n \n \n {/foreach}\n {/if}\n\n {if !empty($customPost)}\n \n \n {$customPost_grouptitle}\n \n \n {foreach from=$customPost item=customValue key=customName}\n \n \n {$customName}\n \n \n {$customValue}\n \n \n {/foreach}\n {/if}\n\n
\n\n\n\n',1,817,'contribution_online_receipt',1,0,0,NULL),
+ (8,'Contributions - Receipt (on-line)','{if \'{contribution.contribution_status_id:name}\' === \'Pending\'}{ts}Invoice{/ts}{else}{ts}Receipt{/ts}{/if} - {$title} - {contact.display_name}\n','','\n\n\n \n \n\n\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n\n\n \n \n \n\n \n\n \n \n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},
{/if}\n {if $userText}\n {$userText}
\n {elseif {contribution.contribution_page_id.receipt_text|boolean}}\n {contribution.contribution_page_id.receipt_text}
\n {/if}\n\n {if $is_pay_later}\n {$pay_later_receipt}
{* FIXME: this might be text rather than HTML *}\n {/if}\n\n \n \n
\n\n {if {contribution.total_amount|boolean}}\n \n \n {ts}Contribution Information{/ts}\n \n \n\n {if $isShowLineItems}\n \n \n \n \n {ts}Item{/ts} \n {ts}Qty{/ts} \n {ts}Each{/ts} \n {if $isShowTax && {contribution.tax_amount|boolean}}\n {ts}Subtotal{/ts} \n {ts}Tax Rate{/ts} \n {ts}Tax Amount{/ts} \n {/if}\n {ts}Total{/ts} \n \n {foreach from=$lineItems item=line}\n \n {$line.title} \n {$line.qty} \n {$line.unit_price|crmMoney:$currency} \n {if $isShowTax && {contribution.tax_amount|boolean}}\n {$line.line_total|crmMoney:$currency} \n {if $line.tax_rate || $line.tax_amount != \"\"}\n {$line.tax_rate|string_format:\"%.2f\"}% \n {$line.tax_amount|crmMoney:$currency} \n {else}\n \n \n {/if}\n {/if}\n \n {$line.line_total_inclusive|crmMoney:$currency}\n \n \n {/foreach}\n
\n \n \n\n {if $isShowTax && {contribution.tax_amount|boolean}}\n \n \n {ts} Amount before Tax : {/ts}\n \n \n {contribution.tax_exclusive_amount}\n \n \n\n {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n \n {if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else}{$taxTerm} {$taxDetail.percentage}%{/if} \n {$taxDetail.amount|crmMoney:\'{contribution.currency}\'} \n \n {/foreach}\n\n {/if}\n {if $isShowTax}\n \n \n {ts}Total Tax{/ts}\n \n \n {contribution.tax_amount}\n \n \n {/if}\n \n \n {ts}Total Amount{/ts}\n \n \n {contribution.total_amount}\n \n \n {else}\n {if {contribution.tax_amount|boolean}}\n \n \n {ts}Total Tax Amount{/ts}\n \n \n {contribution.tax_amount}\n \n \n {/if}\n \n \n {ts}Amount{/ts}\n \n \n {contribution.total_amount} {if \'{contribution.amount_level}\'} - {contribution.amount_level}{/if}\n \n \n\n {/if}\n\n {/if}\n\n\n {if !empty($receive_date)}\n \n \n {ts}Date{/ts}\n \n \n {$receive_date|crmDate}\n \n \n {/if}\n\n {if {contribution.trxn_id|boolean}}\n \n \n {ts}Transaction #{/ts}\n \n \n {contribution.trxn_id}\n \n \n {/if}\n\n {if !empty($is_recur)}\n \n \n {ts}This is a recurring contribution.{/ts}\n {if $cancelSubscriptionUrl}\n {ts 1=$cancelSubscriptionUrl}You can cancel future contributions by visiting this web page .{/ts}\n {/if}\n \n \n {if $updateSubscriptionBillingUrl}\n \n \n {ts 1=$updateSubscriptionBillingUrl}You can update billing details for this recurring contribution by visiting this web page .{/ts}\n \n \n {/if}\n {if $updateSubscriptionUrl}\n \n \n {ts 1=$updateSubscriptionUrl}You can update recurring contribution amount or change the number of installments for this recurring contribution by visiting this web page .{/ts}\n \n \n {/if}\n {/if}\n\n {if $honor_block_is_active}\n \n \n {$soft_credit_type}\n \n \n {foreach from=$honoreeProfile item=value key=label}\n \n \n {$label}\n \n \n {$value}\n \n \n {/foreach}\n {elseif !empty($softCreditTypes) and !empty($softCredits)}\n {foreach from=$softCreditTypes item=softCreditType key=n}\n \n \n {$softCreditType}\n \n \n {foreach from=$softCredits.$n item=value key=label}\n \n \n {$label}\n \n \n {$value}\n \n \n {/foreach}\n {/foreach}\n {/if}\n\n {if !empty($pcpBlock)}\n \n \n {ts}Personal Campaign Page{/ts}\n \n \n \n \n {ts}Display In Honor Roll{/ts}\n \n \n {if $pcp_display_in_roll}{ts}Yes{/ts}{else}{ts}No{/ts}{/if}\n \n \n {if $pcp_roll_nickname}\n \n \n {ts}Nickname{/ts}\n \n \n {$pcp_roll_nickname}\n \n \n {/if}\n {if $pcp_personal_note}\n \n \n {ts}Personal Note{/ts}\n \n \n {$pcp_personal_note}\n \n \n {/if}\n {/if}\n\n {if !empty($onBehalfProfile)}\n \n \n {$onBehalfProfile_grouptitle}\n \n \n {foreach from=$onBehalfProfile item=onBehalfValue key=onBehalfName}\n \n \n {$onBehalfName}\n \n \n {$onBehalfValue}\n \n \n {/foreach}\n {/if}\n\n {if {contribution.contribution_page_id.is_share|boolean}}\n \n \n {capture assign=contributionUrl}{crmURL p=\'civicrm/contribute/transact\' q=\"reset=1&id={contribution.contribution_page_id}\" a=true fe=1 h=1}{/capture}\n {include file=\"CRM/common/SocialNetwork.tpl\" emailMode=true url=$contributionUrl title=$title pageURL=$contributionUrl}\n \n \n {/if}\n\n {if !empty($billingName)}\n \n \n {ts}Billing Name and Address{/ts}\n \n \n \n \n {$billingName} \n {$address|nl2br} \n {$email}\n \n \n {elseif !empty($email)}\n \n \n {ts}Registered Email{/ts}\n \n \n \n \n {$email}\n \n \n {/if}\n\n {if !empty($credit_card_type)}\n \n \n {ts}Credit Card Information{/ts}\n \n \n \n \n {$credit_card_type} \n {$credit_card_number} \n {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate} \n \n \n {/if}\n\n {if !empty($selectPremium)}\n \n \n {ts}Premium Information{/ts}\n \n \n \n \n {$product_name}\n \n \n {if $option}\n \n \n {ts}Option{/ts}\n \n \n {$option}\n \n \n {/if}\n {if $sku}\n \n \n {ts}SKU{/ts}\n \n \n {$sku}\n \n \n {/if}\n {if $start_date}\n \n \n {ts}Start Date{/ts}\n \n \n {$start_date|crmDate}\n \n \n {/if}\n {if $end_date}\n \n \n {ts}End Date{/ts}\n \n \n {$end_date|crmDate}\n \n \n {/if}\n {if !empty($contact_email) OR !empty($contact_phone)}\n \n \n {ts}For information about this premium, contact:{/ts}
\n {if !empty($contact_email)}\n {$contact_email}
\n {/if}\n {if !empty($contact_phone)}\n {$contact_phone}
\n {/if}\n \n \n {/if}\n {if $is_deductible AND !empty($price)}\n \n \n {ts 1=$price|crmMoney:$currency}The value of this premium is %1. This may affect the amount of the tax deduction you can claim. Consult your tax advisor for more information.{/ts}
\n \n \n {/if}\n {/if}\n\n {if !empty($customPre)}\n \n \n {$customPre_grouptitle}\n \n \n {foreach from=$customPre item=customValue key=customName}\n \n \n {$customName}\n \n \n {$customValue}\n \n \n {/foreach}\n {/if}\n\n {if !empty($customPost)}\n \n \n {$customPost_grouptitle}\n \n \n {foreach from=$customPost item=customValue key=customName}\n \n \n {$customName}\n \n \n {$customValue}\n \n \n {/foreach}\n {/if}\n\n
\n\n\n\n',1,817,'contribution_online_receipt',0,1,0,NULL),
+ (9,'Contributions - Invoice','{if $title}\n {if $component}\n {if $component == \'event\'}\n {ts 1=$title}Event Registration Invoice: %1{/ts}\n {else}\n {ts 1=$title}Contribution Invoice: %1{/ts}\n {/if}\n {/if}\n{else}\n {ts}Invoice{/ts}\n{/if}\n - {contact.display_name}\n','','\n\n \n \n \n \n \n \n {if $config->empoweredBy}\n
\n \n \n \n
\n {/if}\n
\n {if $userText}\n \n {$userText} \n \n {/if}\n \n {ts}INVOICE{/ts} \n {ts}Invoice Date:{/ts} \n {domain.name} \n \n \n {contact.display_name}{if \'{contact.current_employer}\'} ({contact.current_employer}){/if} \n {contribution.receive_date|crmDate:\"Full\"} \n \n {domain.street_address}\n {domain.supplemental_address_1}\n \n \n \n {contact.address_billing.street_address} {contact.address_billing.supplemental_address_1} \n {ts}Invoice Number:{/ts} \n \n {domain.supplemental_address_2}\n {domain.state_province_id:label}\n \n \n \n {contact.address_billing.supplemental_address_2} {contact.address_billing.state_province_id:abbr} \n {contribution.invoice_number} \n \n {domain.city}\n {domain.postal_code}\n \n \n \n {contact.address_billing.city} {contact.address_billing.postal_code} \n {ts}Reference:{/ts} \n {domain.country_id:label} \n \n \n {contact.address_billing.country_id:label} \n {contribution.source} \n {domain.email} \n \n \n \n \n {domain.phone} \n \n
\n\n
\n \n {ts}Description{/ts} \n {ts}Quantity{/ts} \n {ts}Unit Price{/ts} \n {domain.tax_term} \n {ts 1=\'{contribution.currency}\'}Amount %1{/ts} \n \n {foreach from=$lineItems item=line}\n \n \n {$line.title}\n \n {$line.qty} \n {$line.unit_price|crmMoney:$currency} \n {if $line.tax_amount != \'\'}\n {if $line.tax_rate}{$line.tax_rate|crmNumberFormat}%{/if} \n {else}\n {if \'{domain.tax_term}\'}{ts 1=\'{domain.tax_term}\'}-{/ts}{/if} \n {/if}\n {$line.line_total|crmMoney:\'{contribution.currency}\'} \n \n {/foreach}\n \n \n {ts}Sub Total{/ts} \n {contribution.tax_exclusive_amount} \n \n {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n {if $taxRate != 0}\n \n \n {if \'{domain.tax_term}\'}{ts 1=\'{domain.tax_term}\' 2=$taxRate|crmNumberFormat}TOTAL %1 %2%{/ts}{/if} \n {$taxDetail.amount|crmMoney:\'{contribution.currency}\'} \n \n {/if}\n {/foreach}\n \n \n {ts 1=\'{contribution.currency}\'}TOTAL %1{/ts} \n {contribution.total_amount} \n \n \n \n \n {if \'{contribution.contribution_status_id:name}\' == \'Refunded\'}\n {ts}Amount Credited{/ts}\n {else}\n {ts}Amount Paid{/ts}\n {/if}\n \n {contribution.paid_amount} \n \n \n \n \n \n \n \n {ts}AMOUNT DUE:{/ts} \n {contribution.balance_amount} \n \n \n \n \n {if \'{contribution.contribution_status_id:name}\' == \'Pending\' && \'{contribution.is_pay_later}\' == 1}\n \n {ts 1=$dueDate}DUE DATE: %1{/ts} \n \n \n {/if}\n
\n\n {if \'{contribution.contribution_status_id:name}\' == \'Pending\' && \'{contribution.is_pay_later}\' == 1}\n
\n \n \n \n
\n\n
\n \n {ts}PAYMENT ADVICE{/ts} \n {ts}To:{/ts} \n {domain.name} \n {domain.street_address} {domain.supplemental_address_1} \n {domain.supplemental_address_2} {domain.state_province_id:label} \n {domain.city} {domain.postal_code} \n {domain.country_id:label} \n {domain.email}
\n {domain.phone} \n \n {$notes} \n \n \n \n \n {ts}Customer:{/ts} \n {contact.display_name} \n \n \n {ts}Invoice Number:{/ts} \n {contribution.invoice_number} \n \n \n {if {contribution.is_pay_later|boolean}}\n \n {ts}Amount Due:{/ts} \n {contribution.total_amount} \n \n {else}\n \n {ts}Amount Due:{/ts} \n {contribution.paid_amount} \n \n {/if}\n \n {ts}Due Date:{/ts} \n {$dueDate} \n \n \n \n \n
\n \n \n
\n {/if}\n\n {if \'{contribution.contribution_status_id:name}\' === \'Refunded\' || \'{contribution.contribution_status_id:name}\' === \'Cancelled\'}\n {if $config->empoweredBy}\n
\n \n \n \n
\n {/if}\n\n
\n \n {ts}CREDIT NOTE{/ts} \n {ts}Date:{/ts} \n {domain.name} \n \n \n {contact.display_name}{if \'{contact.current_employer}\'} ({contact.current_employer}){/if} \n {contribution.receive_date|crmDate:\"Full\"} \n \n {domain.street_address}\n {domain.supplemental_address_1}\n \n \n \n {contact.address_billing.street_address} {contact.address_billing.supplemental_address_1} \n {ts}Credit Note Number:{/ts} \n \n {domain.supplemental_address_2}\n {domain.state_province_id:label}\n \n \n \n {contact.address_billing.supplemental_address_2} {contact.address_billing.state_province_id:abbr} \n {contribution.creditnote_id} \n \n {domain.city}\n {domain.postal_code}\n \n \n \n {contact.address_billing.city} {contact.address_billing.postal_code} \n {ts}Reference:{/ts} \n \n {domain.country_id:label}\n \n \n \n \n {contribution.source} \n \n {domain.email}\n \n \n \n \n \n \n {domain.phone}\n \n \n
\n\n
\n \n \n \n \n {ts}Description{/ts} \n {ts}Quantity{/ts} \n {ts}Unit Price{/ts} \n {domain.tax_term} \n {ts 1=\"{contribution.currency}\"}Amount %1{/ts} \n \n {foreach from=$lineItems item=line key=index}\n \n \n \n {$line.title}\n \n {$line.qty} \n {$line.unit_price|crmMoney:\'{contribution.currency}\'} \n {if $line.tax_amount != \'\'}\n {if $line.tax_rate}{$line.tax_rate|crmNumberFormat}%{/if} \n {else}\n {if \'{domain.tax_term}\'}{ts 1=\'{domain.tax_term}\'}No %1{/ts}{/if} \n {/if}\n {$line.line_total|crmMoney:\'{contribution.currency}\'} \n \n {/foreach}\n \n \n \n {ts}Sub Total{/ts} \n {contribution.tax_exclusive_amount} \n \n {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n {if $taxRate != 0}\n \n \n {if \'{domain.tax_term}\'}{ts 1=\'{domain.tax_term}\' 2=$taxRate|crmNumberFormat}TOTAL %1 %2%{/ts}{/if} \n {$taxDetail.amount|crmMoney:\'{contribution.currency}\'} \n \n {/if}\n {/foreach}\n \n \n \n \n \n \n {ts 1=\'{contribution.currency}\'}TOTAL %1{/ts} \n {contribution.total_amount} \n \n {if !\'{contribution.is_pay_later|boolean}\'}\n \n \n {ts}LESS Credit to invoice(s){/ts} \n {contribution.total_amount} \n \n \n \n \n \n \n \n {ts}REMAINING CREDIT{/ts} \n {contribution.balance_amount} \n \n \n {/if}\n \n \n \n \n \n \n \n \n
\n \n \n
\n\n
\n \n \n \n
\n\n
\n \n {ts}CREDIT ADVICE{/ts} {ts}Please do not pay on this advice. Deduct the amount of this Credit Note from your next payment to us{/ts}
\n \n \n \n \n {ts}Customer:{/ts} \n {contact.display_name} \n \n \n \n {ts}Credit Note#:{/ts} \n {contribution.creditnote_id} \n \n \n \n \n {ts}Credit Amount:{/ts} \n {contribution.total_amount} \n \n
\n \n \n
\n {/if}\n\n
\n \n\n',1,818,'contribution_invoice_receipt',1,0,0,NULL),
+ (10,'Contributions - Invoice','{if $title}\n {if $component}\n {if $component == \'event\'}\n {ts 1=$title}Event Registration Invoice: %1{/ts}\n {else}\n {ts 1=$title}Contribution Invoice: %1{/ts}\n {/if}\n {/if}\n{else}\n {ts}Invoice{/ts}\n{/if}\n - {contact.display_name}\n','','\n\n \n \n \n \n \n \n {if $config->empoweredBy}\n
\n \n \n \n
\n {/if}\n
\n {if $userText}\n \n {$userText} \n \n {/if}\n \n {ts}INVOICE{/ts} \n {ts}Invoice Date:{/ts} \n {domain.name} \n \n \n {contact.display_name}{if \'{contact.current_employer}\'} ({contact.current_employer}){/if} \n {contribution.receive_date|crmDate:\"Full\"} \n \n {domain.street_address}\n {domain.supplemental_address_1}\n \n \n \n {contact.address_billing.street_address} {contact.address_billing.supplemental_address_1} \n {ts}Invoice Number:{/ts} \n \n {domain.supplemental_address_2}\n {domain.state_province_id:label}\n \n \n \n {contact.address_billing.supplemental_address_2} {contact.address_billing.state_province_id:abbr} \n {contribution.invoice_number} \n \n {domain.city}\n {domain.postal_code}\n \n \n \n {contact.address_billing.city} {contact.address_billing.postal_code} \n {ts}Reference:{/ts} \n {domain.country_id:label} \n \n \n {contact.address_billing.country_id:label} \n {contribution.source} \n {domain.email} \n \n \n \n \n {domain.phone} \n \n
\n\n
\n \n {ts}Description{/ts} \n {ts}Quantity{/ts} \n {ts}Unit Price{/ts} \n {domain.tax_term} \n {ts 1=\'{contribution.currency}\'}Amount %1{/ts} \n \n {foreach from=$lineItems item=line}\n \n \n {$line.title}\n \n {$line.qty} \n {$line.unit_price|crmMoney:$currency} \n {if $line.tax_amount != \'\'}\n {if $line.tax_rate}{$line.tax_rate|crmNumberFormat}%{/if} \n {else}\n {if \'{domain.tax_term}\'}{ts 1=\'{domain.tax_term}\'}-{/ts}{/if} \n {/if}\n {$line.line_total|crmMoney:\'{contribution.currency}\'} \n \n {/foreach}\n \n \n {ts}Sub Total{/ts} \n {contribution.tax_exclusive_amount} \n \n {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n {if $taxRate != 0}\n \n \n {if \'{domain.tax_term}\'}{ts 1=\'{domain.tax_term}\' 2=$taxRate|crmNumberFormat}TOTAL %1 %2%{/ts}{/if} \n {$taxDetail.amount|crmMoney:\'{contribution.currency}\'} \n \n {/if}\n {/foreach}\n \n \n {ts 1=\'{contribution.currency}\'}TOTAL %1{/ts} \n {contribution.total_amount} \n \n \n \n \n {if \'{contribution.contribution_status_id:name}\' == \'Refunded\'}\n {ts}Amount Credited{/ts}\n {else}\n {ts}Amount Paid{/ts}\n {/if}\n \n {contribution.paid_amount} \n \n \n \n \n \n \n \n {ts}AMOUNT DUE:{/ts} \n {contribution.balance_amount} \n \n \n \n \n {if \'{contribution.contribution_status_id:name}\' == \'Pending\' && \'{contribution.is_pay_later}\' == 1}\n \n {ts 1=$dueDate}DUE DATE: %1{/ts} \n \n \n {/if}\n
\n\n {if \'{contribution.contribution_status_id:name}\' == \'Pending\' && \'{contribution.is_pay_later}\' == 1}\n
\n \n \n \n
\n\n
\n \n {ts}PAYMENT ADVICE{/ts} \n {ts}To:{/ts} \n {domain.name} \n {domain.street_address} {domain.supplemental_address_1} \n {domain.supplemental_address_2} {domain.state_province_id:label} \n {domain.city} {domain.postal_code} \n {domain.country_id:label} \n {domain.email}
\n {domain.phone} \n \n {$notes} \n \n \n \n \n {ts}Customer:{/ts} \n {contact.display_name} \n \n \n {ts}Invoice Number:{/ts} \n {contribution.invoice_number} \n \n \n {if {contribution.is_pay_later|boolean}}\n \n {ts}Amount Due:{/ts} \n {contribution.total_amount} \n \n {else}\n \n {ts}Amount Due:{/ts} \n {contribution.paid_amount} \n \n {/if}\n \n {ts}Due Date:{/ts} \n {$dueDate} \n \n \n \n \n
\n \n \n
\n {/if}\n\n {if \'{contribution.contribution_status_id:name}\' === \'Refunded\' || \'{contribution.contribution_status_id:name}\' === \'Cancelled\'}\n {if $config->empoweredBy}\n
\n \n \n \n
\n {/if}\n\n
\n \n {ts}CREDIT NOTE{/ts} \n {ts}Date:{/ts} \n {domain.name} \n \n \n {contact.display_name}{if \'{contact.current_employer}\'} ({contact.current_employer}){/if} \n {contribution.receive_date|crmDate:\"Full\"} \n \n {domain.street_address}\n {domain.supplemental_address_1}\n \n \n \n {contact.address_billing.street_address} {contact.address_billing.supplemental_address_1} \n {ts}Credit Note Number:{/ts} \n \n {domain.supplemental_address_2}\n {domain.state_province_id:label}\n \n \n \n {contact.address_billing.supplemental_address_2} {contact.address_billing.state_province_id:abbr} \n {contribution.creditnote_id} \n \n {domain.city}\n {domain.postal_code}\n \n \n \n {contact.address_billing.city} {contact.address_billing.postal_code} \n {ts}Reference:{/ts} \n \n {domain.country_id:label}\n \n \n \n \n {contribution.source} \n \n {domain.email}\n \n \n \n \n \n \n {domain.phone}\n \n \n
\n\n
\n \n \n \n \n {ts}Description{/ts} \n {ts}Quantity{/ts} \n {ts}Unit Price{/ts} \n {domain.tax_term} \n {ts 1=\"{contribution.currency}\"}Amount %1{/ts} \n \n {foreach from=$lineItems item=line key=index}\n \n \n \n {$line.title}\n \n {$line.qty} \n {$line.unit_price|crmMoney:\'{contribution.currency}\'} \n {if $line.tax_amount != \'\'}\n {if $line.tax_rate}{$line.tax_rate|crmNumberFormat}%{/if} \n {else}\n {if \'{domain.tax_term}\'}{ts 1=\'{domain.tax_term}\'}No %1{/ts}{/if} \n {/if}\n {$line.line_total|crmMoney:\'{contribution.currency}\'} \n \n {/foreach}\n \n \n \n {ts}Sub Total{/ts} \n {contribution.tax_exclusive_amount} \n \n {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n {if $taxRate != 0}\n \n \n {if \'{domain.tax_term}\'}{ts 1=\'{domain.tax_term}\' 2=$taxRate|crmNumberFormat}TOTAL %1 %2%{/ts}{/if} \n {$taxDetail.amount|crmMoney:\'{contribution.currency}\'} \n \n {/if}\n {/foreach}\n \n \n \n \n \n \n {ts 1=\'{contribution.currency}\'}TOTAL %1{/ts} \n {contribution.total_amount} \n \n {if !\'{contribution.is_pay_later|boolean}\'}\n \n \n {ts}LESS Credit to invoice(s){/ts} \n {contribution.total_amount} \n \n \n \n \n \n \n \n {ts}REMAINING CREDIT{/ts} \n {contribution.balance_amount} \n \n \n {/if}\n \n \n \n \n \n \n \n \n
\n \n \n
\n\n
\n \n \n \n
\n\n
\n \n {ts}CREDIT ADVICE{/ts} {ts}Please do not pay on this advice. Deduct the amount of this Credit Note from your next payment to us{/ts}
\n \n \n \n \n {ts}Customer:{/ts} \n {contact.display_name} \n \n \n \n {ts}Credit Note#:{/ts} \n {contribution.creditnote_id} \n \n \n \n \n {ts}Credit Amount:{/ts} \n {contribution.total_amount} \n \n
\n \n \n
\n {/if}\n\n
\n \n\n',1,818,'contribution_invoice_receipt',0,1,0,NULL),
(11,'Contributions - Recurring Start and End Notification','{ts}Recurring Contribution Notification{/ts} - {contact.display_name}\n','','\n\n\n \n \n\n\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n \n\n \n \n \n\n \n\n \n \n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},
{/if}\n \n \n\n \n \n \n\n {if $recur_txnType eq \'START\'}\n {if $auto_renew_membership}\n \n \n {ts}Thanks for your auto renew membership sign-up.{/ts}
\n {ts 1=$recur_frequency_interval 2=$recur_frequency_unit}This membership will be automatically renewed every %1 %2(s). {/ts}
\n \n \n {if $cancelSubscriptionUrl}\n \n \n {ts 1=$cancelSubscriptionUrl}You can cancel the auto-renewal option by visiting this web page .{/ts}\n \n \n {/if}\n {if $updateSubscriptionBillingUrl}\n \n \n {ts 1=$updateSubscriptionBillingUrl}You can update billing details for this automatically renewed membership by visiting this web page .{/ts}\n \n \n {/if}\n {else}\n \n \n {ts}Thanks for your recurring contribution sign-up.{/ts}
\n {ts 1=$recur_frequency_interval 2=$recur_frequency_unit}This recurring contribution will be automatically processed every %1 %2(s){/ts}{if $recur_installments}{ts 1=$recur_installments} for a total of %1 installment(s){/ts}{/if}.
\n {ts}Start Date{/ts}: {$recur_start_date|crmDate}
\n \n \n {if $cancelSubscriptionUrl}\n \n \n {ts 1=$cancelSubscriptionUrl} You can cancel the recurring contribution option by visiting this web page .{/ts}\n \n \n {/if}\n {if $updateSubscriptionBillingUrl}\n \n \n {ts 1=$updateSubscriptionBillingUrl}You can update billing details for this recurring contribution by visiting this web page .{/ts}\n \n \n {/if}\n {if $updateSubscriptionUrl}\n \n \n {ts 1=$updateSubscriptionUrl}You can update recurring contribution amount or change the number of installments details for this recurring contribution by visiting this web page .{/ts}\n \n \n {/if}\n {/if}\n\n {elseif $recur_txnType eq \'END\'}\n\n {if $auto_renew_membership}\n \n \n {ts}Your auto renew membership sign-up has ended and your membership will not be automatically renewed.{/ts}
\n \n \n {else}\n \n \n {ts}Your recurring contribution term has ended.{/ts}
\n {ts 1=$recur_installments}You have successfully completed %1 recurring contributions. Thank you.{/ts}
\n \n \n \n \n \n \n \n {ts 1=$recur_installments}Interval of Subscription for %1 installment(s){/ts}\n \n \n \n \n {ts}Start Date{/ts}\n \n \n {$recur_start_date|crmDate}\n \n \n \n \n {ts}End Date{/ts}\n \n \n {$recur_end_date|crmDate}\n \n \n
\n \n \n\n {/if}\n {/if}\n\n
\n\n\n\n',1,819,'contribution_recurring_notify',1,0,0,NULL),
(12,'Contributions - Recurring Start and End Notification','{ts}Recurring Contribution Notification{/ts} - {contact.display_name}\n','','\n\n\n \n \n\n\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n \n\n \n \n \n\n \n\n \n \n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},
{/if}\n \n \n\n \n \n \n\n {if $recur_txnType eq \'START\'}\n {if $auto_renew_membership}\n \n \n {ts}Thanks for your auto renew membership sign-up.{/ts}
\n {ts 1=$recur_frequency_interval 2=$recur_frequency_unit}This membership will be automatically renewed every %1 %2(s). {/ts}
\n \n \n {if $cancelSubscriptionUrl}\n \n \n {ts 1=$cancelSubscriptionUrl}You can cancel the auto-renewal option by visiting this web page .{/ts}\n \n \n {/if}\n {if $updateSubscriptionBillingUrl}\n \n \n {ts 1=$updateSubscriptionBillingUrl}You can update billing details for this automatically renewed membership by visiting this web page .{/ts}\n \n \n {/if}\n {else}\n \n \n {ts}Thanks for your recurring contribution sign-up.{/ts}
\n {ts 1=$recur_frequency_interval 2=$recur_frequency_unit}This recurring contribution will be automatically processed every %1 %2(s){/ts}{if $recur_installments}{ts 1=$recur_installments} for a total of %1 installment(s){/ts}{/if}.
\n {ts}Start Date{/ts}: {$recur_start_date|crmDate}
\n \n \n {if $cancelSubscriptionUrl}\n \n \n {ts 1=$cancelSubscriptionUrl} You can cancel the recurring contribution option by visiting this web page .{/ts}\n \n \n {/if}\n {if $updateSubscriptionBillingUrl}\n \n \n {ts 1=$updateSubscriptionBillingUrl}You can update billing details for this recurring contribution by visiting this web page .{/ts}\n \n \n {/if}\n {if $updateSubscriptionUrl}\n \n \n {ts 1=$updateSubscriptionUrl}You can update recurring contribution amount or change the number of installments details for this recurring contribution by visiting this web page .{/ts}\n \n \n {/if}\n {/if}\n\n {elseif $recur_txnType eq \'END\'}\n\n {if $auto_renew_membership}\n \n \n {ts}Your auto renew membership sign-up has ended and your membership will not be automatically renewed.{/ts}
\n \n \n {else}\n \n \n {ts}Your recurring contribution term has ended.{/ts}
\n {ts 1=$recur_installments}You have successfully completed %1 recurring contributions. Thank you.{/ts}
\n \n \n \n \n \n \n \n {ts 1=$recur_installments}Interval of Subscription for %1 installment(s){/ts}\n \n \n \n \n {ts}Start Date{/ts}\n \n \n {$recur_start_date|crmDate}\n \n \n \n \n {ts}End Date{/ts}\n \n \n {$recur_end_date|crmDate}\n \n \n
\n \n \n\n {/if}\n {/if}\n\n
\n\n\n\n',1,819,'contribution_recurring_notify',0,1,0,NULL),
(13,'Contributions - Recurring Cancellation Notification','{ts}Recurring Contribution Cancellation Notification{/ts} - {contact.display_name}\n','','\n\n\n \n \n\n\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n \n\n \n \n \n\n \n\n \n \n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},
{/if}\n {ts 1=$amount 2=$recur_frequency_interval 3=$recur_frequency_unit}Your recurring contribution of %1, every %2 %3 has been cancelled as requested.{/ts}
\n \n \n \n
\n\n\n\n',1,820,'contribution_recurring_cancelled',1,0,0,NULL),
(14,'Contributions - Recurring Cancellation Notification','{ts}Recurring Contribution Cancellation Notification{/ts} - {contact.display_name}\n','','\n\n\n \n \n\n\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n \n\n \n \n \n\n \n\n \n \n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},
{/if}\n {ts 1=$amount 2=$recur_frequency_interval 3=$recur_frequency_unit}Your recurring contribution of %1, every %2 %3 has been cancelled as requested.{/ts}
\n \n \n \n
\n\n\n\n',1,820,'contribution_recurring_cancelled',0,1,0,NULL),
(15,'Contributions - Recurring Billing Updates','{ts}Recurring Contribution Billing Updates{/ts} - {contact.display_name}\n','','\n\n\n \n \n\n\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n \n\n \n \n \n\n \n\n \n \n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},
{/if}\n {ts 1=$amount 2=$recur_frequency_interval 3=$recur_frequency_unit}Billing details for your recurring contribution of %1, every %2 %3 have been updated.{/ts}
\n \n \n \n
\n\n \n \n \n {ts}Billing Name and Address{/ts}\n \n \n \n \n {$billingName} \n {$address|nl2br} \n {$email}\n \n \n \n \n {ts}Credit Card Information{/ts}\n \n \n \n \n {$credit_card_type} \n {$credit_card_number} \n {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate} \n \n \n \n \n {ts 1=$receipt_from_email}If you have questions please contact us at %1{/ts}\n \n \n
\n\n\n\n',1,821,'contribution_recurring_billing',1,0,0,NULL),
(16,'Contributions - Recurring Billing Updates','{ts}Recurring Contribution Billing Updates{/ts} - {contact.display_name}\n','','\n\n\n \n \n\n\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n \n\n \n \n \n\n \n\n \n \n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},
{/if}\n {ts 1=$amount 2=$recur_frequency_interval 3=$recur_frequency_unit}Billing details for your recurring contribution of %1, every %2 %3 have been updated.{/ts}
\n \n \n \n
\n\n \n \n \n {ts}Billing Name and Address{/ts}\n \n \n \n \n {$billingName} \n {$address|nl2br} \n {$email}\n \n \n \n \n {ts}Credit Card Information{/ts}\n \n \n \n \n {$credit_card_type} \n {$credit_card_number} \n {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate} \n \n \n \n \n {ts 1=$receipt_from_email}If you have questions please contact us at %1{/ts}\n \n \n
\n\n\n\n',1,821,'contribution_recurring_billing',0,1,0,NULL),
- (17,'Contributions - Recurring Updates','{ts}Recurring Contribution Update Notification{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{ts}Your recurring contribution has been updated as requested:{/ts}\n\n{ts 1=$amount 2=$recur_frequency_interval 3=$recur_frequency_unit}Recurring contribution is for %1, every %2 %3(s){/ts}\n{if $installments}{ts 1=$installments} for %1 installments.{/ts}{/if}\n\n{ts 1=$receipt_from_email}If you have questions please contact us at %1.{/ts}\n','\n\n\n \n \n\n\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n \n\n \n \n \n\n \n\n \n \n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},
{/if}\n {ts}Your recurring contribution has been updated as requested:{/ts}\n
{ts 1=$amount 2=$recur_frequency_interval 3=$recur_frequency_unit}Recurring contribution is for %1, every %2 %3(s){/ts}{if $installments}{ts 1=$installments} for %1 installments{/ts}{/if}.
\n\n {ts 1=$receipt_from_email}If you have questions please contact us at %1.{/ts}
\n \n \n \n
\n\n\n\n',1,822,'contribution_recurring_edit',1,0,0,NULL),
- (18,'Contributions - Recurring Updates','{ts}Recurring Contribution Update Notification{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{ts}Your recurring contribution has been updated as requested:{/ts}\n\n{ts 1=$amount 2=$recur_frequency_interval 3=$recur_frequency_unit}Recurring contribution is for %1, every %2 %3(s){/ts}\n{if $installments}{ts 1=$installments} for %1 installments.{/ts}{/if}\n\n{ts 1=$receipt_from_email}If you have questions please contact us at %1.{/ts}\n','\n\n\n \n \n\n\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n \n\n \n \n \n\n \n\n \n \n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},
{/if}\n {ts}Your recurring contribution has been updated as requested:{/ts}\n
{ts 1=$amount 2=$recur_frequency_interval 3=$recur_frequency_unit}Recurring contribution is for %1, every %2 %3(s){/ts}{if $installments}{ts 1=$installments} for %1 installments{/ts}{/if}.
\n\n {ts 1=$receipt_from_email}If you have questions please contact us at %1.{/ts}
\n \n \n \n
\n\n\n\n',1,822,'contribution_recurring_edit',0,1,0,NULL),
+ (17,'Contributions - Recurring Updates','{ts}Recurring Contribution Update Notification{/ts} - {contact.display_name}\n','','\n\n\n \n \n\n\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n \n\n \n \n \n\n \n\n \n \n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},
{/if}\n {ts}Your recurring contribution has been updated as requested:{/ts}\n
{ts 1=$amount 2=$recur_frequency_interval 3=$recur_frequency_unit}Recurring contribution is for %1, every %2 %3(s){/ts}{if $installments}{ts 1=$installments} for %1 installments{/ts}{/if}.
\n\n {ts 1=$receipt_from_email}If you have questions please contact us at %1.{/ts}
\n \n \n \n
\n\n\n\n',1,822,'contribution_recurring_edit',1,0,0,NULL),
+ (18,'Contributions - Recurring Updates','{ts}Recurring Contribution Update Notification{/ts} - {contact.display_name}\n','','\n\n\n \n \n\n\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n \n\n \n \n \n\n \n\n \n \n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},
{/if}\n {ts}Your recurring contribution has been updated as requested:{/ts}\n
{ts 1=$amount 2=$recur_frequency_interval 3=$recur_frequency_unit}Recurring contribution is for %1, every %2 %3(s){/ts}{if $installments}{ts 1=$installments} for %1 installments{/ts}{/if}.
\n\n {ts 1=$receipt_from_email}If you have questions please contact us at %1.{/ts}
\n \n \n \n
\n\n\n\n',1,822,'contribution_recurring_edit',0,1,0,NULL),
(19,'Personal Campaign Pages - Admin Notification','{ts}Personal Campaign Page Notification{/ts} - {contact.display_name}\n','','\n\n\n \n \n\n\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n{capture assign=pcpURL}{crmURL p=\"civicrm/pcp/info\" q=\"reset=1&id=`$pcpId`\" h=0 a=1 fe=1}{/capture}\n\n \n\n \n \n \n\n \n\n \n \n \n \n \n {ts}Personal Campaign Page Notification{/ts}\n \n \n \n \n {ts}Action{/ts}:\n \n \n {if $mode EQ \'Update\'}\n {ts}Updated personal campaign page{/ts}\n {else}\n {ts}New personal campaign page{/ts}\n {/if}\n \n \n \n \n {ts}Personal Campaign Page Title{/ts}\n \n \n {$pcpTitle}\n \n \n \n \n {ts}Current Status{/ts}\n \n \n {$pcpStatus}\n \n \n\n \n \n {ts}View Page{/ts} \n \n \n \n \n \n {ts}Supporter{/ts}\n \n \n {$supporterName} \n \n \n \n \n {ts}Linked to Contribution Page{/ts}\n \n \n {$contribPageTitle} \n \n \n \n \n {ts}Manage Personal Campaign Pages{/ts} \n \n \n \n\n
\n \n \n
\n\n\n\n',1,823,'pcp_notify',1,0,0,NULL),
(20,'Personal Campaign Pages - Admin Notification','{ts}Personal Campaign Page Notification{/ts} - {contact.display_name}\n','','\n\n\n \n \n\n\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n{capture assign=pcpURL}{crmURL p=\"civicrm/pcp/info\" q=\"reset=1&id=`$pcpId`\" h=0 a=1 fe=1}{/capture}\n\n \n\n \n \n \n\n \n\n \n \n \n \n \n {ts}Personal Campaign Page Notification{/ts}\n \n \n \n \n {ts}Action{/ts}:\n \n \n {if $mode EQ \'Update\'}\n {ts}Updated personal campaign page{/ts}\n {else}\n {ts}New personal campaign page{/ts}\n {/if}\n \n \n \n \n {ts}Personal Campaign Page Title{/ts}\n \n \n {$pcpTitle}\n \n \n \n \n {ts}Current Status{/ts}\n \n \n {$pcpStatus}\n \n \n\n \n \n {ts}View Page{/ts} \n \n \n \n \n \n {ts}Supporter{/ts}\n \n \n {$supporterName} \n \n \n \n \n {ts}Linked to Contribution Page{/ts}\n \n \n {$contribPageTitle} \n \n \n \n \n {ts}Manage Personal Campaign Pages{/ts} \n \n \n \n\n
\n \n \n
\n\n\n\n',1,823,'pcp_notify',0,1,0,NULL),
(21,'Personal Campaign Pages - Supporter Status Change Notification','{ts 1=$contribPageTitle}Your Personal Campaign Page for %1{/ts} - {contact.display_name}\n','','\n\n\n \n \n\n\n\n \n\n \n \n \n\n \n\n \n \n\n {ts}Your Personal Campaign Page{/ts} \n\n {if $pcpStatus eq \'Approved\'}\n\n {ts}Your personal campaign page has been approved and is now live.{/ts}
\n {ts}Whenever you want to preview, update or promote your page{/ts}:
\n \n {ts}Login to your account{/ts} \n {ts}Go to your page{/ts} \n \n {ts}When you view your campaign page WHILE LOGGED IN, the page includes links to edit your page, tell friends, and update your contact info.{/ts}
\n\n {if $isTellFriendEnabled}\n {ts}After logging in, you can use this form to promote your fundraising page{/ts}
\n {/if}\n\n {if $pcpNotifyEmailAddress}\n {ts}Questions? Send email to{/ts}: {$pcpNotifyEmailAddress}
\n {/if}\n\n {elseif $pcpStatus eq \'Not Approved\'}\n\n {ts}Your personal campaign page has been reviewed. There were some issues with the content which prevented us from approving the page. We are sorry for any inconvenience.{/ts}
\n {if $pcpNotifyEmailAddress}\n {ts}Please contact our site administrator for more information{/ts}: {$pcpNotifyEmailAddress}
\n {/if}\n\n {/if}\n\n \n \n\n
\n\n\n\n',1,824,'pcp_status_change',1,0,0,NULL),
(22,'Personal Campaign Pages - Supporter Status Change Notification','{ts 1=$contribPageTitle}Your Personal Campaign Page for %1{/ts} - {contact.display_name}\n','','\n\n\n \n \n\n\n\n \n\n \n \n \n\n \n\n \n \n\n {ts}Your Personal Campaign Page{/ts} \n\n {if $pcpStatus eq \'Approved\'}\n\n {ts}Your personal campaign page has been approved and is now live.{/ts}
\n {ts}Whenever you want to preview, update or promote your page{/ts}:
\n \n {ts}Login to your account{/ts} \n {ts}Go to your page{/ts} \n \n {ts}When you view your campaign page WHILE LOGGED IN, the page includes links to edit your page, tell friends, and update your contact info.{/ts}
\n\n {if $isTellFriendEnabled}\n {ts}After logging in, you can use this form to promote your fundraising page{/ts}
\n {/if}\n\n {if $pcpNotifyEmailAddress}\n {ts}Questions? Send email to{/ts}: {$pcpNotifyEmailAddress}
\n {/if}\n\n {elseif $pcpStatus eq \'Not Approved\'}\n\n {ts}Your personal campaign page has been reviewed. There were some issues with the content which prevented us from approving the page. We are sorry for any inconvenience.{/ts}
\n {if $pcpNotifyEmailAddress}\n {ts}Please contact our site administrator for more information{/ts}: {$pcpNotifyEmailAddress}
\n {/if}\n\n {/if}\n\n \n \n\n
\n\n\n\n',1,824,'pcp_status_change',0,1,0,NULL),
(23,'Personal Campaign Pages - Supporter Welcome','{ts 1=$contribPageTitle}Your Personal Campaign Page for %1{/ts} - {contact.display_name}\n','','\n\n\n \n \n\n\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n \n\n \n \n \n\n \n\n \n \n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},
{/if}\n {ts 1=\"$contribPageTitle\"}Thanks for creating a personal campaign page in support of %1.{/ts}
\n \n \n\n {if $pcpStatus eq \'Approved\'}\n\n \n \n \n \n \n {ts}Promoting Your Page{/ts}\n \n \n \n \n {if $isTellFriendEnabled}\n {ts}You can begin your fundraising efforts using our \"Tell a Friend\" form{/ts}:
\n \n {ts}Login to your account{/ts} \n {ts}Click this link and follow the prompts{/ts} \n \n {else}\n {ts}Send email to family, friends and colleagues with a personal message about this campaign.{/ts} {ts}Include this link to your fundraising page in your emails{/ts}: {$pcpInfoURL}
\n {/if}\n \n \n \n \n {ts}Managing Your Page{/ts}\n \n \n \n {ts}Whenever you want to preview, update or promote your page{/ts}:
\n \n {ts}Login to your account{/ts} \n {ts}Go to your page{/ts} \n \n {ts}When you view your campaign page WHILE LOGGED IN, the page includes links to edit your page, tell friends, and update your contact info.{/ts}
\n \n \n \n
\n \n \n\n {elseif $pcpStatus EQ \'Waiting Review\'}\n\n \n \n {ts}Your page requires administrator review before you can begin your fundraising efforts.{/ts}
\n {ts}A notification email has been sent to the site administrator, and you will receive another notification from them as soon as the review process is complete.{/ts}
\n {ts}You can still preview your page prior to approval{/ts}:
\n \n {ts}Login to your account{/ts} \n {ts}Click this link{/ts} \n \n \n \n\n {/if}\n\n {if $pcpNotifyEmailAddress}\n \n \n {ts}Questions? Send email to{/ts}: {$pcpNotifyEmailAddress}
\n \n \n {/if}\n\n
\n\n\n\n',1,825,'pcp_supporter_notify',1,0,0,NULL),
(24,'Personal Campaign Pages - Supporter Welcome','{ts 1=$contribPageTitle}Your Personal Campaign Page for %1{/ts} - {contact.display_name}\n','','\n\n\n \n \n\n\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n \n\n \n \n \n\n \n\n \n \n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},
{/if}\n {ts 1=\"$contribPageTitle\"}Thanks for creating a personal campaign page in support of %1.{/ts}
\n \n \n\n {if $pcpStatus eq \'Approved\'}\n\n \n \n \n \n \n {ts}Promoting Your Page{/ts}\n \n \n \n \n {if $isTellFriendEnabled}\n {ts}You can begin your fundraising efforts using our \"Tell a Friend\" form{/ts}:
\n \n {ts}Login to your account{/ts} \n {ts}Click this link and follow the prompts{/ts} \n \n {else}\n {ts}Send email to family, friends and colleagues with a personal message about this campaign.{/ts} {ts}Include this link to your fundraising page in your emails{/ts}: {$pcpInfoURL}
\n {/if}\n \n \n \n \n {ts}Managing Your Page{/ts}\n \n \n \n {ts}Whenever you want to preview, update or promote your page{/ts}:
\n \n {ts}Login to your account{/ts} \n {ts}Go to your page{/ts} \n \n {ts}When you view your campaign page WHILE LOGGED IN, the page includes links to edit your page, tell friends, and update your contact info.{/ts}
\n \n \n \n
\n \n \n\n {elseif $pcpStatus EQ \'Waiting Review\'}\n\n \n \n {ts}Your page requires administrator review before you can begin your fundraising efforts.{/ts}
\n {ts}A notification email has been sent to the site administrator, and you will receive another notification from them as soon as the review process is complete.{/ts}
\n {ts}You can still preview your page prior to approval{/ts}:
\n \n {ts}Login to your account{/ts} \n {ts}Click this link{/ts} \n \n \n \n\n {/if}\n\n {if $pcpNotifyEmailAddress}\n \n \n {ts}Questions? Send email to{/ts}: {$pcpNotifyEmailAddress}
\n \n \n {/if}\n\n
\n\n\n\n',1,825,'pcp_supporter_notify',0,1,0,NULL),
- (25,'Personal Campaign Pages - Owner Notification','{ts}Someone has just donated to your personal campaign page{/ts} - {contact.display_name}\n','===========================================================\n{ts}Personal Campaign Page Owner Notification{/ts}\n\n===========================================================\n{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{ts}You have received a donation at your personal page{/ts}: {$page_title}\n>> {$pcpInfoURL}\n\n{ts}Your fundraising total has been updated.{/ts}\n{ts}The donor\'s information is listed below. You can choose to contact them and convey your thanks if you wish.{/ts}\n{if $is_honor_roll_enabled}\n {ts}The donor\'s name has been added to your honor roll unless they asked not to be included.{/ts}\n{/if}\n\n{ts}Contribution Date{/ts}: {$receive_date|crmDate}\n\n{ts}Amount{/ts}: {$total_amount|crmMoney:$currency}\n\n{ts}Name{/ts}: {$donors_display_name}\n\n{ts}Email{/ts}: {$donors_email}\n','\n\n\n \n \n\n\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},
{/if}\n {ts}You have received a donation at your personal page{/ts}: {$page_title}
\n {ts}Your fundraising total has been updated.{/ts} \n {ts}The donor\'s information is listed below. You can choose to contact them and convey your thanks if you wish.{/ts} \n {if $is_honor_roll_enabled}\n {ts}The donor\'s name has been added to your honor roll unless they asked not to be included.{/ts} \n {/if}\n
\n \n {ts}Contribution Date{/ts}: {$receive_date|crmDate} \n {ts}Amount{/ts}: {$total_amount|crmMoney:$currency} \n {ts}Name{/ts}: {$donors_display_name} \n {ts}Email{/ts}: {$donors_email} \n
\n\n\n',1,826,'pcp_owner_notify',1,0,0,NULL),
- (26,'Personal Campaign Pages - Owner Notification','{ts}Someone has just donated to your personal campaign page{/ts} - {contact.display_name}\n','===========================================================\n{ts}Personal Campaign Page Owner Notification{/ts}\n\n===========================================================\n{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{ts}You have received a donation at your personal page{/ts}: {$page_title}\n>> {$pcpInfoURL}\n\n{ts}Your fundraising total has been updated.{/ts}\n{ts}The donor\'s information is listed below. You can choose to contact them and convey your thanks if you wish.{/ts}\n{if $is_honor_roll_enabled}\n {ts}The donor\'s name has been added to your honor roll unless they asked not to be included.{/ts}\n{/if}\n\n{ts}Contribution Date{/ts}: {$receive_date|crmDate}\n\n{ts}Amount{/ts}: {$total_amount|crmMoney:$currency}\n\n{ts}Name{/ts}: {$donors_display_name}\n\n{ts}Email{/ts}: {$donors_email}\n','\n\n\n \n \n\n\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},
{/if}\n {ts}You have received a donation at your personal page{/ts}: {$page_title}
\n {ts}Your fundraising total has been updated.{/ts} \n {ts}The donor\'s information is listed below. You can choose to contact them and convey your thanks if you wish.{/ts} \n {if $is_honor_roll_enabled}\n {ts}The donor\'s name has been added to your honor roll unless they asked not to be included.{/ts} \n {/if}\n
\n \n {ts}Contribution Date{/ts}: {$receive_date|crmDate} \n {ts}Amount{/ts}: {$total_amount|crmMoney:$currency} \n {ts}Name{/ts}: {$donors_display_name} \n {ts}Email{/ts}: {$donors_email} \n
\n\n\n',1,826,'pcp_owner_notify',0,1,0,NULL),
+ (25,'Personal Campaign Pages - Owner Notification','{ts}Someone has just donated to your personal campaign page{/ts} - {contact.display_name}\n','','\n\n\n \n \n\n\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},
{/if}\n {ts}You have received a donation at your personal page{/ts}: {$page_title}
\n {ts}Your fundraising total has been updated.{/ts} \n {ts}The donor\'s information is listed below. You can choose to contact them and convey your thanks if you wish.{/ts} \n {if $is_honor_roll_enabled}\n {ts}The donor\'s name has been added to your honor roll unless they asked not to be included.{/ts} \n {/if}\n
\n \n {ts}Contribution Date{/ts}: {$receive_date|crmDate} \n {ts}Amount{/ts}: {$total_amount|crmMoney:$currency} \n {ts}Name{/ts}: {$donors_display_name} \n {ts}Email{/ts}: {$donors_email} \n
\n\n\n',1,826,'pcp_owner_notify',1,0,0,NULL),
+ (26,'Personal Campaign Pages - Owner Notification','{ts}Someone has just donated to your personal campaign page{/ts} - {contact.display_name}\n','','\n\n\n \n \n\n\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},
{/if}\n {ts}You have received a donation at your personal page{/ts}: {$page_title}
\n {ts}Your fundraising total has been updated.{/ts} \n {ts}The donor\'s information is listed below. You can choose to contact them and convey your thanks if you wish.{/ts} \n {if $is_honor_roll_enabled}\n {ts}The donor\'s name has been added to your honor roll unless they asked not to be included.{/ts} \n {/if}\n
\n \n {ts}Contribution Date{/ts}: {$receive_date|crmDate} \n {ts}Amount{/ts}: {$total_amount|crmMoney:$currency} \n {ts}Name{/ts}: {$donors_display_name} \n {ts}Email{/ts}: {$donors_email} \n
\n\n\n',1,826,'pcp_owner_notify',0,1,0,NULL),
(27,'Additional Payment Receipt or Refund Notification','{if {financial_trxn.total_amount|raw} < 0}{ts}Refund Notification{/ts}{else}{ts}Payment Receipt{/ts}{/if}{if {event.title|boolean}} - {event.title}{/if} - {contact.display_name}\n','','\n\n\n \n \n\n\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n{capture assign=emptyBlockStyle}style=\"padding: 10px; border-bottom: 1px solid #999;background-color: #f7f7f7;\"{/capture}\n{capture assign=emptyBlockValueStyle}style=\"padding: 10px; border-bottom: 1px solid #999;\"{/capture}\n\n \n\n \n \n \n\n \n \n \n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},
{/if}\n {if {financial_trxn.total_amount|raw} < 0}\n {ts}A refund has been issued based on changes in your registration selections.{/ts}
\n {else}\n {ts}Below you will find a receipt for this payment.{/ts}
\n {if !{contribution.balance_amount|boolean}}\n {ts}Thank you for completing this contribution.{/ts}
\n {/if}\n {/if}\n \n \n \n \n \n {if {financial_trxn.total_amount|raw} < 0}\n \n {ts}Refund Details{/ts} \n \n \n \n {ts}This Refund Amount{/ts}\n \n \n {financial_trxn.total_amount}\n \n \n {else}\n \n {ts}Payment Details{/ts} \n \n \n \n {ts}This Payment Amount{/ts}\n \n \n {financial_trxn.total_amount}\n \n \n {/if}\n {if {financial_trxn.trxn_date|boolean}}\n \n \n {ts}Transaction Date{/ts}\n \n \n {financial_trxn.trxn_date}\n \n \n {/if}\n {if {financial_trxn.trxn_id|boolean}}\n \n \n {ts}Transaction #{/ts}\n \n \n {financial_trxn.trxn_id}\n \n \n {/if}\n {if {financial_trxn.payment_instrument_id|boolean}}\n \n \n {ts}Paid By{/ts}\n \n \n {financial_trxn.payment_instrument_id:label}\n \n \n {/if}\n {if {financial_trxn.check_number|boolean}}\n \n \n {ts}Check Number{/ts}\n \n \n {financial_trxn.check_number}\n \n \n {/if}\n\n \n {ts}Contribution Details{/ts} \n \n {if {contribution.total_amount|boolean}}\n \n \n {ts}Total Fee{/ts}\n \n \n {contribution.total_amount}\n \n \n {/if}\n {if {contribution.paid_amount|boolean}}\n \n \n {ts}Total Paid{/ts}\n \n \n {contribution.paid_amount}\n \n \n {/if}\n {if {contribution.balance_amount|boolean}}\n \n \n {ts}Balance Owed{/ts}\n \n \n {contribution.balance_amount}\n \n \n {/if}\n
\n\n \n \n \n \n \n {if {contribution.address_id.display|boolean}}\n \n \n {ts}Billing Name and Address{/ts}\n \n \n \n \n {contribution.address_id.name} \n {contribution.address_id.display}\n \n \n {/if}\n {if {financial_trxn.pan_truncation|boolean}}\n \n \n {ts}Credit Card Information{/ts}\n \n \n \n \n {financial_trxn.card_type_id:label} \n ************{financial_trxn.pan_truncation} \n \n \n {/if}\n {if {event.id|boolean}}\n \n \n {ts}Event Information and Location{/ts}\n \n \n \n \n {event.event_title} \n {event.start_date|crmDate}{if {event.end_date|boolean}}-{if \'{event.end_date|crmDate:\"%Y%m%d\"}\' === \'{event.start_date|crmDate:\"%Y%m%d\"}\'}{event.end_date|crmDate:\"Time\"}{else}{event.end_date}{/if}{/if}\n \n \n\n {if {participant.role_id|boolean}}\n \n \n {ts}Participant Role{/ts}\n \n \n {participant.role_id:label}\n \n \n {/if}\n\n {if {event.is_show_location|boolean}}\n \n \n {event.location}\n \n \n {/if}\n {if {event.loc_block_id.phone_id.phone|boolean} || {event.loc_block_id.email_id.email|boolean}}\n \n \n {ts}Event Contacts:{/ts}\n \n \n\n {if {event.loc_block_id.phone_id.phone|boolean}}\n \n \n {if {event.loc_block_id.phone_id.phone_type_id|boolean}}\n {event.loc_block_id.phone_id.phone_type_id:label}\n {else}\n {ts}Phone{/ts}\n {/if}\n \n \n {event.loc_block_id.phone_id.phone} {if {event.loc_block_id.phone_id.phone_ext|boolean}} {ts}ext.{/ts} {event.loc_block_id.phone_id.phone_ext}{/if}\n \n \n {/if}\n {if {event.loc_block_id.phone_2_id.phone|boolean}}\n \n \n {if {event.loc_block_id.phone_2_id.phone_type_id|boolean}}\n {event.loc_block_id.phone_2_id.phone_type_id:label}\n {else}\n {ts}Phone{/ts}\n {/if}\n \n \n {event.loc_block_id.phone_2_id.phone} {if {event.loc_block_id.phone_2_id.phone_ext|boolean}} {ts}ext.{/ts} {event.loc_block_id.phone_2_id.phone_ext}{/if}\n \n \n {/if}\n\n {if {event.loc_block_id.email_id.email|boolean}}\n \n \n {ts}Email{/ts}\n \n \n {event.loc_block_id.email_id.email}\n \n \n {/if}\n\n {if {event.loc_block_id.email_2_id.email|boolean}}\n \n \n {ts}Email{/ts}\n \n \n {event.loc_block_id.email_2_id.email}\n \n \n {/if}\n {/if}\n\n {/if}\n
\n \n \n
\n \n\n',1,827,'payment_or_refund_notification',1,0,0,NULL),
(28,'Additional Payment Receipt or Refund Notification','{if {financial_trxn.total_amount|raw} < 0}{ts}Refund Notification{/ts}{else}{ts}Payment Receipt{/ts}{/if}{if {event.title|boolean}} - {event.title}{/if} - {contact.display_name}\n','','\n\n\n \n \n\n\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n{capture assign=emptyBlockStyle}style=\"padding: 10px; border-bottom: 1px solid #999;background-color: #f7f7f7;\"{/capture}\n{capture assign=emptyBlockValueStyle}style=\"padding: 10px; border-bottom: 1px solid #999;\"{/capture}\n\n \n\n \n \n \n\n \n \n \n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},
{/if}\n {if {financial_trxn.total_amount|raw} < 0}\n {ts}A refund has been issued based on changes in your registration selections.{/ts}
\n {else}\n {ts}Below you will find a receipt for this payment.{/ts}
\n {if !{contribution.balance_amount|boolean}}\n {ts}Thank you for completing this contribution.{/ts}
\n {/if}\n {/if}\n \n \n \n \n \n {if {financial_trxn.total_amount|raw} < 0}\n \n {ts}Refund Details{/ts} \n \n \n \n {ts}This Refund Amount{/ts}\n \n \n {financial_trxn.total_amount}\n \n \n {else}\n \n {ts}Payment Details{/ts} \n \n \n \n {ts}This Payment Amount{/ts}\n \n \n {financial_trxn.total_amount}\n \n \n {/if}\n {if {financial_trxn.trxn_date|boolean}}\n \n \n {ts}Transaction Date{/ts}\n \n \n {financial_trxn.trxn_date}\n \n \n {/if}\n {if {financial_trxn.trxn_id|boolean}}\n \n \n {ts}Transaction #{/ts}\n \n \n {financial_trxn.trxn_id}\n \n \n {/if}\n {if {financial_trxn.payment_instrument_id|boolean}}\n \n \n {ts}Paid By{/ts}\n \n \n {financial_trxn.payment_instrument_id:label}\n \n \n {/if}\n {if {financial_trxn.check_number|boolean}}\n \n \n {ts}Check Number{/ts}\n \n \n {financial_trxn.check_number}\n \n \n {/if}\n\n \n {ts}Contribution Details{/ts} \n \n {if {contribution.total_amount|boolean}}\n \n \n {ts}Total Fee{/ts}\n \n \n {contribution.total_amount}\n \n \n {/if}\n {if {contribution.paid_amount|boolean}}\n \n \n {ts}Total Paid{/ts}\n \n \n {contribution.paid_amount}\n \n \n {/if}\n {if {contribution.balance_amount|boolean}}\n \n \n {ts}Balance Owed{/ts}\n \n \n {contribution.balance_amount}\n \n \n {/if}\n
\n\n \n \n \n \n \n {if {contribution.address_id.display|boolean}}\n \n \n {ts}Billing Name and Address{/ts}\n \n \n \n \n {contribution.address_id.name} \n {contribution.address_id.display}\n \n \n {/if}\n {if {financial_trxn.pan_truncation|boolean}}\n \n \n {ts}Credit Card Information{/ts}\n \n \n \n \n {financial_trxn.card_type_id:label} \n ************{financial_trxn.pan_truncation} \n \n \n {/if}\n {if {event.id|boolean}}\n \n \n {ts}Event Information and Location{/ts}\n \n \n \n \n {event.event_title} \n {event.start_date|crmDate}{if {event.end_date|boolean}}-{if \'{event.end_date|crmDate:\"%Y%m%d\"}\' === \'{event.start_date|crmDate:\"%Y%m%d\"}\'}{event.end_date|crmDate:\"Time\"}{else}{event.end_date}{/if}{/if}\n \n \n\n {if {participant.role_id|boolean}}\n \n \n {ts}Participant Role{/ts}\n \n \n {participant.role_id:label}\n \n \n {/if}\n\n {if {event.is_show_location|boolean}}\n \n \n {event.location}\n \n \n {/if}\n {if {event.loc_block_id.phone_id.phone|boolean} || {event.loc_block_id.email_id.email|boolean}}\n \n \n {ts}Event Contacts:{/ts}\n \n \n\n {if {event.loc_block_id.phone_id.phone|boolean}}\n \n \n {if {event.loc_block_id.phone_id.phone_type_id|boolean}}\n {event.loc_block_id.phone_id.phone_type_id:label}\n {else}\n {ts}Phone{/ts}\n {/if}\n \n \n {event.loc_block_id.phone_id.phone} {if {event.loc_block_id.phone_id.phone_ext|boolean}} {ts}ext.{/ts} {event.loc_block_id.phone_id.phone_ext}{/if}\n \n \n {/if}\n {if {event.loc_block_id.phone_2_id.phone|boolean}}\n \n \n {if {event.loc_block_id.phone_2_id.phone_type_id|boolean}}\n {event.loc_block_id.phone_2_id.phone_type_id:label}\n {else}\n {ts}Phone{/ts}\n {/if}\n \n \n {event.loc_block_id.phone_2_id.phone} {if {event.loc_block_id.phone_2_id.phone_ext|boolean}} {ts}ext.{/ts} {event.loc_block_id.phone_2_id.phone_ext}{/if}\n \n \n {/if}\n\n {if {event.loc_block_id.email_id.email|boolean}}\n \n \n {ts}Email{/ts}\n \n \n {event.loc_block_id.email_id.email}\n \n \n {/if}\n\n {if {event.loc_block_id.email_2_id.email|boolean}}\n \n \n {ts}Email{/ts}\n \n \n {event.loc_block_id.email_2_id.email}\n \n \n {/if}\n {/if}\n\n {/if}\n
\n \n \n
\n \n\n',1,827,'payment_or_refund_notification',0,1,0,NULL),
(29,'Events - Registration Confirmation and Receipt (off-line)','{ts}Event Confirmation{/ts} - {event.title} - {contact.display_name}\n','','\n\n\n \n \n\n\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n{capture assign=tdfirstStyle}style=\"width: 180px; padding-bottom: 15px;\"{/capture}\n{capture assign=tdStyle}style=\"width: 100px;\"{/capture}\n{capture assign=participantTotalStyle}style=\"margin: 0.5em 0 0.5em;padding: 0.5em;background-color: #999999;font-weight: bold;color: #FAFAFA;border-radius: 2px;\"{/capture}\n\n\n\n \n \n \n\n \n\n \n \n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},
{/if}\n\n {if $userText}\n {$userText}
\n {/if}\n\n {if !empty($isOnWaitlist)}\n {ts}You have been added to the WAIT LIST for this event.{/ts}
\n {ts}If space becomes available you will receive an email with a link to a web page where you can complete your registration.{/ts}
\n {elseif !empty($isRequireApproval)}\n {ts}Your registration has been submitted.{/ts}
\n {ts}Once your registration has been reviewed, you will receive an email with a link to a web page where you can complete the registration process.{/ts}
\n {elseif {contribution.is_pay_later|boolean} && {contribution.balance_amount|boolean}}\n {event.pay_later_receipt}
{* FIXME: this might be text rather than HTML *}\n {/if}\n\n \n \n \n \n \n \n \n {ts}Event Information and Location{/ts}\n \n \n \n \n {event.title} \n {event.start_date|crmDate}{if {event.end_date|boolean}}-{if \'{event.end_date|crmDate:\"%Y%m%d\"}\' === \'{event.start_date|crmDate:\"%Y%m%d\"}\'}{event.end_date|crmDate:\"Time\"}{else}{event.end_date}{/if}{/if}\n \n \n\n {if \"{participant.role_id:label}\" neq \'Attendee\'}\n \n \n {ts}Participant Role{/ts}\n \n \n {participant.role_id:label}\n \n \n {/if}\n\n {if {event.is_show_location|boolean}}\n \n \n {event.location}\n \n \n {/if}\n\n {if {event.loc_block_id.phone_id.phone|boolean} || {event.loc_block_id.email_id.email|boolean}}\n \n \n {ts}Event Contacts:{/ts}\n \n \n\n {if {event.loc_block_id.phone_id.phone|boolean}}\n \n \n {if {event.loc_block_id.phone_id.phone_type_id|boolean}}\n {event.loc_block_id.phone_id.phone_type_id:label}\n {else}\n {ts}Phone{/ts}\n {/if}\n \n \n {event.loc_block_id.phone_id.phone} {if {event.loc_block_id.phone_id.phone_ext|boolean}} {ts}ext.{/ts} {event.loc_block_id.phone_id.phone_ext}{/if}\n \n \n {/if}\n {if {event.loc_block_id.phone_2_id.phone|boolean}}\n \n \n {if {event.loc_block_id.phone_2_id.phone_type_id|boolean}}\n {event.loc_block_id.phone_2_id.phone_type_id:label}\n {else}\n {ts}Phone{/ts}\n {/if}\n \n \n {event.loc_block_id.phone_2_id.phone} {if {event.loc_block_id.phone_2_id.phone_ext|boolean}} {ts}ext.{/ts} {event.loc_block_id.phone_2_id.phone_ext}{/if}\n \n \n {/if}\n\n {if {event.loc_block_id.email_id.email|boolean}}\n \n \n {ts}Email{/ts}\n \n \n {event.loc_block_id.email_id.email}\n \n \n {/if}\n\n {if {event.loc_block_id.email_2_id.email|boolean}}\n \n \n {ts}Email{/ts}\n \n \n {event.loc_block_id.email_2_id.email}\n \n \n {/if}\n {/if}\n\n {if {event.is_public|boolean} and {event.is_show_calendar_links|boolean}}\n \n \n {capture assign=icalFeed}{crmURL p=\'civicrm/event/ical\' q=\"reset=1&id={event.id}\" h=0 a=1 fe=1}{/capture}\n {ts}Download iCalendar entry for this event.{/ts} \n \n \n \n \n {capture assign=gCalendar}{crmURL p=\'civicrm/event/ical\' q=\"gCalendar=1&reset=1&id={event.id}\" h=0 a=1 fe=1}{/capture}\n {ts}Add event to Google Calendar{/ts} \n \n \n {/if}\n\n {if {contact.email_primary.email|boolean}}\n \n \n {ts}Registered Email{/ts}\n \n \n \n \n {contact.email_primary.email}\n \n \n {/if}\n\n\n {if {event.is_monetary|boolean}}\n \n \n {event.fee_label}\n \n \n {if $isShowLineItems}\n {foreach from=$participants key=index item=currentParticipant}\n {if $isPrimary || {participant.id} === $currentParticipant.id}\n {if $isPrimary && ($participants|@count > 1)} {* Header for multi participant registration cases. *}\n \n \n {$currentParticipant.contact.display_name}\n \n \n {/if}\n \n \n \n \n {ts}Item{/ts} \n {ts}Qty{/ts} \n {ts}Each{/ts} \n {if $isShowTax && {contribution.tax_amount|boolean}}\n {ts}Subtotal{/ts} \n {ts}Tax Rate{/ts} \n {ts}Tax Amount{/ts} \n {/if}\n {ts}Total{/ts} \n {if $isShowParticipantCount}\n {ts}Total Participants{/ts} \n {/if}\n \n {foreach from=$currentParticipant.line_items item=line}\n \n {$line.title} \n {$line.qty} \n {$line.unit_price|crmMoney:$currency} \n {if $isShowTax && {contribution.tax_amount|boolean}}\n {$line.line_total|crmMoney:$currency} \n {if $line.tax_rate || $line.tax_amount != \"\"}\n {$line.tax_rate|string_format:\"%.2f\"}% \n {$line.tax_amount|crmMoney:$currency} \n {else}\n \n \n {/if}\n {/if}\n \n {$line.line_total_inclusive|crmMoney:$currency}\n \n {if $isShowParticipantCount}\n {$line.participant_count} \n {/if}\n \n {/foreach}\n {if $isShowTax && $isPrimary && ($participants|@count > 1)}\n \n {ts 1=$currentParticipant.contact.display_name}Total for %1{/ts} \n {$currentParticipant.totals.total_amount_exclusive|crmMoney} \n {$currentParticipant.totals.tax_amount|crmMoney} \n {$currentParticipant.totals.total_amount_inclusive|crmMoney} \n \n {/if}\n
\n \n \n {/if}\n {/foreach}\n {/if}\n {if !$isShowLineItems}\n {foreach from=$participants key=index item=currentParticipant}\n {if $isPrimary || {participant.id} === $currentParticipant.id}\n {foreach from=$currentParticipant.line_items key=index item=currentLineItem}\n \n \n {$currentLineItem.label}{if $isPrimary && ($participants|@count > 1)} - {$currentParticipant.contact.display_name}{/if}\n \n \n {$currentLineItem.line_total|crmMoney:$currency}\n \n \n {/foreach}\n {/if}\n {/foreach}\n {/if}\n {if $isShowTax && {contribution.tax_amount|boolean}}\n \n \n {ts}Amount Before Tax:{/ts}\n \n \n {if $isPrimary}{contribution.tax_exclusive_amount}{else}{$participant.totals.total_amount_exclusive|crmMoney}{/if}\n \n \n {if !$isPrimary}\n {* Use the participant specific tax rate breakdown *}\n {assign var=taxRateBreakdown value=$participant.tax_rate_breakdown}\n {/if}\n {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n \n {if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else}{$taxTerm} {$taxDetail.percentage}%{/if} \n {$taxDetail.amount|crmMoney:\'{contribution.currency}\'} \n \n {/foreach}\n {/if}\n {if $isShowTax && {contribution.tax_amount|boolean}}\n \n \n {ts}Total Tax Amount{/ts}\n \n \n {if $isPrimary}{contribution.tax_amount}{else}{$participant.totals.tax_amount|crmMoney}{/if}\n \n \n {/if}\n {if $isPrimary}\n \n \n {ts}Total Amount{/ts}\n \n \n {contribution.total_amount}\n \n \n {if {contribution.balance_amount|boolean} && {contribution.paid_amount|boolean}}\n \n {ts}Total Paid{/ts} \n \n {contribution.paid_amount|crmMoney}\n \n \n \n {ts}Balance{/ts} \n {contribution.balance_amount} \n \n {/if}\n {if $isShowParticipantCount}\n \n {ts}Total Participants{/ts} \n {$line.participant_count} \n \n {/if}\n {if {contribution.is_pay_later|boolean} && {contribution.balance_amount|boolean} && {event.pay_later_receipt|boolean}}\n \n \n {event.pay_later_receipt}\n \n \n {/if}\n\n {if {participant.register_date|boolean}}\n \n \n {ts}Registration Date{/ts}\n \n \n {participant.register_date}\n \n \n {/if}\n\n {if {contribution.receive_date|boolean}}\n \n \n {ts}Transaction Date{/ts}\n \n \n {contribution.receive_date}\n \n \n {/if}\n\n {if {contribution.financial_type_id|boolean}}\n \n \n {ts}Financial Type{/ts}\n \n \n {contribution.financial_type_id:label}\n \n \n {/if}\n\n {if {contribution.trxn_id|boolean}}\n \n \n {ts}Transaction #{/ts}\n \n \n {contribution.trxn_id}\n \n \n {/if}\n\n {if {contribution.payment_instrument_id|boolean} && {contribution.paid_amount|boolean}}\n \n \n {ts}Paid By{/ts}\n \n \n {contribution.payment_instrument_id:label}\n \n \n {/if}\n\n {if {contribution.check_number|boolean}}\n \n \n {ts}Check Number{/ts}\n \n \n {contribution.check_number}\n \n \n {/if}\n\n {if {contribution.address_id.display|boolean}}\n \n \n {ts}Billing Name and Address{/ts}\n \n \n \n \n {contribution.address_id.name} \n {contribution.address_id.display}\n \n \n {/if}\n\n {if !empty($credit_card_type)}\n \n \n {ts}Credit Card Information{/ts}\n \n \n \n \n {$credit_card_type} \n {$credit_card_number} \n \n \n {/if}\n {/if}\n {/if} {* End of conditional section for Paid events *}\n\n {if !empty($customGroup)}\n {foreach from=$customGroup item=value key=customName}\n \n \n {$customName}\n \n \n {foreach from=$value item=v key=n}\n \n \n {$n}\n \n \n {$v}\n \n \n {/foreach}\n {/foreach}\n {/if}\n\n
\n \n \n\n
\n\n\n\n',1,828,'event_offline_receipt',1,0,0,NULL),
(30,'Events - Registration Confirmation and Receipt (off-line)','{ts}Event Confirmation{/ts} - {event.title} - {contact.display_name}\n','','\n\n\n \n \n\n\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n{capture assign=tdfirstStyle}style=\"width: 180px; padding-bottom: 15px;\"{/capture}\n{capture assign=tdStyle}style=\"width: 100px;\"{/capture}\n{capture assign=participantTotalStyle}style=\"margin: 0.5em 0 0.5em;padding: 0.5em;background-color: #999999;font-weight: bold;color: #FAFAFA;border-radius: 2px;\"{/capture}\n\n\n\n \n \n \n\n \n\n \n \n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},
{/if}\n\n {if $userText}\n {$userText}
\n {/if}\n\n {if !empty($isOnWaitlist)}\n {ts}You have been added to the WAIT LIST for this event.{/ts}
\n {ts}If space becomes available you will receive an email with a link to a web page where you can complete your registration.{/ts}
\n {elseif !empty($isRequireApproval)}\n {ts}Your registration has been submitted.{/ts}
\n {ts}Once your registration has been reviewed, you will receive an email with a link to a web page where you can complete the registration process.{/ts}
\n {elseif {contribution.is_pay_later|boolean} && {contribution.balance_amount|boolean}}\n {event.pay_later_receipt}
{* FIXME: this might be text rather than HTML *}\n {/if}\n\n \n \n \n \n \n \n \n {ts}Event Information and Location{/ts}\n \n \n \n \n {event.title} \n {event.start_date|crmDate}{if {event.end_date|boolean}}-{if \'{event.end_date|crmDate:\"%Y%m%d\"}\' === \'{event.start_date|crmDate:\"%Y%m%d\"}\'}{event.end_date|crmDate:\"Time\"}{else}{event.end_date}{/if}{/if}\n \n \n\n {if \"{participant.role_id:label}\" neq \'Attendee\'}\n \n \n {ts}Participant Role{/ts}\n \n \n {participant.role_id:label}\n \n \n {/if}\n\n {if {event.is_show_location|boolean}}\n \n \n {event.location}\n \n \n {/if}\n\n {if {event.loc_block_id.phone_id.phone|boolean} || {event.loc_block_id.email_id.email|boolean}}\n \n \n {ts}Event Contacts:{/ts}\n \n \n\n {if {event.loc_block_id.phone_id.phone|boolean}}\n \n \n {if {event.loc_block_id.phone_id.phone_type_id|boolean}}\n {event.loc_block_id.phone_id.phone_type_id:label}\n {else}\n {ts}Phone{/ts}\n {/if}\n \n \n {event.loc_block_id.phone_id.phone} {if {event.loc_block_id.phone_id.phone_ext|boolean}} {ts}ext.{/ts} {event.loc_block_id.phone_id.phone_ext}{/if}\n \n \n {/if}\n {if {event.loc_block_id.phone_2_id.phone|boolean}}\n \n \n {if {event.loc_block_id.phone_2_id.phone_type_id|boolean}}\n {event.loc_block_id.phone_2_id.phone_type_id:label}\n {else}\n {ts}Phone{/ts}\n {/if}\n \n \n {event.loc_block_id.phone_2_id.phone} {if {event.loc_block_id.phone_2_id.phone_ext|boolean}} {ts}ext.{/ts} {event.loc_block_id.phone_2_id.phone_ext}{/if}\n \n \n {/if}\n\n {if {event.loc_block_id.email_id.email|boolean}}\n \n \n {ts}Email{/ts}\n \n \n {event.loc_block_id.email_id.email}\n \n \n {/if}\n\n {if {event.loc_block_id.email_2_id.email|boolean}}\n \n \n {ts}Email{/ts}\n \n \n {event.loc_block_id.email_2_id.email}\n \n \n {/if}\n {/if}\n\n {if {event.is_public|boolean} and {event.is_show_calendar_links|boolean}}\n \n \n {capture assign=icalFeed}{crmURL p=\'civicrm/event/ical\' q=\"reset=1&id={event.id}\" h=0 a=1 fe=1}{/capture}\n {ts}Download iCalendar entry for this event.{/ts} \n \n \n \n \n {capture assign=gCalendar}{crmURL p=\'civicrm/event/ical\' q=\"gCalendar=1&reset=1&id={event.id}\" h=0 a=1 fe=1}{/capture}\n {ts}Add event to Google Calendar{/ts} \n \n \n {/if}\n\n {if {contact.email_primary.email|boolean}}\n \n \n {ts}Registered Email{/ts}\n \n \n \n \n {contact.email_primary.email}\n \n \n {/if}\n\n\n {if {event.is_monetary|boolean}}\n \n \n {event.fee_label}\n \n \n {if $isShowLineItems}\n {foreach from=$participants key=index item=currentParticipant}\n {if $isPrimary || {participant.id} === $currentParticipant.id}\n {if $isPrimary && ($participants|@count > 1)} {* Header for multi participant registration cases. *}\n \n \n {$currentParticipant.contact.display_name}\n \n \n {/if}\n \n \n \n \n {ts}Item{/ts} \n {ts}Qty{/ts} \n {ts}Each{/ts} \n {if $isShowTax && {contribution.tax_amount|boolean}}\n {ts}Subtotal{/ts} \n {ts}Tax Rate{/ts} \n {ts}Tax Amount{/ts} \n {/if}\n {ts}Total{/ts} \n {if $isShowParticipantCount}\n {ts}Total Participants{/ts} \n {/if}\n \n {foreach from=$currentParticipant.line_items item=line}\n \n {$line.title} \n {$line.qty} \n {$line.unit_price|crmMoney:$currency} \n {if $isShowTax && {contribution.tax_amount|boolean}}\n {$line.line_total|crmMoney:$currency} \n {if $line.tax_rate || $line.tax_amount != \"\"}\n {$line.tax_rate|string_format:\"%.2f\"}% \n {$line.tax_amount|crmMoney:$currency} \n {else}\n \n \n {/if}\n {/if}\n \n {$line.line_total_inclusive|crmMoney:$currency}\n \n {if $isShowParticipantCount}\n {$line.participant_count} \n {/if}\n \n {/foreach}\n {if $isShowTax && $isPrimary && ($participants|@count > 1)}\n \n {ts 1=$currentParticipant.contact.display_name}Total for %1{/ts} \n {$currentParticipant.totals.total_amount_exclusive|crmMoney} \n {$currentParticipant.totals.tax_amount|crmMoney} \n {$currentParticipant.totals.total_amount_inclusive|crmMoney} \n \n {/if}\n
\n \n \n {/if}\n {/foreach}\n {/if}\n {if !$isShowLineItems}\n {foreach from=$participants key=index item=currentParticipant}\n {if $isPrimary || {participant.id} === $currentParticipant.id}\n {foreach from=$currentParticipant.line_items key=index item=currentLineItem}\n \n \n {$currentLineItem.label}{if $isPrimary && ($participants|@count > 1)} - {$currentParticipant.contact.display_name}{/if}\n \n \n {$currentLineItem.line_total|crmMoney:$currency}\n \n \n {/foreach}\n {/if}\n {/foreach}\n {/if}\n {if $isShowTax && {contribution.tax_amount|boolean}}\n \n \n {ts}Amount Before Tax:{/ts}\n \n \n {if $isPrimary}{contribution.tax_exclusive_amount}{else}{$participant.totals.total_amount_exclusive|crmMoney}{/if}\n \n \n {if !$isPrimary}\n {* Use the participant specific tax rate breakdown *}\n {assign var=taxRateBreakdown value=$participant.tax_rate_breakdown}\n {/if}\n {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n \n {if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else}{$taxTerm} {$taxDetail.percentage}%{/if} \n {$taxDetail.amount|crmMoney:\'{contribution.currency}\'} \n \n {/foreach}\n {/if}\n {if $isShowTax && {contribution.tax_amount|boolean}}\n \n \n {ts}Total Tax Amount{/ts}\n \n \n {if $isPrimary}{contribution.tax_amount}{else}{$participant.totals.tax_amount|crmMoney}{/if}\n \n \n {/if}\n {if $isPrimary}\n \n \n {ts}Total Amount{/ts}\n \n \n {contribution.total_amount}\n \n \n {if {contribution.balance_amount|boolean} && {contribution.paid_amount|boolean}}\n \n {ts}Total Paid{/ts} \n \n {contribution.paid_amount|crmMoney}\n \n \n \n {ts}Balance{/ts} \n {contribution.balance_amount} \n \n {/if}\n {if $isShowParticipantCount}\n \n {ts}Total Participants{/ts} \n {$line.participant_count} \n \n {/if}\n {if {contribution.is_pay_later|boolean} && {contribution.balance_amount|boolean} && {event.pay_later_receipt|boolean}}\n \n \n {event.pay_later_receipt}\n \n \n {/if}\n\n {if {participant.register_date|boolean}}\n \n \n {ts}Registration Date{/ts}\n \n \n {participant.register_date}\n \n \n {/if}\n\n {if {contribution.receive_date|boolean}}\n \n \n {ts}Transaction Date{/ts}\n \n \n {contribution.receive_date}\n \n \n {/if}\n\n {if {contribution.financial_type_id|boolean}}\n \n \n {ts}Financial Type{/ts}\n \n \n {contribution.financial_type_id:label}\n \n \n {/if}\n\n {if {contribution.trxn_id|boolean}}\n \n \n {ts}Transaction #{/ts}\n \n \n {contribution.trxn_id}\n \n \n {/if}\n\n {if {contribution.payment_instrument_id|boolean} && {contribution.paid_amount|boolean}}\n \n \n {ts}Paid By{/ts}\n \n \n {contribution.payment_instrument_id:label}\n \n \n {/if}\n\n {if {contribution.check_number|boolean}}\n \n \n {ts}Check Number{/ts}\n \n \n {contribution.check_number}\n \n \n {/if}\n\n {if {contribution.address_id.display|boolean}}\n \n \n {ts}Billing Name and Address{/ts}\n \n \n \n \n {contribution.address_id.name} \n {contribution.address_id.display}\n \n \n {/if}\n\n {if !empty($credit_card_type)}\n \n \n {ts}Credit Card Information{/ts}\n \n \n \n \n {$credit_card_type} \n {$credit_card_number} \n \n \n {/if}\n {/if}\n {/if} {* End of conditional section for Paid events *}\n\n {if !empty($customGroup)}\n {foreach from=$customGroup item=value key=customName}\n \n \n {$customName}\n \n \n {foreach from=$value item=v key=n}\n \n \n {$n}\n \n \n {$v}\n \n \n {/foreach}\n {/foreach}\n {/if}\n\n
\n \n \n\n
\n\n\n\n',1,828,'event_offline_receipt',0,1,0,NULL),
- (31,'Events - Registration Confirmation and Receipt (on-line)','{if !empty($isOnWaitlist)}{ts}Wait List Confirmation{/ts}{elseif !empty($isRequireApproval)}{ts}Registration Request Confirmation{/ts}{else}{ts}Registration Confirmation{/ts}{/if} - {event.title} - {contact.display_name}\n','','\n\n\n \n \n\n\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n{capture assign=tdfirstStyle}style=\"width: 180px; padding-bottom: 15px;\"{/capture}\n{capture assign=tdStyle}style=\"width: 100px;\"{/capture}\n{capture assign=participantTotalStyle}style=\"margin: 0.5em 0 0.5em;padding: 0.5em;background-color: #999999;font-weight: bold;color: #FAFAFA;border-radius: 2px;\"{/capture}\n\n\n\n \n \n \n\n \n \n \n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},
{/if}\n {if {event.confirm_email_text|boolean} AND (empty($isOnWaitlist) AND empty($isRequireApproval))}\n {event.confirm_email_text}
\n {else}\n {ts}Thank you for your registration.{/ts}\n {if $participant_status}{ts 1=$participant_status}This is a confirmation that your registration has been received and your status has been updated to %1 .{/ts}\n {else}\n {if $isOnWaitlist}{ts}This is a confirmation that your registration has been received and your status has been updated towaitlisted .{/ts}\n {else}{ts}This is a confirmation that your registration has been received and your status has been updated to registered.{/ts}\n {/if}\n {/if}\n
\n {/if}\n\n {if !empty($isOnWaitlist)}\n {ts}You have been added to the WAIT LIST for this event.{/ts}
\n {if $isPrimary}\n {ts}If space becomes available you will receive an email with a link to a web page where you can complete your registration.{/ts}
\n {/if}\n {elseif !empty($isRequireApproval)}\n {ts}Your registration has been submitted.{/ts}
\n {if $isPrimary}\n {ts}Once your registration has been reviewed, you will receive an email with a link to a web page where you can complete the registration process.{/ts}
\n {/if}\n {elseif {contribution.is_pay_later|boolean} && {contribution.balance_amount|boolean} && $isPrimary}\n {if {event.pay_later_receipt|boolean}}{event.pay_later_receipt}{/if}
\n {/if}\n \n \n \n \n \n \n \n {ts}Event Information and Location{/ts}\n \n \n \n \n {event.title} \n {event.start_date|crmDate:\"%A\"} {event.start_date|crmDate}{if {event.end_date|boolean}}-{if \'{event.end_date|crmDate:\"%Y%m%d\"}\' === \'{event.start_date|crmDate:\"%Y%m%d\"}\'}{event.end_date|crmDate:\"Time\"}{else}{event.end_date|crmDate:\"%A\"} {event.end_date|crmDate}{/if}{/if}\n \n \n\n {if \"{participant.role_id:label}\" neq \'Attendee\'}\n \n \n {ts}Participant Role{/ts}\n \n \n {participant.role_id:label}\n \n \n {/if}\n\n {if {event.is_show_location|boolean}}\n \n \n {event.location}\n \n \n {/if}\n\n {if {event.loc_block_id.phone_id.phone|boolean} || {event.loc_block_id.email_id.email|boolean}}\n \n \n {ts}Event Contacts:{/ts}\n \n \n\n {if {event.loc_block_id.phone_id.phone|boolean}}\n \n \n {if {event.loc_block_id.phone_id.phone_type_id|boolean}}\n {event.loc_block_id.phone_id.phone_type_id:label}\n {else}\n {ts}Phone{/ts}\n {/if}\n \n \n {event.loc_block_id.phone_id.phone} {if {event.loc_block_id.phone_id.phone_ext|boolean}} {ts}ext.{/ts} {event.loc_block_id.phone_id.phone_ext}{/if}\n \n \n {/if}\n {if {event.loc_block_id.phone_2_id.phone|boolean}}\n \n \n {if {event.loc_block_id.phone_2_id.phone_type_id|boolean}}\n {event.loc_block_id.phone_2_id.phone_type_id:label}\n {else}\n {ts}Phone{/ts}\n {/if}\n \n \n {event.loc_block_id.phone_2_id.phone} {if {event.loc_block_id.phone_2_id.phone_ext|boolean}} {ts}ext.{/ts} {event.loc_block_id.phone_2_id.phone_ext}{/if}\n \n \n {/if}\n {if {event.loc_block_id.email_id.email|boolean}}\n \n \n {ts}Email{/ts}\n \n \n {event.loc_block_id.email_id.email}\n \n \n {/if}\n {if {event.loc_block_id.email_2_id.email|boolean}}\n \n \n {ts}Email{/ts}\n \n \n {event.loc_block_id.email_2_id.email}\n \n \n {/if}\n {/if}\n\n {if {event.is_public|boolean} and {event.is_show_calendar_links|boolean}}\n \n \n {capture assign=icalFeed}{crmURL p=\'civicrm/event/ical\' q=\"reset=1&id={event.id}\" h=0 a=1 fe=1}{/capture}\n {ts}Download iCalendar entry for this event.{/ts} \n \n \n \n \n {capture assign=gCalendar}{crmURL p=\'civicrm/event/ical\' q=\"gCalendar=1&reset=1&id={event.id}\" h=0 a=1 fe=1}{/capture}\n {ts}Add event to Google Calendar{/ts} \n \n \n {/if}\n\n {if {event.is_share|boolean}}\n \n \n {capture assign=eventUrl}{crmURL p=\'civicrm/event/info\' q=\"id={event.id}&reset=1\" a=true fe=1 h=1}{/capture}\n {include file=\"CRM/common/SocialNetwork.tpl\" emailMode=true url=$eventUrl pageURL=$eventUrl title=\'{event.title}\'}\n \n \n {/if}\n {if !empty($payer.name)}\n \n \n {ts}You were registered by:{/ts}\n \n \n \n \n {$payer.name}\n \n \n {/if}\n {if {event.is_monetary|boolean} and empty($isRequireApproval)}\n \n \n {event.fee_label}\n \n \n {if $isShowLineItems}\n {foreach from=$participants key=index item=currentParticipant}\n {if $isPrimary || {participant.id} === $currentParticipant.id}\n {if $isPrimary && ($participants|@count > 1)} {* Header for multi participant registration cases. *}\n \n \n {$currentParticipant.contact.display_name}\n \n \n {/if}\n \n \n \n \n {ts}Item{/ts} \n {ts}Qty{/ts} \n {ts}Each{/ts} \n {if $isShowTax && {contribution.tax_amount|boolean}}\n {ts}Subtotal{/ts} \n {ts}Tax Rate{/ts} \n {ts}Tax Amount{/ts} \n {/if}\n {ts}Total{/ts} \n {if $isShowParticipantCount}\n {ts}Total Participants{/ts} \n {/if}\n \n {foreach from=$currentParticipant.line_items item=line}\n \n {$line.title} \n {$line.qty} \n {$line.unit_price|crmMoney:$currency} \n {if $isShowTax && {contribution.tax_amount|boolean}}\n {$line.line_total|crmMoney:$currency} \n {if $line.tax_rate || $line.tax_amount != \"\"}\n {$line.tax_rate|string_format:\"%.2f\"}% \n {$line.tax_amount|crmMoney:$currency} \n {else}\n \n \n {/if}\n {/if}\n \n {$line.line_total_inclusive|crmMoney:$currency}\n \n {if $isShowParticipantCount}\n {$line.participant_count} \n {/if}\n \n {/foreach}\n {if $isShowTax && $isPrimary && ($participants|@count > 1)}\n \n {ts 1=$currentParticipant.contact.display_name}Total for %1{/ts} \n {$currentParticipant.totals.total_amount_exclusive|crmMoney} \n {$currentParticipant.totals.tax_amount|crmMoney} \n {$currentParticipant.totals.total_amount_inclusive|crmMoney} \n \n {/if}\n
\n \n \n {/if}\n {/foreach}\n {/if}\n {if !$isShowLineItems}\n {foreach from=$participants key=index item=currentParticipant}\n {if $isPrimary || {participant.id} === $currentParticipant.id}\n {foreach from=$currentParticipant.line_items key=index item=currentLineItem}\n \n \n {$currentLineItem.label}{if $isPrimary && ($participants|@count > 1)} - {$currentParticipant.contact.display_name}{/if}\n \n \n {$currentLineItem.line_total|crmMoney:$currency}\n \n \n {/foreach}\n {/if}\n {/foreach}\n {/if}\n {if $isShowTax && {contribution.tax_amount|boolean}}\n \n \n {ts}Amount Before Tax:{/ts}\n \n \n {if $isPrimary}{contribution.tax_exclusive_amount}{else}{$participant.totals.total_amount_exclusive|crmMoney}{/if}\n \n \n {if !$isPrimary}\n {* Use the participant specific tax rate breakdown *}\n {assign var=taxRateBreakdown value=$participant.tax_rate_breakdown}\n {/if}\n {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n \n {if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else}{$taxTerm} {$taxDetail.percentage}%{/if} \n {$taxDetail.amount|crmMoney:\'{contribution.currency}\'} \n \n {/foreach}\n \n \n {ts}Total Tax Amount{/ts}\n \n \n {if $isPrimary}{contribution.tax_amount}{else}{$participant.totals.tax_amount|crmMoney}{/if}\n \n \n {/if}\n {if $isPrimary}\n \n \n {ts}Total Amount{/ts}\n \n \n {contribution.total_amount} {if !empty($hookDiscount.message)}({$hookDiscount.message}){/if}\n \n \n {if $isShowParticipantCount}\n \n \n {ts}Total Participants{/ts} \n \n {$participantCount}\n \n \n {/if}\n\n {if {participant.register_date|boolean}}\n \n \n {ts}Registration Date{/ts}\n \n \n {participant.register_date}\n \n \n {/if}\n\n {if {contribution.receive_date|boolean}}\n \n \n {ts}Transaction Date{/ts}\n \n \n {contribution.receive_date}\n \n \n {/if}\n\n {if {contribution.financial_type_id|boolean}}\n \n \n {ts}Financial Type{/ts}\n \n \n {contribution.financial_type_id:label}\n \n \n {/if}\n\n {if {contribution.trxn_id|boolean}}\n \n \n {ts}Transaction #{/ts}\n \n \n {contribution.trxn_id|boolean}\n \n \n {/if}\n\n {if {contribution.payment_instrument_id|boolean} && {contribution.paid_amount|boolean}}\n \n \n {ts}Paid By{/ts}\n \n \n {contribution.payment_instrument_id:label}\n \n \n {/if}\n\n {if {contribution.check_number|boolean}}\n \n \n {ts}Check Number{/ts}\n \n \n {contribution.check_number}\n \n \n {/if}\n\n {if {contribution.address_id.display|boolean}}\n \n \n {ts}Billing Name and Address{/ts}\n \n \n \n \n {contribution.address_id.name} \n {contribution.address_id.display}\n \n \n {/if}\n\n {if !empty($credit_card_type)}\n \n \n {ts}Credit Card Information{/ts}\n \n \n \n \n {$credit_card_type} \n {$credit_card_number} \n {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n \n \n {/if}\n {/if}\n\n {/if} {* End of conditional section for Paid events *}\n\n {if !empty($customPre)}\n {foreach from=$customPre item=customPr key=i}\n \n {$customPre_grouptitle.$i} \n \n {foreach from=$customPr item=customValue key=customName}\n \n {$customName} \n {$customValue} \n \n {/foreach}\n {/foreach}\n {/if}\n\n {if !empty($customPost)}\n {foreach from=$customPost item=customPos key=j}\n \n {$customPost_grouptitle.$j} \n \n {foreach from=$customPos item=customValue key=customName}\n \n {$customName} \n {$customValue} \n \n {/foreach}\n {/foreach}\n {/if}\n\n {if !empty($customProfile)}\n {foreach from=$customProfile.profile item=eachParticipant key=participantID}\n \n {ts 1=$participantID+2}Participant %1{/ts} \n \n {foreach from=$eachParticipant item=eachProfile key=pid}\n \n {$customProfile.title.$pid} \n \n {foreach from=$eachProfile item=val key=field}\n \n {foreach from=$val item=v key=f}\n {$field} \n {$v} \n {/foreach}\n \n {/foreach}\n {/foreach}\n {/foreach}\n {/if}\n\n
\n {if {event.allow_selfcancelxfer|boolean}}\n \n \n {capture assign=selfservice_preposition}{if {event.selfcancelxfer_time} > 0}{ts}before{/ts}{else}{ts}after{/ts}{/if}{/capture}\n {ts 1={event.selfcancelxfer_time} 2=$selfservice_preposition}You may transfer your registration to another participant or cancel your registration up to %1 hours %2 the event.{/ts}\n {if {contribution.paid_amount|boolean}}{ts}Cancellations are not refundable.{/ts}{/if} \n {capture assign=selfService}{crmURL p=\'civicrm/event/selfsvcupdate\' q=\"reset=1&pid={participant.id}&{contact.checksum}\" h=0 a=1 fe=1}{/capture}\n {ts}Click here to transfer or cancel your registration.{/ts} \n \n \n {/if}\n
\n\n\n\n',1,829,'event_online_receipt',1,0,0,NULL),
- (32,'Events - Registration Confirmation and Receipt (on-line)','{if !empty($isOnWaitlist)}{ts}Wait List Confirmation{/ts}{elseif !empty($isRequireApproval)}{ts}Registration Request Confirmation{/ts}{else}{ts}Registration Confirmation{/ts}{/if} - {event.title} - {contact.display_name}\n','','\n\n\n \n \n\n\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n{capture assign=tdfirstStyle}style=\"width: 180px; padding-bottom: 15px;\"{/capture}\n{capture assign=tdStyle}style=\"width: 100px;\"{/capture}\n{capture assign=participantTotalStyle}style=\"margin: 0.5em 0 0.5em;padding: 0.5em;background-color: #999999;font-weight: bold;color: #FAFAFA;border-radius: 2px;\"{/capture}\n\n\n\n \n \n \n\n \n \n \n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},
{/if}\n {if {event.confirm_email_text|boolean} AND (empty($isOnWaitlist) AND empty($isRequireApproval))}\n {event.confirm_email_text}
\n {else}\n {ts}Thank you for your registration.{/ts}\n {if $participant_status}{ts 1=$participant_status}This is a confirmation that your registration has been received and your status has been updated to %1 .{/ts}\n {else}\n {if $isOnWaitlist}{ts}This is a confirmation that your registration has been received and your status has been updated towaitlisted .{/ts}\n {else}{ts}This is a confirmation that your registration has been received and your status has been updated to registered.{/ts}\n {/if}\n {/if}\n
\n {/if}\n\n {if !empty($isOnWaitlist)}\n {ts}You have been added to the WAIT LIST for this event.{/ts}
\n {if $isPrimary}\n {ts}If space becomes available you will receive an email with a link to a web page where you can complete your registration.{/ts}
\n {/if}\n {elseif !empty($isRequireApproval)}\n {ts}Your registration has been submitted.{/ts}
\n {if $isPrimary}\n {ts}Once your registration has been reviewed, you will receive an email with a link to a web page where you can complete the registration process.{/ts}
\n {/if}\n {elseif {contribution.is_pay_later|boolean} && {contribution.balance_amount|boolean} && $isPrimary}\n {if {event.pay_later_receipt|boolean}}{event.pay_later_receipt}{/if}
\n {/if}\n \n \n \n \n \n \n \n {ts}Event Information and Location{/ts}\n \n \n \n \n {event.title} \n {event.start_date|crmDate:\"%A\"} {event.start_date|crmDate}{if {event.end_date|boolean}}-{if \'{event.end_date|crmDate:\"%Y%m%d\"}\' === \'{event.start_date|crmDate:\"%Y%m%d\"}\'}{event.end_date|crmDate:\"Time\"}{else}{event.end_date|crmDate:\"%A\"} {event.end_date|crmDate}{/if}{/if}\n \n \n\n {if \"{participant.role_id:label}\" neq \'Attendee\'}\n \n \n {ts}Participant Role{/ts}\n \n \n {participant.role_id:label}\n \n \n {/if}\n\n {if {event.is_show_location|boolean}}\n \n \n {event.location}\n \n \n {/if}\n\n {if {event.loc_block_id.phone_id.phone|boolean} || {event.loc_block_id.email_id.email|boolean}}\n \n \n {ts}Event Contacts:{/ts}\n \n \n\n {if {event.loc_block_id.phone_id.phone|boolean}}\n \n \n {if {event.loc_block_id.phone_id.phone_type_id|boolean}}\n {event.loc_block_id.phone_id.phone_type_id:label}\n {else}\n {ts}Phone{/ts}\n {/if}\n \n \n {event.loc_block_id.phone_id.phone} {if {event.loc_block_id.phone_id.phone_ext|boolean}} {ts}ext.{/ts} {event.loc_block_id.phone_id.phone_ext}{/if}\n \n \n {/if}\n {if {event.loc_block_id.phone_2_id.phone|boolean}}\n \n \n {if {event.loc_block_id.phone_2_id.phone_type_id|boolean}}\n {event.loc_block_id.phone_2_id.phone_type_id:label}\n {else}\n {ts}Phone{/ts}\n {/if}\n \n \n {event.loc_block_id.phone_2_id.phone} {if {event.loc_block_id.phone_2_id.phone_ext|boolean}} {ts}ext.{/ts} {event.loc_block_id.phone_2_id.phone_ext}{/if}\n \n \n {/if}\n {if {event.loc_block_id.email_id.email|boolean}}\n \n \n {ts}Email{/ts}\n \n \n {event.loc_block_id.email_id.email}\n \n \n {/if}\n {if {event.loc_block_id.email_2_id.email|boolean}}\n \n \n {ts}Email{/ts}\n \n \n {event.loc_block_id.email_2_id.email}\n \n \n {/if}\n {/if}\n\n {if {event.is_public|boolean} and {event.is_show_calendar_links|boolean}}\n \n \n {capture assign=icalFeed}{crmURL p=\'civicrm/event/ical\' q=\"reset=1&id={event.id}\" h=0 a=1 fe=1}{/capture}\n {ts}Download iCalendar entry for this event.{/ts} \n \n \n \n \n {capture assign=gCalendar}{crmURL p=\'civicrm/event/ical\' q=\"gCalendar=1&reset=1&id={event.id}\" h=0 a=1 fe=1}{/capture}\n {ts}Add event to Google Calendar{/ts} \n \n \n {/if}\n\n {if {event.is_share|boolean}}\n \n \n {capture assign=eventUrl}{crmURL p=\'civicrm/event/info\' q=\"id={event.id}&reset=1\" a=true fe=1 h=1}{/capture}\n {include file=\"CRM/common/SocialNetwork.tpl\" emailMode=true url=$eventUrl pageURL=$eventUrl title=\'{event.title}\'}\n \n \n {/if}\n {if !empty($payer.name)}\n \n \n {ts}You were registered by:{/ts}\n \n \n \n \n {$payer.name}\n \n \n {/if}\n {if {event.is_monetary|boolean} and empty($isRequireApproval)}\n \n \n {event.fee_label}\n \n \n {if $isShowLineItems}\n {foreach from=$participants key=index item=currentParticipant}\n {if $isPrimary || {participant.id} === $currentParticipant.id}\n {if $isPrimary && ($participants|@count > 1)} {* Header for multi participant registration cases. *}\n \n \n {$currentParticipant.contact.display_name}\n \n \n {/if}\n \n \n \n \n {ts}Item{/ts} \n {ts}Qty{/ts} \n {ts}Each{/ts} \n {if $isShowTax && {contribution.tax_amount|boolean}}\n {ts}Subtotal{/ts} \n {ts}Tax Rate{/ts} \n {ts}Tax Amount{/ts} \n {/if}\n {ts}Total{/ts} \n {if $isShowParticipantCount}\n {ts}Total Participants{/ts} \n {/if}\n \n {foreach from=$currentParticipant.line_items item=line}\n \n {$line.title} \n {$line.qty} \n {$line.unit_price|crmMoney:$currency} \n {if $isShowTax && {contribution.tax_amount|boolean}}\n {$line.line_total|crmMoney:$currency} \n {if $line.tax_rate || $line.tax_amount != \"\"}\n {$line.tax_rate|string_format:\"%.2f\"}% \n {$line.tax_amount|crmMoney:$currency} \n {else}\n \n \n {/if}\n {/if}\n \n {$line.line_total_inclusive|crmMoney:$currency}\n \n {if $isShowParticipantCount}\n {$line.participant_count} \n {/if}\n \n {/foreach}\n {if $isShowTax && $isPrimary && ($participants|@count > 1)}\n \n {ts 1=$currentParticipant.contact.display_name}Total for %1{/ts} \n {$currentParticipant.totals.total_amount_exclusive|crmMoney} \n {$currentParticipant.totals.tax_amount|crmMoney} \n {$currentParticipant.totals.total_amount_inclusive|crmMoney} \n \n {/if}\n
\n \n \n {/if}\n {/foreach}\n {/if}\n {if !$isShowLineItems}\n {foreach from=$participants key=index item=currentParticipant}\n {if $isPrimary || {participant.id} === $currentParticipant.id}\n {foreach from=$currentParticipant.line_items key=index item=currentLineItem}\n \n \n {$currentLineItem.label}{if $isPrimary && ($participants|@count > 1)} - {$currentParticipant.contact.display_name}{/if}\n \n \n {$currentLineItem.line_total|crmMoney:$currency}\n \n \n {/foreach}\n {/if}\n {/foreach}\n {/if}\n {if $isShowTax && {contribution.tax_amount|boolean}}\n \n \n {ts}Amount Before Tax:{/ts}\n \n \n {if $isPrimary}{contribution.tax_exclusive_amount}{else}{$participant.totals.total_amount_exclusive|crmMoney}{/if}\n \n \n {if !$isPrimary}\n {* Use the participant specific tax rate breakdown *}\n {assign var=taxRateBreakdown value=$participant.tax_rate_breakdown}\n {/if}\n {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n \n {if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else}{$taxTerm} {$taxDetail.percentage}%{/if} \n {$taxDetail.amount|crmMoney:\'{contribution.currency}\'} \n \n {/foreach}\n \n \n {ts}Total Tax Amount{/ts}\n \n \n {if $isPrimary}{contribution.tax_amount}{else}{$participant.totals.tax_amount|crmMoney}{/if}\n \n \n {/if}\n {if $isPrimary}\n \n \n {ts}Total Amount{/ts}\n \n \n {contribution.total_amount} {if !empty($hookDiscount.message)}({$hookDiscount.message}){/if}\n \n \n {if $isShowParticipantCount}\n \n \n {ts}Total Participants{/ts} \n \n {$participantCount}\n \n \n {/if}\n\n {if {participant.register_date|boolean}}\n \n \n {ts}Registration Date{/ts}\n \n \n {participant.register_date}\n \n \n {/if}\n\n {if {contribution.receive_date|boolean}}\n \n \n {ts}Transaction Date{/ts}\n \n \n {contribution.receive_date}\n \n \n {/if}\n\n {if {contribution.financial_type_id|boolean}}\n \n \n {ts}Financial Type{/ts}\n \n \n {contribution.financial_type_id:label}\n \n \n {/if}\n\n {if {contribution.trxn_id|boolean}}\n \n \n {ts}Transaction #{/ts}\n \n \n {contribution.trxn_id|boolean}\n \n \n {/if}\n\n {if {contribution.payment_instrument_id|boolean} && {contribution.paid_amount|boolean}}\n \n \n {ts}Paid By{/ts}\n \n \n {contribution.payment_instrument_id:label}\n \n \n {/if}\n\n {if {contribution.check_number|boolean}}\n \n \n {ts}Check Number{/ts}\n \n \n {contribution.check_number}\n \n \n {/if}\n\n {if {contribution.address_id.display|boolean}}\n \n \n {ts}Billing Name and Address{/ts}\n \n \n \n \n {contribution.address_id.name} \n {contribution.address_id.display}\n \n \n {/if}\n\n {if !empty($credit_card_type)}\n \n \n {ts}Credit Card Information{/ts}\n \n \n \n \n {$credit_card_type} \n {$credit_card_number} \n {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n \n \n {/if}\n {/if}\n\n {/if} {* End of conditional section for Paid events *}\n\n {if !empty($customPre)}\n {foreach from=$customPre item=customPr key=i}\n \n {$customPre_grouptitle.$i} \n \n {foreach from=$customPr item=customValue key=customName}\n \n {$customName} \n {$customValue} \n \n {/foreach}\n {/foreach}\n {/if}\n\n {if !empty($customPost)}\n {foreach from=$customPost item=customPos key=j}\n \n {$customPost_grouptitle.$j} \n \n {foreach from=$customPos item=customValue key=customName}\n \n {$customName} \n {$customValue} \n \n {/foreach}\n {/foreach}\n {/if}\n\n {if !empty($customProfile)}\n {foreach from=$customProfile.profile item=eachParticipant key=participantID}\n \n {ts 1=$participantID+2}Participant %1{/ts} \n \n {foreach from=$eachParticipant item=eachProfile key=pid}\n \n {$customProfile.title.$pid} \n \n {foreach from=$eachProfile item=val key=field}\n \n {foreach from=$val item=v key=f}\n {$field} \n {$v} \n {/foreach}\n \n {/foreach}\n {/foreach}\n {/foreach}\n {/if}\n\n
\n {if {event.allow_selfcancelxfer|boolean}}\n \n \n {capture assign=selfservice_preposition}{if {event.selfcancelxfer_time} > 0}{ts}before{/ts}{else}{ts}after{/ts}{/if}{/capture}\n {ts 1={event.selfcancelxfer_time} 2=$selfservice_preposition}You may transfer your registration to another participant or cancel your registration up to %1 hours %2 the event.{/ts}\n {if {contribution.paid_amount|boolean}}{ts}Cancellations are not refundable.{/ts}{/if} \n {capture assign=selfService}{crmURL p=\'civicrm/event/selfsvcupdate\' q=\"reset=1&pid={participant.id}&{contact.checksum}\" h=0 a=1 fe=1}{/capture}\n {ts}Click here to transfer or cancel your registration.{/ts} \n \n \n {/if}\n
\n\n\n\n',1,829,'event_online_receipt',0,1,0,NULL),
+ (31,'Events - Registration Confirmation and Receipt (on-line)','{if !empty($isOnWaitlist)}{ts}Wait List Confirmation{/ts}{elseif !empty($isRequireApproval)}{ts}Registration Request Confirmation{/ts}{else}{ts}Registration Confirmation{/ts}{/if} - {event.title} - {contact.display_name}\n','','\n\n\n \n \n\n\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n{capture assign=tdfirstStyle}style=\"width: 180px; padding-bottom: 15px;\"{/capture}\n{capture assign=tdStyle}style=\"width: 100px;\"{/capture}\n{capture assign=participantTotalStyle}style=\"margin: 0.5em 0 0.5em;padding: 0.5em;background-color: #999999;font-weight: bold;color: #FAFAFA;border-radius: 2px;\"{/capture}\n\n\n\n \n \n \n\n \n \n \n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},
{/if}\n {if {event.confirm_email_text|boolean} AND (empty($isOnWaitlist) AND empty($isRequireApproval))}\n {event.confirm_email_text}
\n {else}\n {ts}Thank you for your registration.{/ts}\n {if $participant_status}{ts 1=$participant_status}This is a confirmation that your registration has been received and your status has been updated to %1 .{/ts}\n {else}\n {if $isOnWaitlist}{ts}This is a confirmation that your registration has been received and your status has been updated to waitlisted .{/ts}\n {else}{ts}This is a confirmation that your registration has been received and your status has been updated to registered.{/ts}\n {/if}\n {/if}\n
\n {/if}\n\n {if !empty($isOnWaitlist)}\n {ts}You have been added to the WAIT LIST for this event.{/ts}
\n {if $isPrimary}\n {ts}If space becomes available you will receive an email with a link to a web page where you can complete your registration.{/ts}
\n {/if}\n {elseif !empty($isRequireApproval)}\n {ts}Your registration has been submitted.{/ts}
\n {if $isPrimary}\n {ts}Once your registration has been reviewed, you will receive an email with a link to a web page where you can complete the registration process.{/ts}
\n {/if}\n {elseif {contribution.is_pay_later|boolean} && {contribution.balance_amount|boolean} && $isPrimary}\n {if {event.pay_later_receipt|boolean}}{event.pay_later_receipt}{/if}
\n {/if}\n \n \n \n \n \n \n \n {ts}Event Information and Location{/ts}\n \n \n \n \n {event.title} \n {event.start_date|crmDate:\"%A\"} {event.start_date|crmDate}{if {event.end_date|boolean}}-{if \'{event.end_date|crmDate:\"%Y%m%d\"}\' === \'{event.start_date|crmDate:\"%Y%m%d\"}\'}{event.end_date|crmDate:\"Time\"}{else}{event.end_date|crmDate:\"%A\"} {event.end_date|crmDate}{/if}{/if}\n \n \n\n {if \"{participant.role_id:label}\" neq \'Attendee\'}\n \n \n {ts}Participant Role{/ts}\n \n \n {participant.role_id:label}\n \n \n {/if}\n\n {if {event.is_show_location|boolean}}\n \n \n {event.location}\n \n \n {/if}\n\n {if {event.loc_block_id.phone_id.phone|boolean} || {event.loc_block_id.email_id.email|boolean}}\n \n \n {ts}Event Contacts:{/ts}\n \n \n\n {if {event.loc_block_id.phone_id.phone|boolean}}\n \n \n {if {event.loc_block_id.phone_id.phone_type_id|boolean}}\n {event.loc_block_id.phone_id.phone_type_id:label}\n {else}\n {ts}Phone{/ts}\n {/if}\n \n \n {event.loc_block_id.phone_id.phone} {if {event.loc_block_id.phone_id.phone_ext|boolean}} {ts}ext.{/ts} {event.loc_block_id.phone_id.phone_ext}{/if}\n \n \n {/if}\n {if {event.loc_block_id.phone_2_id.phone|boolean}}\n \n \n {if {event.loc_block_id.phone_2_id.phone_type_id|boolean}}\n {event.loc_block_id.phone_2_id.phone_type_id:label}\n {else}\n {ts}Phone{/ts}\n {/if}\n \n \n {event.loc_block_id.phone_2_id.phone} {if {event.loc_block_id.phone_2_id.phone_ext|boolean}} {ts}ext.{/ts} {event.loc_block_id.phone_2_id.phone_ext}{/if}\n \n \n {/if}\n {if {event.loc_block_id.email_id.email|boolean}}\n \n \n {ts}Email{/ts}\n \n \n {event.loc_block_id.email_id.email}\n \n \n {/if}\n {if {event.loc_block_id.email_2_id.email|boolean}}\n \n \n {ts}Email{/ts}\n \n \n {event.loc_block_id.email_2_id.email}\n \n \n {/if}\n {/if}\n\n {if {event.is_public|boolean} and {event.is_show_calendar_links|boolean}}\n \n \n {capture assign=icalFeed}{crmURL p=\'civicrm/event/ical\' q=\"reset=1&id={event.id}\" h=0 a=1 fe=1}{/capture}\n {ts}Download iCalendar entry for this event.{/ts} \n \n \n \n \n {capture assign=gCalendar}{crmURL p=\'civicrm/event/ical\' q=\"gCalendar=1&reset=1&id={event.id}\" h=0 a=1 fe=1}{/capture}\n {ts}Add event to Google Calendar{/ts} \n \n \n {/if}\n\n {if {event.is_share|boolean}}\n \n \n {capture assign=eventUrl}{crmURL p=\'civicrm/event/info\' q=\"id={event.id}&reset=1\" a=true fe=1 h=1}{/capture}\n {include file=\"CRM/common/SocialNetwork.tpl\" emailMode=true url=$eventUrl pageURL=$eventUrl title=\'{event.title}\'}\n \n \n {/if}\n {if !empty($payer.name)}\n \n \n {ts}You were registered by:{/ts}\n \n \n \n \n {$payer.name}\n \n \n {/if}\n {if {event.is_monetary|boolean} and empty($isRequireApproval)}\n \n \n {event.fee_label}\n \n \n {if $isShowLineItems}\n {foreach from=$participants key=index item=currentParticipant}\n {if $isPrimary || {participant.id} === $currentParticipant.id}\n {if $isPrimary && ($participants|@count > 1)} {* Header for multi participant registration cases. *}\n \n \n {$currentParticipant.contact.display_name}\n \n \n {/if}\n \n \n \n \n {ts}Item{/ts} \n {ts}Qty{/ts} \n {ts}Each{/ts} \n {if $isShowTax && {contribution.tax_amount|boolean}}\n {ts}Subtotal{/ts} \n {ts}Tax Rate{/ts} \n {ts}Tax Amount{/ts} \n {/if}\n {ts}Total{/ts} \n {if $isShowParticipantCount}\n {ts}Total Participants{/ts} \n {/if}\n \n {foreach from=$currentParticipant.line_items item=line}\n \n {$line.title} \n {$line.qty} \n {$line.unit_price|crmMoney:$currency} \n {if $isShowTax && {contribution.tax_amount|boolean}}\n {$line.line_total|crmMoney:$currency} \n {if $line.tax_rate || $line.tax_amount != \"\"}\n {$line.tax_rate|string_format:\"%.2f\"}% \n {$line.tax_amount|crmMoney:$currency} \n {else}\n \n \n {/if}\n {/if}\n \n {$line.line_total_inclusive|crmMoney:$currency}\n \n {if $isShowParticipantCount}\n {$line.participant_count} \n {/if}\n \n {/foreach}\n {if $isShowTax && $isPrimary && ($participants|@count > 1)}\n \n {ts 1=$currentParticipant.contact.display_name}Total for %1{/ts} \n {$currentParticipant.totals.total_amount_exclusive|crmMoney} \n {$currentParticipant.totals.tax_amount|crmMoney} \n {$currentParticipant.totals.total_amount_inclusive|crmMoney} \n \n {/if}\n
\n \n \n {/if}\n {/foreach}\n {/if}\n {if !$isShowLineItems}\n {foreach from=$participants key=index item=currentParticipant}\n {if $isPrimary || {participant.id} === $currentParticipant.id}\n {foreach from=$currentParticipant.line_items key=index item=currentLineItem}\n \n \n {$currentLineItem.label}{if $isPrimary && ($participants|@count > 1)} - {$currentParticipant.contact.display_name}{/if}\n \n \n {$currentLineItem.line_total|crmMoney:$currency}\n \n \n {/foreach}\n {/if}\n {/foreach}\n {/if}\n {if $isShowTax && {contribution.tax_amount|boolean}}\n \n \n {ts}Amount Before Tax:{/ts}\n \n \n {if $isPrimary}{contribution.tax_exclusive_amount}{else}{$participant.totals.total_amount_exclusive|crmMoney}{/if}\n \n \n {if !$isPrimary}\n {* Use the participant specific tax rate breakdown *}\n {assign var=taxRateBreakdown value=$participant.tax_rate_breakdown}\n {/if}\n {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n \n {if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else}{$taxTerm} {$taxDetail.percentage}%{/if} \n {$taxDetail.amount|crmMoney:\'{contribution.currency}\'} \n \n {/foreach}\n \n \n {ts}Total Tax Amount{/ts}\n \n \n {if $isPrimary}{contribution.tax_amount}{else}{$participant.totals.tax_amount|crmMoney}{/if}\n \n \n {/if}\n {if $isPrimary}\n \n \n {ts}Total Amount{/ts}\n \n \n {contribution.total_amount} {if !empty($hookDiscount.message)}({$hookDiscount.message}){/if}\n \n \n {if $isShowParticipantCount}\n \n \n {ts}Total Participants{/ts} \n \n {$participantCount}\n \n \n {/if}\n\n {if {participant.register_date|boolean}}\n \n \n {ts}Registration Date{/ts}\n \n \n {participant.register_date}\n \n \n {/if}\n\n {if {contribution.receive_date|boolean}}\n \n \n {ts}Transaction Date{/ts}\n \n \n {contribution.receive_date}\n \n \n {/if}\n\n {if {contribution.financial_type_id|boolean}}\n \n \n {ts}Financial Type{/ts}\n \n \n {contribution.financial_type_id:label}\n \n \n {/if}\n\n {if {contribution.trxn_id|boolean}}\n \n \n {ts}Transaction #{/ts}\n \n \n {contribution.trxn_id}\n \n \n {/if}\n\n {if {contribution.payment_instrument_id|boolean} && {contribution.paid_amount|boolean}}\n \n \n {ts}Paid By{/ts}\n \n \n {contribution.payment_instrument_id:label}\n \n \n {/if}\n\n {if {contribution.check_number|boolean}}\n \n \n {ts}Check Number{/ts}\n \n \n {contribution.check_number}\n \n \n {/if}\n\n {if {contribution.address_id.display|boolean}}\n \n \n {ts}Billing Name and Address{/ts}\n \n \n \n \n {contribution.address_id.name} \n {contribution.address_id.display}\n \n \n {/if}\n\n {if !empty($credit_card_type)}\n \n \n {ts}Credit Card Information{/ts}\n \n \n \n \n {$credit_card_type} \n {$credit_card_number} \n {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n \n \n {/if}\n {/if}\n\n {/if} {* End of conditional section for Paid events *}\n\n {if !empty($customPre)}\n {foreach from=$customPre item=customPr key=i}\n \n {$customPre_grouptitle.$i} \n \n {foreach from=$customPr item=customValue key=customName}\n \n {$customName} \n {$customValue} \n \n {/foreach}\n {/foreach}\n {/if}\n\n {if !empty($customPost)}\n {foreach from=$customPost item=customPos key=j}\n \n {$customPost_grouptitle.$j} \n \n {foreach from=$customPos item=customValue key=customName}\n \n {$customName} \n {$customValue} \n \n {/foreach}\n {/foreach}\n {/if}\n\n {if !empty($customProfile)}\n {foreach from=$customProfile.profile item=eachParticipant key=participantID}\n \n {ts 1=$participantID+2}Participant %1{/ts} \n \n {foreach from=$eachParticipant item=eachProfile key=pid}\n \n {$customProfile.title.$pid} \n \n {foreach from=$eachProfile item=val key=field}\n \n {foreach from=$val item=v key=f}\n {$field} \n {$v} \n {/foreach}\n \n {/foreach}\n {/foreach}\n {/foreach}\n {/if}\n\n
\n {if {event.allow_selfcancelxfer|boolean}}\n \n \n {capture assign=selfservice_preposition}{if {event.selfcancelxfer_time|boolean} && {event.selfcancelxfer_time} > 0}{ts}before{/ts}{else}{ts}after{/ts}{/if}{/capture}\n {ts 1=\"{event.selfcancelxfer_time}\" 2=\"$selfservice_preposition\"}You may transfer your registration to another participant or cancel your registration up to %1 hours %2 the event.{/ts}\n {if {contribution.paid_amount|boolean}}{ts}Cancellations are not refundable.{/ts}{/if} \n {capture assign=selfService}{crmURL p=\'civicrm/event/selfsvcupdate\' q=\"reset=1&pid={participant.id}&{contact.checksum}\" h=0 a=1 fe=1}{/capture}\n {ts}Click here to transfer or cancel your registration.{/ts} \n \n \n {/if}\n
\n\n\n\n',1,829,'event_online_receipt',1,0,0,NULL),
+ (32,'Events - Registration Confirmation and Receipt (on-line)','{if !empty($isOnWaitlist)}{ts}Wait List Confirmation{/ts}{elseif !empty($isRequireApproval)}{ts}Registration Request Confirmation{/ts}{else}{ts}Registration Confirmation{/ts}{/if} - {event.title} - {contact.display_name}\n','','\n\n\n \n \n\n\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n{capture assign=tdfirstStyle}style=\"width: 180px; padding-bottom: 15px;\"{/capture}\n{capture assign=tdStyle}style=\"width: 100px;\"{/capture}\n{capture assign=participantTotalStyle}style=\"margin: 0.5em 0 0.5em;padding: 0.5em;background-color: #999999;font-weight: bold;color: #FAFAFA;border-radius: 2px;\"{/capture}\n\n\n\n \n \n \n\n \n \n \n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},
{/if}\n {if {event.confirm_email_text|boolean} AND (empty($isOnWaitlist) AND empty($isRequireApproval))}\n {event.confirm_email_text}
\n {else}\n {ts}Thank you for your registration.{/ts}\n {if $participant_status}{ts 1=$participant_status}This is a confirmation that your registration has been received and your status has been updated to %1 .{/ts}\n {else}\n {if $isOnWaitlist}{ts}This is a confirmation that your registration has been received and your status has been updated to waitlisted .{/ts}\n {else}{ts}This is a confirmation that your registration has been received and your status has been updated to registered.{/ts}\n {/if}\n {/if}\n
\n {/if}\n\n {if !empty($isOnWaitlist)}\n {ts}You have been added to the WAIT LIST for this event.{/ts}
\n {if $isPrimary}\n {ts}If space becomes available you will receive an email with a link to a web page where you can complete your registration.{/ts}
\n {/if}\n {elseif !empty($isRequireApproval)}\n {ts}Your registration has been submitted.{/ts}
\n {if $isPrimary}\n {ts}Once your registration has been reviewed, you will receive an email with a link to a web page where you can complete the registration process.{/ts}
\n {/if}\n {elseif {contribution.is_pay_later|boolean} && {contribution.balance_amount|boolean} && $isPrimary}\n {if {event.pay_later_receipt|boolean}}{event.pay_later_receipt}{/if}
\n {/if}\n \n \n \n \n \n \n \n {ts}Event Information and Location{/ts}\n \n \n \n \n {event.title} \n {event.start_date|crmDate:\"%A\"} {event.start_date|crmDate}{if {event.end_date|boolean}}-{if \'{event.end_date|crmDate:\"%Y%m%d\"}\' === \'{event.start_date|crmDate:\"%Y%m%d\"}\'}{event.end_date|crmDate:\"Time\"}{else}{event.end_date|crmDate:\"%A\"} {event.end_date|crmDate}{/if}{/if}\n \n \n\n {if \"{participant.role_id:label}\" neq \'Attendee\'}\n \n \n {ts}Participant Role{/ts}\n \n \n {participant.role_id:label}\n \n \n {/if}\n\n {if {event.is_show_location|boolean}}\n \n \n {event.location}\n \n \n {/if}\n\n {if {event.loc_block_id.phone_id.phone|boolean} || {event.loc_block_id.email_id.email|boolean}}\n \n \n {ts}Event Contacts:{/ts}\n \n \n\n {if {event.loc_block_id.phone_id.phone|boolean}}\n \n \n {if {event.loc_block_id.phone_id.phone_type_id|boolean}}\n {event.loc_block_id.phone_id.phone_type_id:label}\n {else}\n {ts}Phone{/ts}\n {/if}\n \n \n {event.loc_block_id.phone_id.phone} {if {event.loc_block_id.phone_id.phone_ext|boolean}} {ts}ext.{/ts} {event.loc_block_id.phone_id.phone_ext}{/if}\n \n \n {/if}\n {if {event.loc_block_id.phone_2_id.phone|boolean}}\n \n \n {if {event.loc_block_id.phone_2_id.phone_type_id|boolean}}\n {event.loc_block_id.phone_2_id.phone_type_id:label}\n {else}\n {ts}Phone{/ts}\n {/if}\n \n \n {event.loc_block_id.phone_2_id.phone} {if {event.loc_block_id.phone_2_id.phone_ext|boolean}} {ts}ext.{/ts} {event.loc_block_id.phone_2_id.phone_ext}{/if}\n \n \n {/if}\n {if {event.loc_block_id.email_id.email|boolean}}\n \n \n {ts}Email{/ts}\n \n \n {event.loc_block_id.email_id.email}\n \n \n {/if}\n {if {event.loc_block_id.email_2_id.email|boolean}}\n \n \n {ts}Email{/ts}\n \n \n {event.loc_block_id.email_2_id.email}\n \n \n {/if}\n {/if}\n\n {if {event.is_public|boolean} and {event.is_show_calendar_links|boolean}}\n \n \n {capture assign=icalFeed}{crmURL p=\'civicrm/event/ical\' q=\"reset=1&id={event.id}\" h=0 a=1 fe=1}{/capture}\n {ts}Download iCalendar entry for this event.{/ts} \n \n \n \n \n {capture assign=gCalendar}{crmURL p=\'civicrm/event/ical\' q=\"gCalendar=1&reset=1&id={event.id}\" h=0 a=1 fe=1}{/capture}\n {ts}Add event to Google Calendar{/ts} \n \n \n {/if}\n\n {if {event.is_share|boolean}}\n \n \n {capture assign=eventUrl}{crmURL p=\'civicrm/event/info\' q=\"id={event.id}&reset=1\" a=true fe=1 h=1}{/capture}\n {include file=\"CRM/common/SocialNetwork.tpl\" emailMode=true url=$eventUrl pageURL=$eventUrl title=\'{event.title}\'}\n \n \n {/if}\n {if !empty($payer.name)}\n \n \n {ts}You were registered by:{/ts}\n \n \n \n \n {$payer.name}\n \n \n {/if}\n {if {event.is_monetary|boolean} and empty($isRequireApproval)}\n \n \n {event.fee_label}\n \n \n {if $isShowLineItems}\n {foreach from=$participants key=index item=currentParticipant}\n {if $isPrimary || {participant.id} === $currentParticipant.id}\n {if $isPrimary && ($participants|@count > 1)} {* Header for multi participant registration cases. *}\n \n \n {$currentParticipant.contact.display_name}\n \n \n {/if}\n \n \n \n \n {ts}Item{/ts} \n {ts}Qty{/ts} \n {ts}Each{/ts} \n {if $isShowTax && {contribution.tax_amount|boolean}}\n {ts}Subtotal{/ts} \n {ts}Tax Rate{/ts} \n {ts}Tax Amount{/ts} \n {/if}\n {ts}Total{/ts} \n {if $isShowParticipantCount}\n {ts}Total Participants{/ts} \n {/if}\n \n {foreach from=$currentParticipant.line_items item=line}\n \n {$line.title} \n {$line.qty} \n {$line.unit_price|crmMoney:$currency} \n {if $isShowTax && {contribution.tax_amount|boolean}}\n {$line.line_total|crmMoney:$currency} \n {if $line.tax_rate || $line.tax_amount != \"\"}\n {$line.tax_rate|string_format:\"%.2f\"}% \n {$line.tax_amount|crmMoney:$currency} \n {else}\n \n \n {/if}\n {/if}\n \n {$line.line_total_inclusive|crmMoney:$currency}\n \n {if $isShowParticipantCount}\n {$line.participant_count} \n {/if}\n \n {/foreach}\n {if $isShowTax && $isPrimary && ($participants|@count > 1)}\n \n {ts 1=$currentParticipant.contact.display_name}Total for %1{/ts} \n {$currentParticipant.totals.total_amount_exclusive|crmMoney} \n {$currentParticipant.totals.tax_amount|crmMoney} \n {$currentParticipant.totals.total_amount_inclusive|crmMoney} \n \n {/if}\n
\n \n \n {/if}\n {/foreach}\n {/if}\n {if !$isShowLineItems}\n {foreach from=$participants key=index item=currentParticipant}\n {if $isPrimary || {participant.id} === $currentParticipant.id}\n {foreach from=$currentParticipant.line_items key=index item=currentLineItem}\n \n \n {$currentLineItem.label}{if $isPrimary && ($participants|@count > 1)} - {$currentParticipant.contact.display_name}{/if}\n \n \n {$currentLineItem.line_total|crmMoney:$currency}\n \n \n {/foreach}\n {/if}\n {/foreach}\n {/if}\n {if $isShowTax && {contribution.tax_amount|boolean}}\n \n \n {ts}Amount Before Tax:{/ts}\n \n \n {if $isPrimary}{contribution.tax_exclusive_amount}{else}{$participant.totals.total_amount_exclusive|crmMoney}{/if}\n \n \n {if !$isPrimary}\n {* Use the participant specific tax rate breakdown *}\n {assign var=taxRateBreakdown value=$participant.tax_rate_breakdown}\n {/if}\n {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n \n {if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else}{$taxTerm} {$taxDetail.percentage}%{/if} \n {$taxDetail.amount|crmMoney:\'{contribution.currency}\'} \n \n {/foreach}\n \n \n {ts}Total Tax Amount{/ts}\n \n \n {if $isPrimary}{contribution.tax_amount}{else}{$participant.totals.tax_amount|crmMoney}{/if}\n \n \n {/if}\n {if $isPrimary}\n \n \n {ts}Total Amount{/ts}\n \n \n {contribution.total_amount} {if !empty($hookDiscount.message)}({$hookDiscount.message}){/if}\n \n \n {if $isShowParticipantCount}\n \n \n {ts}Total Participants{/ts} \n \n {$participantCount}\n \n \n {/if}\n\n {if {participant.register_date|boolean}}\n \n \n {ts}Registration Date{/ts}\n \n \n {participant.register_date}\n \n \n {/if}\n\n {if {contribution.receive_date|boolean}}\n \n \n {ts}Transaction Date{/ts}\n \n \n {contribution.receive_date}\n \n \n {/if}\n\n {if {contribution.financial_type_id|boolean}}\n \n \n {ts}Financial Type{/ts}\n \n \n {contribution.financial_type_id:label}\n \n \n {/if}\n\n {if {contribution.trxn_id|boolean}}\n \n \n {ts}Transaction #{/ts}\n \n \n {contribution.trxn_id}\n \n \n {/if}\n\n {if {contribution.payment_instrument_id|boolean} && {contribution.paid_amount|boolean}}\n \n \n {ts}Paid By{/ts}\n \n \n {contribution.payment_instrument_id:label}\n \n \n {/if}\n\n {if {contribution.check_number|boolean}}\n \n \n {ts}Check Number{/ts}\n \n \n {contribution.check_number}\n \n \n {/if}\n\n {if {contribution.address_id.display|boolean}}\n \n \n {ts}Billing Name and Address{/ts}\n \n \n \n \n {contribution.address_id.name} \n {contribution.address_id.display}\n \n \n {/if}\n\n {if !empty($credit_card_type)}\n \n \n {ts}Credit Card Information{/ts}\n \n \n \n \n {$credit_card_type} \n {$credit_card_number} \n {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n \n \n {/if}\n {/if}\n\n {/if} {* End of conditional section for Paid events *}\n\n {if !empty($customPre)}\n {foreach from=$customPre item=customPr key=i}\n \n {$customPre_grouptitle.$i} \n \n {foreach from=$customPr item=customValue key=customName}\n \n {$customName} \n {$customValue} \n \n {/foreach}\n {/foreach}\n {/if}\n\n {if !empty($customPost)}\n {foreach from=$customPost item=customPos key=j}\n \n {$customPost_grouptitle.$j} \n \n {foreach from=$customPos item=customValue key=customName}\n \n {$customName} \n {$customValue} \n \n {/foreach}\n {/foreach}\n {/if}\n\n {if !empty($customProfile)}\n {foreach from=$customProfile.profile item=eachParticipant key=participantID}\n \n {ts 1=$participantID+2}Participant %1{/ts} \n \n {foreach from=$eachParticipant item=eachProfile key=pid}\n \n {$customProfile.title.$pid} \n \n {foreach from=$eachProfile item=val key=field}\n \n {foreach from=$val item=v key=f}\n {$field} \n {$v} \n {/foreach}\n \n {/foreach}\n {/foreach}\n {/foreach}\n {/if}\n\n
\n {if {event.allow_selfcancelxfer|boolean}}\n \n \n {capture assign=selfservice_preposition}{if {event.selfcancelxfer_time|boolean} && {event.selfcancelxfer_time} > 0}{ts}before{/ts}{else}{ts}after{/ts}{/if}{/capture}\n {ts 1=\"{event.selfcancelxfer_time}\" 2=\"$selfservice_preposition\"}You may transfer your registration to another participant or cancel your registration up to %1 hours %2 the event.{/ts}\n {if {contribution.paid_amount|boolean}}{ts}Cancellations are not refundable.{/ts}{/if} \n {capture assign=selfService}{crmURL p=\'civicrm/event/selfsvcupdate\' q=\"reset=1&pid={participant.id}&{contact.checksum}\" h=0 a=1 fe=1}{/capture}\n {ts}Click here to transfer or cancel your registration.{/ts} \n \n \n {/if}\n
\n\n\n\n',1,829,'event_online_receipt',0,1,0,NULL),
(33,'Events - Receipt only','Receipt for {if $events_in_cart} Event Registration{/if} - {contact.display_name}\n','','\n\n \n \n \n \n \n {capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n {capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n {capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},
{/if}\n {if $is_pay_later}\n \n This is being sent to you as an acknowledgement that you have registered one or more members for the following workshop, event or purchase. Please note, however, that the status of your payment is pending, and the registration for this event will not be completed until your payment is received.\n
\n {else}\n \n This is being sent to you as a {if !empty($is_refund)}confirmation of refund{else}receipt of payment made{/if} for the following workshop, event registration or purchase.\n
\n {/if}\n\n {if $is_pay_later}\n {$pay_later_receipt}
\n {/if}\n\n Your order number is #{$transaction_id}. {if !empty($line_items) && empty($is_refund)} Information about the workshops will be sent separately to each participant.{/if}\n Here\'s a summary of your transaction placed on {$transaction_date|crmDate:\"%D %I:%M %p %Z\"}:
\n\n{if $billing_name}\n \n \n \n {ts}Billing Name and Address{/ts}\n \n \n \n \n {$billing_name} \n {$billing_street_address} \n {$billing_city}, {$billing_state} {$billing_postal_code} \n \n {$email}\n \n \n
\n{/if}\n{if $credit_card_type}\n
\n \n \n \n {ts}Credit Card Information{/ts}\n \n \n \n \n {$credit_card_type} \n {$credit_card_number} \n {ts}Expires{/ts}: {$credit_card_exp_date.M}/{$credit_card_exp_date.Y}\n \n \n
\n{/if}\n{if !empty($source)}\n
\n {$source}\n{/if}\n
\n \n \n \n{if $line_items}\n \n Event\n \n \n Participants\n \n{/if}\n \n Price\n \n \n Total\n \n \n \n \n {foreach from=$line_items item=line_item}\n \n \n {$line_item.event->title} ({$line_item.event->start_date|crmDate:\"%D\"}) \n {if $line_item.event->is_show_location}\n {$line_item.location.address.1.display|nl2br}\n {/if}{*End of isShowLocation condition*} \n {$line_item.event->start_date|crmDate:\"%D %I:%M %p\"} - {$line_item.event->end_date|crmDate:\"%I:%M %p\"}\n \n \n {$line_item.num_participants}\n {if $line_item.num_participants > 0}\n \n {foreach from=$line_item.participants item=participant}\n {$participant.display_name} \n {/foreach}\n
\n {/if}\n {if $line_item.num_waiting_participants > 0}\n Waitlisted: \n \n {foreach from=$line_item.waiting_participants item=participant}\n {$participant.display_name} \n {/foreach}\n
\n {/if}\n \n \n {$line_item.cost|crmMoney:$currency|string_format:\"%10s\"}\n \n \n {$line_item.amount|crmMoney:$currency|string_format:\"%10s\"}\n \n \n {/foreach}\n \n \n {if $discounts}\n \n \n \n \n \n \n Subtotal:\n \n \n {$sub_total|crmMoney:$currency|string_format:\"%10s\"}\n \n \n {foreach from=$discounts key=myId item=i}\n \n \n {$i.title}\n \n \n \n \n \n \n -{$i.amount}\n \n \n {/foreach}\n {/if}\n \n{if $line_items}\n \n \n \n \n{/if}\n \n Total: \n \n \n {$total|crmMoney:$currency|string_format:\"%10s\"} \n \n \n \n
\n\n If you have questions about the status of your registration or purchase please feel free to contact us.\n \n\n',1,830,'event_registration_receipt',1,0,0,NULL),
(34,'Events - Receipt only','Receipt for {if $events_in_cart} Event Registration{/if} - {contact.display_name}\n','','\n\n \n \n \n \n \n {capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n {capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n {capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},
{/if}\n {if $is_pay_later}\n \n This is being sent to you as an acknowledgement that you have registered one or more members for the following workshop, event or purchase. Please note, however, that the status of your payment is pending, and the registration for this event will not be completed until your payment is received.\n
\n {else}\n \n This is being sent to you as a {if !empty($is_refund)}confirmation of refund{else}receipt of payment made{/if} for the following workshop, event registration or purchase.\n
\n {/if}\n\n {if $is_pay_later}\n {$pay_later_receipt}
\n {/if}\n\n Your order number is #{$transaction_id}. {if !empty($line_items) && empty($is_refund)} Information about the workshops will be sent separately to each participant.{/if}\n Here\'s a summary of your transaction placed on {$transaction_date|crmDate:\"%D %I:%M %p %Z\"}:
\n\n{if $billing_name}\n \n \n \n {ts}Billing Name and Address{/ts}\n \n \n \n \n {$billing_name} \n {$billing_street_address} \n {$billing_city}, {$billing_state} {$billing_postal_code} \n \n {$email}\n \n \n
\n{/if}\n{if $credit_card_type}\n
\n \n \n \n {ts}Credit Card Information{/ts}\n \n \n \n \n {$credit_card_type} \n {$credit_card_number} \n {ts}Expires{/ts}: {$credit_card_exp_date.M}/{$credit_card_exp_date.Y}\n \n \n
\n{/if}\n{if !empty($source)}\n
\n {$source}\n{/if}\n
\n \n \n \n{if $line_items}\n \n Event\n \n \n Participants\n \n{/if}\n \n Price\n \n \n Total\n \n \n \n \n {foreach from=$line_items item=line_item}\n \n \n {$line_item.event->title} ({$line_item.event->start_date|crmDate:\"%D\"}) \n {if $line_item.event->is_show_location}\n {$line_item.location.address.1.display|nl2br}\n {/if}{*End of isShowLocation condition*} \n {$line_item.event->start_date|crmDate:\"%D %I:%M %p\"} - {$line_item.event->end_date|crmDate:\"%I:%M %p\"}\n \n \n {$line_item.num_participants}\n {if $line_item.num_participants > 0}\n \n {foreach from=$line_item.participants item=participant}\n {$participant.display_name} \n {/foreach}\n
\n {/if}\n {if $line_item.num_waiting_participants > 0}\n Waitlisted: \n \n {foreach from=$line_item.waiting_participants item=participant}\n {$participant.display_name} \n {/foreach}\n
\n {/if}\n \n \n {$line_item.cost|crmMoney:$currency|string_format:\"%10s\"}\n \n \n {$line_item.amount|crmMoney:$currency|string_format:\"%10s\"}\n \n \n {/foreach}\n \n \n {if $discounts}\n \n \n \n \n \n \n Subtotal:\n \n \n {$sub_total|crmMoney:$currency|string_format:\"%10s\"}\n \n \n {foreach from=$discounts key=myId item=i}\n \n \n {$i.title}\n \n \n \n \n \n \n -{$i.amount}\n \n \n {/foreach}\n {/if}\n \n{if $line_items}\n \n \n \n \n{/if}\n \n Total: \n \n \n {$total|crmMoney:$currency|string_format:\"%10s\"} \n \n \n \n
\n\n If you have questions about the status of your registration or purchase please feel free to contact us.\n \n\n',1,830,'event_registration_receipt',0,1,0,NULL),
- (35,'Events - Registration Cancellation Notice','{ts 1=\"{event.title}\"}Event Registration Cancelled for %1{/ts} - {contact.display_name}\n','','\n\n\n \n \n\n\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n \n\n \n \n \n\n \n\n \n \n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},
{/if}\n {ts}Your Event Registration has been cancelled.{/ts}
\n \n \n \n \n \n \n \n {ts}Event Information and Location{/ts}\n \n \n \n \n {event.title} \n {event.start_date|crmDate:\"%A\"} {event.start_date|crmDate}{if {event.end_date|boolean}}-{if \'{event.end_date|crmDate:\"%Y%m%d\"}\' === \'{event.start_date|crmDate:\"%Y%m%d\"}\'}{event.end_date|crmDate:\"Time\"}{else}{event.end_date|crmDate:\"%A\"} {event.end_date|crmDate}{/if}{/if}\n \n \n \n \n {ts}Participant Role{/ts}:\n \n \n {participant.role_id:label}\n \n \n\n {if !empty($isShowLocation)}\n \n \n {event.location}\n \n \n {/if}\n\n {if {event.loc_block_id.phone_id.phone|boolean} || {event.loc_block_id.email_id.email|boolean}}\n \n \n {ts}Event Contacts:{/ts}\n \n \n\n {if {event.loc_block_id.phone_id.phone|boolean}}\n \n \n {if {event.loc_block_id.phone_id.phone_type_id|boolean}}\n {event.loc_block_id.phone_id.phone_type_id:label}\n {else}\n {ts}Phone{/ts}\n {/if}\n \n \n {event.loc_block_id.phone_id.phone} {if {event.loc_block_id.phone_id.phone_ext|boolean}} {ts}ext.{/ts} {event.loc_block_id.phone_id.phone_ext}{/if}\n \n \n {/if}\n {if {event.loc_block_id.phone_2_id.phone|boolean}}\n \n \n {if {event.loc_block_id.phone_2_id.phone_type_id|boolean}}\n {event.loc_block_id.phone_2_id.phone_type_id:label}\n {else}\n {ts}Phone{/ts}\n {/if}\n \n \n {event.loc_block_id.phone_2_id.phone} {if {event.loc_block_id.phone_2_id.phone_ext|boolean}} {ts}ext.{/ts} {event.loc_block_id.phone_2_id.phone_ext}{/if}\n \n \n {/if}\n {if {event.loc_block_id.email_id.email|boolean}}\n \n \n {ts}Email{/ts}\n \n \n {event.loc_block_id.email_id.email}\n \n \n {/if}\n {if {event.loc_block_id.email_2_id.email|boolean}}\n \n \n {ts}Email{/ts}\n \n \n {event.loc_block_id.email_2_id.email}\n \n \n {/if}\n {/if}\n\n {if \'{contact.email}\'}\n \n \n {ts}Registered Email{/ts}\n \n \n \n \n {contact.email}\n \n \n {/if}\n\n {if !empty(\'{participant.register_date}\')}\n \n \n {ts}Registration Date{/ts}\n \n \n {participant.register_date}\n \n \n {/if}\n\n
\n \n \n\n \n \n {ts 1=\'{domain.phone}\' 2=\'{domain.email}\'}Please contact us at %1 or send email to %2 if you have questions.{/ts}
\n \n \n\n
\n\n\n\n',1,831,'participant_cancelled',1,0,0,NULL),
- (36,'Events - Registration Cancellation Notice','{ts 1=\"{event.title}\"}Event Registration Cancelled for %1{/ts} - {contact.display_name}\n','','\n\n\n \n \n\n\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n \n\n \n \n \n\n \n\n \n \n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},
{/if}\n {ts}Your Event Registration has been cancelled.{/ts}
\n \n \n \n \n \n \n \n {ts}Event Information and Location{/ts}\n \n \n \n \n {event.title} \n {event.start_date|crmDate:\"%A\"} {event.start_date|crmDate}{if {event.end_date|boolean}}-{if \'{event.end_date|crmDate:\"%Y%m%d\"}\' === \'{event.start_date|crmDate:\"%Y%m%d\"}\'}{event.end_date|crmDate:\"Time\"}{else}{event.end_date|crmDate:\"%A\"} {event.end_date|crmDate}{/if}{/if}\n \n \n \n \n {ts}Participant Role{/ts}:\n \n \n {participant.role_id:label}\n \n \n\n {if !empty($isShowLocation)}\n \n \n {event.location}\n \n \n {/if}\n\n {if {event.loc_block_id.phone_id.phone|boolean} || {event.loc_block_id.email_id.email|boolean}}\n \n \n {ts}Event Contacts:{/ts}\n \n \n\n {if {event.loc_block_id.phone_id.phone|boolean}}\n \n \n {if {event.loc_block_id.phone_id.phone_type_id|boolean}}\n {event.loc_block_id.phone_id.phone_type_id:label}\n {else}\n {ts}Phone{/ts}\n {/if}\n \n \n {event.loc_block_id.phone_id.phone} {if {event.loc_block_id.phone_id.phone_ext|boolean}} {ts}ext.{/ts} {event.loc_block_id.phone_id.phone_ext}{/if}\n \n \n {/if}\n {if {event.loc_block_id.phone_2_id.phone|boolean}}\n \n \n {if {event.loc_block_id.phone_2_id.phone_type_id|boolean}}\n {event.loc_block_id.phone_2_id.phone_type_id:label}\n {else}\n {ts}Phone{/ts}\n {/if}\n \n \n {event.loc_block_id.phone_2_id.phone} {if {event.loc_block_id.phone_2_id.phone_ext|boolean}} {ts}ext.{/ts} {event.loc_block_id.phone_2_id.phone_ext}{/if}\n \n \n {/if}\n {if {event.loc_block_id.email_id.email|boolean}}\n \n \n {ts}Email{/ts}\n \n \n {event.loc_block_id.email_id.email}\n \n \n {/if}\n {if {event.loc_block_id.email_2_id.email|boolean}}\n \n \n {ts}Email{/ts}\n \n \n {event.loc_block_id.email_2_id.email}\n \n \n {/if}\n {/if}\n\n {if \'{contact.email}\'}\n \n \n {ts}Registered Email{/ts}\n \n \n \n \n {contact.email}\n \n \n {/if}\n\n {if !empty(\'{participant.register_date}\')}\n \n \n {ts}Registration Date{/ts}\n \n \n {participant.register_date}\n \n \n {/if}\n\n
\n \n \n\n \n \n {ts 1=\'{domain.phone}\' 2=\'{domain.email}\'}Please contact us at %1 or send email to %2 if you have questions.{/ts}
\n \n \n\n
\n\n\n\n',1,831,'participant_cancelled',0,1,0,NULL),
- (37,'Events - Registration Confirmation Invite','{ts 1=$event.event_title}Confirm your registration for %1{/ts} - {contact.display_name}\n','','\n\n\n \n \n\n\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n \n \n \n \n\n \n\n \n \n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},
{/if}\n {ts}This is an invitation to complete your registration that was initially waitlisted.{/ts}
\n \n \n {if !$isAdditional and $participant.id}\n \n \n {ts}Confirm Your Registration{/ts}\n \n \n \n \n {capture assign=confirmUrl}{crmURL p=\'civicrm/event/confirm\' q=\"reset=1&participantId=`$participant.id`&cs=`$checksumValue`\" a=true h=0 fe=1}{/capture}\n {ts}Click here to confirm and complete your registration{/ts} \n \n \n {/if}\n {if $event.allow_selfcancelxfer}\n {ts}This event allows for{/ts}\n {capture assign=selfService}{crmURL p=\'civicrm/event/selfsvcupdate\' q=\"reset=1&pid=`$participant.id`&{contact.checksum}\" h=0 a=1 fe=1}{/capture}\n {ts}self service cancel or transfer{/ts} \n {/if}\n\n \n \n \n \n \n {ts}Event Information and Location{/ts}\n \n \n \n \n {$event.event_title} \n {$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|crmDate:\"%Y%m%d\" == $event.event_start_date|crmDate:\"%Y%m%d\"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate}{/if}{/if}\n \n \n \n \n {ts}Participant Role{/ts}:\n \n \n {$participant.role}\n \n \n\n {if $isShowLocation}\n \n \n {$event.location.address.1.display|nl2br}\n \n \n {/if}\n\n {if $event.location.phone.1.phone || $event.location.email.1.email}\n \n \n {ts}Event Contacts:{/ts}\n \n \n {foreach from=$event.location.phone item=phone}\n {if $phone.phone}\n \n \n {if $phone.phone_type}{$phone.phone_type_display}{else}{ts}Phone{/ts}{/if}\n \n \n {$phone.phone}\n \n \n {/if}\n {/foreach}\n {foreach from=$event.location.email item=eventEmail}\n {if $eventEmail.email}\n \n \n {ts}Email{/ts}\n \n \n {$eventEmail.email}\n \n \n {/if}\n {/foreach}\n {/if}\n\n {if $event.is_public}\n \n \n {capture assign=icalFeed}{crmURL p=\'civicrm/event/ical\' q=\"reset=1&id=`$event.id`\" h=0 a=1 fe=1}{/capture}\n {ts}Download iCalendar entry for this event.{/ts} \n \n \n \n \n {capture assign=gCalendar}{crmURL p=\'civicrm/event/ical\' q=\"gCalendar=1&reset=1&id=`$event.id`\" h=0 a=1 fe=1}{/capture}\n {ts}Add event to Google Calendar{/ts} \n \n \n {/if}\n\n {if \'{contact.email}\'}\n \n \n {ts}Registered Email{/ts}\n \n \n \n \n {contact.email}\n \n \n {/if}\n\n {if $register_date}\n \n \n {ts}Registration Date{/ts}\n \n \n {$participant.register_date|crmDate}\n \n \n {/if}\n\n
\n \n \n {if $event.allow_selfcancelxfer}\n \n \n {ts 1=$selfcancelxfer_time 2=$selfservice_preposition}You may transfer your registration to another participant or cancel your registration up to %1 hours %2 the event.{/ts} {if $totalAmount}{ts}Cancellations are not refundable.{/ts}{/if} \n {capture assign=selfService}{crmURL p=\'civicrm/event/selfsvcupdate\' q=\"reset=1&pid=`$participant.id`&{contact.checksum}\" h=0 a=1 fe=1}{/capture}\n {ts}Click here to transfer or cancel your registration.{/ts} \n \n \n {/if}\n \n \n {ts 1=\'{domain.phone}\' 2=\'{domain.email}\'}Please contact us at %1 or send email to %2 if you have questions.{/ts}
\n \n \n\n
\n\n\n\n',1,832,'participant_confirm',1,0,0,NULL),
- (38,'Events - Registration Confirmation Invite','{ts 1=$event.event_title}Confirm your registration for %1{/ts} - {contact.display_name}\n','','\n\n\n \n \n\n\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n \n \n \n \n\n \n\n \n \n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},
{/if}\n {ts}This is an invitation to complete your registration that was initially waitlisted.{/ts}
\n \n \n {if !$isAdditional and $participant.id}\n \n \n {ts}Confirm Your Registration{/ts}\n \n \n \n \n {capture assign=confirmUrl}{crmURL p=\'civicrm/event/confirm\' q=\"reset=1&participantId=`$participant.id`&cs=`$checksumValue`\" a=true h=0 fe=1}{/capture}\n {ts}Click here to confirm and complete your registration{/ts} \n \n \n {/if}\n {if $event.allow_selfcancelxfer}\n {ts}This event allows for{/ts}\n {capture assign=selfService}{crmURL p=\'civicrm/event/selfsvcupdate\' q=\"reset=1&pid=`$participant.id`&{contact.checksum}\" h=0 a=1 fe=1}{/capture}\n {ts}self service cancel or transfer{/ts} \n {/if}\n\n \n \n \n \n \n {ts}Event Information and Location{/ts}\n \n \n \n \n {$event.event_title} \n {$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|crmDate:\"%Y%m%d\" == $event.event_start_date|crmDate:\"%Y%m%d\"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate}{/if}{/if}\n \n \n \n \n {ts}Participant Role{/ts}:\n \n \n {$participant.role}\n \n \n\n {if $isShowLocation}\n \n \n {$event.location.address.1.display|nl2br}\n \n \n {/if}\n\n {if $event.location.phone.1.phone || $event.location.email.1.email}\n \n \n {ts}Event Contacts:{/ts}\n \n \n {foreach from=$event.location.phone item=phone}\n {if $phone.phone}\n \n \n {if $phone.phone_type}{$phone.phone_type_display}{else}{ts}Phone{/ts}{/if}\n \n \n {$phone.phone}\n \n \n {/if}\n {/foreach}\n {foreach from=$event.location.email item=eventEmail}\n {if $eventEmail.email}\n \n \n {ts}Email{/ts}\n \n \n {$eventEmail.email}\n \n \n {/if}\n {/foreach}\n {/if}\n\n {if $event.is_public}\n \n \n {capture assign=icalFeed}{crmURL p=\'civicrm/event/ical\' q=\"reset=1&id=`$event.id`\" h=0 a=1 fe=1}{/capture}\n {ts}Download iCalendar entry for this event.{/ts} \n \n \n \n \n {capture assign=gCalendar}{crmURL p=\'civicrm/event/ical\' q=\"gCalendar=1&reset=1&id=`$event.id`\" h=0 a=1 fe=1}{/capture}\n {ts}Add event to Google Calendar{/ts} \n \n \n {/if}\n\n {if \'{contact.email}\'}\n \n \n {ts}Registered Email{/ts}\n \n \n \n \n {contact.email}\n \n \n {/if}\n\n {if $register_date}\n \n \n {ts}Registration Date{/ts}\n \n \n {$participant.register_date|crmDate}\n \n \n {/if}\n\n
\n \n \n {if $event.allow_selfcancelxfer}\n \n \n {ts 1=$selfcancelxfer_time 2=$selfservice_preposition}You may transfer your registration to another participant or cancel your registration up to %1 hours %2 the event.{/ts} {if $totalAmount}{ts}Cancellations are not refundable.{/ts}{/if} \n {capture assign=selfService}{crmURL p=\'civicrm/event/selfsvcupdate\' q=\"reset=1&pid=`$participant.id`&{contact.checksum}\" h=0 a=1 fe=1}{/capture}\n {ts}Click here to transfer or cancel your registration.{/ts} \n \n \n {/if}\n \n \n {ts 1=\'{domain.phone}\' 2=\'{domain.email}\'}Please contact us at %1 or send email to %2 if you have questions.{/ts}
\n \n \n\n
\n\n\n\n',1,832,'participant_confirm',0,1,0,NULL),
- (39,'Events - Pending Registration Expiration Notice','{ts 1=$event.event_title}Event registration has expired for %1{/ts} - {contact.display_name}\n','','\n\n\n \n \n\n\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n \n\n \n \n \n\n \n\n \n \n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},
{/if}\n {ts 1=$event.event_title}Your pending event registration for %1 has expired\nbecause you did not confirm your registration.{/ts}
\n {ts 1=\'{domain.phone}\' 2=\'{domain.email}\'}Please contact us at %1 or send email to %2 if you have questions\nor want to inquire about reinstating your registration for this event.{/ts}
\n \n \n \n \n \n \n \n {ts}Event Information and Location{/ts}\n \n \n \n \n {$event.event_title} \n {$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|crmDate:\"%Y%m%d\" == $event.event_start_date|crmDate:\"%Y%m%d\"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate}{/if}{/if}\n \n \n \n \n {ts}Participant Role{/ts}:\n \n \n {$participant.role}\n \n \n\n {if $isShowLocation}\n \n \n {$event.location.address.1.display|nl2br}\n \n \n {/if}\n\n {if !empty($event.location.phone.1.phone) || !empty($event.location.email.1.email)}\n \n \n {ts}Event Contacts:{/ts}\n \n \n {foreach from=$event.location.phone item=phone}\n {if $phone.phone}\n \n \n {if $phone.phone_type}{$phone.phone_type_display}{else}{ts}Phone{/ts}{/if}\n \n \n {$phone.phone}\n \n \n {/if}\n {/foreach}\n {foreach from=$event.location.email item=eventEmail}\n {if $eventEmail.email}\n \n \n {ts}Email{/ts}\n \n \n {$eventEmail.email}\n \n \n {/if}\n {/foreach}\n {/if}\n\n {if \'{contact.email}\'}\n \n \n {ts}Registered Email{/ts}\n \n \n \n \n {contact.email}\n \n \n {/if}\n\n {if $register_date}\n \n \n {ts}Registration Date{/ts}\n \n \n {$participant.register_date|crmDate}\n \n \n {/if}\n\n
\n \n \n\n \n \n {ts 1=\'{domain.phone}\' 2=\'{domain.email}\'}Please contact us at %1 or send email to %2 if you have questions.{/ts}
\n \n \n\n
\n\n\n\n',1,833,'participant_expired',1,0,0,NULL),
- (40,'Events - Pending Registration Expiration Notice','{ts 1=$event.event_title}Event registration has expired for %1{/ts} - {contact.display_name}\n','','\n\n\n \n \n\n\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n \n\n \n \n \n\n \n\n \n \n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},
{/if}\n {ts 1=$event.event_title}Your pending event registration for %1 has expired\nbecause you did not confirm your registration.{/ts}
\n {ts 1=\'{domain.phone}\' 2=\'{domain.email}\'}Please contact us at %1 or send email to %2 if you have questions\nor want to inquire about reinstating your registration for this event.{/ts}
\n \n \n \n \n \n \n \n {ts}Event Information and Location{/ts}\n \n \n \n \n {$event.event_title} \n {$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|crmDate:\"%Y%m%d\" == $event.event_start_date|crmDate:\"%Y%m%d\"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate}{/if}{/if}\n \n \n \n \n {ts}Participant Role{/ts}:\n \n \n {$participant.role}\n \n \n\n {if $isShowLocation}\n \n \n {$event.location.address.1.display|nl2br}\n \n \n {/if}\n\n {if !empty($event.location.phone.1.phone) || !empty($event.location.email.1.email)}\n \n \n {ts}Event Contacts:{/ts}\n \n \n {foreach from=$event.location.phone item=phone}\n {if $phone.phone}\n \n \n {if $phone.phone_type}{$phone.phone_type_display}{else}{ts}Phone{/ts}{/if}\n \n \n {$phone.phone}\n \n \n {/if}\n {/foreach}\n {foreach from=$event.location.email item=eventEmail}\n {if $eventEmail.email}\n \n \n {ts}Email{/ts}\n \n \n {$eventEmail.email}\n \n \n {/if}\n {/foreach}\n {/if}\n\n {if \'{contact.email}\'}\n \n \n {ts}Registered Email{/ts}\n \n \n \n \n {contact.email}\n \n \n {/if}\n\n {if $register_date}\n \n \n {ts}Registration Date{/ts}\n \n \n {$participant.register_date|crmDate}\n \n \n {/if}\n\n
\n \n \n\n \n \n {ts 1=\'{domain.phone}\' 2=\'{domain.email}\'}Please contact us at %1 or send email to %2 if you have questions.{/ts}
\n \n \n\n
\n\n\n\n',1,833,'participant_expired',0,1,0,NULL),
- (41,'Events - Registration Transferred Notice','{ts 1=$event.event_title}Event Registration Transferred for %1{/ts} - {contact.display_name}\n','','\n\n\n \n \n\n\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n \n\n \n \n \n\n \n\n \n \n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},
{/if}\n {ts 1=$to_participant}Your Event Registration has been Transferred to %1.{/ts}
\n \n \n \n \n \n \n \n {ts}Event Information and Location{/ts}\n \n \n \n \n {$event.event_title} \n {$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|crmDate:\"%Y%m%d\" == $event.event_start_date|crmDate:\"%Y%m%d\"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate}{/if}{/if}\n \n \n \n \n {ts}Participant Role{/ts}:\n \n \n {$participant.role}\n \n \n\n {if $isShowLocation}\n \n \n {$event.location.address.1.display|nl2br}\n \n \n {/if}\n\n {if !empty($event.location.phone.1.phone) || !empty($event.location.email.1.email)}\n \n \n {ts}Event Contacts:{/ts}\n \n \n {foreach from=$event.location.phone item=phone}\n {if $phone.phone}\n \n \n {if $phone.phone_type}{$phone.phone_type_display}{else}{ts}Phone{/ts}{/if}\n \n \n {$phone.phone}\n \n \n {/if}\n {/foreach}\n {foreach from=$event.location.email item=eventEmail}\n {if $eventEmail.email}\n \n \n {ts}Email{/ts}\n \n \n {$eventEmail.email}\n \n \n {/if}\n {/foreach}\n {/if}\n\n {if \'{contact.email}\'}\n \n \n {ts}Registered Email{/ts}\n \n \n \n \n {contact.email}\n \n \n {/if}\n\n {if $register_date}\n \n \n {ts}Registration Date{/ts}\n \n \n {$participant.register_date|crmDate}\n \n \n {/if}\n\n
\n \n \n\n \n \n {ts 1=\'{domain.phone}\' 2=\'{domain.email}\'}Please contact us at %1 or send email to %2 if you have questions.{/ts}
\n \n \n\n
\n\n\n\n',1,834,'participant_transferred',1,0,0,NULL),
- (42,'Events - Registration Transferred Notice','{ts 1=$event.event_title}Event Registration Transferred for %1{/ts} - {contact.display_name}\n','','\n\n\n \n \n\n\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n \n\n \n \n \n\n \n\n \n \n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},
{/if}\n {ts 1=$to_participant}Your Event Registration has been Transferred to %1.{/ts}
\n \n \n \n \n \n \n \n {ts}Event Information and Location{/ts}\n \n \n \n \n {$event.event_title} \n {$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|crmDate:\"%Y%m%d\" == $event.event_start_date|crmDate:\"%Y%m%d\"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate}{/if}{/if}\n \n \n \n \n {ts}Participant Role{/ts}:\n \n \n {$participant.role}\n \n \n\n {if $isShowLocation}\n \n \n {$event.location.address.1.display|nl2br}\n \n \n {/if}\n\n {if !empty($event.location.phone.1.phone) || !empty($event.location.email.1.email)}\n \n \n {ts}Event Contacts:{/ts}\n \n \n {foreach from=$event.location.phone item=phone}\n {if $phone.phone}\n \n \n {if $phone.phone_type}{$phone.phone_type_display}{else}{ts}Phone{/ts}{/if}\n \n \n {$phone.phone}\n \n \n {/if}\n {/foreach}\n {foreach from=$event.location.email item=eventEmail}\n {if $eventEmail.email}\n \n \n {ts}Email{/ts}\n \n \n {$eventEmail.email}\n \n \n {/if}\n {/foreach}\n {/if}\n\n {if \'{contact.email}\'}\n \n \n {ts}Registered Email{/ts}\n \n \n \n \n {contact.email}\n \n \n {/if}\n\n {if $register_date}\n \n \n {ts}Registration Date{/ts}\n \n \n {$participant.register_date|crmDate}\n \n \n {/if}\n\n
\n \n \n\n \n \n {ts 1=\'{domain.phone}\' 2=\'{domain.email}\'}Please contact us at %1 or send email to %2 if you have questions.{/ts}
\n \n \n\n
\n\n\n\n',1,834,'participant_transferred',0,1,0,NULL),
- (43,'Tell-a-Friend Email','{ts 1=$senderContactName 2=$title}%1 wants you to know about %2{/ts}\n','{$senderMessage}\n\n{if $generalLink}{ts}For more information, visit:{/ts}\n>> {$generalLink}\n\n{/if}\n{if $contribute}{ts}To make a contribution, go to:{/ts}\n>> {$pageURL}\n\n{/if}\n{if $event}{ts}To find out more about this event, go to:{/ts}\n>> {$pageURL}\n{/if}\n\n\n','\n\n\n \n \n\n\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n \n\n\n\n',1,835,'friend',1,0,0,NULL),
- (44,'Tell-a-Friend Email','{ts 1=$senderContactName 2=$title}%1 wants you to know about %2{/ts}\n','{$senderMessage}\n\n{if $generalLink}{ts}For more information, visit:{/ts}\n>> {$generalLink}\n\n{/if}\n{if $contribute}{ts}To make a contribution, go to:{/ts}\n>> {$pageURL}\n\n{/if}\n{if $event}{ts}To find out more about this event, go to:{/ts}\n>> {$pageURL}\n{/if}\n\n\n','\n\n\n \n \n\n\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n \n\n\n\n',1,835,'friend',0,1,0,NULL),
- (45,'Memberships - Signup and Renewal Receipts (off-line)','{if $receiptType EQ \'membership signup\'}\n{ts}Membership Confirmation and Receipt{/ts}\n{elseif $receiptType EQ \'membership renewal\'}\n{ts}Membership Renewal Confirmation and Receipt{/ts}\n{/if} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{if $userTextPlain}\n{$userTextPlain}\n{else}{ts}Thank you for this contribution.{/ts}{/if}\n\n{if !$isShowLineItems}\n===========================================================\n{ts}Membership Information{/ts}\n\n===========================================================\n{ts}Membership Type{/ts}: {membership.membership_type_id:name}\n{/if}\n{if \'{membership.status_id:name}\' !== \'Cancelled\'}\n{if !$isShowLineItems}\n{ts}Membership Start Date{/ts}: {membership.start_date|crmDate:\"Full\"}\n{ts}Membership Expiration Date{/ts}: {membership.end_date|crmDate:\"Full\"}\n{/if}\n\n{if {contribution.total_amount|boolean}}\n===========================================================\n{ts}Membership Fee{/ts}\n\n===========================================================\n{if {contribution.financial_type_id|boolean}}\n{ts}Financial Type{/ts}: {contribution.financial_type_id:label}\n{/if}\n{if $isShowLineItems}\n{capture assign=ts_item}{ts}Item{/ts}{/capture}\n{capture assign=ts_total}{ts}Fee{/ts}{/capture}\n{if $isShowTax && \'{contribution.tax_amount|boolean}\'}\n{capture assign=ts_subtotal}{ts}Subtotal{/ts}{/capture}\n{capture assign=ts_taxRate}{ts}Tax Rate{/ts}{/capture}\n{capture assign=ts_taxAmount}{ts}Tax Amount{/ts}{/capture}\n{capture assign=ts_total}{ts}Total{/ts}{/capture}\n{/if}\n{capture assign=ts_start_date}{ts}Membership Start Date{/ts}{/capture}\n{capture assign=ts_end_date}{ts}Membership Expiration Date{/ts}{/capture}\n{$ts_item|string_format:\"%-30s\"} {$ts_total|string_format:\"%10s\"} {if $isShowTax && {contribution.tax_amount|boolean}} {$ts_subtotal|string_format:\"%10s\"} {$ts_taxRate|string_format:\"%10s\"} {$ts_taxAmount|string_format:\"%10s\"} {$ts_total|string_format:\"%10s\"} {/if} {$ts_start_date|string_format:\"%20s\"} {$ts_end_date|string_format:\"%20s\"}\n--------------------------------------------------------------------------------------------------\n\n{foreach from=$lineItems item=line}\n{line.title} {$line.line_total|crmMoney|string_format:\"%10s\"} {if $isShowTax && {contribution.tax_amount|boolean}} {$line.line_total|crmMoney:\'{contribution.currency}\'|string_format:\"%10s\"} {if $line.tax_rate || $line.tax_amount != \"\"} {$line.tax_rate|string_format:\"%.2f\"} % {$line.tax_amount|crmMoney:\'{contribution.currency}\'|string_format:\"%10s\"} {else} {/if} {$line.line_total_inclusive|crmMoney|string_format:\"%10s\"} {/if} {$line.membership.start_date|string_format:\"%20s\"} {$line.membership.end_date|string_format:\"%20s\"}\n{/foreach}\n\n{if $isShowTax && {contribution.tax_amount|boolean}}\n{ts}Amount before Tax:{/ts} {contribution.tax_exclusive_amount}\n\n{foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n{if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else} {$taxTerm} {$taxDetail.percentage}%{/if}: {$taxDetail.amount|crmMoney:\'{contribution.currency}\'}\n{/foreach}\n{/if}\n--------------------------------------------------------------------------------------------------\n{/if}\n\n{if {contribution.tax_amount|boolean}}\n{ts}Total Tax Amount{/ts}: {contribution.tax_amount}\n{/if}\n\n{ts}Amount{/ts}: {contribution.total_amount}\n{if {contribution.receive_date|boolean}}\n{ts}Contribution Date{/ts}: {contribution.receive_date}\n{/if}\n{if {contribution.payment_instrument_id|boolean}}\n{ts}Paid By{/ts}: {contribution.payment_instrument_id:label}\n{if {contribution.check_number|boolean}}\n{ts}Check Number{/ts}: {contribution.check_number|boolean}\n{/if}\n{/if}\n{/if}\n{/if}\n\n{if !empty($isPrimary)}\n{if !empty($billingName)}\n\n===========================================================\n{ts}Billing Name and Address{/ts}\n\n===========================================================\n{$billingName}\n{$address}\n{/if}\n\n{if !empty($credit_card_type)}\n===========================================================\n{ts}Credit Card Information{/ts}\n\n===========================================================\n{$credit_card_type}\n{$credit_card_number}\n{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n{/if}\n{/if}\n\n{if !empty($customValues)}\n===========================================================\n{ts}Membership Options{/ts}\n\n===========================================================\n{foreach from=$customValues item=value key=customName}\n {$customName} : {$value}\n{/foreach}\n{/if}\n','\n\n\n \n \n\n\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n \n\n \n \n \n\n \n\n \n \n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},
{/if}\n {if $userText}\n {$userText}
\n {else}\n {ts}Thank you for this contribution.{/ts}
\n {/if}\n \n \n \n \n \n {if !$isShowLineItems}\n \n \n {ts}Membership Information{/ts}\n \n \n \n \n {ts}Membership Type{/ts}\n \n \n {membership.membership_type_id:name}\n \n \n {/if}\n {if \'{membership.status_id:name}\' !== \'Cancelled\'}\n {if !$isShowLineItems}\n \n \n {ts}Membership Start Date{/ts}\n \n \n {membership.start_date|crmDate:\"Full\"}\n \n \n \n \n {ts}Membership Expiration Date{/ts}\n \n \n {membership.end_date|crmDate:\"Full\"}\n \n \n {/if}\n {if {contribution.total_amount|boolean}}\n \n \n {ts}Membership Fee{/ts}\n \n \n {if {contribution.financial_type_id|boolean}}\n \n \n {ts}Financial Type{/ts}\n \n \n {contribution.financial_type_id:label}\n \n \n {/if}\n\n {if $isShowLineItems}\n \n \n \n \n {ts}Item{/ts} \n {ts}Fee{/ts} \n {if $isShowTax && {contribution.tax_amount|boolean}}\n {ts}SubTotal{/ts} \n {ts}Tax Rate{/ts} \n {ts}Tax Amount{/ts} \n {ts}Total{/ts} \n {/if}\n {ts}Membership Start Date{/ts} \n {ts}Membership Expiration Date{/ts} \n \n {foreach from=$lineItems item=line}\n \n {$line.title} \n \n {$line.line_total|crmMoney}\n \n {if $isShowTax && {contribution.tax_amount|boolean}}\n \n {$line.line_total|crmMoney:\'{contribution.currency}\'}\n \n {if $line.tax_rate || $line.tax_amount != \"\"}\n \n {$line.tax_rate|string_format:\"%.2f\"}%\n \n \n {$line.tax_amount|crmMoney:\'{contribution.currency}\'}\n \n {else}\n \n \n {/if}\n \n {$line.line_total_inclusive|crmMoney:\'{contribution.currency}\'}\n \n {/if}\n \n {$line.membership.start_date|crmDate:\"Full\"}\n \n \n {$line.membership.end_date|crmDate:\"Full\"}\n \n \n {/foreach}\n
\n \n \n\n {if $isShowTax && {contribution.tax_amount|boolean}}\n \n \n {ts}Amount Before Tax:{/ts}\n \n \n {contribution.tax_exclusive_amount}\n \n \n {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n \n {if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else} {$taxTerm} {$taxDetail.percentage}%{/if} \n {$taxDetail.amount|crmMoney:\'{contribution.currency}\'} \n \n {/foreach}\n {/if}\n {/if}\n {if {contribution.tax_amount|boolean}}\n \n \n {ts}Total Tax Amount{/ts}\n \n \n {contribution.tax_amount}\n \n \n {/if}\n \n \n {ts}Amount{/ts}\n \n \n {contribution.total_amount}\n \n \n {if {contribution.receive_date|boolean}}\n \n \n {ts}Contribution Date{/ts}\n \n \n {contribution.receive_date}\n \n \n {/if}\n {if {contribution.payment_instrument_id|boolean} && {contribution.paid_amount|boolean}}\n \n \n {ts}Paid By{/ts}\n \n \n {contribution.payment_instrument_id:label}\n \n \n {if {contribution.check_number|boolean}}\n \n \n {ts}Check Number{/ts}\n \n \n {contribution.check_number}\n \n \n {/if}\n {/if}\n {/if}\n {/if}\n
\n \n \n\n {if !empty($isPrimary)}\n \n \n \n\n {if !empty($billingName)}\n \n \n {ts}Billing Name and Address{/ts}\n \n \n \n \n {$billingName} \n {$address}\n \n \n {/if}\n\n {if !empty($credit_card_type)}\n \n \n {ts}Credit Card Information{/ts}\n \n \n \n \n {$credit_card_type} \n {$credit_card_number}\n \n \n \n \n {ts}Expires{/ts}\n \n \n {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n \n \n {/if}\n\n
\n \n \n {/if}\n\n {if !empty($customValues)}\n \n \n \n \n \n {ts}Membership Options{/ts}\n \n \n {foreach from=$customValues item=value key=customName}\n \n \n {$customName}\n \n \n {$value}\n \n \n {/foreach}\n
\n \n \n {/if}\n\n
\n\n\n\n',1,836,'membership_offline_receipt',1,0,0,NULL),
- (46,'Memberships - Signup and Renewal Receipts (off-line)','{if $receiptType EQ \'membership signup\'}\n{ts}Membership Confirmation and Receipt{/ts}\n{elseif $receiptType EQ \'membership renewal\'}\n{ts}Membership Renewal Confirmation and Receipt{/ts}\n{/if} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{if $userTextPlain}\n{$userTextPlain}\n{else}{ts}Thank you for this contribution.{/ts}{/if}\n\n{if !$isShowLineItems}\n===========================================================\n{ts}Membership Information{/ts}\n\n===========================================================\n{ts}Membership Type{/ts}: {membership.membership_type_id:name}\n{/if}\n{if \'{membership.status_id:name}\' !== \'Cancelled\'}\n{if !$isShowLineItems}\n{ts}Membership Start Date{/ts}: {membership.start_date|crmDate:\"Full\"}\n{ts}Membership Expiration Date{/ts}: {membership.end_date|crmDate:\"Full\"}\n{/if}\n\n{if {contribution.total_amount|boolean}}\n===========================================================\n{ts}Membership Fee{/ts}\n\n===========================================================\n{if {contribution.financial_type_id|boolean}}\n{ts}Financial Type{/ts}: {contribution.financial_type_id:label}\n{/if}\n{if $isShowLineItems}\n{capture assign=ts_item}{ts}Item{/ts}{/capture}\n{capture assign=ts_total}{ts}Fee{/ts}{/capture}\n{if $isShowTax && \'{contribution.tax_amount|boolean}\'}\n{capture assign=ts_subtotal}{ts}Subtotal{/ts}{/capture}\n{capture assign=ts_taxRate}{ts}Tax Rate{/ts}{/capture}\n{capture assign=ts_taxAmount}{ts}Tax Amount{/ts}{/capture}\n{capture assign=ts_total}{ts}Total{/ts}{/capture}\n{/if}\n{capture assign=ts_start_date}{ts}Membership Start Date{/ts}{/capture}\n{capture assign=ts_end_date}{ts}Membership Expiration Date{/ts}{/capture}\n{$ts_item|string_format:\"%-30s\"} {$ts_total|string_format:\"%10s\"} {if $isShowTax && {contribution.tax_amount|boolean}} {$ts_subtotal|string_format:\"%10s\"} {$ts_taxRate|string_format:\"%10s\"} {$ts_taxAmount|string_format:\"%10s\"} {$ts_total|string_format:\"%10s\"} {/if} {$ts_start_date|string_format:\"%20s\"} {$ts_end_date|string_format:\"%20s\"}\n--------------------------------------------------------------------------------------------------\n\n{foreach from=$lineItems item=line}\n{line.title} {$line.line_total|crmMoney|string_format:\"%10s\"} {if $isShowTax && {contribution.tax_amount|boolean}} {$line.line_total|crmMoney:\'{contribution.currency}\'|string_format:\"%10s\"} {if $line.tax_rate || $line.tax_amount != \"\"} {$line.tax_rate|string_format:\"%.2f\"} % {$line.tax_amount|crmMoney:\'{contribution.currency}\'|string_format:\"%10s\"} {else} {/if} {$line.line_total_inclusive|crmMoney|string_format:\"%10s\"} {/if} {$line.membership.start_date|string_format:\"%20s\"} {$line.membership.end_date|string_format:\"%20s\"}\n{/foreach}\n\n{if $isShowTax && {contribution.tax_amount|boolean}}\n{ts}Amount before Tax:{/ts} {contribution.tax_exclusive_amount}\n\n{foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n{if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else} {$taxTerm} {$taxDetail.percentage}%{/if}: {$taxDetail.amount|crmMoney:\'{contribution.currency}\'}\n{/foreach}\n{/if}\n--------------------------------------------------------------------------------------------------\n{/if}\n\n{if {contribution.tax_amount|boolean}}\n{ts}Total Tax Amount{/ts}: {contribution.tax_amount}\n{/if}\n\n{ts}Amount{/ts}: {contribution.total_amount}\n{if {contribution.receive_date|boolean}}\n{ts}Contribution Date{/ts}: {contribution.receive_date}\n{/if}\n{if {contribution.payment_instrument_id|boolean}}\n{ts}Paid By{/ts}: {contribution.payment_instrument_id:label}\n{if {contribution.check_number|boolean}}\n{ts}Check Number{/ts}: {contribution.check_number|boolean}\n{/if}\n{/if}\n{/if}\n{/if}\n\n{if !empty($isPrimary)}\n{if !empty($billingName)}\n\n===========================================================\n{ts}Billing Name and Address{/ts}\n\n===========================================================\n{$billingName}\n{$address}\n{/if}\n\n{if !empty($credit_card_type)}\n===========================================================\n{ts}Credit Card Information{/ts}\n\n===========================================================\n{$credit_card_type}\n{$credit_card_number}\n{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n{/if}\n{/if}\n\n{if !empty($customValues)}\n===========================================================\n{ts}Membership Options{/ts}\n\n===========================================================\n{foreach from=$customValues item=value key=customName}\n {$customName} : {$value}\n{/foreach}\n{/if}\n','\n\n\n \n \n\n\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n \n\n \n \n \n\n \n\n \n \n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},
{/if}\n {if $userText}\n {$userText}
\n {else}\n {ts}Thank you for this contribution.{/ts}
\n {/if}\n \n \n \n \n \n {if !$isShowLineItems}\n \n \n {ts}Membership Information{/ts}\n \n \n \n \n {ts}Membership Type{/ts}\n \n \n {membership.membership_type_id:name}\n \n \n {/if}\n {if \'{membership.status_id:name}\' !== \'Cancelled\'}\n {if !$isShowLineItems}\n \n \n {ts}Membership Start Date{/ts}\n \n \n {membership.start_date|crmDate:\"Full\"}\n \n \n \n \n {ts}Membership Expiration Date{/ts}\n \n \n {membership.end_date|crmDate:\"Full\"}\n \n \n {/if}\n {if {contribution.total_amount|boolean}}\n \n \n {ts}Membership Fee{/ts}\n \n \n {if {contribution.financial_type_id|boolean}}\n \n \n {ts}Financial Type{/ts}\n \n \n {contribution.financial_type_id:label}\n \n \n {/if}\n\n {if $isShowLineItems}\n \n \n \n \n {ts}Item{/ts} \n {ts}Fee{/ts} \n {if $isShowTax && {contribution.tax_amount|boolean}}\n {ts}SubTotal{/ts} \n {ts}Tax Rate{/ts} \n {ts}Tax Amount{/ts} \n {ts}Total{/ts} \n {/if}\n {ts}Membership Start Date{/ts} \n {ts}Membership Expiration Date{/ts} \n \n {foreach from=$lineItems item=line}\n \n {$line.title} \n \n {$line.line_total|crmMoney}\n \n {if $isShowTax && {contribution.tax_amount|boolean}}\n \n {$line.line_total|crmMoney:\'{contribution.currency}\'}\n \n {if $line.tax_rate || $line.tax_amount != \"\"}\n \n {$line.tax_rate|string_format:\"%.2f\"}%\n \n \n {$line.tax_amount|crmMoney:\'{contribution.currency}\'}\n \n {else}\n \n \n {/if}\n \n {$line.line_total_inclusive|crmMoney:\'{contribution.currency}\'}\n \n {/if}\n \n {$line.membership.start_date|crmDate:\"Full\"}\n \n \n {$line.membership.end_date|crmDate:\"Full\"}\n \n \n {/foreach}\n
\n \n \n\n {if $isShowTax && {contribution.tax_amount|boolean}}\n \n \n {ts}Amount Before Tax:{/ts}\n \n \n {contribution.tax_exclusive_amount}\n \n \n {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n \n {if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else} {$taxTerm} {$taxDetail.percentage}%{/if} \n {$taxDetail.amount|crmMoney:\'{contribution.currency}\'} \n \n {/foreach}\n {/if}\n {/if}\n {if {contribution.tax_amount|boolean}}\n \n \n {ts}Total Tax Amount{/ts}\n \n \n {contribution.tax_amount}\n \n \n {/if}\n \n \n {ts}Amount{/ts}\n \n \n {contribution.total_amount}\n \n \n {if {contribution.receive_date|boolean}}\n \n \n {ts}Contribution Date{/ts}\n \n \n {contribution.receive_date}\n \n \n {/if}\n {if {contribution.payment_instrument_id|boolean} && {contribution.paid_amount|boolean}}\n \n \n {ts}Paid By{/ts}\n \n \n {contribution.payment_instrument_id:label}\n \n \n {if {contribution.check_number|boolean}}\n \n \n {ts}Check Number{/ts}\n \n \n {contribution.check_number}\n \n \n {/if}\n {/if}\n {/if}\n {/if}\n
\n \n \n\n {if !empty($isPrimary)}\n \n \n \n\n {if !empty($billingName)}\n \n \n {ts}Billing Name and Address{/ts}\n \n \n \n \n {$billingName} \n {$address}\n \n \n {/if}\n\n {if !empty($credit_card_type)}\n \n \n {ts}Credit Card Information{/ts}\n \n \n \n \n {$credit_card_type} \n {$credit_card_number}\n \n \n \n \n {ts}Expires{/ts}\n \n \n {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n \n \n {/if}\n\n
\n \n \n {/if}\n\n {if !empty($customValues)}\n \n \n \n \n \n {ts}Membership Options{/ts}\n \n \n {foreach from=$customValues item=value key=customName}\n \n \n {$customName}\n \n \n {$value}\n \n \n {/foreach}\n
\n \n \n {/if}\n\n
\n\n\n\n',1,836,'membership_offline_receipt',0,1,0,NULL),
- (47,'Memberships - Receipt (on-line)','{if \'{contribution.contribution_status_id:name}\' === \'Pending\'}{ts}Invoice{/ts}{else}{ts}Receipt{/ts}{/if} - {contribution.contribution_page_id.frontend_title} - {contact.display_name}\n','','\n\n\n \n \n\n\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n \n\n \n \n \n\n \n\n \n \n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},
{/if}\n {if $userText}\n {$userText}
\n {/if}\n {if {contribution.balance_amount|boolean} && {contribution.is_pay_later|boolean}}\n {contribution.contribution_page_id.pay_later_receipt}
\n {/if}\n\n \n \n
\n \n {if {membership.id|boolean} && !$isShowLineItems}\n \n \n {ts}Membership Information{/ts}\n \n \n \n \n {ts}Membership Type{/ts}\n \n \n {ts}{membership.membership_type_id:label}{/ts}\n \n \n {if {membership.start_date|boolean}}\n \n \n {ts}Membership Start Date{/ts}\n \n \n {membership.start_date}\n \n \n {/if}\n {if {membership.end_date|boolean}}\n \n \n {ts}Membership Expiration Date{/ts}\n \n \n {membership.end_date}\n \n \n {/if}\n {/if}\n {if {contribution.total_amount|boolean}}\n \n {ts}Membership Fee{/ts} \n \n\n {if !$isShowLineItems && {contribution.total_amount|boolean}}\n {foreach from=$lineItems item=line}\n \n \n {if $line.membership_type_id}\n {ts 1=\"{membership.membership_type_id:label}\"}%1 Membership{/ts}\n {else}\n {ts}Contribution Amount{/ts}\n {/if}\n \n \n {$line.line_total_inclusive|crmMoney:\'{contribution.currency}\'}\n \n \n {/foreach}\n {elseif $isShowLineItems}\n \n \n \n \n {ts}Item{/ts} \n {ts}Fee{/ts} \n {if $isShowTax && {contribution.tax_amount|boolean}}\n {ts}SubTotal{/ts} \n {ts}Tax Rate{/ts} \n {ts}Tax Amount{/ts} \n {ts}Total{/ts} \n {/if}\n {ts}Membership Start Date{/ts} \n {ts}Membership Expiration Date{/ts} \n \n {foreach from=$lineItems item=line}\n \n {$line.title} \n \n {$line.line_total|crmMoney}\n \n {if $isShowTax && {contribution.tax_amount|boolean}}\n \n {$line.line_total|crmMoney:\'{contribution.currency}\'}\n \n {if $line.tax_rate || $line.tax_amount != \"\"}\n \n {$line.tax_rate|string_format:\"%.2f\"}%\n \n \n {$line.tax_amount|crmMoney:\'{contribution.currency}\'}\n \n {else}\n \n \n {/if}\n \n {$line.line_total_inclusive|crmMoney:\'{contribution.currency}\'}\n \n {/if}\n \n {$line.membership.start_date|crmDate:\"Full\"}\n \n \n {$line.membership.end_date|crmDate:\"Full\"}\n \n \n {/foreach}\n
\n \n \n\n {if $isShowTax && {contribution.tax_amount|boolean}}\n \n \n {ts}Amount Before Tax:{/ts}\n \n \n {contribution.tax_exclusive_amount}\n \n \n {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n \n {if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else} {$taxTerm} {$taxDetail.percentage}%{/if} \n {$taxDetail.amount|crmMoney:\'{contribution.currency}\'} \n \n {/foreach}\n {/if}\n {/if}\n \n \n {ts}Amount{/ts}\n \n \n {contribution.total_amount}\n \n \n {/if}\n\n {if {contribution.receive_date|boolean}}\n \n \n {ts}Date{/ts}\n \n \n {contribution.receive_date}\n \n \n {/if}\n\n {if {contribution.trxn_id|boolean}}\n \n \n {ts}Transaction #{/ts}\n \n \n {contribution.trxn_id}\n \n \n {/if}\n\n {if {contribution.contribution_recur_id|boolean}}\n \n \n {ts}This membership will be renewed automatically.{/ts}\n {if $cancelSubscriptionUrl}\n {ts 1=$cancelSubscriptionUrl}You can cancel the auto-renewal option by visiting this web page .{/ts}\n {/if}\n \n \n {if $updateSubscriptionBillingUrl}\n \n \n {ts 1=$updateSubscriptionBillingUrl}You can update billing details for this automatically renewed membership by visiting this web page .{/ts}\n \n \n {/if}\n {/if}\n\n {if $honor_block_is_active}\n \n \n {$soft_credit_type}\n \n \n {foreach from=$honoreeProfile item=value key=label}\n \n \n {$label}\n \n \n {$value}\n \n \n {/foreach}\n {/if}\n\n {if !empty($pcpBlock)}\n \n \n {ts}Personal Campaign Page{/ts}\n \n \n \n \n {ts}Display In Honor Roll{/ts}\n \n \n {if $pcp_display_in_roll}{ts}Yes{/ts}{else}{ts}No{/ts}{/if}\n \n \n {if $pcp_roll_nickname}\n \n \n {ts}Nickname{/ts}\n \n \n {$pcp_roll_nickname}\n \n \n {/if}\n {if $pcp_personal_note}\n \n \n {ts}Personal Note{/ts}\n \n \n {$pcp_personal_note}\n \n \n {/if}\n {/if}\n\n {if !empty($onBehalfProfile)}\n \n \n {$onBehalfProfile_grouptitle}\n \n \n {foreach from=$onBehalfProfile item=onBehalfValue key=onBehalfName}\n \n \n {$onBehalfName}\n \n \n {$onBehalfValue}\n \n \n {/foreach}\n {/if}\n\n {if {contribution.address_id.display|boolean}}\n \n \n {ts}Billing Name and Address{/ts}\n \n \n \n \n {contribution.address_id.name} \n {contribution.address_id.display}\n \n \n {/if}\n {if {contact.email_primary.email|boolean}}\n \n \n {ts}Registered Email{/ts}\n \n \n \n \n {contact.email_primary.email}\n \n \n {/if}\n\n {if !empty($credit_card_type)}\n \n \n {ts}Credit Card Information{/ts}\n \n \n \n \n {$credit_card_type} \n {$credit_card_number} \n {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate} \n \n \n {/if}\n\n {if !empty($selectPremium)}\n \n \n {ts}Premium Information{/ts}\n \n \n \n \n {$product_name}\n \n \n {if $option}\n \n \n {ts}Option{/ts}\n \n \n {$option}\n \n \n {/if}\n {if $sku}\n \n \n {ts}SKU{/ts}\n \n \n {$sku}\n \n \n {/if}\n {if $start_date}\n \n \n {ts}Start Date{/ts}\n \n \n {$start_date|crmDate}\n \n \n {/if}\n {if $end_date}\n \n \n {ts}End Date{/ts}\n \n \n {$end_date|crmDate}\n \n \n {/if}\n {if !empty($contact_email) OR !empty($contact_phone)}\n \n \n {ts}For information about this premium, contact:{/ts}
\n {if !empty($contact_email)}\n {$contact_email}
\n {/if}\n {if !empty($contact_phone)}\n {$contact_phone}
\n {/if}\n \n \n {/if}\n {if $is_deductible AND !empty($price)}\n \n \n {ts 1=$price|crmMoney}The value of this premium is %1. This may affect the amount of the tax deduction you can claim. Consult your tax advisor for more information.{/ts}
\n \n \n {/if}\n {/if}\n\n {if !empty($customPre)}\n \n \n {$customPre_grouptitle}\n \n \n {foreach from=$customPre item=customValue key=customName}\n \n \n {$customName}\n \n \n {$customValue}\n \n \n {/foreach}\n {/if}\n\n {if !empty($customPost)}\n \n \n {$customPost_grouptitle}\n \n \n {foreach from=$customPost item=customValue key=customName}\n \n \n {$customName}\n \n \n {$customValue}\n \n \n {/foreach}\n {/if}\n\n
\n\n\n\n',1,837,'membership_online_receipt',1,0,0,NULL),
- (48,'Memberships - Receipt (on-line)','{if \'{contribution.contribution_status_id:name}\' === \'Pending\'}{ts}Invoice{/ts}{else}{ts}Receipt{/ts}{/if} - {contribution.contribution_page_id.frontend_title} - {contact.display_name}\n','','\n\n\n \n \n\n\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n \n\n \n \n \n\n \n\n \n \n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},
{/if}\n {if $userText}\n {$userText}
\n {/if}\n {if {contribution.balance_amount|boolean} && {contribution.is_pay_later|boolean}}\n {contribution.contribution_page_id.pay_later_receipt}
\n {/if}\n\n \n \n
\n \n {if {membership.id|boolean} && !$isShowLineItems}\n \n \n {ts}Membership Information{/ts}\n \n \n \n \n {ts}Membership Type{/ts}\n \n \n {ts}{membership.membership_type_id:label}{/ts}\n \n \n {if {membership.start_date|boolean}}\n \n \n {ts}Membership Start Date{/ts}\n \n \n {membership.start_date}\n \n \n {/if}\n {if {membership.end_date|boolean}}\n \n \n {ts}Membership Expiration Date{/ts}\n \n \n {membership.end_date}\n \n \n {/if}\n {/if}\n {if {contribution.total_amount|boolean}}\n \n {ts}Membership Fee{/ts} \n \n\n {if !$isShowLineItems && {contribution.total_amount|boolean}}\n {foreach from=$lineItems item=line}\n \n \n {if $line.membership_type_id}\n {ts 1=\"{membership.membership_type_id:label}\"}%1 Membership{/ts}\n {else}\n {ts}Contribution Amount{/ts}\n {/if}\n \n \n {$line.line_total_inclusive|crmMoney:\'{contribution.currency}\'}\n \n \n {/foreach}\n {elseif $isShowLineItems}\n \n \n \n \n {ts}Item{/ts} \n {ts}Fee{/ts} \n {if $isShowTax && {contribution.tax_amount|boolean}}\n {ts}SubTotal{/ts} \n {ts}Tax Rate{/ts} \n {ts}Tax Amount{/ts} \n {ts}Total{/ts} \n {/if}\n {ts}Membership Start Date{/ts} \n {ts}Membership Expiration Date{/ts} \n \n {foreach from=$lineItems item=line}\n \n {$line.title} \n \n {$line.line_total|crmMoney}\n \n {if $isShowTax && {contribution.tax_amount|boolean}}\n \n {$line.line_total|crmMoney:\'{contribution.currency}\'}\n \n {if $line.tax_rate || $line.tax_amount != \"\"}\n \n {$line.tax_rate|string_format:\"%.2f\"}%\n \n \n {$line.tax_amount|crmMoney:\'{contribution.currency}\'}\n \n {else}\n \n \n {/if}\n \n {$line.line_total_inclusive|crmMoney:\'{contribution.currency}\'}\n \n {/if}\n \n {$line.membership.start_date|crmDate:\"Full\"}\n \n \n {$line.membership.end_date|crmDate:\"Full\"}\n \n \n {/foreach}\n
\n \n \n\n {if $isShowTax && {contribution.tax_amount|boolean}}\n \n \n {ts}Amount Before Tax:{/ts}\n \n \n {contribution.tax_exclusive_amount}\n \n \n {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n \n {if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else} {$taxTerm} {$taxDetail.percentage}%{/if} \n {$taxDetail.amount|crmMoney:\'{contribution.currency}\'} \n \n {/foreach}\n {/if}\n {/if}\n \n \n {ts}Amount{/ts}\n \n \n {contribution.total_amount}\n \n \n {/if}\n\n {if {contribution.receive_date|boolean}}\n \n \n {ts}Date{/ts}\n \n \n {contribution.receive_date}\n \n \n {/if}\n\n {if {contribution.trxn_id|boolean}}\n \n \n {ts}Transaction #{/ts}\n \n \n {contribution.trxn_id}\n \n \n {/if}\n\n {if {contribution.contribution_recur_id|boolean}}\n \n \n {ts}This membership will be renewed automatically.{/ts}\n {if $cancelSubscriptionUrl}\n {ts 1=$cancelSubscriptionUrl}You can cancel the auto-renewal option by visiting this web page .{/ts}\n {/if}\n \n \n {if $updateSubscriptionBillingUrl}\n \n \n {ts 1=$updateSubscriptionBillingUrl}You can update billing details for this automatically renewed membership by visiting this web page .{/ts}\n \n \n {/if}\n {/if}\n\n {if $honor_block_is_active}\n \n \n {$soft_credit_type}\n \n \n {foreach from=$honoreeProfile item=value key=label}\n \n \n {$label}\n \n \n {$value}\n \n \n {/foreach}\n {/if}\n\n {if !empty($pcpBlock)}\n \n \n {ts}Personal Campaign Page{/ts}\n \n \n \n \n {ts}Display In Honor Roll{/ts}\n \n \n {if $pcp_display_in_roll}{ts}Yes{/ts}{else}{ts}No{/ts}{/if}\n \n \n {if $pcp_roll_nickname}\n \n \n {ts}Nickname{/ts}\n \n \n {$pcp_roll_nickname}\n \n \n {/if}\n {if $pcp_personal_note}\n \n \n {ts}Personal Note{/ts}\n \n \n {$pcp_personal_note}\n \n \n {/if}\n {/if}\n\n {if !empty($onBehalfProfile)}\n \n \n {$onBehalfProfile_grouptitle}\n \n \n {foreach from=$onBehalfProfile item=onBehalfValue key=onBehalfName}\n \n \n {$onBehalfName}\n \n \n {$onBehalfValue}\n \n \n {/foreach}\n {/if}\n\n {if {contribution.address_id.display|boolean}}\n \n \n {ts}Billing Name and Address{/ts}\n \n \n \n \n {contribution.address_id.name} \n {contribution.address_id.display}\n \n \n {/if}\n {if {contact.email_primary.email|boolean}}\n \n \n {ts}Registered Email{/ts}\n \n \n \n \n {contact.email_primary.email}\n \n \n {/if}\n\n {if !empty($credit_card_type)}\n \n \n {ts}Credit Card Information{/ts}\n \n \n \n \n {$credit_card_type} \n {$credit_card_number} \n {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate} \n \n \n {/if}\n\n {if !empty($selectPremium)}\n \n \n {ts}Premium Information{/ts}\n \n \n \n \n {$product_name}\n \n \n {if $option}\n \n \n {ts}Option{/ts}\n \n \n {$option}\n \n \n {/if}\n {if $sku}\n \n \n {ts}SKU{/ts}\n \n \n {$sku}\n \n \n {/if}\n {if $start_date}\n \n \n {ts}Start Date{/ts}\n \n \n {$start_date|crmDate}\n \n \n {/if}\n {if $end_date}\n \n \n {ts}End Date{/ts}\n \n \n {$end_date|crmDate}\n \n \n {/if}\n {if !empty($contact_email) OR !empty($contact_phone)}\n \n \n {ts}For information about this premium, contact:{/ts}
\n {if !empty($contact_email)}\n {$contact_email}
\n {/if}\n {if !empty($contact_phone)}\n {$contact_phone}
\n {/if}\n \n \n {/if}\n {if $is_deductible AND !empty($price)}\n \n \n {ts 1=$price|crmMoney}The value of this premium is %1. This may affect the amount of the tax deduction you can claim. Consult your tax advisor for more information.{/ts}
\n \n \n {/if}\n {/if}\n\n {if !empty($customPre)}\n \n \n {$customPre_grouptitle}\n \n \n {foreach from=$customPre item=customValue key=customName}\n \n \n {$customName}\n \n \n {$customValue}\n \n \n {/foreach}\n {/if}\n\n {if !empty($customPost)}\n \n \n {$customPost_grouptitle}\n \n \n {foreach from=$customPost item=customValue key=customName}\n \n \n {$customName}\n \n \n {$customValue}\n \n \n {/foreach}\n {/if}\n\n
\n\n\n\n',1,837,'membership_online_receipt',0,1,0,NULL),
- (49,'Memberships - Auto-renew Cancellation Notification','{ts}Autorenew Membership Cancellation Notification{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{ts 1=$membershipType}The automatic renewal of your %1 membership has been cancelled as requested. This does not affect the status of your membership - you will receive a separate notification when your membership is up for renewal.{/ts}\n\n===========================================================\n{ts}Membership Information{/ts}\n\n===========================================================\n{ts}Membership Status{/ts}: {$membership_status}\n{if $mem_start_date}{ts}Membership Start Date{/ts}: {$mem_start_date|crmDate}\n{/if}\n{if $mem_end_date}{ts}Membership Expiration Date{/ts}: {$mem_end_date|crmDate}\n{/if}\n\n','\n\n\n \n \n\n\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n \n\n \n \n \n\n \n\n \n \n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},
{/if}\n {ts 1=$membershipType}The automatic renewal of your %1 membership has been cancelled as requested. This does not affect the status of your membership - you will receive a separate notification when your membership is up for renewal.{/ts}
\n\n \n \n
\n \n\n \n \n {ts}Membership Information{/ts}\n \n \n \n \n {ts}Membership Status{/ts}\n \n \n {$membership_status}\n \n \n {if $mem_start_date}\n \n \n {ts}Membership Start Date{/ts}\n \n \n {$mem_start_date|crmDate}\n \n \n {/if}\n {if $mem_end_date}\n \n \n {ts}Membership Expiration Date{/ts}\n \n \n {$mem_end_date|crmDate}\n \n \n {/if}\n\n
\n\n\n\n',1,838,'membership_autorenew_cancelled',1,0,0,NULL),
- (50,'Memberships - Auto-renew Cancellation Notification','{ts}Autorenew Membership Cancellation Notification{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{ts 1=$membershipType}The automatic renewal of your %1 membership has been cancelled as requested. This does not affect the status of your membership - you will receive a separate notification when your membership is up for renewal.{/ts}\n\n===========================================================\n{ts}Membership Information{/ts}\n\n===========================================================\n{ts}Membership Status{/ts}: {$membership_status}\n{if $mem_start_date}{ts}Membership Start Date{/ts}: {$mem_start_date|crmDate}\n{/if}\n{if $mem_end_date}{ts}Membership Expiration Date{/ts}: {$mem_end_date|crmDate}\n{/if}\n\n','\n\n\n \n \n\n\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n \n\n \n \n \n\n \n\n \n \n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},
{/if}\n {ts 1=$membershipType}The automatic renewal of your %1 membership has been cancelled as requested. This does not affect the status of your membership - you will receive a separate notification when your membership is up for renewal.{/ts}
\n\n \n \n
\n \n\n \n \n {ts}Membership Information{/ts}\n \n \n \n \n {ts}Membership Status{/ts}\n \n \n {$membership_status}\n \n \n {if $mem_start_date}\n \n \n {ts}Membership Start Date{/ts}\n \n \n {$mem_start_date|crmDate}\n \n \n {/if}\n {if $mem_end_date}\n \n \n {ts}Membership Expiration Date{/ts}\n \n \n {$mem_end_date|crmDate}\n \n \n {/if}\n\n
\n\n\n\n',1,838,'membership_autorenew_cancelled',0,1,0,NULL),
- (51,'Memberships - Auto-renew Billing Updates','{ts}Membership Autorenewal Billing Updates{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{ts 1=$membershipType}Billing details for your automatically renewed %1 membership have been updated.{/ts}\n\n===========================================================\n{ts}Billing Name and Address{/ts}\n\n===========================================================\n{$billingName}\n{$address}\n\n{$email}\n\n===========================================================\n{ts}Credit Card Information{/ts}\n\n===========================================================\n{$credit_card_type}\n{$credit_card_number}\n{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n\n\n{ts 1=$receipt_from_email}If you have questions please contact us at %1{/ts}\n','\n\n\n \n \n\n\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n \n\n \n \n \n\n \n\n \n \n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},
{/if}\n {ts 1=$membershipType}Billing details for your automatically renewed %1 membership have been updated.{/ts}
\n \n \n \n
\n\n \n \n \n {ts}Billing Name and Address{/ts}\n \n \n \n \n {$billingName} \n {$address|nl2br} \n {$email}\n \n \n \n \n {ts}Credit Card Information{/ts}\n \n \n \n \n {$credit_card_type} \n {$credit_card_number} \n {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate} \n \n \n \n \n {ts 1=$receipt_from_email}If you have questions please contact us at %1{/ts}\n \n \n\n
\n\n\n\n',1,839,'membership_autorenew_billing',1,0,0,NULL),
- (52,'Memberships - Auto-renew Billing Updates','{ts}Membership Autorenewal Billing Updates{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{ts 1=$membershipType}Billing details for your automatically renewed %1 membership have been updated.{/ts}\n\n===========================================================\n{ts}Billing Name and Address{/ts}\n\n===========================================================\n{$billingName}\n{$address}\n\n{$email}\n\n===========================================================\n{ts}Credit Card Information{/ts}\n\n===========================================================\n{$credit_card_type}\n{$credit_card_number}\n{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n\n\n{ts 1=$receipt_from_email}If you have questions please contact us at %1{/ts}\n','\n\n\n \n \n\n\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n \n\n \n \n \n\n \n\n \n \n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},
{/if}\n {ts 1=$membershipType}Billing details for your automatically renewed %1 membership have been updated.{/ts}
\n \n \n \n
\n\n \n \n \n {ts}Billing Name and Address{/ts}\n \n \n \n \n {$billingName} \n {$address|nl2br} \n {$email}\n \n \n \n \n {ts}Credit Card Information{/ts}\n \n \n \n \n {$credit_card_type} \n {$credit_card_number} \n {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate} \n \n \n \n \n {ts 1=$receipt_from_email}If you have questions please contact us at %1{/ts}\n \n \n\n
\n\n\n\n',1,839,'membership_autorenew_billing',0,1,0,NULL),
+ (35,'Events - Registration Cancellation Notice','{ts 1=\"{event.title}\"}Event Registration Cancelled for %1{/ts} - {contact.display_name}\n','','\n\n\n \n \n\n\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n \n\n \n \n \n\n \n\n \n \n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},
{/if}\n {ts}Your Event Registration has been cancelled.{/ts}
\n \n \n \n \n \n \n \n {ts}Event Information and Location{/ts}\n \n \n \n \n {event.title} \n {event.start_date|crmDate:\"%A\"} {event.start_date|crmDate}{if {event.end_date|boolean}}-{if \'{event.end_date|crmDate:\"%Y%m%d\"}\' === \'{event.start_date|crmDate:\"%Y%m%d\"}\'}{event.end_date|crmDate:\"Time\"}{else}{event.end_date|crmDate:\"%A\"} {event.end_date|crmDate}{/if}{/if}\n \n \n \n \n {ts}Participant Role{/ts}:\n \n \n {participant.role_id:label}\n \n \n {if {event.is_show_location|boolean}}\n \n \n {event.location}\n \n \n {/if}\n\n {if {event.loc_block_id.phone_id.phone|boolean} || {event.loc_block_id.email_id.email|boolean}}\n \n \n {ts}Event Contacts:{/ts}\n \n \n\n {if {event.loc_block_id.phone_id.phone|boolean}}\n \n \n {if {event.loc_block_id.phone_id.phone_type_id|boolean}}\n {event.loc_block_id.phone_id.phone_type_id:label}\n {else}\n {ts}Phone{/ts}\n {/if}\n \n \n {event.loc_block_id.phone_id.phone} {if {event.loc_block_id.phone_id.phone_ext|boolean}} {ts}ext.{/ts} {event.loc_block_id.phone_id.phone_ext}{/if}\n \n \n {/if}\n {if {event.loc_block_id.phone_2_id.phone|boolean}}\n \n \n {if {event.loc_block_id.phone_2_id.phone_type_id|boolean}}\n {event.loc_block_id.phone_2_id.phone_type_id:label}\n {else}\n {ts}Phone{/ts}\n {/if}\n \n \n {event.loc_block_id.phone_2_id.phone} {if {event.loc_block_id.phone_2_id.phone_ext|boolean}} {ts}ext.{/ts} {event.loc_block_id.phone_2_id.phone_ext}{/if}\n \n \n {/if}\n\n {if {event.loc_block_id.email_id.email|boolean}}\n \n \n {ts}Email{/ts}\n \n \n {event.loc_block_id.email_id.email}\n \n \n {/if}\n\n {if {event.loc_block_id.email_2_id.email|boolean}}\n \n \n {ts}Email{/ts}\n \n \n {event.loc_block_id.email_2_id.email}\n \n \n {/if}\n {/if}\n\n {if \'{contact.email}\'}\n \n \n {ts}Registered Email{/ts}\n \n \n \n \n {contact.email}\n \n \n {/if}\n\n {if !empty(\'{participant.register_date}\')}\n \n \n {ts}Registration Date{/ts}\n \n \n {participant.register_date}\n \n \n {/if}\n\n
\n \n \n\n \n \n {ts 1=\'{domain.phone}\' 2=\'{domain.email}\'}Please contact us at %1 or send email to %2 if you have questions.{/ts}
\n \n \n\n
\n\n\n\n',1,831,'participant_cancelled',1,0,0,NULL),
+ (36,'Events - Registration Cancellation Notice','{ts 1=\"{event.title}\"}Event Registration Cancelled for %1{/ts} - {contact.display_name}\n','','\n\n\n \n \n\n\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n \n\n \n \n \n\n \n\n \n \n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},
{/if}\n {ts}Your Event Registration has been cancelled.{/ts}
\n \n \n \n \n \n \n \n {ts}Event Information and Location{/ts}\n \n \n \n \n {event.title} \n {event.start_date|crmDate:\"%A\"} {event.start_date|crmDate}{if {event.end_date|boolean}}-{if \'{event.end_date|crmDate:\"%Y%m%d\"}\' === \'{event.start_date|crmDate:\"%Y%m%d\"}\'}{event.end_date|crmDate:\"Time\"}{else}{event.end_date|crmDate:\"%A\"} {event.end_date|crmDate}{/if}{/if}\n \n \n \n \n {ts}Participant Role{/ts}:\n \n \n {participant.role_id:label}\n \n \n {if {event.is_show_location|boolean}}\n \n \n {event.location}\n \n \n {/if}\n\n {if {event.loc_block_id.phone_id.phone|boolean} || {event.loc_block_id.email_id.email|boolean}}\n \n \n {ts}Event Contacts:{/ts}\n \n \n\n {if {event.loc_block_id.phone_id.phone|boolean}}\n \n \n {if {event.loc_block_id.phone_id.phone_type_id|boolean}}\n {event.loc_block_id.phone_id.phone_type_id:label}\n {else}\n {ts}Phone{/ts}\n {/if}\n \n \n {event.loc_block_id.phone_id.phone} {if {event.loc_block_id.phone_id.phone_ext|boolean}} {ts}ext.{/ts} {event.loc_block_id.phone_id.phone_ext}{/if}\n \n \n {/if}\n {if {event.loc_block_id.phone_2_id.phone|boolean}}\n \n \n {if {event.loc_block_id.phone_2_id.phone_type_id|boolean}}\n {event.loc_block_id.phone_2_id.phone_type_id:label}\n {else}\n {ts}Phone{/ts}\n {/if}\n \n \n {event.loc_block_id.phone_2_id.phone} {if {event.loc_block_id.phone_2_id.phone_ext|boolean}} {ts}ext.{/ts} {event.loc_block_id.phone_2_id.phone_ext}{/if}\n \n \n {/if}\n\n {if {event.loc_block_id.email_id.email|boolean}}\n \n \n {ts}Email{/ts}\n \n \n {event.loc_block_id.email_id.email}\n \n \n {/if}\n\n {if {event.loc_block_id.email_2_id.email|boolean}}\n \n \n {ts}Email{/ts}\n \n \n {event.loc_block_id.email_2_id.email}\n \n \n {/if}\n {/if}\n\n {if \'{contact.email}\'}\n \n \n {ts}Registered Email{/ts}\n \n \n \n \n {contact.email}\n \n \n {/if}\n\n {if !empty(\'{participant.register_date}\')}\n \n \n {ts}Registration Date{/ts}\n \n \n {participant.register_date}\n \n \n {/if}\n\n
\n \n \n\n \n \n {ts 1=\'{domain.phone}\' 2=\'{domain.email}\'}Please contact us at %1 or send email to %2 if you have questions.{/ts}
\n \n \n\n
\n\n\n\n',1,831,'participant_cancelled',0,1,0,NULL),
+ (37,'Events - Registration Confirmation Invite','{ts 1=$event.event_title}Confirm your registration for %1{/ts} - {contact.display_name}\n','','\n\n\n \n \n\n\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n \n \n \n \n\n \n\n \n \n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},
{/if}\n {ts}This is an invitation to complete your registration that was initially waitlisted.{/ts}
\n \n \n {if !$isAdditional and {participant.id|boolean}}\n \n \n {ts}Confirm Your Registration{/ts}\n \n \n \n \n {capture assign=confirmUrl}{crmURL p=\'civicrm/event/confirm\' q=\"reset=1&participantId={participant.id}&cs=`$checksumValue`\" a=true h=0 fe=1}{/capture}\n {ts}Click here to confirm and complete your registration{/ts} \n \n \n {/if}\n {if {event.allow_selfcancelxfer|boolean}}\n {ts}This event allows for{/ts}\n {capture assign=selfService}{crmURL p=\'civicrm/event/selfsvcupdate\' q=\"reset=1&pid={participant.id}&{contact.checksum}\" h=0 a=1 fe=1}{/capture}\n {ts}self service cancel or transfer{/ts} \n {/if}\n\n \n \n \n \n \n {ts}Event Information and Location{/ts}\n \n \n \n \n {event.title} \n {event.start_date|crmDate:\"%A\"} {event.start_date|crmDate}{if {event.end_date|boolean}}-{if \'{event.end_date|crmDate:\"%Y%m%d\"}\' === \'{event.start_date|crmDate:\"%Y%m%d\"}\'}{event.end_date|crmDate:\"Time\"}{else}{event.end_date|crmDate:\"%A\"} {event.end_date|crmDate}{/if}{/if}\n \n \n \n \n {ts}Participant Role{/ts}:\n \n \n {participant.role_id:label}\n \n \n {if {event.is_show_location|boolean}}\n \n \n {event.location}\n \n \n {/if}\n\n {if {event.loc_block_id.phone_id.phone|boolean} || {event.loc_block_id.email_id.email|boolean}}\n \n \n {ts}Event Contacts:{/ts}\n \n \n\n {if {event.loc_block_id.phone_id.phone|boolean}}\n \n \n {if {event.loc_block_id.phone_id.phone_type_id|boolean}}\n {event.loc_block_id.phone_id.phone_type_id:label}\n {else}\n {ts}Phone{/ts}\n {/if}\n \n \n {event.loc_block_id.phone_id.phone} {if {event.loc_block_id.phone_id.phone_ext|boolean}} {ts}ext.{/ts} {event.loc_block_id.phone_id.phone_ext}{/if}\n \n \n {/if}\n {if {event.loc_block_id.phone_2_id.phone|boolean}}\n \n \n {if {event.loc_block_id.phone_2_id.phone_type_id|boolean}}\n {event.loc_block_id.phone_2_id.phone_type_id:label}\n {else}\n {ts}Phone{/ts}\n {/if}\n \n \n {event.loc_block_id.phone_2_id.phone} {if {event.loc_block_id.phone_2_id.phone_ext|boolean}} {ts}ext.{/ts} {event.loc_block_id.phone_2_id.phone_ext}{/if}\n \n \n {/if}\n\n {if {event.loc_block_id.email_id.email|boolean}}\n \n \n {ts}Email{/ts}\n \n \n {event.loc_block_id.email_id.email}\n \n \n {/if}\n\n {if {event.loc_block_id.email_2_id.email|boolean}}\n \n \n {ts}Email{/ts}\n \n \n {event.loc_block_id.email_2_id.email}\n \n \n {/if}\n {/if}\n\n {if {event.is_public|boolean}}\n \n \n {capture assign=icalFeed}{crmURL p=\'civicrm/event/ical\' q=\"reset=1&id={event.id}\" h=0 a=1 fe=1}{/capture}\n {ts}Download iCalendar entry for this event.{/ts} \n \n \n \n \n {capture assign=gCalendar}{crmURL p=\'civicrm/event/ical\' q=\"gCalendar=1&reset=1&id={event.id}\" h=0 a=1 fe=1}{/capture}\n {ts}Add event to Google Calendar{/ts} \n \n \n {/if}\n\n {if \'{contact.email}\'}\n \n \n {ts}Registered Email{/ts}\n \n \n \n \n {contact.email}\n \n \n {/if}\n\n {if {participant.register_date|boolean}}\n \n \n {ts}Registration Date{/ts}\n \n \n {participant.register_date}\n \n \n {/if}\n\n
\n \n \n {if {event.allow_selfcancelxfer|boolean}}\n \n \n {ts 1=$selfcancelxfer_time 2=$selfservice_preposition}You may transfer your registration to another participant or cancel your registration up to %1 hours %2 the event.{/ts} \n {capture assign=selfService}{crmURL p=\'civicrm/event/selfsvcupdate\' q=\"reset=1&pid={participant.id}&{contact.checksum}\" h=0 a=1 fe=1}{/capture}\n {ts}Click here to transfer or cancel your registration.{/ts} \n \n \n {/if}\n \n \n {ts 1=\'{domain.phone}\' 2=\'{domain.email}\'}Please contact us at %1 or send email to %2 if you have questions.{/ts}
\n \n \n\n
\n\n\n\n',1,832,'participant_confirm',1,0,0,NULL),
+ (38,'Events - Registration Confirmation Invite','{ts 1=$event.event_title}Confirm your registration for %1{/ts} - {contact.display_name}\n','','\n\n\n \n \n\n\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n \n \n \n \n\n \n\n \n \n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},
{/if}\n {ts}This is an invitation to complete your registration that was initially waitlisted.{/ts}
\n \n \n {if !$isAdditional and {participant.id|boolean}}\n \n \n {ts}Confirm Your Registration{/ts}\n \n \n \n \n {capture assign=confirmUrl}{crmURL p=\'civicrm/event/confirm\' q=\"reset=1&participantId={participant.id}&cs=`$checksumValue`\" a=true h=0 fe=1}{/capture}\n {ts}Click here to confirm and complete your registration{/ts} \n \n \n {/if}\n {if {event.allow_selfcancelxfer|boolean}}\n {ts}This event allows for{/ts}\n {capture assign=selfService}{crmURL p=\'civicrm/event/selfsvcupdate\' q=\"reset=1&pid={participant.id}&{contact.checksum}\" h=0 a=1 fe=1}{/capture}\n {ts}self service cancel or transfer{/ts} \n {/if}\n\n \n \n \n \n \n {ts}Event Information and Location{/ts}\n \n \n \n \n {event.title} \n {event.start_date|crmDate:\"%A\"} {event.start_date|crmDate}{if {event.end_date|boolean}}-{if \'{event.end_date|crmDate:\"%Y%m%d\"}\' === \'{event.start_date|crmDate:\"%Y%m%d\"}\'}{event.end_date|crmDate:\"Time\"}{else}{event.end_date|crmDate:\"%A\"} {event.end_date|crmDate}{/if}{/if}\n \n \n \n \n {ts}Participant Role{/ts}:\n \n \n {participant.role_id:label}\n \n \n {if {event.is_show_location|boolean}}\n \n \n {event.location}\n \n \n {/if}\n\n {if {event.loc_block_id.phone_id.phone|boolean} || {event.loc_block_id.email_id.email|boolean}}\n \n \n {ts}Event Contacts:{/ts}\n \n \n\n {if {event.loc_block_id.phone_id.phone|boolean}}\n \n \n {if {event.loc_block_id.phone_id.phone_type_id|boolean}}\n {event.loc_block_id.phone_id.phone_type_id:label}\n {else}\n {ts}Phone{/ts}\n {/if}\n \n \n {event.loc_block_id.phone_id.phone} {if {event.loc_block_id.phone_id.phone_ext|boolean}} {ts}ext.{/ts} {event.loc_block_id.phone_id.phone_ext}{/if}\n \n \n {/if}\n {if {event.loc_block_id.phone_2_id.phone|boolean}}\n \n \n {if {event.loc_block_id.phone_2_id.phone_type_id|boolean}}\n {event.loc_block_id.phone_2_id.phone_type_id:label}\n {else}\n {ts}Phone{/ts}\n {/if}\n \n \n {event.loc_block_id.phone_2_id.phone} {if {event.loc_block_id.phone_2_id.phone_ext|boolean}} {ts}ext.{/ts} {event.loc_block_id.phone_2_id.phone_ext}{/if}\n \n \n {/if}\n\n {if {event.loc_block_id.email_id.email|boolean}}\n \n \n {ts}Email{/ts}\n \n \n {event.loc_block_id.email_id.email}\n \n \n {/if}\n\n {if {event.loc_block_id.email_2_id.email|boolean}}\n \n \n {ts}Email{/ts}\n \n \n {event.loc_block_id.email_2_id.email}\n \n \n {/if}\n {/if}\n\n {if {event.is_public|boolean}}\n \n \n {capture assign=icalFeed}{crmURL p=\'civicrm/event/ical\' q=\"reset=1&id={event.id}\" h=0 a=1 fe=1}{/capture}\n {ts}Download iCalendar entry for this event.{/ts} \n \n \n \n \n {capture assign=gCalendar}{crmURL p=\'civicrm/event/ical\' q=\"gCalendar=1&reset=1&id={event.id}\" h=0 a=1 fe=1}{/capture}\n {ts}Add event to Google Calendar{/ts} \n \n \n {/if}\n\n {if \'{contact.email}\'}\n \n \n {ts}Registered Email{/ts}\n \n \n \n \n {contact.email}\n \n \n {/if}\n\n {if {participant.register_date|boolean}}\n \n \n {ts}Registration Date{/ts}\n \n \n {participant.register_date}\n \n \n {/if}\n\n
\n \n \n {if {event.allow_selfcancelxfer|boolean}}\n \n \n {ts 1=$selfcancelxfer_time 2=$selfservice_preposition}You may transfer your registration to another participant or cancel your registration up to %1 hours %2 the event.{/ts} \n {capture assign=selfService}{crmURL p=\'civicrm/event/selfsvcupdate\' q=\"reset=1&pid={participant.id}&{contact.checksum}\" h=0 a=1 fe=1}{/capture}\n {ts}Click here to transfer or cancel your registration.{/ts} \n \n \n {/if}\n \n \n {ts 1=\'{domain.phone}\' 2=\'{domain.email}\'}Please contact us at %1 or send email to %2 if you have questions.{/ts}
\n \n \n\n
\n\n\n\n',1,832,'participant_confirm',0,1,0,NULL),
+ (39,'Events - Pending Registration Expiration Notice','{ts 1=$event.event_title}Event registration has expired for %1{/ts} - {contact.display_name}\n','','\n\n\n \n \n\n\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n \n\n \n \n \n\n \n\n \n \n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},
{/if}\n {ts 1=\"{event.title}\"}Your pending event registration for %1 has expired\nbecause you did not confirm your registration.{/ts}
\n {ts 1=\'{domain.phone}\' 2=\'{domain.email}\'}Please contact us at %1 or send email to %2 if you have questions\nor want to inquire about reinstating your registration for this event.{/ts}
\n \n \n \n \n \n \n \n {ts}Event Information and Location{/ts}\n \n \n \n \n {event.title} \n {event.start_date|crmDate:\"%A\"} {event.start_date|crmDate}{if {event.end_date|boolean}}-{if \'{event.end_date|crmDate:\"%Y%m%d\"}\' === \'{event.start_date|crmDate:\"%Y%m%d\"}\'}{event.end_date|crmDate:\"Time\"}{else}{event.end_date|crmDate:\"%A\"} {event.end_date|crmDate}{/if}{/if}\n \n \n \n \n {ts}Participant Role{/ts}:\n \n \n {participant.role_id:label}\n \n \n\n {if {event.is_show_location|boolean}}\n \n \n {event.location}\n \n \n {/if}\n\n {if {event.loc_block_id.phone_id.phone|boolean} || {event.loc_block_id.email_id.email|boolean}}\n \n \n {ts}Event Contacts:{/ts}\n \n \n\n {if {event.loc_block_id.phone_id.phone|boolean}}\n \n \n {if {event.loc_block_id.phone_id.phone_type_id|boolean}}\n {event.loc_block_id.phone_id.phone_type_id:label}\n {else}\n {ts}Phone{/ts}\n {/if}\n \n \n {event.loc_block_id.phone_id.phone} {if {event.loc_block_id.phone_id.phone_ext|boolean}} {ts}ext.{/ts} {event.loc_block_id.phone_id.phone_ext}{/if}\n \n \n {/if}\n {if {event.loc_block_id.phone_2_id.phone|boolean}}\n \n \n {if {event.loc_block_id.phone_2_id.phone_type_id|boolean}}\n {event.loc_block_id.phone_2_id.phone_type_id:label}\n {else}\n {ts}Phone{/ts}\n {/if}\n \n \n {event.loc_block_id.phone_2_id.phone} {if {event.loc_block_id.phone_2_id.phone_ext|boolean}} {ts}ext.{/ts} {event.loc_block_id.phone_2_id.phone_ext}{/if}\n \n \n {/if}\n\n {if {event.loc_block_id.email_id.email|boolean}}\n \n \n {ts}Email{/ts}\n \n \n {event.loc_block_id.email_id.email}\n \n \n {/if}\n\n {if {event.loc_block_id.email_2_id.email|boolean}}\n \n \n {ts}Email{/ts}\n \n \n {event.loc_block_id.email_2_id.email}\n \n \n {/if}\n {/if}\n\n {if {participant.register_date|boolean}}\n \n \n {ts}Registration Date{/ts}\n \n \n {participant.register_date}\n \n \n {/if}\n\n
\n \n \n\n \n \n {ts 1=\'{domain.phone}\' 2=\'{domain.email}\'}Please contact us at %1 or send email to %2 if you have questions.{/ts}
\n \n \n\n
\n\n\n\n',1,833,'participant_expired',1,0,0,NULL),
+ (40,'Events - Pending Registration Expiration Notice','{ts 1=$event.event_title}Event registration has expired for %1{/ts} - {contact.display_name}\n','','\n\n\n \n \n\n\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n \n\n \n \n \n\n \n\n \n \n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},
{/if}\n {ts 1=\"{event.title}\"}Your pending event registration for %1 has expired\nbecause you did not confirm your registration.{/ts}
\n {ts 1=\'{domain.phone}\' 2=\'{domain.email}\'}Please contact us at %1 or send email to %2 if you have questions\nor want to inquire about reinstating your registration for this event.{/ts}
\n \n \n \n \n \n \n \n {ts}Event Information and Location{/ts}\n \n \n \n \n {event.title} \n {event.start_date|crmDate:\"%A\"} {event.start_date|crmDate}{if {event.end_date|boolean}}-{if \'{event.end_date|crmDate:\"%Y%m%d\"}\' === \'{event.start_date|crmDate:\"%Y%m%d\"}\'}{event.end_date|crmDate:\"Time\"}{else}{event.end_date|crmDate:\"%A\"} {event.end_date|crmDate}{/if}{/if}\n \n \n \n \n {ts}Participant Role{/ts}:\n \n \n {participant.role_id:label}\n \n \n\n {if {event.is_show_location|boolean}}\n \n \n {event.location}\n \n \n {/if}\n\n {if {event.loc_block_id.phone_id.phone|boolean} || {event.loc_block_id.email_id.email|boolean}}\n \n \n {ts}Event Contacts:{/ts}\n \n \n\n {if {event.loc_block_id.phone_id.phone|boolean}}\n \n \n {if {event.loc_block_id.phone_id.phone_type_id|boolean}}\n {event.loc_block_id.phone_id.phone_type_id:label}\n {else}\n {ts}Phone{/ts}\n {/if}\n \n \n {event.loc_block_id.phone_id.phone} {if {event.loc_block_id.phone_id.phone_ext|boolean}} {ts}ext.{/ts} {event.loc_block_id.phone_id.phone_ext}{/if}\n \n \n {/if}\n {if {event.loc_block_id.phone_2_id.phone|boolean}}\n \n \n {if {event.loc_block_id.phone_2_id.phone_type_id|boolean}}\n {event.loc_block_id.phone_2_id.phone_type_id:label}\n {else}\n {ts}Phone{/ts}\n {/if}\n \n \n {event.loc_block_id.phone_2_id.phone} {if {event.loc_block_id.phone_2_id.phone_ext|boolean}} {ts}ext.{/ts} {event.loc_block_id.phone_2_id.phone_ext}{/if}\n \n \n {/if}\n\n {if {event.loc_block_id.email_id.email|boolean}}\n \n \n {ts}Email{/ts}\n \n \n {event.loc_block_id.email_id.email}\n \n \n {/if}\n\n {if {event.loc_block_id.email_2_id.email|boolean}}\n \n \n {ts}Email{/ts}\n \n \n {event.loc_block_id.email_2_id.email}\n \n \n {/if}\n {/if}\n\n {if {participant.register_date|boolean}}\n \n \n {ts}Registration Date{/ts}\n \n \n {participant.register_date}\n \n \n {/if}\n\n
\n \n \n\n \n \n {ts 1=\'{domain.phone}\' 2=\'{domain.email}\'}Please contact us at %1 or send email to %2 if you have questions.{/ts}
\n \n \n\n
\n\n\n\n',1,833,'participant_expired',0,1,0,NULL),
+ (41,'Events - Registration Transferred Notice','{ts 1=$event.event_title}Event Registration Transferred for %1{/ts} - {contact.display_name}\n','','\n\n\n \n \n\n\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n \n\n \n \n \n\n \n\n \n \n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},
{/if}\n {ts 1=$to_participant}Your Event Registration has been Transferred to %1.{/ts}
\n \n \n \n \n \n \n \n {ts}Event Information and Location{/ts}\n \n \n \n \n {event.title} \n {event.start_date|crmDate:\"%A\"} {event.start_date|crmDate}{if {event.end_date|boolean}}-{if \'{event.end_date|crmDate:\"%Y%m%d\"}\' === \'{event.start_date|crmDate:\"%Y%m%d\"}\'}{event.end_date|crmDate:\"Time\"}{else}{event.end_date|crmDate:\"%A\"} {event.end_date|crmDate}{/if}{/if}\n \n \n \n \n {ts}Participant Role{/ts}:\n \n \n {participant.role_id:label}\n \n \n\n {if {event.is_show_location|boolean}}\n \n \n {event.location}\n \n \n {/if}\n\n {if {event.loc_block_id.phone_id.phone|boolean} || {event.loc_block_id.email_id.email|boolean}}\n \n \n {ts}Event Contacts:{/ts}\n \n \n\n {if {event.loc_block_id.phone_id.phone|boolean}}\n \n \n {if {event.loc_block_id.phone_id.phone_type_id|boolean}}\n {event.loc_block_id.phone_id.phone_type_id:label}\n {else}\n {ts}Phone{/ts}\n {/if}\n \n \n {event.loc_block_id.phone_id.phone} {if {event.loc_block_id.phone_id.phone_ext|boolean}} {ts}ext.{/ts} {event.loc_block_id.phone_id.phone_ext}{/if}\n \n \n {/if}\n {if {event.loc_block_id.phone_2_id.phone|boolean}}\n \n \n {if {event.loc_block_id.phone_2_id.phone_type_id|boolean}}\n {event.loc_block_id.phone_2_id.phone_type_id:label}\n {else}\n {ts}Phone{/ts}\n {/if}\n \n \n {event.loc_block_id.phone_2_id.phone} {if {event.loc_block_id.phone_2_id.phone_ext|boolean}} {ts}ext.{/ts} {event.loc_block_id.phone_2_id.phone_ext}{/if}\n \n \n {/if}\n\n {if {event.loc_block_id.email_id.email|boolean}}\n \n \n {ts}Email{/ts}\n \n \n {event.loc_block_id.email_id.email}\n \n \n {/if}\n\n {if {event.loc_block_id.email_2_id.email|boolean}}\n \n \n {ts}Email{/ts}\n \n \n {event.loc_block_id.email_2_id.email}\n \n \n {/if}\n {/if}\n\n {if \'{contact.email}\'}\n \n \n {ts}Registered Email{/ts}\n \n \n \n \n {contact.email}\n \n \n {/if}\n\n {if {participant.register_date|boolean}}\n \n \n {ts}Registration Date{/ts}\n \n \n {participant.register_date}\n \n \n {/if}\n\n
\n \n \n\n \n \n {ts 1=\'{domain.phone}\' 2=\'{domain.email}\'}Please contact us at %1 or send email to %2 if you have questions.{/ts}
\n \n \n\n
\n\n\n\n',1,834,'participant_transferred',1,0,0,NULL),
+ (42,'Events - Registration Transferred Notice','{ts 1=$event.event_title}Event Registration Transferred for %1{/ts} - {contact.display_name}\n','','\n\n\n \n \n\n\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n \n\n \n \n \n\n \n\n \n \n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},
{/if}\n {ts 1=$to_participant}Your Event Registration has been Transferred to %1.{/ts}
\n \n \n \n \n \n \n \n {ts}Event Information and Location{/ts}\n \n \n \n \n {event.title} \n {event.start_date|crmDate:\"%A\"} {event.start_date|crmDate}{if {event.end_date|boolean}}-{if \'{event.end_date|crmDate:\"%Y%m%d\"}\' === \'{event.start_date|crmDate:\"%Y%m%d\"}\'}{event.end_date|crmDate:\"Time\"}{else}{event.end_date|crmDate:\"%A\"} {event.end_date|crmDate}{/if}{/if}\n \n \n \n \n {ts}Participant Role{/ts}:\n \n \n {participant.role_id:label}\n \n \n\n {if {event.is_show_location|boolean}}\n \n \n {event.location}\n \n \n {/if}\n\n {if {event.loc_block_id.phone_id.phone|boolean} || {event.loc_block_id.email_id.email|boolean}}\n \n \n {ts}Event Contacts:{/ts}\n \n \n\n {if {event.loc_block_id.phone_id.phone|boolean}}\n \n \n {if {event.loc_block_id.phone_id.phone_type_id|boolean}}\n {event.loc_block_id.phone_id.phone_type_id:label}\n {else}\n {ts}Phone{/ts}\n {/if}\n \n \n {event.loc_block_id.phone_id.phone} {if {event.loc_block_id.phone_id.phone_ext|boolean}} {ts}ext.{/ts} {event.loc_block_id.phone_id.phone_ext}{/if}\n \n \n {/if}\n {if {event.loc_block_id.phone_2_id.phone|boolean}}\n \n \n {if {event.loc_block_id.phone_2_id.phone_type_id|boolean}}\n {event.loc_block_id.phone_2_id.phone_type_id:label}\n {else}\n {ts}Phone{/ts}\n {/if}\n \n \n {event.loc_block_id.phone_2_id.phone} {if {event.loc_block_id.phone_2_id.phone_ext|boolean}} {ts}ext.{/ts} {event.loc_block_id.phone_2_id.phone_ext}{/if}\n \n \n {/if}\n\n {if {event.loc_block_id.email_id.email|boolean}}\n \n \n {ts}Email{/ts}\n \n \n {event.loc_block_id.email_id.email}\n \n \n {/if}\n\n {if {event.loc_block_id.email_2_id.email|boolean}}\n \n \n {ts}Email{/ts}\n \n \n {event.loc_block_id.email_2_id.email}\n \n \n {/if}\n {/if}\n\n {if \'{contact.email}\'}\n \n \n {ts}Registered Email{/ts}\n \n \n \n \n {contact.email}\n \n \n {/if}\n\n {if {participant.register_date|boolean}}\n \n \n {ts}Registration Date{/ts}\n \n \n {participant.register_date}\n \n \n {/if}\n\n
\n \n \n\n \n \n {ts 1=\'{domain.phone}\' 2=\'{domain.email}\'}Please contact us at %1 or send email to %2 if you have questions.{/ts}
\n \n \n\n
\n\n\n\n',1,834,'participant_transferred',0,1,0,NULL),
+ (43,'Tell-a-Friend Email','{ts 1=$senderContactName 2=$title}%1 wants you to know about %2{/ts}\n','','\n\n\n \n \n\n\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n \n\n\n\n',1,835,'friend',1,0,0,NULL),
+ (44,'Tell-a-Friend Email','{ts 1=$senderContactName 2=$title}%1 wants you to know about %2{/ts}\n','','\n\n\n \n \n\n\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n \n\n\n\n',1,835,'friend',0,1,0,NULL),
+ (45,'Memberships - Signup and Renewal Receipts (off-line)','{if $receiptType EQ \'membership signup\'}\n{ts}Membership Confirmation and Receipt{/ts}\n{elseif $receiptType EQ \'membership renewal\'}\n{ts}Membership Renewal Confirmation and Receipt{/ts}\n{/if} - {contact.display_name}\n','','\n\n\n \n \n\n\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n \n\n \n \n \n\n \n\n \n \n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},
{/if}\n {if $userText}\n {$userText}
\n {else}\n {ts}Thank you for this contribution.{/ts}
\n {/if}\n \n \n \n \n \n {if !$isShowLineItems}\n \n \n {ts}Membership Information{/ts}\n \n \n \n \n {ts}Membership Type{/ts}\n \n \n {membership.membership_type_id:name}\n \n \n {/if}\n {if \'{membership.status_id:name}\' !== \'Cancelled\'}\n {if !$isShowLineItems}\n \n \n {ts}Membership Start Date{/ts}\n \n \n {membership.start_date|crmDate:\"Full\"}\n \n \n \n \n {ts}Membership Expiration Date{/ts}\n \n \n {membership.end_date|crmDate:\"Full\"}\n \n \n {/if}\n {if {contribution.total_amount|boolean}}\n \n \n {ts}Membership Fee{/ts}\n \n \n {if {contribution.financial_type_id|boolean}}\n \n \n {ts}Financial Type{/ts}\n \n \n {contribution.financial_type_id:label}\n \n \n {/if}\n\n {if $isShowLineItems}\n \n \n \n \n {ts}Item{/ts} \n {ts}Fee{/ts} \n {if $isShowTax && {contribution.tax_amount|boolean}}\n {ts}SubTotal{/ts} \n {ts}Tax Rate{/ts} \n {ts}Tax Amount{/ts} \n {ts}Total{/ts} \n {/if}\n {ts}Membership Start Date{/ts} \n {ts}Membership Expiration Date{/ts} \n \n {foreach from=$lineItems item=line}\n \n {$line.title} \n \n {$line.line_total|crmMoney}\n \n {if $isShowTax && {contribution.tax_amount|boolean}}\n \n {$line.line_total|crmMoney:\'{contribution.currency}\'}\n \n {if $line.tax_rate || $line.tax_amount != \"\"}\n \n {$line.tax_rate|string_format:\"%.2f\"}%\n \n \n {$line.tax_amount|crmMoney:\'{contribution.currency}\'}\n \n {else}\n \n \n {/if}\n \n {$line.line_total_inclusive|crmMoney:\'{contribution.currency}\'}\n \n {/if}\n \n {$line.membership.start_date|crmDate:\"Full\"}\n \n \n {$line.membership.end_date|crmDate:\"Full\"}\n \n \n {/foreach}\n
\n \n \n\n {if $isShowTax && {contribution.tax_amount|boolean}}\n \n \n {ts}Amount Before Tax:{/ts}\n \n \n {contribution.tax_exclusive_amount}\n \n \n {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n \n {if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else} {$taxTerm} {$taxDetail.percentage}%{/if} \n {$taxDetail.amount|crmMoney:\'{contribution.currency}\'} \n \n {/foreach}\n {/if}\n {/if}\n {if {contribution.tax_amount|boolean}}\n \n \n {ts}Total Tax Amount{/ts}\n \n \n {contribution.tax_amount}\n \n \n {/if}\n \n \n {ts}Amount{/ts}\n \n \n {contribution.total_amount}\n \n \n {if {contribution.receive_date|boolean}}\n \n \n {ts}Contribution Date{/ts}\n \n \n {contribution.receive_date}\n \n \n {/if}\n {if {contribution.payment_instrument_id|boolean} && {contribution.paid_amount|boolean}}\n \n \n {ts}Paid By{/ts}\n \n \n {contribution.payment_instrument_id:label}\n \n \n {if {contribution.check_number|boolean}}\n \n \n {ts}Check Number{/ts}\n \n \n {contribution.check_number}\n \n \n {/if}\n {/if}\n {/if}\n {/if}\n
\n \n \n\n {if !empty($isPrimary)}\n \n \n \n\n {if !empty($billingName)}\n \n \n {ts}Billing Name and Address{/ts}\n \n \n \n \n {$billingName} \n {$address}\n \n \n {/if}\n\n {if !empty($credit_card_type)}\n \n \n {ts}Credit Card Information{/ts}\n \n \n \n \n {$credit_card_type} \n {$credit_card_number}\n \n \n \n \n {ts}Expires{/ts}\n \n \n {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n \n \n {/if}\n\n
\n \n \n {/if}\n\n {if !empty($customValues)}\n \n \n \n \n \n {ts}Membership Options{/ts}\n \n \n {foreach from=$customValues item=value key=customName}\n \n \n {$customName}\n \n \n {$value}\n \n \n {/foreach}\n
\n \n \n {/if}\n\n
\n\n\n\n',1,836,'membership_offline_receipt',1,0,0,NULL),
+ (46,'Memberships - Signup and Renewal Receipts (off-line)','{if $receiptType EQ \'membership signup\'}\n{ts}Membership Confirmation and Receipt{/ts}\n{elseif $receiptType EQ \'membership renewal\'}\n{ts}Membership Renewal Confirmation and Receipt{/ts}\n{/if} - {contact.display_name}\n','','\n\n\n \n \n\n\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n \n\n \n \n \n\n \n\n \n \n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},
{/if}\n {if $userText}\n {$userText}
\n {else}\n {ts}Thank you for this contribution.{/ts}
\n {/if}\n \n \n \n \n \n {if !$isShowLineItems}\n \n \n {ts}Membership Information{/ts}\n \n \n \n \n {ts}Membership Type{/ts}\n \n \n {membership.membership_type_id:name}\n \n \n {/if}\n {if \'{membership.status_id:name}\' !== \'Cancelled\'}\n {if !$isShowLineItems}\n \n \n {ts}Membership Start Date{/ts}\n \n \n {membership.start_date|crmDate:\"Full\"}\n \n \n \n \n {ts}Membership Expiration Date{/ts}\n \n \n {membership.end_date|crmDate:\"Full\"}\n \n \n {/if}\n {if {contribution.total_amount|boolean}}\n \n \n {ts}Membership Fee{/ts}\n \n \n {if {contribution.financial_type_id|boolean}}\n \n \n {ts}Financial Type{/ts}\n \n \n {contribution.financial_type_id:label}\n \n \n {/if}\n\n {if $isShowLineItems}\n \n \n \n \n {ts}Item{/ts} \n {ts}Fee{/ts} \n {if $isShowTax && {contribution.tax_amount|boolean}}\n {ts}SubTotal{/ts} \n {ts}Tax Rate{/ts} \n {ts}Tax Amount{/ts} \n {ts}Total{/ts} \n {/if}\n {ts}Membership Start Date{/ts} \n {ts}Membership Expiration Date{/ts} \n \n {foreach from=$lineItems item=line}\n \n {$line.title} \n \n {$line.line_total|crmMoney}\n \n {if $isShowTax && {contribution.tax_amount|boolean}}\n \n {$line.line_total|crmMoney:\'{contribution.currency}\'}\n \n {if $line.tax_rate || $line.tax_amount != \"\"}\n \n {$line.tax_rate|string_format:\"%.2f\"}%\n \n \n {$line.tax_amount|crmMoney:\'{contribution.currency}\'}\n \n {else}\n \n \n {/if}\n \n {$line.line_total_inclusive|crmMoney:\'{contribution.currency}\'}\n \n {/if}\n \n {$line.membership.start_date|crmDate:\"Full\"}\n \n \n {$line.membership.end_date|crmDate:\"Full\"}\n \n \n {/foreach}\n
\n \n \n\n {if $isShowTax && {contribution.tax_amount|boolean}}\n \n \n {ts}Amount Before Tax:{/ts}\n \n \n {contribution.tax_exclusive_amount}\n \n \n {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n \n {if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else} {$taxTerm} {$taxDetail.percentage}%{/if} \n {$taxDetail.amount|crmMoney:\'{contribution.currency}\'} \n \n {/foreach}\n {/if}\n {/if}\n {if {contribution.tax_amount|boolean}}\n \n \n {ts}Total Tax Amount{/ts}\n \n \n {contribution.tax_amount}\n \n \n {/if}\n \n \n {ts}Amount{/ts}\n \n \n {contribution.total_amount}\n \n \n {if {contribution.receive_date|boolean}}\n \n \n {ts}Contribution Date{/ts}\n \n \n {contribution.receive_date}\n \n \n {/if}\n {if {contribution.payment_instrument_id|boolean} && {contribution.paid_amount|boolean}}\n \n \n {ts}Paid By{/ts}\n \n \n {contribution.payment_instrument_id:label}\n \n \n {if {contribution.check_number|boolean}}\n \n \n {ts}Check Number{/ts}\n \n \n {contribution.check_number}\n \n \n {/if}\n {/if}\n {/if}\n {/if}\n
\n \n \n\n {if !empty($isPrimary)}\n \n \n \n\n {if !empty($billingName)}\n \n \n {ts}Billing Name and Address{/ts}\n \n \n \n \n {$billingName} \n {$address}\n \n \n {/if}\n\n {if !empty($credit_card_type)}\n \n \n {ts}Credit Card Information{/ts}\n \n \n \n \n {$credit_card_type} \n {$credit_card_number}\n \n \n \n \n {ts}Expires{/ts}\n \n \n {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n \n \n {/if}\n\n
\n \n \n {/if}\n\n {if !empty($customValues)}\n \n \n \n \n \n {ts}Membership Options{/ts}\n \n \n {foreach from=$customValues item=value key=customName}\n \n \n {$customName}\n \n \n {$value}\n \n \n {/foreach}\n
\n \n \n {/if}\n\n
\n\n\n\n',1,836,'membership_offline_receipt',0,1,0,NULL),
+ (47,'Memberships - Receipt (on-line)','{if \'{contribution.contribution_status_id:name}\' === \'Pending\'}{ts}Invoice{/ts}{else}{ts}Receipt{/ts}{/if} - {contribution.contribution_page_id.frontend_title} - {contact.display_name}\n','','\n\n\n \n \n\n\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n \n\n \n \n \n\n \n\n \n \n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},
{/if}\n {if $userText}\n {$userText}
\n {elseif {contribution.contribution_page_id.receipt_text|boolean}}\n {contribution.contribution_page_id.receipt_text}
\n {/if}\n {if {contribution.balance_amount|boolean} && {contribution.is_pay_later|boolean}}\n {contribution.contribution_page_id.pay_later_receipt}
\n {/if}\n\n \n \n
\n \n {if {membership.id|boolean} && !$isShowLineItems}\n \n \n {ts}Membership Information{/ts}\n \n \n \n \n {ts}Membership Type{/ts}\n \n \n {ts}{membership.membership_type_id:label}{/ts}\n \n \n {if {membership.start_date|boolean}}\n \n \n {ts}Membership Start Date{/ts}\n \n \n {membership.start_date}\n \n \n {/if}\n {if {membership.end_date|boolean}}\n \n \n {ts}Membership Expiration Date{/ts}\n \n \n {membership.end_date}\n \n \n {/if}\n {/if}\n {if {contribution.total_amount|boolean}}\n \n {ts}Membership Fee{/ts} \n \n\n {if !$isShowLineItems && {contribution.total_amount|boolean}}\n {foreach from=$lineItems item=line}\n \n \n {if $line.membership_type_id}\n {ts 1=\"{membership.membership_type_id:label}\"}%1 Membership{/ts}\n {else}\n {ts}Contribution Amount{/ts}\n {/if}\n \n \n {$line.line_total_inclusive|crmMoney:\'{contribution.currency}\'}\n \n \n {/foreach}\n {elseif $isShowLineItems}\n \n \n \n \n {ts}Item{/ts} \n {ts}Fee{/ts} \n {if $isShowTax && {contribution.tax_amount|boolean}}\n {ts}SubTotal{/ts} \n {ts}Tax Rate{/ts} \n {ts}Tax Amount{/ts} \n {ts}Total{/ts} \n {/if}\n {ts}Membership Start Date{/ts} \n {ts}Membership Expiration Date{/ts} \n \n {foreach from=$lineItems item=line}\n \n {$line.title} \n \n {$line.line_total|crmMoney}\n \n {if $isShowTax && {contribution.tax_amount|boolean}}\n \n {$line.line_total|crmMoney:\'{contribution.currency}\'}\n \n {if $line.tax_rate || $line.tax_amount != \"\"}\n \n {$line.tax_rate|string_format:\"%.2f\"}%\n \n \n {$line.tax_amount|crmMoney:\'{contribution.currency}\'}\n \n {else}\n \n \n {/if}\n \n {$line.line_total_inclusive|crmMoney:\'{contribution.currency}\'}\n \n {/if}\n \n {$line.membership.start_date|crmDate:\"Full\"}\n \n \n {$line.membership.end_date|crmDate:\"Full\"}\n \n \n {/foreach}\n
\n \n \n\n {if $isShowTax && {contribution.tax_amount|boolean}}\n \n \n {ts}Amount Before Tax:{/ts}\n \n \n {contribution.tax_exclusive_amount}\n \n \n {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n \n {if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else} {$taxTerm} {$taxDetail.percentage}%{/if} \n {$taxDetail.amount|crmMoney:\'{contribution.currency}\'} \n \n {/foreach}\n {/if}\n {/if}\n \n \n {ts}Amount{/ts}\n \n \n {contribution.total_amount}\n \n \n {/if}\n\n {if {contribution.receive_date|boolean}}\n \n \n {ts}Date{/ts}\n \n \n {contribution.receive_date}\n \n \n {/if}\n\n {if {contribution.trxn_id|boolean}}\n \n \n {ts}Transaction #{/ts}\n \n \n {contribution.trxn_id}\n \n \n {/if}\n\n {if {contribution.contribution_recur_id|boolean}}\n \n \n {ts}This membership will be renewed automatically.{/ts}\n {if $cancelSubscriptionUrl}\n {ts 1=$cancelSubscriptionUrl}You can cancel the auto-renewal option by visiting this web page .{/ts}\n {/if}\n \n \n {if $updateSubscriptionBillingUrl}\n \n \n {ts 1=$updateSubscriptionBillingUrl}You can update billing details for this automatically renewed membership by visiting this web page .{/ts}\n \n \n {/if}\n {/if}\n\n {if $honor_block_is_active}\n \n \n {$soft_credit_type}\n \n \n {foreach from=$honoreeProfile item=value key=label}\n \n \n {$label}\n \n \n {$value}\n \n \n {/foreach}\n {/if}\n\n {if !empty($pcpBlock)}\n \n \n {ts}Personal Campaign Page{/ts}\n \n \n \n \n {ts}Display In Honor Roll{/ts}\n \n \n {if $pcp_display_in_roll}{ts}Yes{/ts}{else}{ts}No{/ts}{/if}\n \n \n {if $pcp_roll_nickname}\n \n \n {ts}Nickname{/ts}\n \n \n {$pcp_roll_nickname}\n \n \n {/if}\n {if $pcp_personal_note}\n \n \n {ts}Personal Note{/ts}\n \n \n {$pcp_personal_note}\n \n \n {/if}\n {/if}\n\n {if !empty($onBehalfProfile)}\n \n \n {$onBehalfProfile_grouptitle}\n \n \n {foreach from=$onBehalfProfile item=onBehalfValue key=onBehalfName}\n \n \n {$onBehalfName}\n \n \n {$onBehalfValue}\n \n \n {/foreach}\n {/if}\n\n {if {contribution.address_id.display|boolean}}\n \n \n {ts}Billing Name and Address{/ts}\n \n \n \n \n {contribution.address_id.name} \n {contribution.address_id.display}\n \n \n {/if}\n {if {contact.email_primary.email|boolean}}\n \n \n {ts}Registered Email{/ts}\n \n \n \n \n {contact.email_primary.email}\n \n \n {/if}\n\n {if !empty($credit_card_type)}\n \n \n {ts}Credit Card Information{/ts}\n \n \n \n \n {$credit_card_type} \n {$credit_card_number} \n {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate} \n \n \n {/if}\n\n {if !empty($selectPremium)}\n \n \n {ts}Premium Information{/ts}\n \n \n \n \n {$product_name}\n \n \n {if $option}\n \n \n {ts}Option{/ts}\n \n \n {$option}\n \n \n {/if}\n {if $sku}\n \n \n {ts}SKU{/ts}\n \n \n {$sku}\n \n \n {/if}\n {if $start_date}\n \n \n {ts}Start Date{/ts}\n \n \n {$start_date|crmDate}\n \n \n {/if}\n {if $end_date}\n \n \n {ts}End Date{/ts}\n \n \n {$end_date|crmDate}\n \n \n {/if}\n {if !empty($contact_email) OR !empty($contact_phone)}\n \n \n {ts}For information about this premium, contact:{/ts}
\n {if !empty($contact_email)}\n {$contact_email}
\n {/if}\n {if !empty($contact_phone)}\n {$contact_phone}
\n {/if}\n \n \n {/if}\n {if $is_deductible AND !empty($price)}\n \n \n {ts 1=$price|crmMoney}The value of this premium is %1. This may affect the amount of the tax deduction you can claim. Consult your tax advisor for more information.{/ts}
\n \n \n {/if}\n {/if}\n\n {if !empty($customPre)}\n \n \n {$customPre_grouptitle}\n \n \n {foreach from=$customPre item=customValue key=customName}\n \n \n {$customName}\n \n \n {$customValue}\n \n \n {/foreach}\n {/if}\n\n {if !empty($customPost)}\n \n \n {$customPost_grouptitle}\n \n \n {foreach from=$customPost item=customValue key=customName}\n \n \n {$customName}\n \n \n {$customValue}\n \n \n {/foreach}\n {/if}\n\n
\n\n\n\n',1,837,'membership_online_receipt',1,0,0,NULL),
+ (48,'Memberships - Receipt (on-line)','{if \'{contribution.contribution_status_id:name}\' === \'Pending\'}{ts}Invoice{/ts}{else}{ts}Receipt{/ts}{/if} - {contribution.contribution_page_id.frontend_title} - {contact.display_name}\n','','\n\n\n \n \n\n\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n \n\n \n \n \n\n \n\n \n \n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},
{/if}\n {if $userText}\n {$userText}
\n {elseif {contribution.contribution_page_id.receipt_text|boolean}}\n {contribution.contribution_page_id.receipt_text}
\n {/if}\n {if {contribution.balance_amount|boolean} && {contribution.is_pay_later|boolean}}\n {contribution.contribution_page_id.pay_later_receipt}
\n {/if}\n\n \n \n
\n \n {if {membership.id|boolean} && !$isShowLineItems}\n \n \n {ts}Membership Information{/ts}\n \n \n \n \n {ts}Membership Type{/ts}\n \n \n {ts}{membership.membership_type_id:label}{/ts}\n \n \n {if {membership.start_date|boolean}}\n \n \n {ts}Membership Start Date{/ts}\n \n \n {membership.start_date}\n \n \n {/if}\n {if {membership.end_date|boolean}}\n \n \n {ts}Membership Expiration Date{/ts}\n \n \n {membership.end_date}\n \n \n {/if}\n {/if}\n {if {contribution.total_amount|boolean}}\n \n {ts}Membership Fee{/ts} \n \n\n {if !$isShowLineItems && {contribution.total_amount|boolean}}\n {foreach from=$lineItems item=line}\n \n \n {if $line.membership_type_id}\n {ts 1=\"{membership.membership_type_id:label}\"}%1 Membership{/ts}\n {else}\n {ts}Contribution Amount{/ts}\n {/if}\n \n \n {$line.line_total_inclusive|crmMoney:\'{contribution.currency}\'}\n \n \n {/foreach}\n {elseif $isShowLineItems}\n \n \n \n \n {ts}Item{/ts} \n {ts}Fee{/ts} \n {if $isShowTax && {contribution.tax_amount|boolean}}\n {ts}SubTotal{/ts} \n {ts}Tax Rate{/ts} \n {ts}Tax Amount{/ts} \n {ts}Total{/ts} \n {/if}\n {ts}Membership Start Date{/ts} \n {ts}Membership Expiration Date{/ts} \n \n {foreach from=$lineItems item=line}\n \n {$line.title} \n \n {$line.line_total|crmMoney}\n \n {if $isShowTax && {contribution.tax_amount|boolean}}\n \n {$line.line_total|crmMoney:\'{contribution.currency}\'}\n \n {if $line.tax_rate || $line.tax_amount != \"\"}\n \n {$line.tax_rate|string_format:\"%.2f\"}%\n \n \n {$line.tax_amount|crmMoney:\'{contribution.currency}\'}\n \n {else}\n \n \n {/if}\n \n {$line.line_total_inclusive|crmMoney:\'{contribution.currency}\'}\n \n {/if}\n \n {$line.membership.start_date|crmDate:\"Full\"}\n \n \n {$line.membership.end_date|crmDate:\"Full\"}\n \n \n {/foreach}\n
\n \n \n\n {if $isShowTax && {contribution.tax_amount|boolean}}\n \n \n {ts}Amount Before Tax:{/ts}\n \n \n {contribution.tax_exclusive_amount}\n \n \n {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n \n {if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else} {$taxTerm} {$taxDetail.percentage}%{/if} \n {$taxDetail.amount|crmMoney:\'{contribution.currency}\'} \n \n {/foreach}\n {/if}\n {/if}\n \n \n {ts}Amount{/ts}\n \n \n {contribution.total_amount}\n \n \n {/if}\n\n {if {contribution.receive_date|boolean}}\n \n \n {ts}Date{/ts}\n \n \n {contribution.receive_date}\n \n \n {/if}\n\n {if {contribution.trxn_id|boolean}}\n \n \n {ts}Transaction #{/ts}\n \n \n {contribution.trxn_id}\n \n \n {/if}\n\n {if {contribution.contribution_recur_id|boolean}}\n \n \n {ts}This membership will be renewed automatically.{/ts}\n {if $cancelSubscriptionUrl}\n {ts 1=$cancelSubscriptionUrl}You can cancel the auto-renewal option by visiting this web page .{/ts}\n {/if}\n \n \n {if $updateSubscriptionBillingUrl}\n \n \n {ts 1=$updateSubscriptionBillingUrl}You can update billing details for this automatically renewed membership by visiting this web page .{/ts}\n \n \n {/if}\n {/if}\n\n {if $honor_block_is_active}\n \n \n {$soft_credit_type}\n \n \n {foreach from=$honoreeProfile item=value key=label}\n \n \n {$label}\n \n \n {$value}\n \n \n {/foreach}\n {/if}\n\n {if !empty($pcpBlock)}\n \n \n {ts}Personal Campaign Page{/ts}\n \n \n \n \n {ts}Display In Honor Roll{/ts}\n \n \n {if $pcp_display_in_roll}{ts}Yes{/ts}{else}{ts}No{/ts}{/if}\n \n \n {if $pcp_roll_nickname}\n \n \n {ts}Nickname{/ts}\n \n \n {$pcp_roll_nickname}\n \n \n {/if}\n {if $pcp_personal_note}\n \n \n {ts}Personal Note{/ts}\n \n \n {$pcp_personal_note}\n \n \n {/if}\n {/if}\n\n {if !empty($onBehalfProfile)}\n \n \n {$onBehalfProfile_grouptitle}\n \n \n {foreach from=$onBehalfProfile item=onBehalfValue key=onBehalfName}\n \n \n {$onBehalfName}\n \n \n {$onBehalfValue}\n \n \n {/foreach}\n {/if}\n\n {if {contribution.address_id.display|boolean}}\n \n \n {ts}Billing Name and Address{/ts}\n \n \n \n \n {contribution.address_id.name} \n {contribution.address_id.display}\n \n \n {/if}\n {if {contact.email_primary.email|boolean}}\n \n \n {ts}Registered Email{/ts}\n \n \n \n \n {contact.email_primary.email}\n \n \n {/if}\n\n {if !empty($credit_card_type)}\n \n \n {ts}Credit Card Information{/ts}\n \n \n \n \n {$credit_card_type} \n {$credit_card_number} \n {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate} \n \n \n {/if}\n\n {if !empty($selectPremium)}\n \n \n {ts}Premium Information{/ts}\n \n \n \n \n {$product_name}\n \n \n {if $option}\n \n \n {ts}Option{/ts}\n \n \n {$option}\n \n \n {/if}\n {if $sku}\n \n \n {ts}SKU{/ts}\n \n \n {$sku}\n \n \n {/if}\n {if $start_date}\n \n \n {ts}Start Date{/ts}\n \n \n {$start_date|crmDate}\n \n \n {/if}\n {if $end_date}\n \n \n {ts}End Date{/ts}\n \n \n {$end_date|crmDate}\n \n \n {/if}\n {if !empty($contact_email) OR !empty($contact_phone)}\n \n \n {ts}For information about this premium, contact:{/ts}
\n {if !empty($contact_email)}\n {$contact_email}
\n {/if}\n {if !empty($contact_phone)}\n {$contact_phone}
\n {/if}\n \n \n {/if}\n {if $is_deductible AND !empty($price)}\n \n \n {ts 1=$price|crmMoney}The value of this premium is %1. This may affect the amount of the tax deduction you can claim. Consult your tax advisor for more information.{/ts}
\n \n \n {/if}\n {/if}\n\n {if !empty($customPre)}\n \n \n {$customPre_grouptitle}\n \n \n {foreach from=$customPre item=customValue key=customName}\n \n \n {$customName}\n \n \n {$customValue}\n \n \n {/foreach}\n {/if}\n\n {if !empty($customPost)}\n \n \n {$customPost_grouptitle}\n \n \n {foreach from=$customPost item=customValue key=customName}\n \n \n {$customName}\n \n \n {$customValue}\n \n \n {/foreach}\n {/if}\n\n
\n\n\n\n',1,837,'membership_online_receipt',0,1,0,NULL),
+ (49,'Memberships - Auto-renew Cancellation Notification','{ts}Autorenew Membership Cancellation Notification{/ts} - {contact.display_name}\n','','\n\n\n \n \n\n\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n \n\n \n \n \n\n \n\n \n \n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},
{/if}\n {ts 1=$membershipType}The automatic renewal of your %1 membership has been cancelled as requested. This does not affect the status of your membership - you will receive a separate notification when your membership is up for renewal.{/ts}
\n\n \n \n
\n \n\n \n \n {ts}Membership Information{/ts}\n \n \n \n \n {ts}Membership Status{/ts}\n \n \n {$membership_status}\n \n \n {if $mem_start_date}\n \n \n {ts}Membership Start Date{/ts}\n \n \n {$mem_start_date|crmDate}\n \n \n {/if}\n {if $mem_end_date}\n \n \n {ts}Membership Expiration Date{/ts}\n \n \n {$mem_end_date|crmDate}\n \n \n {/if}\n\n
\n\n\n\n',1,838,'membership_autorenew_cancelled',1,0,0,NULL),
+ (50,'Memberships - Auto-renew Cancellation Notification','{ts}Autorenew Membership Cancellation Notification{/ts} - {contact.display_name}\n','','\n\n\n \n \n\n\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n \n\n \n \n \n\n \n\n \n \n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},
{/if}\n {ts 1=$membershipType}The automatic renewal of your %1 membership has been cancelled as requested. This does not affect the status of your membership - you will receive a separate notification when your membership is up for renewal.{/ts}
\n\n \n \n
\n \n\n \n \n {ts}Membership Information{/ts}\n \n \n \n \n {ts}Membership Status{/ts}\n \n \n {$membership_status}\n \n \n {if $mem_start_date}\n \n \n {ts}Membership Start Date{/ts}\n \n \n {$mem_start_date|crmDate}\n \n \n {/if}\n {if $mem_end_date}\n \n \n {ts}Membership Expiration Date{/ts}\n \n \n {$mem_end_date|crmDate}\n \n \n {/if}\n\n
\n\n\n\n',1,838,'membership_autorenew_cancelled',0,1,0,NULL),
+ (51,'Memberships - Auto-renew Billing Updates','{ts}Membership Autorenewal Billing Updates{/ts} - {contact.display_name}\n','','\n\n\n \n \n\n\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n \n\n \n \n \n\n \n\n \n \n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},
{/if}\n {ts 1=$membershipType}Billing details for your automatically renewed %1 membership have been updated.{/ts}
\n \n \n \n
\n\n \n \n \n {ts}Billing Name and Address{/ts}\n \n \n \n \n {$billingName} \n {$address|nl2br} \n {$email}\n \n \n \n \n {ts}Credit Card Information{/ts}\n \n \n \n \n {$credit_card_type} \n {$credit_card_number} \n {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate} \n \n \n \n \n {ts 1=$receipt_from_email}If you have questions please contact us at %1{/ts}\n \n \n\n
\n\n\n\n',1,839,'membership_autorenew_billing',1,0,0,NULL),
+ (52,'Memberships - Auto-renew Billing Updates','{ts}Membership Autorenewal Billing Updates{/ts} - {contact.display_name}\n','','\n\n\n \n \n\n\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n \n\n \n \n \n\n \n\n \n \n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},
{/if}\n {ts 1=$membershipType}Billing details for your automatically renewed %1 membership have been updated.{/ts}
\n \n \n \n
\n\n \n \n \n {ts}Billing Name and Address{/ts}\n \n \n \n \n {$billingName} \n {$address|nl2br} \n {$email}\n \n \n \n \n {ts}Credit Card Information{/ts}\n \n \n \n \n {$credit_card_type} \n {$credit_card_number} \n {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate} \n \n \n \n \n {ts 1=$receipt_from_email}If you have questions please contact us at %1{/ts}\n \n \n\n
\n\n\n\n',1,839,'membership_autorenew_billing',0,1,0,NULL),
(53,'Test-drive - Receipt Header','[TEST]\n','',' \n \n \n {ts}Test-drive Email / Receipt{/ts}
\n {ts}This is a test-drive email. No live financial transaction has occurred.{/ts}
\n \n \n
\n',1,840,'test_preview',1,0,0,NULL),
(54,'Test-drive - Receipt Header','[TEST]\n','',' \n \n \n {ts}Test-drive Email / Receipt{/ts}
\n {ts}This is a test-drive email. No live financial transaction has occurred.{/ts}
\n \n \n
\n',1,840,'test_preview',0,1,0,NULL),
(55,'Pledges - Acknowledgement','{ts}Thank you for your Pledge{/ts} - {contact.display_name}\n','','\n\n\n \n \n\n\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n \n\n \n \n \n\n \n\n \n \n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},
{/if}\n {ts}Thank you for your generous pledge.{/ts}
\n \n \n \n \n \n \n \n {ts}Pledge Information{/ts}\n \n \n \n \n {ts}Pledge Received{/ts}\n \n \n {$create_date|truncate:10:\'\'|crmDate}\n \n \n \n \n {ts}Total Pledge Amount{/ts}\n \n \n {$total_pledge_amount|crmMoney:$currency}\n \n \n \n \n {ts}Payment Schedule{/ts}\n \n \n \n \n {ts 1=$scheduled_amount|crmMoney:$currency 2=$frequency_interval 3=$frequency_unit 4=$installments}%1 every %2 %3 for %4 installments.{/ts}
\n\n {if $frequency_day}\n {ts 1=$frequency_day 2=$frequency_unit}Payments are due on day %1 of the %2.{/ts}
\n {/if}\n \n \n\n {if $payments}\n {assign var=\"count\" value=1}\n {foreach from=$payments item=payment}\n \n \n {ts 1=$count}Payment %1{/ts}\n \n \n {$payment.amount|crmMoney:$currency} {if $payment.status eq 1}{ts}paid{/ts} {$payment.receive_date|truncate:10:\'\'|crmDate}{else}{ts}due{/ts} {$payment.due_date|truncate:10:\'\'|crmDate}{/if}\n \n \n {assign var=\"count\" value=$count+1}\n {/foreach}\n {/if}\n\n \n \n {ts 1=\'{domain.phone}\' 2=\'{domain.email}\'}Please contact us at %1 or send email to %2 if you have questions\nor need to modify your payment schedule.{/ts}
\n \n \n\n {if $customGroup}\n {foreach from=$customGroup item=value key=customName}\n \n \n {$customName}\n \n \n {foreach from=$value item=v key=n}\n \n \n {$n}\n \n \n {$v}\n \n \n {/foreach}\n {/foreach}\n {/if}\n\n
\n \n \n\n
\n\n\n\n',1,841,'pledge_acknowledge',1,0,0,NULL),
(56,'Pledges - Acknowledgement','{ts}Thank you for your Pledge{/ts} - {contact.display_name}\n','','\n\n\n \n \n\n\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n \n\n \n \n \n\n \n\n \n \n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},
{/if}\n {ts}Thank you for your generous pledge.{/ts}
\n \n \n \n \n \n \n \n {ts}Pledge Information{/ts}\n \n \n \n \n {ts}Pledge Received{/ts}\n \n \n {$create_date|truncate:10:\'\'|crmDate}\n \n \n \n \n {ts}Total Pledge Amount{/ts}\n \n \n {$total_pledge_amount|crmMoney:$currency}\n \n \n \n \n {ts}Payment Schedule{/ts}\n \n \n \n \n {ts 1=$scheduled_amount|crmMoney:$currency 2=$frequency_interval 3=$frequency_unit 4=$installments}%1 every %2 %3 for %4 installments.{/ts}
\n\n {if $frequency_day}\n {ts 1=$frequency_day 2=$frequency_unit}Payments are due on day %1 of the %2.{/ts}
\n {/if}\n \n \n\n {if $payments}\n {assign var=\"count\" value=1}\n {foreach from=$payments item=payment}\n \n \n {ts 1=$count}Payment %1{/ts}\n \n \n {$payment.amount|crmMoney:$currency} {if $payment.status eq 1}{ts}paid{/ts} {$payment.receive_date|truncate:10:\'\'|crmDate}{else}{ts}due{/ts} {$payment.due_date|truncate:10:\'\'|crmDate}{/if}\n \n \n {assign var=\"count\" value=$count+1}\n {/foreach}\n {/if}\n\n \n \n {ts 1=\'{domain.phone}\' 2=\'{domain.email}\'}Please contact us at %1 or send email to %2 if you have questions\nor need to modify your payment schedule.{/ts}
\n \n \n\n {if $customGroup}\n {foreach from=$customGroup item=value key=customName}\n \n \n {$customName}\n \n \n {foreach from=$value item=v key=n}\n \n \n {$n}\n \n \n {$v}\n \n \n {/foreach}\n {/foreach}\n {/if}\n\n
\n \n \n\n
\n\n\n\n',1,841,'pledge_acknowledge',0,1,0,NULL),
(57,'Pledges - Payment Reminder','{ts}Pledge Payment Reminder{/ts} - {contact.display_name}\n','','\n\n\n \n \n\n\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n \n\n \n \n \n\n \n\n \n \n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},
{/if}\n {ts 1=$next_payment|truncate:10:\'\'|crmDate}This is a reminder that the next payment on your pledge is due on %1.{/ts}
\n \n \n \n \n \n \n \n {ts}Payment Due{/ts}\n \n \n \n \n {ts}Amount Due{/ts}\n \n \n {$amount_due|crmMoney:$currency}\n \n \n
\n \n \n\n \n \n {if $contribution_page_id}\n {capture assign=contributionUrl}{crmURL p=\'civicrm/contribute/transact\' q=\"reset=1&id=`$contribution_page_id`&cid=`{contact.id}`&pledgeId=`$pledge_id`&cs=`$checksumValue`\" a=true h=0 fe=1}{/capture}\n {ts}Go to a web page where you can make your payment online{/ts}
\n {else}\n {ts}Please mail your payment to{/ts}: {domain.address}
\n {/if}\n \n \n\n \n \n \n \n \n {ts}Pledge Information{/ts}\n \n \n \n \n {ts}Pledge Received{/ts}\n \n \n {$create_date|truncate:10:\'\'|crmDate}\n \n \n \n \n {ts}Total Pledge Amount{/ts}\n \n \n {$amount|crmMoney:$currency}\n \n \n \n \n {ts}Total Paid{/ts}\n \n \n {$amount_paid|crmMoney:$currency}\n \n \n
\n \n \n\n \n \n {ts 1=\'{domain.phone}\' 2=\'{domain.email}\'}Please contact us at %1 or send email to %2 if you have questions\nor need to modify your payment schedule.{/ts}
\n {ts}Thank you for your generous support.{/ts}
\n \n \n\n
\n\n\n\n',1,842,'pledge_reminder',1,0,0,NULL),
(58,'Pledges - Payment Reminder','{ts}Pledge Payment Reminder{/ts} - {contact.display_name}\n','','\n\n\n \n \n\n\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n \n\n \n \n \n\n \n\n \n \n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},
{/if}\n {ts 1=$next_payment|truncate:10:\'\'|crmDate}This is a reminder that the next payment on your pledge is due on %1.{/ts}
\n \n \n \n \n \n \n \n {ts}Payment Due{/ts}\n \n \n \n \n {ts}Amount Due{/ts}\n \n \n {$amount_due|crmMoney:$currency}\n \n \n
\n \n \n\n \n \n {if $contribution_page_id}\n {capture assign=contributionUrl}{crmURL p=\'civicrm/contribute/transact\' q=\"reset=1&id=`$contribution_page_id`&cid=`{contact.id}`&pledgeId=`$pledge_id`&cs=`$checksumValue`\" a=true h=0 fe=1}{/capture}\n {ts}Go to a web page where you can make your payment online{/ts}
\n {else}\n {ts}Please mail your payment to{/ts}: {domain.address}
\n {/if}\n \n \n\n \n \n \n \n \n {ts}Pledge Information{/ts}\n \n \n \n \n {ts}Pledge Received{/ts}\n \n \n {$create_date|truncate:10:\'\'|crmDate}\n \n \n \n \n {ts}Total Pledge Amount{/ts}\n \n \n {$amount|crmMoney:$currency}\n \n \n \n \n {ts}Total Paid{/ts}\n \n \n {$amount_paid|crmMoney:$currency}\n \n \n
\n \n \n\n \n \n {ts 1=\'{domain.phone}\' 2=\'{domain.email}\'}Please contact us at %1 or send email to %2 if you have questions\nor need to modify your payment schedule.{/ts}
\n {ts}Thank you for your generous support.{/ts}
\n \n \n\n
\n\n\n\n',1,842,'pledge_reminder',0,1,0,NULL),
- (59,'Profiles - Admin Notification','{$grouptitle} {ts 1=$displayName}Submitted by %1{/ts} - {contact.display_name}\n','','\n\n\n \n \n\n\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n \n\n \n \n \n\n \n\n \n \n \n \n \n {ts}Submitted For{/ts}\n \n \n {$displayName}\n \n \n \n \n {ts}Date{/ts}\n \n \n {$currentDate}\n \n \n \n \n {ts}Contact Summary{/ts}\n \n \n {$contactLink}\n \n \n\n \n \n {$grouptitle}\n \n \n\n {foreach from=$values item=value key=valueName}\n \n \n {$valueName}\n \n \n {$value}\n \n \n {/foreach}\n
\n \n \n\n
\n\n\n\n',1,843,'uf_notify',1,0,0,NULL),
- (60,'Profiles - Admin Notification','{$grouptitle} {ts 1=$displayName}Submitted by %1{/ts} - {contact.display_name}\n','','\n\n\n \n \n\n\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n \n\n \n \n \n\n \n\n \n \n \n \n \n {ts}Submitted For{/ts}\n \n \n {$displayName}\n \n \n \n \n {ts}Date{/ts}\n \n \n {$currentDate}\n \n \n \n \n {ts}Contact Summary{/ts}\n \n \n {$contactLink}\n \n \n\n \n \n {$grouptitle}\n \n \n\n {foreach from=$values item=value key=valueName}\n \n \n {$valueName}\n \n \n {$value}\n \n \n {/foreach}\n
\n \n \n\n
\n\n\n\n',1,843,'uf_notify',0,1,0,NULL),
+ (59,'Profiles - Admin Notification','{$grouptitle} {ts 1=$userDisplayName}Submitted by %1{/ts} - {contact.display_name}\n','','\n\n\n \n \n\n\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n \n\n \n \n \n\n \n\n \n \n \n \n \n {ts}Submitted For{/ts}\n \n \n {contact.display_name}\n \n \n \n \n {ts}Date{/ts}\n \n \n {domain.now|crmDate:\"Full\"}\n \n \n \n \n {ts}Contact Summary{/ts}\n \n \n {$contactLink}\n \n \n\n \n \n {$grouptitle}\n \n \n\n {foreach from=$values item=value key=valueName}\n \n \n {$valueName}\n \n \n {$value}\n \n \n {/foreach}\n
\n \n \n\n
\n\n\n\n',1,843,'uf_notify',1,0,0,NULL),
+ (60,'Profiles - Admin Notification','{$grouptitle} {ts 1=$userDisplayName}Submitted by %1{/ts} - {contact.display_name}\n','','\n\n\n \n \n\n\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle}style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle}style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n \n\n \n \n \n\n \n\n \n \n \n \n \n {ts}Submitted For{/ts}\n \n \n {contact.display_name}\n \n \n \n \n {ts}Date{/ts}\n \n \n {domain.now|crmDate:\"Full\"}\n \n \n \n \n {ts}Contact Summary{/ts}\n \n \n {$contactLink}\n \n \n\n \n \n {$grouptitle}\n \n \n\n {foreach from=$values item=value key=valueName}\n \n \n {$valueName}\n \n \n {$value}\n \n \n {/foreach}\n
\n \n \n\n
\n\n\n\n',1,843,'uf_notify',0,1,0,NULL),
(61,'Petition - signature added','Thank you for signing {survey.title} - {contact.display_name}\n','','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},
{/if}\n\nThank you for signing {survey.title}.
\n\n{capture assign=petitionURL}{crmURL p=\'civicrm/petition/sign\' q=\"sid={survey.id}\" a=1 fe=1 h=1}{/capture}\n{include file=\"CRM/common/SocialNetwork.tpl\" url=$petitionURL title=\'{survey.title}\' pageURL=$petitionURL petition_id=\'{survey.id}\' noscript=true emailMode=true}\n',1,844,'petition_sign',1,0,0,NULL),
(62,'Petition - signature added','Thank you for signing {survey.title} - {contact.display_name}\n','','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},
{/if}\n\nThank you for signing {survey.title}.
\n\n{capture assign=petitionURL}{crmURL p=\'civicrm/petition/sign\' q=\"sid={survey.id}\" a=1 fe=1 h=1}{/capture}\n{include file=\"CRM/common/SocialNetwork.tpl\" url=$petitionURL title=\'{survey.title}\' pageURL=$petitionURL petition_id=\'{survey.id}\' noscript=true emailMode=true}\n',1,844,'petition_sign',0,1,0,NULL),
(63,'Petition - need verification','Confirmation of signature needed for {$petition.title} - {contact.display_name}\n','','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},
{/if}\n\nThank you for signing {$petition.title}.
\n\nIn order to complete your signature , we must confirm your e-mail.\n \nPlease do so by visiting the following web page by clicking\non the link below or pasting the link into your browser.\n \nEmail confirmation page: {$petition.confirmUrl}
\n\nIf you did not sign this petition, please ignore this message.
\n',1,845,'petition_confirmation_needed',1,0,0,NULL),
@@ -5447,7 +5453,7 @@ INSERT INTO `civicrm_navigation` (`id`, `domain_id`, `label`, `name`, `url`, `ic
(52,1,'Register Event Participant','Register Event Participant','civicrm/participant/add?reset=1&action=add&context=standalone',NULL,'access CiviEvent,edit event participants','AND',50,1,NULL,2),
(53,1,'Find Participants','Find Participants','civicrm/event/search?reset=1',NULL,'access CiviEvent','',50,1,NULL,3),
(54,1,'Event Reports','Event Reports','civicrm/report/list?compid=1&reset=1',NULL,'access CiviEvent','',50,1,1,4),
- (55,1,'Import Participants','Import Participants','civicrm/event/import?reset=1',NULL,'access CiviEvent,edit event participants','AND',50,1,1,5),
+ (55,1,'Import Participants','Import Participants','civicrm/import/participant?reset=1',NULL,'access CiviEvent,edit event participants','AND',50,1,1,5),
(56,1,'New Event','New Event','civicrm/event/add?reset=1&action=add',NULL,'access CiviEvent,edit all events','AND',50,0,NULL,6),
(57,1,'Manage Events','Manage Events','civicrm/event/manage?reset=1',NULL,'access CiviEvent,edit all events','AND',50,1,1,7),
(58,1,'Personal Campaign Pages','Personal Campaign Pages','civicrm/admin/pcp?reset=1&page_type=event',NULL,'access CiviEvent,administer CiviCRM','AND',50,1,1,8),
@@ -5473,7 +5479,7 @@ INSERT INTO `civicrm_navigation` (`id`, `domain_id`, `label`, `name`, `url`, `ic
(78,1,'Find Memberships','Find Memberships','civicrm/member/search?reset=1',NULL,'access CiviMember','',75,1,NULL,3),
(79,1,'Membership Reports','Membership Reports','civicrm/report/list?compid=3&reset=1',NULL,'access CiviMember','',75,1,1,4),
(80,1,'Batch Data Entry','Batch Data Entry','civicrm/batch?reset=1',NULL,'access CiviContribute','',75,1,NULL,5),
- (81,1,'Import Memberships','Import Members','civicrm/member/import?reset=1',NULL,'access CiviMember,edit memberships','AND',75,1,1,6),
+ (81,1,'Import Memberships','Import Members','civicrm/import/membership?reset=1',NULL,'access CiviMember,edit memberships','AND',75,1,1,6),
(82,1,'New Price Set','New Price Set','civicrm/admin/price/edit?reset=1&action=add',NULL,'access CiviMember,administer CiviCRM','AND',75,0,NULL,7),
(83,1,'Manage Price Sets','Manage Price Sets','civicrm/admin/price?reset=1',NULL,'access CiviMember,administer CiviCRM','AND',75,1,NULL,8),
(84,1,'Campaigns','Campaigns',NULL,'crm-i fa-bullhorn','interview campaign contacts,release campaign contacts,reserve campaign contacts,manage campaign,administer CiviCampaign,gotv campaign contacts','OR',NULL,1,NULL,70),
@@ -5623,7 +5629,7 @@ INSERT INTO `civicrm_navigation` (`id`, `domain_id`, `label`, `name`, `url`, `ic
(228,1,'Api Explorer v4','Api Explorer v4','civicrm/api4#/explorer',NULL,'administer CiviCRM','',226,1,NULL,2),
(229,1,'Developer Docs','Developer Docs','https://civicrm.org/developer-documentation?src=iam',NULL,'administer CiviCRM','',226,1,NULL,3),
(230,1,'Reports','Reports',NULL,'crm-i fa-bar-chart','access CiviReport','',NULL,1,NULL,95),
- (231,1,'Contact Reports','Contact Reports','civicrm/report/list?compid=99&reset=1',NULL,'administer CiviCRM','',230,1,0,1),
+ (231,1,'Contact Reports','Contact Reports','civicrm/report/list?compid=99&reset=1',NULL,'access CiviReport','',230,1,0,1),
(232,1,'Contribution Reports','Contribution Reports','civicrm/report/list?compid=2&reset=1',NULL,'access CiviContribute','',230,1,0,2),
(233,1,'Pledge Reports','Pledge Reports','civicrm/report/list?compid=6&reset=1',NULL,'access CiviPledge','',230,1,0,3),
(234,1,'Event Reports','Event Reports','civicrm/report/list?compid=1&reset=1',NULL,'access CiviEvent','',230,1,0,4),
@@ -5648,26 +5654,26 @@ UNLOCK TABLES;
LOCK TABLES `civicrm_note` WRITE;
/*!40000 ALTER TABLE `civicrm_note` DISABLE KEYS */;
INSERT INTO `civicrm_note` (`id`, `entity_table`, `entity_id`, `note`, `contact_id`, `note_date`, `created_date`, `modified_date`, `subject`, `privacy`) VALUES
- (1,'civicrm_contact',135,'Get the registration done for NGO status',1,'2024-01-06 04:30:29','2024-01-06 04:30:29','2023-12-05 13:38:41',NULL,'0'),
- (2,'civicrm_contact',81,'Get the registration done for NGO status',1,'2024-01-06 04:30:29','2024-01-06 04:30:29','2023-01-31 23:17:32',NULL,'0'),
- (3,'civicrm_contact',71,'Arrange for cricket match with Sunil Gavaskar',1,'2024-01-06 04:30:29','2024-01-06 04:30:29','2023-06-11 01:50:54',NULL,'0'),
- (4,'civicrm_contact',102,'Arrange collection of funds from members',1,'2024-01-06 04:30:29','2024-01-06 04:30:29','2023-02-12 08:48:42',NULL,'0'),
- (5,'civicrm_contact',105,'Invite members for the Steve Prefontaine 10k dream run',1,'2024-01-06 04:30:29','2024-01-06 04:30:29','2023-04-12 17:49:10',NULL,'0'),
- (6,'civicrm_contact',58,'Send reminder for annual dinner',1,'2024-01-06 04:30:29','2024-01-06 04:30:29','2023-06-21 17:23:11',NULL,'0'),
- (7,'civicrm_contact',91,'Organize the Terry Fox run',1,'2024-01-06 04:30:29','2024-01-06 04:30:29','2023-02-25 05:14:40',NULL,'0'),
- (8,'civicrm_contact',100,'Invite members for the Steve Prefontaine 10k dream run',1,'2024-01-06 04:30:29','2024-01-06 04:30:29','2023-04-12 11:53:46',NULL,'0'),
- (9,'civicrm_contact',179,'Arrange for cricket match with Sunil Gavaskar',1,'2024-01-06 04:30:29','2024-01-06 04:30:29','2023-12-26 10:27:01',NULL,'0'),
- (10,'civicrm_contact',166,'Connect for presentation',1,'2024-01-06 04:30:29','2024-01-06 04:30:29','2023-06-17 22:57:52',NULL,'0'),
- (11,'civicrm_contact',21,'Arrange collection of funds from members',1,'2024-01-06 04:30:29','2024-01-06 04:30:29','2023-04-25 15:17:56',NULL,'0'),
- (12,'civicrm_contact',143,'Arrange collection of funds from members',1,'2024-01-06 04:30:29','2024-01-06 04:30:29','2023-11-27 12:24:44',NULL,'0'),
- (13,'civicrm_contact',175,'Reminder screening of \"Black\" on next Friday',1,'2024-01-06 04:30:29','2024-01-06 04:30:29','2023-02-27 12:54:18',NULL,'0'),
- (14,'civicrm_contact',107,'Send reminder for annual dinner',1,'2024-01-06 04:30:29','2024-01-06 04:30:29','2023-02-07 19:17:33',NULL,'0'),
- (15,'civicrm_contact',127,'Arrange for cricket match with Sunil Gavaskar',1,'2024-01-06 04:30:29','2024-01-06 04:30:29','2023-06-05 02:25:59',NULL,'0'),
- (16,'civicrm_contact',61,'Reminder screening of \"Black\" on next Friday',1,'2024-01-06 04:30:29','2024-01-06 04:30:29','2023-04-17 05:16:24',NULL,'0'),
- (17,'civicrm_contact',57,'Send reminder for annual dinner',1,'2024-01-06 04:30:29','2024-01-06 04:30:29','2023-11-15 08:09:53',NULL,'0'),
- (18,'civicrm_contact',127,'Send newsletter for April 2005',1,'2024-01-06 04:30:29','2024-01-06 04:30:29','2023-08-20 08:41:46',NULL,'0'),
- (19,'civicrm_contact',201,'Arrange for cricket match with Sunil Gavaskar',1,'2024-01-06 04:30:29','2024-01-06 04:30:29','2023-07-13 08:23:21',NULL,'0'),
- (20,'civicrm_contact',65,'Invite members for the Steve Prefontaine 10k dream run',1,'2024-01-06 04:30:29','2024-01-06 04:30:29','2023-08-02 14:26:38',NULL,'0');
+ (1,'civicrm_contact',48,'Invite members for the Steve Prefontaine 10k dream run',1,'2024-04-26 15:50:10','2024-04-26 15:50:10','2023-08-27 19:44:47',NULL,'0'),
+ (2,'civicrm_contact',117,'Send reminder for annual dinner',1,'2024-04-26 15:50:10','2024-04-26 15:50:10','2023-12-28 01:04:28',NULL,'0'),
+ (3,'civicrm_contact',158,'Invite members for the Steve Prefontaine 10k dream run',1,'2024-04-26 15:50:10','2024-04-26 15:50:10','2023-06-28 20:44:37',NULL,'0'),
+ (4,'civicrm_contact',4,'Organize the Terry Fox run',1,'2024-04-26 15:50:10','2024-04-26 15:50:10','2023-07-19 15:16:51',NULL,'0'),
+ (5,'civicrm_contact',110,'Send newsletter for April 2005',1,'2024-04-26 15:50:10','2024-04-26 15:50:10','2024-03-28 21:38:05',NULL,'0'),
+ (6,'civicrm_contact',138,'Chart out route map for next 10k run',1,'2024-04-26 15:50:10','2024-04-26 15:50:10','2023-11-12 15:04:30',NULL,'0'),
+ (7,'civicrm_contact',166,'Send reminder for annual dinner',1,'2024-04-26 15:50:10','2024-04-26 15:50:10','2023-08-23 05:30:23',NULL,'0'),
+ (8,'civicrm_contact',29,'Organize the Terry Fox run',1,'2024-04-26 15:50:10','2024-04-26 15:50:10','2023-07-26 16:35:36',NULL,'0'),
+ (9,'civicrm_contact',12,'Arrange collection of funds from members',1,'2024-04-26 15:50:10','2024-04-26 15:50:10','2023-12-27 19:24:20',NULL,'0'),
+ (10,'civicrm_contact',24,'Arrange for cricket match with Sunil Gavaskar',1,'2024-04-26 15:50:10','2024-04-26 15:50:10','2023-10-18 02:34:32',NULL,'0'),
+ (11,'civicrm_contact',6,'Arrange for cricket match with Sunil Gavaskar',1,'2024-04-26 15:50:10','2024-04-26 15:50:10','2023-11-08 15:10:02',NULL,'0'),
+ (12,'civicrm_contact',109,'Chart out route map for next 10k run',1,'2024-04-26 15:50:10','2024-04-26 15:50:10','2024-01-31 01:45:24',NULL,'0'),
+ (13,'civicrm_contact',32,'Reminder screening of \"Black\" on next Friday',1,'2024-04-26 15:50:10','2024-04-26 15:50:10','2023-06-20 09:55:03',NULL,'0'),
+ (14,'civicrm_contact',14,'Organize the Terry Fox run',1,'2024-04-26 15:50:10','2024-04-26 15:50:10','2024-02-23 03:19:47',NULL,'0'),
+ (15,'civicrm_contact',148,'Arrange for cricket match with Sunil Gavaskar',1,'2024-04-26 15:50:10','2024-04-26 15:50:10','2023-07-26 18:31:20',NULL,'0'),
+ (16,'civicrm_contact',130,'Organize the Terry Fox run',1,'2024-04-26 15:50:10','2024-04-26 15:50:10','2023-07-22 21:01:32',NULL,'0'),
+ (17,'civicrm_contact',168,'Reminder screening of \"Black\" on next Friday',1,'2024-04-26 15:50:10','2024-04-26 15:50:10','2024-01-02 01:47:45',NULL,'0'),
+ (18,'civicrm_contact',82,'Chart out route map for next 10k run',1,'2024-04-26 15:50:10','2024-04-26 15:50:10','2024-02-10 18:29:49',NULL,'0'),
+ (19,'civicrm_contact',47,'Reminder screening of \"Black\" on next Friday',1,'2024-04-26 15:50:10','2024-04-26 15:50:10','2023-12-06 01:20:36',NULL,'0'),
+ (20,'civicrm_contact',160,'Reminder screening of \"Black\" on next Friday',1,'2024-04-26 15:50:10','2024-04-26 15:50:10','2024-03-09 14:03:51',NULL,'0');
/*!40000 ALTER TABLE `civicrm_note` ENABLE KEYS */;
UNLOCK TABLES;
@@ -6674,56 +6680,56 @@ UNLOCK TABLES;
LOCK TABLES `civicrm_participant` WRITE;
/*!40000 ALTER TABLE `civicrm_participant` DISABLE KEYS */;
INSERT INTO `civicrm_participant` (`id`, `contact_id`, `event_id`, `status_id`, `role_id`, `register_date`, `source`, `fee_level`, `is_test`, `is_pay_later`, `fee_amount`, `registered_by_id`, `discount_id`, `fee_currency`, `campaign_id`, `discount_amount`, `cart_id`, `must_wait`, `transferred_to_contact_id`, `created_id`) VALUES
- (1,94,1,1,'1','2009-01-21 00:00:00','Check','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
- (2,138,2,2,'2','2008-05-07 00:00:00','Credit Card','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
- (3,183,3,3,'3','2008-05-05 00:00:00','Credit Card','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
- (4,24,1,4,'4','2008-10-21 00:00:00','Direct Transfer','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
- (5,67,2,1,'1','2008-01-10 00:00:00','Check','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
- (6,75,3,2,'2','2008-03-05 00:00:00','Direct Transfer','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
- (7,37,1,3,'3','2009-07-21 00:00:00','Direct Transfer','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
- (8,62,2,4,'4','2009-03-07 00:00:00','Credit Card','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
- (9,103,3,1,'1','2008-02-05 00:00:00','Direct Transfer','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
- (10,80,1,2,'2','2008-02-01 00:00:00','Check','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
- (11,161,2,3,'3','2009-01-10 00:00:00','Direct Transfer','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
- (12,111,3,4,'4','2009-03-06 00:00:00','Credit Card','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
- (13,114,1,1,'2','2008-06-04 00:00:00','Credit Card','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
- (14,148,2,2,'3','2008-01-10 00:00:00','Direct Transfer','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
- (15,184,3,4,'1','2008-07-04 00:00:00','Check','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
- (16,89,1,4,'2','2009-01-21 00:00:00','Credit Card','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
- (17,47,2,2,'3','2008-01-10 00:00:00','Credit Card','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
- (18,98,3,3,'1','2009-03-05 00:00:00','Credit Card','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
- (19,192,1,2,'1','2008-10-21 00:00:00','Direct Transfer','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
- (20,41,2,4,'1','2009-01-10 00:00:00','Credit Card','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
- (21,118,3,1,'4','2008-03-25 00:00:00','Check','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
- (22,187,1,2,'3','2009-10-21 00:00:00','Direct Transfer','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
- (23,87,2,4,'1','2008-01-10 00:00:00','Direct Transfer','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
- (24,190,3,3,'1','2008-03-11 00:00:00','Credit Card','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
- (25,6,3,2,'2','2008-04-05 00:00:00','Direct Transfer','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
- (26,101,1,1,'1','2009-01-21 00:00:00','Check','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
- (27,77,2,2,'2','2008-05-07 00:00:00','Credit Card','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
- (28,201,3,3,'3','2009-12-12 00:00:00','Direct Transfer','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
- (29,38,1,4,'4','2009-12-13 00:00:00','Credit Card','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
- (30,144,2,1,'1','2009-12-14 00:00:00','Direct Transfer','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
- (31,72,3,2,'2','2009-12-15 00:00:00','Credit Card','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
- (32,18,1,3,'3','2009-07-21 00:00:00','Check','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
- (33,7,2,4,'4','2009-03-07 00:00:00','Direct Transfer','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
- (34,189,3,1,'1','2009-12-15 00:00:00','Credit Card','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
- (35,65,1,2,'2','2009-12-13 00:00:00','Direct Transfer','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
- (36,185,2,3,'3','2009-01-10 00:00:00','Direct Transfer','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
- (37,50,3,4,'4','2009-03-06 00:00:00','Check','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
- (38,32,1,1,'2','2009-12-13 00:00:00','Direct Transfer','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
- (39,25,2,2,'3','2008-01-10 00:00:00','Direct Transfer','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
- (40,66,3,4,'1','2009-12-14 00:00:00','Credit Card','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
- (41,15,1,4,'2','2009-01-21 00:00:00','Credit Card','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
- (42,162,2,2,'3','2009-12-15 00:00:00','Credit Card','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
- (43,2,3,3,'1','2009-03-05 00:00:00','Credit Card','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
- (44,152,1,2,'1','2009-12-13 00:00:00','Direct Transfer','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
- (45,202,2,4,'1','2009-01-10 00:00:00','Direct Transfer','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
- (46,12,3,1,'4','2009-12-13 00:00:00','Check','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
- (47,167,1,2,'3','2009-10-21 00:00:00','Credit Card','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
- (48,125,2,4,'1','2009-12-10 00:00:00','Credit Card','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
- (49,46,3,3,'1','2009-03-11 00:00:00','Credit Card','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
- (50,147,3,2,'2','2009-04-05 00:00:00','Check','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL);
+ (1,51,1,1,'1','2009-01-21 00:00:00','Check','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
+ (2,34,2,2,'2','2008-05-07 00:00:00','Credit Card','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
+ (3,193,3,3,'3','2008-05-05 00:00:00','Credit Card','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
+ (4,153,1,4,'4','2008-10-21 00:00:00','Direct Transfer','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
+ (5,62,2,1,'1','2008-01-10 00:00:00','Check','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
+ (6,132,3,2,'2','2008-03-05 00:00:00','Direct Transfer','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
+ (7,35,1,3,'3','2009-07-21 00:00:00','Direct Transfer','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
+ (8,95,2,4,'4','2009-03-07 00:00:00','Credit Card','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
+ (9,81,3,1,'1','2008-02-05 00:00:00','Direct Transfer','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
+ (10,75,1,2,'2','2008-02-01 00:00:00','Check','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
+ (11,54,2,3,'3','2009-01-10 00:00:00','Direct Transfer','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
+ (12,113,3,4,'4','2009-03-06 00:00:00','Credit Card','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
+ (13,156,1,1,'2','2008-06-04 00:00:00','Credit Card','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
+ (14,123,2,2,'3','2008-01-10 00:00:00','Direct Transfer','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
+ (15,101,3,4,'1','2008-07-04 00:00:00','Check','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
+ (16,146,1,4,'2','2009-01-21 00:00:00','Credit Card','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
+ (17,163,2,2,'3','2008-01-10 00:00:00','Credit Card','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
+ (18,11,3,3,'1','2009-03-05 00:00:00','Credit Card','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
+ (19,87,1,2,'1','2008-10-21 00:00:00','Direct Transfer','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
+ (20,10,2,4,'1','2009-01-10 00:00:00','Credit Card','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
+ (21,195,3,1,'4','2008-03-25 00:00:00','Check','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
+ (22,129,1,2,'3','2009-10-21 00:00:00','Direct Transfer','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
+ (23,8,2,4,'1','2008-01-10 00:00:00','Direct Transfer','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
+ (24,158,3,3,'1','2008-03-11 00:00:00','Credit Card','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
+ (25,93,3,2,'2','2008-04-05 00:00:00','Direct Transfer','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
+ (26,22,1,1,'1','2009-01-21 00:00:00','Check','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
+ (27,60,2,2,'2','2008-05-07 00:00:00','Credit Card','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
+ (28,182,3,3,'3','2009-12-12 00:00:00','Direct Transfer','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
+ (29,152,1,4,'4','2009-12-13 00:00:00','Credit Card','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
+ (30,26,2,1,'1','2009-12-14 00:00:00','Direct Transfer','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
+ (31,79,3,2,'2','2009-12-15 00:00:00','Credit Card','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
+ (32,70,1,3,'3','2009-07-21 00:00:00','Check','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
+ (33,57,2,4,'4','2009-03-07 00:00:00','Direct Transfer','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
+ (34,28,3,1,'1','2009-12-15 00:00:00','Credit Card','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
+ (35,186,1,2,'2','2009-12-13 00:00:00','Direct Transfer','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
+ (36,6,2,3,'3','2009-01-10 00:00:00','Direct Transfer','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
+ (37,114,3,4,'4','2009-03-06 00:00:00','Check','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
+ (38,41,1,1,'2','2009-12-13 00:00:00','Direct Transfer','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
+ (39,21,2,2,'3','2008-01-10 00:00:00','Direct Transfer','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
+ (40,72,3,4,'1','2009-12-14 00:00:00','Credit Card','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
+ (41,171,1,4,'2','2009-01-21 00:00:00','Credit Card','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
+ (42,3,2,2,'3','2009-12-15 00:00:00','Credit Card','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
+ (43,177,3,3,'1','2009-03-05 00:00:00','Credit Card','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
+ (44,176,1,2,'1','2009-12-13 00:00:00','Direct Transfer','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
+ (45,18,2,4,'1','2009-01-10 00:00:00','Direct Transfer','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
+ (46,194,3,1,'4','2009-12-13 00:00:00','Check','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
+ (47,181,1,2,'3','2009-10-21 00:00:00','Credit Card','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
+ (48,78,2,4,'1','2009-12-10 00:00:00','Credit Card','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
+ (49,67,3,3,'1','2009-03-11 00:00:00','Credit Card','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
+ (50,20,3,2,'2','2009-04-05 00:00:00','Check','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL);
/*!40000 ALTER TABLE `civicrm_participant` ENABLE KEYS */;
UNLOCK TABLES;
@@ -6734,56 +6740,56 @@ UNLOCK TABLES;
LOCK TABLES `civicrm_participant_payment` WRITE;
/*!40000 ALTER TABLE `civicrm_participant_payment` DISABLE KEYS */;
INSERT INTO `civicrm_participant_payment` (`id`, `participant_id`, `contribution_id`) VALUES
- (1,43,63),
- (2,25,64),
- (3,33,65),
- (4,46,66),
- (5,41,67),
- (6,32,68),
- (7,4,69),
- (8,39,70),
- (9,38,71),
- (10,7,72),
- (11,29,73),
- (12,20,74),
- (13,49,75),
- (14,17,76),
- (15,37,77),
- (16,8,78),
- (17,35,79),
- (18,40,80),
- (19,5,81),
- (20,31,82),
- (21,6,83),
- (22,27,84),
- (23,10,85),
- (24,23,86),
- (25,16,87),
- (26,1,88),
- (27,18,89),
- (28,26,90),
- (29,9,91),
- (30,12,92),
- (31,13,93),
- (32,21,94),
- (33,48,95),
- (34,2,96),
- (35,30,97),
- (36,50,98),
- (37,14,99),
- (38,44,100),
- (39,11,101),
- (40,42,102),
- (41,47,103),
- (42,3,104),
- (43,15,105),
- (44,36,106),
- (45,22,107),
- (46,34,108),
- (47,24,109),
- (48,19,110),
- (49,28,111),
- (50,45,112);
+ (1,1,63),
+ (2,2,64),
+ (3,3,65),
+ (4,4,66),
+ (5,5,67),
+ (6,6,68),
+ (7,7,69),
+ (8,8,70),
+ (9,9,71),
+ (10,10,72),
+ (11,11,73),
+ (12,12,74),
+ (13,13,75),
+ (14,14,76),
+ (15,15,77),
+ (16,16,78),
+ (17,17,79),
+ (18,18,80),
+ (19,19,81),
+ (20,20,82),
+ (21,21,83),
+ (22,22,84),
+ (23,23,85),
+ (24,24,86),
+ (25,25,87),
+ (26,26,88),
+ (27,27,89),
+ (28,28,90),
+ (29,29,91),
+ (30,30,92),
+ (31,31,93),
+ (32,32,94),
+ (33,33,95),
+ (34,34,96),
+ (35,35,97),
+ (36,36,98),
+ (37,37,99),
+ (38,38,100),
+ (39,39,101),
+ (40,40,102),
+ (41,41,103),
+ (42,42,104),
+ (43,43,105),
+ (44,44,106),
+ (45,45,107),
+ (46,46,108),
+ (47,47,109),
+ (48,48,110),
+ (49,49,111),
+ (50,50,112);
/*!40000 ALTER TABLE `civicrm_participant_payment` ENABLE KEYS */;
UNLOCK TABLES;
@@ -6856,7 +6862,7 @@ UNLOCK TABLES;
LOCK TABLES `civicrm_pcp` WRITE;
/*!40000 ALTER TABLE `civicrm_pcp` DISABLE KEYS */;
INSERT INTO `civicrm_pcp` (`id`, `contact_id`, `status_id`, `title`, `intro_text`, `page_text`, `donate_link_text`, `page_id`, `page_type`, `pcp_block_id`, `is_thermometer`, `is_honor_roll`, `goal_amount`, `currency`, `is_active`, `is_notify`) VALUES
- (1,86,2,'My Personal Civi Fundraiser','I\'m on a mission to get all my friends and family to help support my favorite open-source civic sector CRM.','Friends and family - please help build much needed infrastructure for the civic sector by supporting my personal campaign!
\r\nYou can learn more about CiviCRM here .
\r\nThen click the Contribute Now button to go to our easy-to-use online contribution form.
','Contribute Now',1,'contribute',1,1,1,5000.00,'USD',1,1);
+ (1,89,2,'My Personal Civi Fundraiser','I\'m on a mission to get all my friends and family to help support my favorite open-source civic sector CRM.','Friends and family - please help build much needed infrastructure for the civic sector by supporting my personal campaign!
\r\nYou can learn more about CiviCRM here .
\r\nThen click the Contribute Now button to go to our easy-to-use online contribution form.
','Contribute Now',1,'contribute',1,1,1,5000.00,'USD',1,1);
/*!40000 ALTER TABLE `civicrm_pcp` ENABLE KEYS */;
UNLOCK TABLES;
@@ -6878,162 +6884,161 @@ UNLOCK TABLES;
LOCK TABLES `civicrm_phone` WRITE;
/*!40000 ALTER TABLE `civicrm_phone` DISABLE KEYS */;
INSERT INTO `civicrm_phone` (`id`, `contact_id`, `location_type_id`, `is_primary`, `is_billing`, `mobile_provider_id`, `phone`, `phone_ext`, `phone_numeric`, `phone_type_id`) VALUES
- (1,120,1,1,0,NULL,'576-7505',NULL,'5767505',2),
- (2,130,1,1,0,NULL,'804-7587',NULL,'8047587',1),
- (3,99,1,1,0,NULL,'411-3825',NULL,'4113825',1),
- (4,99,1,0,0,NULL,'(311) 226-5554',NULL,'3112265554',2),
- (5,86,1,1,0,NULL,'(569) 477-6047',NULL,'5694776047',2),
- (6,86,1,0,0,NULL,'419-3585',NULL,'4193585',1),
- (7,37,1,1,0,NULL,'(219) 352-1365',NULL,'2193521365',2),
- (8,92,1,1,0,NULL,'207-6760',NULL,'2076760',2),
- (9,92,1,0,0,NULL,'(464) 544-8828',NULL,'4645448828',1),
- (10,53,1,1,0,NULL,'(696) 706-8246',NULL,'6967068246',2),
- (11,53,1,0,0,NULL,'756-8614',NULL,'7568614',2),
- (12,113,1,1,0,NULL,'550-9374',NULL,'5509374',1),
- (13,196,1,1,0,NULL,'(890) 492-5849',NULL,'8904925849',2),
- (14,196,1,0,0,NULL,'(563) 675-5151',NULL,'5636755151',1),
- (15,141,1,1,0,NULL,'(265) 840-6920',NULL,'2658406920',1),
- (16,165,1,1,0,NULL,'531-4633',NULL,'5314633',2),
- (17,46,1,1,0,NULL,'590-1201',NULL,'5901201',2),
- (18,137,1,1,0,NULL,'575-7000',NULL,'5757000',2),
- (19,137,1,0,0,NULL,'323-6848',NULL,'3236848',1),
- (20,66,1,1,0,NULL,'404-1637',NULL,'4041637',1),
- (21,66,1,0,0,NULL,'266-2586',NULL,'2662586',1),
- (22,190,1,1,0,NULL,'(409) 247-4263',NULL,'4092474263',1),
- (23,22,1,1,0,NULL,'687-7556',NULL,'6877556',2),
- (24,195,1,1,0,NULL,'(752) 229-1795',NULL,'7522291795',1),
- (25,110,1,1,0,NULL,'(487) 398-8154',NULL,'4873988154',1),
- (26,84,1,1,0,NULL,'242-6079',NULL,'2426079',1),
- (27,133,1,1,0,NULL,'556-9633',NULL,'5569633',1),
- (28,47,1,1,0,NULL,'611-9412',NULL,'6119412',2),
- (29,85,1,1,0,NULL,'644-8279',NULL,'6448279',1),
- (30,85,1,0,0,NULL,'(500) 804-4443',NULL,'5008044443',2),
- (31,193,1,1,0,NULL,'861-7338',NULL,'8617338',2),
- (32,101,1,1,0,NULL,'(250) 367-8612',NULL,'2503678612',1),
- (33,101,1,0,0,NULL,'871-9950',NULL,'8719950',2),
- (34,77,1,1,0,NULL,'(854) 779-3993',NULL,'8547793993',2),
- (35,50,1,1,0,NULL,'757-5986',NULL,'7575986',1),
- (36,50,1,0,0,NULL,'(442) 601-1411',NULL,'4426011411',1),
- (37,164,1,1,0,NULL,'(519) 821-5318',NULL,'5198215318',1),
- (38,67,1,1,0,NULL,'(205) 427-3171',NULL,'2054273171',2),
- (39,67,1,0,0,NULL,'848-1893',NULL,'8481893',1),
- (40,121,1,1,0,NULL,'785-3064',NULL,'7853064',2),
- (41,192,1,1,0,NULL,'409-2681',NULL,'4092681',1),
- (42,75,1,1,0,NULL,'(233) 256-2210',NULL,'2332562210',2),
- (43,19,1,1,0,NULL,'(755) 785-1270',NULL,'7557851270',2),
- (44,19,1,0,0,NULL,'(227) 204-8678',NULL,'2272048678',2),
- (45,146,1,1,0,NULL,'(515) 362-6065',NULL,'5153626065',1),
- (46,106,1,1,0,NULL,'736-5781',NULL,'7365781',2),
- (47,106,1,0,0,NULL,'(503) 723-8369',NULL,'5037238369',2),
- (48,71,1,1,0,NULL,'(782) 452-6489',NULL,'7824526489',2),
- (49,13,1,1,0,NULL,'(210) 815-8672',NULL,'2108158672',2),
- (50,14,1,1,0,NULL,'(822) 516-3505',NULL,'8225163505',2),
- (51,88,1,1,0,NULL,'601-5464',NULL,'6015464',2),
- (52,88,1,0,0,NULL,'(538) 417-3584',NULL,'5384173584',2),
- (53,163,1,1,0,NULL,'(548) 546-1946',NULL,'5485461946',1),
- (54,129,1,1,0,NULL,'225-2012',NULL,'2252012',2),
- (55,27,1,1,0,NULL,'803-3112',NULL,'8033112',1),
- (56,4,1,1,0,NULL,'417-6656',NULL,'4176656',2),
- (57,91,1,1,0,NULL,'(858) 312-5948',NULL,'8583125948',2),
- (58,60,1,1,0,NULL,'(546) 622-4921',NULL,'5466224921',1),
- (59,172,1,1,0,NULL,'538-3332',NULL,'5383332',1),
- (60,63,1,1,0,NULL,'708-3745',NULL,'7083745',2),
- (61,63,1,0,0,NULL,'364-4717',NULL,'3644717',2),
- (62,102,1,1,0,NULL,'(848) 670-3275',NULL,'8486703275',1),
- (63,117,1,1,0,NULL,'(822) 576-2550',NULL,'8225762550',2),
- (64,17,1,1,0,NULL,'(366) 841-1082',NULL,'3668411082',1),
- (65,17,1,0,0,NULL,'(669) 751-6827',NULL,'6697516827',1),
- (66,16,1,1,0,NULL,'(204) 572-1264',NULL,'2045721264',2),
- (67,16,1,0,0,NULL,'(301) 643-8023',NULL,'3016438023',1),
- (68,159,1,1,0,NULL,'642-1912',NULL,'6421912',1),
- (69,41,1,1,0,NULL,'574-8756',NULL,'5748756',1),
- (70,41,1,0,0,NULL,'(623) 290-8773',NULL,'6232908773',2),
- (71,30,1,1,0,NULL,'(837) 816-2028',NULL,'8378162028',1),
- (72,98,1,1,0,NULL,'443-3561',NULL,'4433561',2),
- (73,109,1,1,0,NULL,'(733) 889-7695',NULL,'7338897695',1),
- (74,155,1,1,0,NULL,'(793) 723-1124',NULL,'7937231124',1),
- (75,155,1,0,0,NULL,'(491) 883-1926',NULL,'4918831926',1),
- (76,125,1,1,0,NULL,'792-4382',NULL,'7924382',1),
- (77,125,1,0,0,NULL,'(542) 727-7168',NULL,'5427277168',1),
- (78,189,1,1,0,NULL,'(209) 533-9689',NULL,'2095339689',2),
- (79,57,1,1,0,NULL,'(440) 835-1640',NULL,'4408351640',1),
- (80,57,1,0,0,NULL,'644-2716',NULL,'6442716',1),
- (81,114,1,1,0,NULL,'408-4135',NULL,'4084135',1),
- (82,114,1,0,0,NULL,'685-6487',NULL,'6856487',1),
- (83,175,1,1,0,NULL,'(776) 343-2358',NULL,'7763432358',2),
- (84,49,1,1,0,NULL,'(535) 838-4817',NULL,'5358384817',1),
- (85,69,1,1,0,NULL,'(785) 389-5755',NULL,'7853895755',2),
- (86,58,1,1,0,NULL,'879-7960',NULL,'8797960',1),
- (87,56,1,1,0,NULL,'277-5034',NULL,'2775034',2),
- (88,140,1,1,0,NULL,'346-8687',NULL,'3468687',1),
- (89,38,1,1,0,NULL,'(804) 291-1570',NULL,'8042911570',1),
- (90,38,1,0,0,NULL,'664-6943',NULL,'6646943',2),
- (91,107,1,1,0,NULL,'(662) 474-5980',NULL,'6624745980',1),
- (92,134,1,1,0,NULL,'774-4759',NULL,'7744759',2),
- (93,79,1,1,0,NULL,'443-3687',NULL,'4433687',1),
- (94,79,1,0,0,NULL,'(486) 689-7704',NULL,'4866897704',2),
- (95,32,1,1,0,NULL,'220-5874',NULL,'2205874',2),
- (96,42,1,1,0,NULL,'(793) 637-9745',NULL,'7936379745',1),
- (97,42,1,0,0,NULL,'(271) 688-2880',NULL,'2716882880',1),
- (98,132,1,1,0,NULL,'(568) 582-3180',NULL,'5685823180',1),
- (99,132,1,0,0,NULL,'(238) 849-7668',NULL,'2388497668',2),
- (100,160,1,1,0,NULL,'467-7573',NULL,'4677573',1),
- (101,160,1,0,0,NULL,'(826) 647-5608',NULL,'8266475608',1),
- (102,96,1,1,0,NULL,'(322) 557-8828',NULL,'3225578828',1),
- (103,185,1,1,0,NULL,'(644) 616-6984',NULL,'6446166984',1),
- (104,185,1,0,0,NULL,'(665) 622-1516',NULL,'6656221516',2),
- (105,158,1,1,0,NULL,'(471) 603-2209',NULL,'4716032209',1),
- (106,119,1,1,0,NULL,'(757) 534-6636',NULL,'7575346636',2),
- (107,103,1,1,0,NULL,'835-4556',NULL,'8354556',2),
- (108,103,1,0,0,NULL,'(736) 218-2716',NULL,'7362182716',1),
- (109,112,1,1,0,NULL,'330-4678',NULL,'3304678',2),
- (110,112,1,0,0,NULL,'(709) 590-5230',NULL,'7095905230',1),
- (111,108,1,1,0,NULL,'285-6598',NULL,'2856598',2),
- (112,33,1,1,0,NULL,'(738) 665-2249',NULL,'7386652249',1),
- (113,33,1,0,0,NULL,'(429) 830-6169',NULL,'4298306169',2),
- (114,104,1,1,0,NULL,'616-1009',NULL,'6161009',2),
- (115,7,1,1,0,NULL,'536-2772',NULL,'5362772',2),
- (116,29,1,1,0,NULL,'(564) 876-1571',NULL,'5648761571',1),
- (117,197,1,1,0,NULL,'814-7118',NULL,'8147118',1),
- (118,9,1,1,0,NULL,'(799) 256-5836',NULL,'7992565836',2),
- (119,9,1,0,0,NULL,'617-1823',NULL,'6171823',1),
- (120,179,1,1,0,NULL,'(557) 493-5870',NULL,'5574935870',1),
- (121,179,1,0,0,NULL,'(831) 864-8361',NULL,'8318648361',2),
- (122,162,1,1,0,NULL,'(410) 578-6490',NULL,'4105786490',1),
- (123,20,1,1,0,NULL,'(544) 797-1489',NULL,'5447971489',2),
- (124,20,1,0,0,NULL,'514-9510',NULL,'5149510',2),
- (125,18,1,1,0,NULL,'624-5432',NULL,'6245432',2),
- (126,18,1,0,0,NULL,'(821) 759-9432',NULL,'8217599432',1),
- (127,61,1,1,0,NULL,'463-3949',NULL,'4633949',1),
- (128,35,1,1,0,NULL,'(222) 875-4873',NULL,'2228754873',1),
- (129,111,1,1,0,NULL,'(865) 842-4637',NULL,'8658424637',1),
- (130,111,1,0,0,NULL,'(738) 498-4809',NULL,'7384984809',1),
- (131,178,1,1,0,NULL,'563-7792',NULL,'5637792',2),
- (132,31,1,1,0,NULL,'(837) 448-2521',NULL,'8374482521',2),
- (133,31,1,0,0,NULL,'267-1329',NULL,'2671329',1),
- (134,74,1,1,0,NULL,'(253) 784-8156',NULL,'2537848156',2),
- (135,74,1,0,0,NULL,'310-8551',NULL,'3108551',2),
- (136,126,1,1,0,NULL,'495-1945',NULL,'4951945',1),
- (137,186,1,1,0,NULL,'(899) 833-4935',NULL,'8998334935',1),
- (138,186,1,0,0,NULL,'(219) 848-7031',NULL,'2198487031',2),
- (139,26,1,1,0,NULL,'(630) 560-3368',NULL,'6305603368',2),
- (140,139,1,1,0,NULL,'(458) 425-1943',NULL,'4584251943',1),
- (141,201,1,1,0,NULL,'693-6513',NULL,'6936513',1),
- (142,28,1,1,0,NULL,'495-4859',NULL,'4954859',1),
- (143,28,1,0,0,NULL,'561-4207',NULL,'5614207',1),
- (144,72,1,1,0,NULL,'511-9369',NULL,'5119369',2),
- (145,72,1,0,0,NULL,'(263) 702-5396',NULL,'2637025396',1),
- (146,12,1,1,0,NULL,'(344) 362-3872',NULL,'3443623872',2),
- (147,136,1,1,0,NULL,'(752) 652-3738',NULL,'7526523738',2),
- (148,78,1,1,0,NULL,'(844) 712-7968',NULL,'8447127968',2),
- (149,78,1,0,0,NULL,'310-9055',NULL,'3109055',2),
- (150,54,1,1,0,NULL,'525-6572',NULL,'5256572',2),
- (151,54,1,0,0,NULL,'(204) 314-9112',NULL,'2043149112',2),
- (152,94,1,1,0,NULL,'252-1523',NULL,'2521523',2),
- (153,157,1,1,0,NULL,'(540) 591-4504',NULL,'5405914504',1),
- (154,NULL,1,0,0,NULL,'204 222-1000',NULL,'2042221000',1),
- (155,NULL,1,0,0,NULL,'204 223-1000',NULL,'2042231000',1),
- (156,NULL,1,0,0,NULL,'303 323-1000',NULL,'3033231000',1);
+ (1,8,1,1,0,NULL,'587-6756',NULL,'5876756',2),
+ (2,89,1,1,0,NULL,'(389) 470-5421',NULL,'3894705421',1),
+ (3,89,1,0,0,NULL,'(641) 483-4759',NULL,'6414834759',2),
+ (4,37,1,1,0,NULL,'(322) 512-4592',NULL,'3225124592',1),
+ (5,37,1,0,0,NULL,'(240) 210-2329',NULL,'2402102329',1),
+ (6,107,1,1,0,NULL,'(204) 251-4382',NULL,'2042514382',2),
+ (7,200,1,1,0,NULL,'(838) 866-3690',NULL,'8388663690',2),
+ (8,200,1,0,0,NULL,'316-9908',NULL,'3169908',2),
+ (9,20,1,1,0,NULL,'(633) 416-1786',NULL,'6334161786',2),
+ (10,63,1,1,0,NULL,'(495) 446-5109',NULL,'4954465109',2),
+ (11,63,1,0,0,NULL,'604-9596',NULL,'6049596',1),
+ (12,158,1,1,0,NULL,'(539) 615-1888',NULL,'5396151888',1),
+ (13,116,1,1,0,NULL,'(238) 883-1898',NULL,'2388831898',2),
+ (14,6,1,1,0,NULL,'(218) 379-3409',NULL,'2183793409',1),
+ (15,6,1,0,0,NULL,'776-3045',NULL,'7763045',2),
+ (16,78,1,1,0,NULL,'279-8726',NULL,'2798726',1),
+ (17,78,1,0,0,NULL,'(809) 607-8860',NULL,'8096078860',2),
+ (18,13,1,1,0,NULL,'622-8150',NULL,'6228150',2),
+ (19,177,1,1,0,NULL,'447-8954',NULL,'4478954',1),
+ (20,21,1,1,0,NULL,'(562) 354-8944',NULL,'5623548944',1),
+ (21,79,1,1,0,NULL,'858-6404',NULL,'8586404',1),
+ (22,79,1,0,0,NULL,'241-7229',NULL,'2417229',1),
+ (23,171,1,1,0,NULL,'428-7797',NULL,'4287797',2),
+ (24,171,1,0,0,NULL,'321-3784',NULL,'3213784',1),
+ (25,58,1,1,0,NULL,'(297) 249-1401',NULL,'2972491401',2),
+ (26,160,1,1,0,NULL,'324-5355',NULL,'3245355',1),
+ (27,22,1,1,0,NULL,'464-6657',NULL,'4646657',2),
+ (28,22,1,0,0,NULL,'(509) 352-4601',NULL,'5093524601',1),
+ (29,166,1,1,0,NULL,'(580) 709-1123',NULL,'5807091123',2),
+ (30,166,1,0,0,NULL,'(292) 252-2995',NULL,'2922522995',1),
+ (31,167,1,1,0,NULL,'521-2922',NULL,'5212922',1),
+ (32,167,1,0,0,NULL,'690-1206',NULL,'6901206',2),
+ (33,94,1,1,0,NULL,'(424) 409-8505',NULL,'4244098505',2),
+ (34,74,1,1,0,NULL,'368-6460',NULL,'3686460',1),
+ (35,61,1,1,0,NULL,'(674) 536-5959',NULL,'6745365959',2),
+ (36,35,1,1,0,NULL,'(354) 435-5811',NULL,'3544355811',2),
+ (37,187,1,1,0,NULL,'798-9241',NULL,'7989241',1),
+ (38,187,1,0,0,NULL,'389-3740',NULL,'3893740',2),
+ (39,122,1,1,0,NULL,'(795) 575-2502',NULL,'7955752502',1),
+ (40,122,1,0,0,NULL,'(714) 822-5427',NULL,'7148225427',1),
+ (41,159,1,1,0,NULL,'374-5561',NULL,'3745561',1),
+ (42,93,1,1,0,NULL,'665-6046',NULL,'6656046',2),
+ (43,60,1,1,0,NULL,'309-9832',NULL,'3099832',1),
+ (44,60,1,0,0,NULL,'(258) 592-9380',NULL,'2585929380',1),
+ (45,66,1,1,0,NULL,'(437) 248-3187',NULL,'4372483187',1),
+ (46,81,1,1,0,NULL,'(572) 220-2235',NULL,'5722202235',1),
+ (47,81,1,0,0,NULL,'483-5731',NULL,'4835731',2),
+ (48,131,1,1,0,NULL,'(510) 507-7020',NULL,'5105077020',2),
+ (49,131,1,0,0,NULL,'(868) 332-8065',NULL,'8683328065',2),
+ (50,143,1,1,0,NULL,'306-8870',NULL,'3068870',1),
+ (51,143,1,0,0,NULL,'835-3894',NULL,'8353894',1),
+ (52,201,1,1,0,NULL,'(483) 710-7760',NULL,'4837107760',1),
+ (53,92,1,1,0,NULL,'534-1609',NULL,'5341609',1),
+ (54,92,1,0,0,NULL,'266-7430',NULL,'2667430',2),
+ (55,5,1,1,0,NULL,'(740) 663-5586',NULL,'7406635586',2),
+ (56,5,1,0,0,NULL,'807-5904',NULL,'8075904',1),
+ (57,194,1,1,0,NULL,'823-7420',NULL,'8237420',1),
+ (58,194,1,0,0,NULL,'403-2058',NULL,'4032058',1),
+ (59,145,1,1,0,NULL,'307-3976',NULL,'3073976',1),
+ (60,145,1,0,0,NULL,'(386) 337-3038',NULL,'3863373038',1),
+ (61,88,1,1,0,NULL,'(272) 713-1640',NULL,'2727131640',1),
+ (62,88,1,0,0,NULL,'(861) 265-7395',NULL,'8612657395',2),
+ (63,99,1,1,0,NULL,'(402) 315-2097',NULL,'4023152097',1),
+ (64,99,1,0,0,NULL,'(684) 247-6024',NULL,'6842476024',1),
+ (65,55,1,1,0,NULL,'728-3333',NULL,'7283333',2),
+ (66,100,1,1,0,NULL,'(477) 235-4317',NULL,'4772354317',1),
+ (67,100,1,0,0,NULL,'418-2740',NULL,'4182740',1),
+ (68,142,1,1,0,NULL,'462-9326',NULL,'4629326',2),
+ (69,179,1,1,0,NULL,'(285) 409-6732',NULL,'2854096732',2),
+ (70,179,1,0,0,NULL,'399-2871',NULL,'3992871',1),
+ (71,186,1,1,0,NULL,'(744) 373-6140',NULL,'7443736140',2),
+ (72,118,1,1,0,NULL,'(743) 253-7988',NULL,'7432537988',1),
+ (73,65,1,1,0,NULL,'(499) 361-6783',NULL,'4993616783',1),
+ (74,54,1,1,0,NULL,'729-3642',NULL,'7293642',1),
+ (75,54,1,0,0,NULL,'(867) 312-5775',NULL,'8673125775',2),
+ (76,32,1,1,0,NULL,'(497) 800-2995',NULL,'4978002995',1),
+ (77,30,1,1,0,NULL,'(850) 437-9358',NULL,'8504379358',1),
+ (78,43,1,1,0,NULL,'376-8709',NULL,'3768709',2),
+ (79,19,1,1,0,NULL,'(411) 553-1689',NULL,'4115531689',1),
+ (80,19,1,0,0,NULL,'(499) 309-9620',NULL,'4993099620',2),
+ (81,105,1,1,0,NULL,'(795) 636-6034',NULL,'7956366034',1),
+ (82,67,1,1,0,NULL,'(830) 648-7636',NULL,'8306487636',2),
+ (83,77,1,1,0,NULL,'(768) 536-2239',NULL,'7685362239',2),
+ (84,77,1,0,0,NULL,'596-5943',NULL,'5965943',2),
+ (85,70,1,1,0,NULL,'669-2208',NULL,'6692208',1),
+ (86,176,1,1,0,NULL,'(573) 722-3564',NULL,'5737223564',1),
+ (87,176,1,0,0,NULL,'(751) 413-7545',NULL,'7514137545',1),
+ (88,173,1,1,0,NULL,'(285) 282-9091',NULL,'2852829091',2),
+ (89,53,1,1,0,NULL,'(203) 465-5249',NULL,'2034655249',2),
+ (90,151,1,1,0,NULL,'(605) 316-3926',NULL,'6053163926',2),
+ (91,151,1,0,0,NULL,'675-5271',NULL,'6755271',2),
+ (92,101,1,1,0,NULL,'323-6779',NULL,'3236779',1),
+ (93,24,1,1,0,NULL,'423-6551',NULL,'4236551',2),
+ (94,24,1,0,0,NULL,'736-9244',NULL,'7369244',2),
+ (95,62,1,1,0,NULL,'(766) 474-9998',NULL,'7664749998',1),
+ (96,62,1,0,0,NULL,'(804) 660-9232',NULL,'8046609232',1),
+ (97,33,1,1,0,NULL,'250-4548',NULL,'2504548',1),
+ (98,191,1,1,0,NULL,'(321) 758-5190',NULL,'3217585190',1),
+ (99,191,1,0,0,NULL,'(695) 504-3826',NULL,'6955043826',1),
+ (100,97,1,1,0,NULL,'224-8272',NULL,'2248272',2),
+ (101,39,1,1,0,NULL,'368-5653',NULL,'3685653',1),
+ (102,39,1,0,0,NULL,'317-9121',NULL,'3179121',1),
+ (103,25,1,1,0,NULL,'(205) 350-2566',NULL,'2053502566',2),
+ (104,157,1,1,0,NULL,'312-3380',NULL,'3123380',2),
+ (105,157,1,0,0,NULL,'(354) 768-5066',NULL,'3547685066',1),
+ (106,148,1,1,0,NULL,'(202) 547-1138',NULL,'2025471138',2),
+ (107,50,1,1,0,NULL,'(228) 491-4813',NULL,'2284914813',2),
+ (108,50,1,0,0,NULL,'688-9434',NULL,'6889434',2),
+ (109,190,1,1,0,NULL,'(548) 464-3157',NULL,'5484643157',1),
+ (110,16,1,1,0,NULL,'266-1235',NULL,'2661235',1),
+ (111,16,1,0,0,NULL,'(502) 311-7990',NULL,'5023117990',1),
+ (112,2,1,1,0,NULL,'893-8185',NULL,'8938185',1),
+ (113,188,1,1,0,NULL,'(707) 243-6728',NULL,'7072436728',1),
+ (114,146,1,1,0,NULL,'309-8742',NULL,'3098742',1),
+ (115,146,1,0,0,NULL,'570-5749',NULL,'5705749',1),
+ (116,113,1,1,0,NULL,'214-2693',NULL,'2142693',1),
+ (117,110,1,1,0,NULL,'695-1358',NULL,'6951358',2),
+ (118,110,1,0,0,NULL,'(364) 245-7832',NULL,'3642457832',2),
+ (119,47,1,1,0,NULL,'(542) 757-9958',NULL,'5427579958',2),
+ (120,47,1,0,0,NULL,'(861) 747-5342',NULL,'8617475342',1),
+ (121,48,1,1,0,NULL,'(771) 641-7687',NULL,'7716417687',2),
+ (122,34,1,1,0,NULL,'501-3048',NULL,'5013048',1),
+ (123,34,1,0,0,NULL,'766-6377',NULL,'7666377',1),
+ (124,75,1,1,0,NULL,'(492) 497-2000',NULL,'4924972000',1),
+ (125,83,1,1,0,NULL,'257-8094',NULL,'2578094',1),
+ (126,150,1,1,0,NULL,'606-2488',NULL,'6062488',1),
+ (127,150,1,0,0,NULL,'376-4345',NULL,'3764345',2),
+ (128,168,1,1,0,NULL,'(843) 774-8295',NULL,'8437748295',2),
+ (129,31,1,1,0,NULL,'619-8494',NULL,'6198494',2),
+ (130,64,1,1,0,NULL,'800-1566',NULL,'8001566',2),
+ (131,72,1,1,0,NULL,'(452) 421-8966',NULL,'4524218966',2),
+ (132,15,1,1,0,NULL,'(820) 555-9077',NULL,'8205559077',1),
+ (133,15,1,0,0,NULL,'(482) 794-7442',NULL,'4827947442',1),
+ (134,115,1,1,0,NULL,'640-7119',NULL,'6407119',2),
+ (135,115,1,0,0,NULL,'(468) 375-2163',NULL,'4683752163',1),
+ (136,181,1,1,0,NULL,'(358) 435-5825',NULL,'3584355825',2),
+ (137,181,1,0,0,NULL,'(665) 324-6057',NULL,'6653246057',2),
+ (138,175,1,1,0,NULL,'(248) 727-1645',NULL,'2487271645',2),
+ (139,175,1,0,0,NULL,'282-1197',NULL,'2821197',1),
+ (140,180,1,1,0,NULL,'255-4203',NULL,'2554203',2),
+ (141,180,1,0,0,NULL,'(512) 272-2532',NULL,'5122722532',2),
+ (142,87,1,1,0,NULL,'(399) 324-9451',NULL,'3993249451',1),
+ (143,3,1,1,0,NULL,'896-7101',NULL,'8967101',1),
+ (144,3,1,0,0,NULL,'(703) 733-4157',NULL,'7037334157',1),
+ (145,165,1,1,0,NULL,'826-9298',NULL,'8269298',1),
+ (146,126,1,1,0,NULL,'(535) 363-5339',NULL,'5353635339',1),
+ (147,126,1,0,0,NULL,'(649) 338-8602',NULL,'6493388602',1),
+ (148,104,1,1,0,NULL,'(735) 315-9693',NULL,'7353159693',1),
+ (149,104,1,0,0,NULL,'788-8307',NULL,'7888307',1),
+ (150,139,1,1,0,NULL,'(237) 532-6201',NULL,'2375326201',2),
+ (151,139,1,0,0,NULL,'(577) 625-9495',NULL,'5776259495',2),
+ (152,119,1,1,0,NULL,'(316) 420-2548',NULL,'3164202548',2),
+ (153,NULL,1,0,0,NULL,'204 222-1000',NULL,'2042221000',1),
+ (154,NULL,1,0,0,NULL,'204 223-1000',NULL,'2042231000',1),
+ (155,NULL,1,0,0,NULL,'303 323-1000',NULL,'3033231000',1);
/*!40000 ALTER TABLE `civicrm_phone` ENABLE KEYS */;
UNLOCK TABLES;
@@ -7267,223 +7272,222 @@ UNLOCK TABLES;
LOCK TABLES `civicrm_relationship` WRITE;
/*!40000 ALTER TABLE `civicrm_relationship` DISABLE KEYS */;
INSERT INTO `civicrm_relationship` (`id`, `contact_id_a`, `contact_id_b`, `relationship_type_id`, `start_date`, `end_date`, `is_active`, `description`, `is_permission_a_b`, `is_permission_b_a`, `case_id`, `created_date`, `modified_date`) VALUES
- (1,175,83,1,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (2,49,83,1,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (3,175,114,1,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (4,49,114,1,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (5,49,175,4,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (6,114,152,8,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (7,175,152,8,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (8,49,152,8,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (9,83,152,7,NULL,NULL,0,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (10,114,83,2,NULL,NULL,0,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (11,68,124,1,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (12,69,124,1,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (13,68,3,1,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (14,69,3,1,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (15,69,68,4,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (16,3,89,8,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (17,68,89,8,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (18,69,89,8,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (19,124,89,7,NULL,NULL,0,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (20,3,124,2,NULL,NULL,0,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (21,56,58,1,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (22,140,58,1,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (23,56,2,1,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (24,140,2,1,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (25,140,56,4,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (26,2,177,8,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (27,56,177,8,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (28,140,177,8,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (29,58,177,7,NULL,NULL,0,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (30,2,58,2,NULL,NULL,0,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (31,107,38,1,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (32,134,38,1,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (33,107,24,1,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (34,134,24,1,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (35,134,107,4,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (36,24,167,8,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (37,107,167,8,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (38,134,167,8,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (39,38,167,7,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (40,24,38,2,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (41,79,149,1,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (42,32,149,1,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (43,79,123,1,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (44,32,123,1,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (45,32,79,4,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (46,123,115,8,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (47,79,115,8,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (48,32,115,8,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (49,149,115,7,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (50,123,149,2,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (51,132,42,1,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (52,199,42,1,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (53,132,143,1,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (54,199,143,1,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (55,199,132,4,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (56,143,147,8,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (57,132,147,8,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (58,199,147,8,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (59,42,147,7,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (60,143,42,2,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (61,188,144,1,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (62,8,144,1,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (63,188,160,1,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (64,8,160,1,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (65,8,188,4,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (66,160,161,8,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (67,188,161,8,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (68,8,161,8,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (69,144,161,7,NULL,NULL,0,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (70,160,144,2,NULL,NULL,0,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (71,185,96,1,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (72,158,96,1,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (73,185,11,1,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (74,158,11,1,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (75,158,185,4,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (76,11,127,8,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (77,185,127,8,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (78,158,127,8,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (79,96,127,7,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (80,11,96,2,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (81,112,119,1,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (82,150,119,1,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (83,112,103,1,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (84,150,103,1,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (85,150,112,4,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (86,103,6,8,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (87,112,6,8,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (88,150,6,8,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (89,119,6,7,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (90,103,119,2,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (91,191,95,1,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (92,105,95,1,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (93,191,108,1,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (94,105,108,1,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (95,105,191,4,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (96,108,5,8,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (97,191,5,8,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (98,105,5,8,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (99,95,5,7,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (100,108,95,2,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (101,104,153,1,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (102,151,153,1,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (103,104,33,1,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (104,151,33,1,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (105,151,104,4,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (106,33,174,8,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (107,104,174,8,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (108,151,174,8,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (109,153,174,7,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (110,33,153,2,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (111,65,7,1,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (112,43,7,1,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (113,65,29,1,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (114,43,29,1,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (115,43,65,4,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (116,29,80,8,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (117,65,80,8,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (118,43,80,8,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (119,7,80,7,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (120,29,7,2,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (121,179,197,1,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (122,39,197,1,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (123,179,9,1,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (124,39,9,1,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (125,39,179,4,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (126,9,55,8,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (127,179,55,8,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (128,39,55,8,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (129,197,55,7,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (130,9,197,2,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (131,20,162,1,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (132,25,162,1,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (133,20,169,1,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (134,25,169,1,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (135,25,20,4,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (136,169,171,8,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (137,20,171,8,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (138,25,171,8,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (139,162,171,7,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (140,169,162,2,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (141,61,97,1,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (142,35,97,1,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (143,61,18,1,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (144,35,18,1,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (145,35,61,4,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (146,18,182,8,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (147,61,182,8,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (148,35,182,8,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (149,97,182,7,NULL,NULL,0,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (150,18,97,2,NULL,NULL,0,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (151,31,111,1,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (152,74,111,1,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (153,31,178,1,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (154,74,178,1,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (155,74,31,4,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (156,178,45,8,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (157,31,45,8,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (158,74,45,8,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (159,111,45,7,NULL,NULL,0,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (160,178,111,2,NULL,NULL,0,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (161,26,126,1,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (162,139,126,1,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (163,26,186,1,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (164,139,186,1,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (165,139,26,4,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (166,186,156,8,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (167,26,156,8,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (168,139,156,8,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (169,126,156,7,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (170,186,126,2,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (171,28,201,1,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (172,72,201,1,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (173,28,194,1,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (174,72,194,1,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (175,72,28,4,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (176,194,131,8,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (177,28,131,8,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (178,72,131,8,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (179,201,131,7,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (180,194,201,2,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (181,81,12,1,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (182,78,12,1,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (183,81,136,1,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (184,78,136,1,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (185,78,81,4,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (186,136,116,8,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (187,81,116,8,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (188,78,116,8,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (189,12,116,7,NULL,NULL,0,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (190,136,12,2,NULL,NULL,0,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (191,157,54,1,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (192,82,54,1,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (193,157,94,1,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (194,82,94,1,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (195,82,157,4,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (196,94,184,8,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (197,157,184,8,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (198,82,184,8,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (199,54,184,7,NULL,NULL,0,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (200,94,54,2,NULL,NULL,0,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (201,46,21,5,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (202,49,36,5,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (203,3,40,5,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (204,165,48,5,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (205,57,51,5,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (206,139,73,5,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (207,50,87,5,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (208,52,118,5,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (209,110,122,5,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (210,130,135,5,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (211,82,138,5,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (212,103,145,5,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (213,141,154,5,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (214,151,170,5,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (215,160,173,5,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (216,109,180,5,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28'),
- (217,68,187,5,NULL,NULL,1,NULL,0,0,NULL,'2024-01-06 04:30:28','2024-01-06 04:30:28');
+ (1,77,67,1,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (2,127,67,1,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (3,77,156,1,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (4,127,156,1,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (5,127,77,4,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (6,156,162,8,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (7,77,162,8,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (8,127,162,8,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (9,67,162,7,NULL,NULL,0,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (10,156,67,2,NULL,NULL,0,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (11,176,70,1,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (12,56,70,1,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (13,176,182,1,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (14,56,182,1,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (15,56,176,4,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (16,182,80,8,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (17,176,80,8,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (18,56,80,8,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (19,70,80,7,NULL,NULL,0,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (20,182,70,2,NULL,NULL,0,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (21,53,153,1,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (22,151,153,1,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (23,53,173,1,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (24,151,173,1,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (25,151,53,4,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (26,173,137,8,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (27,53,137,8,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (28,151,137,8,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (29,153,137,7,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (30,173,153,2,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (31,51,101,1,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (32,7,101,1,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (33,51,109,1,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (34,7,109,1,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (35,7,51,4,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (36,109,141,8,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (37,51,141,8,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (38,7,141,8,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (39,101,141,7,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (40,109,101,2,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (41,62,24,1,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (42,33,24,1,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (43,62,57,1,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (44,33,57,1,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (45,33,62,4,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (46,57,98,8,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (47,62,98,8,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (48,33,98,8,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (49,24,98,7,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (50,57,24,2,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (51,106,191,1,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (52,91,191,1,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (53,106,97,1,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (54,91,97,1,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (55,91,106,4,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (56,97,161,8,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (57,106,161,8,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (58,91,161,8,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (59,191,161,7,NULL,NULL,0,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (60,97,191,2,NULL,NULL,0,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (61,25,39,1,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (62,157,39,1,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (63,25,155,1,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (64,157,155,1,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (65,157,25,4,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (66,155,10,8,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (67,25,10,8,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (68,157,10,8,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (69,39,10,7,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (70,155,39,2,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (71,50,148,1,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (72,190,148,1,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (73,50,133,1,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (74,190,133,1,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (75,190,50,4,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (76,133,199,8,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (77,50,199,8,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (78,190,199,8,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (79,148,199,7,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (80,133,148,2,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (81,117,16,1,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (82,188,16,1,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (83,117,2,1,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (84,188,2,1,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (85,188,117,4,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (86,2,29,8,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (87,117,29,8,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (88,188,29,8,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (89,16,29,7,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (90,2,16,2,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (91,113,146,1,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (92,44,146,1,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (93,113,195,1,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (94,44,195,1,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (95,44,113,4,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (96,195,59,8,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (97,113,59,8,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (98,44,59,8,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (99,146,59,7,NULL,NULL,0,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (100,195,146,2,NULL,NULL,0,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (101,82,110,1,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (102,172,110,1,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (103,82,163,1,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (104,172,163,1,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (105,172,82,4,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (106,163,46,8,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (107,82,46,8,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (108,172,46,8,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (109,110,46,7,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (110,163,110,2,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (111,47,12,1,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (112,140,12,1,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (113,47,147,1,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (114,140,147,1,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (115,140,47,4,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (116,147,11,8,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (117,47,11,8,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (118,140,11,8,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (119,12,11,7,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (120,147,12,2,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (121,38,48,1,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (122,108,48,1,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (123,38,149,1,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (124,108,149,1,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (125,108,38,4,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (126,149,170,8,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (127,38,170,8,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (128,108,170,8,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (129,48,170,7,NULL,NULL,0,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (130,149,48,2,NULL,NULL,0,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (131,75,26,1,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (132,27,26,1,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (133,75,34,1,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (134,27,34,1,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (135,27,75,4,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (136,34,41,8,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (137,75,41,8,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (138,27,41,8,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (139,26,41,7,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (140,34,26,2,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (141,168,83,1,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (142,31,83,1,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (143,168,150,1,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (144,31,150,1,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (145,31,168,4,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (146,150,102,8,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (147,168,102,8,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (148,31,102,8,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (149,83,102,7,NULL,NULL,0,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (150,150,83,2,NULL,NULL,0,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (151,72,183,1,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (152,15,183,1,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (153,72,64,1,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (154,15,64,1,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (155,15,72,4,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (156,64,86,8,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (157,72,86,8,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (158,15,86,8,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (159,183,86,7,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (160,64,183,2,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (161,181,115,1,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (162,175,115,1,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (163,181,71,1,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (164,175,71,1,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (165,175,181,4,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (166,71,132,8,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (167,181,132,8,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (168,175,132,8,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (169,115,132,7,NULL,NULL,0,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (170,71,115,2,NULL,NULL,0,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (171,3,180,1,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (172,103,180,1,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (173,3,87,1,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (174,103,87,1,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (175,103,3,4,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (176,87,178,8,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (177,3,178,8,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (178,103,178,8,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (179,180,178,7,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (180,87,180,2,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (181,120,165,1,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (182,164,165,1,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (183,120,126,1,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (184,164,126,1,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (185,164,120,4,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (186,126,152,8,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (187,120,152,8,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (188,164,152,8,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (189,165,152,7,NULL,NULL,0,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (190,126,165,2,NULL,NULL,0,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (191,119,104,1,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (192,45,104,1,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (193,119,139,1,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (194,45,139,1,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (195,45,119,4,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (196,139,18,8,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (197,119,18,8,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (198,45,18,8,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (199,104,18,7,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (200,139,104,2,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (201,60,9,5,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (202,78,17,5,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (203,146,40,5,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (204,158,49,5,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (205,155,69,5,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (206,166,84,5,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (207,52,121,5,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (208,163,124,5,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (209,138,129,5,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (210,34,130,5,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (211,74,144,5,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (212,32,169,5,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (213,73,174,5,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (214,83,184,5,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (215,186,192,5,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09'),
+ (216,108,193,5,NULL,NULL,1,NULL,0,0,NULL,'2024-04-26 15:50:09','2024-04-26 15:50:09');
/*!40000 ALTER TABLE `civicrm_relationship` ENABLE KEYS */;
UNLOCK TABLES;
@@ -7494,440 +7498,438 @@ UNLOCK TABLES;
LOCK TABLES `civicrm_relationship_cache` WRITE;
/*!40000 ALTER TABLE `civicrm_relationship_cache` DISABLE KEYS */;
INSERT INTO `civicrm_relationship_cache` (`id`, `relationship_id`, `relationship_type_id`, `orientation`, `near_contact_id`, `near_relation`, `far_contact_id`, `far_relation`, `is_active`, `start_date`, `end_date`, `case_id`) VALUES
- (1,1,1,'a_b',175,'Child of',83,'Parent of',1,NULL,NULL,NULL),
- (2,1,1,'b_a',83,'Parent of',175,'Child of',1,NULL,NULL,NULL),
- (3,2,1,'a_b',49,'Child of',83,'Parent of',1,NULL,NULL,NULL),
- (4,2,1,'b_a',83,'Parent of',49,'Child of',1,NULL,NULL,NULL),
- (5,3,1,'a_b',175,'Child of',114,'Parent of',1,NULL,NULL,NULL),
- (6,3,1,'b_a',114,'Parent of',175,'Child of',1,NULL,NULL,NULL),
- (7,4,1,'a_b',49,'Child of',114,'Parent of',1,NULL,NULL,NULL),
- (8,4,1,'b_a',114,'Parent of',49,'Child of',1,NULL,NULL,NULL),
- (9,5,4,'a_b',49,'Sibling of',175,'Sibling of',1,NULL,NULL,NULL),
- (10,5,4,'b_a',175,'Sibling of',49,'Sibling of',1,NULL,NULL,NULL),
- (11,6,8,'a_b',114,'Household Member of',152,'Household Member is',1,NULL,NULL,NULL),
- (12,6,8,'b_a',152,'Household Member is',114,'Household Member of',1,NULL,NULL,NULL),
- (13,7,8,'a_b',175,'Household Member of',152,'Household Member is',1,NULL,NULL,NULL),
- (14,7,8,'b_a',152,'Household Member is',175,'Household Member of',1,NULL,NULL,NULL),
- (15,8,8,'a_b',49,'Household Member of',152,'Household Member is',1,NULL,NULL,NULL),
- (16,8,8,'b_a',152,'Household Member is',49,'Household Member of',1,NULL,NULL,NULL),
- (17,9,7,'a_b',83,'Head of Household for',152,'Head of Household is',0,NULL,NULL,NULL),
- (18,9,7,'b_a',152,'Head of Household is',83,'Head of Household for',0,NULL,NULL,NULL),
- (19,10,2,'a_b',114,'Spouse of',83,'Spouse of',0,NULL,NULL,NULL),
- (20,10,2,'b_a',83,'Spouse of',114,'Spouse of',0,NULL,NULL,NULL),
- (21,11,1,'a_b',68,'Child of',124,'Parent of',1,NULL,NULL,NULL),
- (22,11,1,'b_a',124,'Parent of',68,'Child of',1,NULL,NULL,NULL),
- (23,12,1,'a_b',69,'Child of',124,'Parent of',1,NULL,NULL,NULL),
- (24,12,1,'b_a',124,'Parent of',69,'Child of',1,NULL,NULL,NULL),
- (25,13,1,'a_b',68,'Child of',3,'Parent of',1,NULL,NULL,NULL),
- (26,13,1,'b_a',3,'Parent of',68,'Child of',1,NULL,NULL,NULL),
- (27,14,1,'a_b',69,'Child of',3,'Parent of',1,NULL,NULL,NULL),
- (28,14,1,'b_a',3,'Parent of',69,'Child of',1,NULL,NULL,NULL),
- (29,15,4,'a_b',69,'Sibling of',68,'Sibling of',1,NULL,NULL,NULL),
- (30,15,4,'b_a',68,'Sibling of',69,'Sibling of',1,NULL,NULL,NULL),
- (31,16,8,'a_b',3,'Household Member of',89,'Household Member is',1,NULL,NULL,NULL),
- (32,16,8,'b_a',89,'Household Member is',3,'Household Member of',1,NULL,NULL,NULL),
- (33,17,8,'a_b',68,'Household Member of',89,'Household Member is',1,NULL,NULL,NULL),
- (34,17,8,'b_a',89,'Household Member is',68,'Household Member of',1,NULL,NULL,NULL),
- (35,18,8,'a_b',69,'Household Member of',89,'Household Member is',1,NULL,NULL,NULL),
- (36,18,8,'b_a',89,'Household Member is',69,'Household Member of',1,NULL,NULL,NULL),
- (37,19,7,'a_b',124,'Head of Household for',89,'Head of Household is',0,NULL,NULL,NULL),
- (38,19,7,'b_a',89,'Head of Household is',124,'Head of Household for',0,NULL,NULL,NULL),
- (39,20,2,'a_b',3,'Spouse of',124,'Spouse of',0,NULL,NULL,NULL),
- (40,20,2,'b_a',124,'Spouse of',3,'Spouse of',0,NULL,NULL,NULL),
- (41,21,1,'a_b',56,'Child of',58,'Parent of',1,NULL,NULL,NULL),
- (42,21,1,'b_a',58,'Parent of',56,'Child of',1,NULL,NULL,NULL),
- (43,22,1,'a_b',140,'Child of',58,'Parent of',1,NULL,NULL,NULL),
- (44,22,1,'b_a',58,'Parent of',140,'Child of',1,NULL,NULL,NULL),
- (45,23,1,'a_b',56,'Child of',2,'Parent of',1,NULL,NULL,NULL),
- (46,23,1,'b_a',2,'Parent of',56,'Child of',1,NULL,NULL,NULL),
- (47,24,1,'a_b',140,'Child of',2,'Parent of',1,NULL,NULL,NULL),
- (48,24,1,'b_a',2,'Parent of',140,'Child of',1,NULL,NULL,NULL),
- (49,25,4,'a_b',140,'Sibling of',56,'Sibling of',1,NULL,NULL,NULL),
- (50,25,4,'b_a',56,'Sibling of',140,'Sibling of',1,NULL,NULL,NULL),
- (51,26,8,'a_b',2,'Household Member of',177,'Household Member is',1,NULL,NULL,NULL),
- (52,26,8,'b_a',177,'Household Member is',2,'Household Member of',1,NULL,NULL,NULL),
- (53,27,8,'a_b',56,'Household Member of',177,'Household Member is',1,NULL,NULL,NULL),
- (54,27,8,'b_a',177,'Household Member is',56,'Household Member of',1,NULL,NULL,NULL),
- (55,28,8,'a_b',140,'Household Member of',177,'Household Member is',1,NULL,NULL,NULL),
- (56,28,8,'b_a',177,'Household Member is',140,'Household Member of',1,NULL,NULL,NULL),
- (57,29,7,'a_b',58,'Head of Household for',177,'Head of Household is',0,NULL,NULL,NULL),
- (58,29,7,'b_a',177,'Head of Household is',58,'Head of Household for',0,NULL,NULL,NULL),
- (59,30,2,'a_b',2,'Spouse of',58,'Spouse of',0,NULL,NULL,NULL),
- (60,30,2,'b_a',58,'Spouse of',2,'Spouse of',0,NULL,NULL,NULL),
- (61,31,1,'a_b',107,'Child of',38,'Parent of',1,NULL,NULL,NULL),
- (62,31,1,'b_a',38,'Parent of',107,'Child of',1,NULL,NULL,NULL),
- (63,32,1,'a_b',134,'Child of',38,'Parent of',1,NULL,NULL,NULL),
- (64,32,1,'b_a',38,'Parent of',134,'Child of',1,NULL,NULL,NULL),
- (65,33,1,'a_b',107,'Child of',24,'Parent of',1,NULL,NULL,NULL),
- (66,33,1,'b_a',24,'Parent of',107,'Child of',1,NULL,NULL,NULL),
- (67,34,1,'a_b',134,'Child of',24,'Parent of',1,NULL,NULL,NULL),
- (68,34,1,'b_a',24,'Parent of',134,'Child of',1,NULL,NULL,NULL),
- (69,35,4,'a_b',134,'Sibling of',107,'Sibling of',1,NULL,NULL,NULL),
- (70,35,4,'b_a',107,'Sibling of',134,'Sibling of',1,NULL,NULL,NULL),
- (71,36,8,'a_b',24,'Household Member of',167,'Household Member is',1,NULL,NULL,NULL),
- (72,36,8,'b_a',167,'Household Member is',24,'Household Member of',1,NULL,NULL,NULL),
- (73,37,8,'a_b',107,'Household Member of',167,'Household Member is',1,NULL,NULL,NULL),
- (74,37,8,'b_a',167,'Household Member is',107,'Household Member of',1,NULL,NULL,NULL),
- (75,38,8,'a_b',134,'Household Member of',167,'Household Member is',1,NULL,NULL,NULL),
- (76,38,8,'b_a',167,'Household Member is',134,'Household Member of',1,NULL,NULL,NULL),
- (77,39,7,'a_b',38,'Head of Household for',167,'Head of Household is',1,NULL,NULL,NULL),
- (78,39,7,'b_a',167,'Head of Household is',38,'Head of Household for',1,NULL,NULL,NULL),
- (79,40,2,'a_b',24,'Spouse of',38,'Spouse of',1,NULL,NULL,NULL),
- (80,40,2,'b_a',38,'Spouse of',24,'Spouse of',1,NULL,NULL,NULL),
- (81,41,1,'a_b',79,'Child of',149,'Parent of',1,NULL,NULL,NULL),
- (82,41,1,'b_a',149,'Parent of',79,'Child of',1,NULL,NULL,NULL),
- (83,42,1,'a_b',32,'Child of',149,'Parent of',1,NULL,NULL,NULL),
- (84,42,1,'b_a',149,'Parent of',32,'Child of',1,NULL,NULL,NULL),
- (85,43,1,'a_b',79,'Child of',123,'Parent of',1,NULL,NULL,NULL),
- (86,43,1,'b_a',123,'Parent of',79,'Child of',1,NULL,NULL,NULL),
- (87,44,1,'a_b',32,'Child of',123,'Parent of',1,NULL,NULL,NULL),
- (88,44,1,'b_a',123,'Parent of',32,'Child of',1,NULL,NULL,NULL),
- (89,45,4,'a_b',32,'Sibling of',79,'Sibling of',1,NULL,NULL,NULL),
- (90,45,4,'b_a',79,'Sibling of',32,'Sibling of',1,NULL,NULL,NULL),
- (91,46,8,'a_b',123,'Household Member of',115,'Household Member is',1,NULL,NULL,NULL),
- (92,46,8,'b_a',115,'Household Member is',123,'Household Member of',1,NULL,NULL,NULL),
- (93,47,8,'a_b',79,'Household Member of',115,'Household Member is',1,NULL,NULL,NULL),
- (94,47,8,'b_a',115,'Household Member is',79,'Household Member of',1,NULL,NULL,NULL),
- (95,48,8,'a_b',32,'Household Member of',115,'Household Member is',1,NULL,NULL,NULL),
- (96,48,8,'b_a',115,'Household Member is',32,'Household Member of',1,NULL,NULL,NULL),
- (97,49,7,'a_b',149,'Head of Household for',115,'Head of Household is',1,NULL,NULL,NULL),
- (98,49,7,'b_a',115,'Head of Household is',149,'Head of Household for',1,NULL,NULL,NULL),
- (99,50,2,'a_b',123,'Spouse of',149,'Spouse of',1,NULL,NULL,NULL),
- (100,50,2,'b_a',149,'Spouse of',123,'Spouse of',1,NULL,NULL,NULL),
- (101,51,1,'a_b',132,'Child of',42,'Parent of',1,NULL,NULL,NULL),
- (102,51,1,'b_a',42,'Parent of',132,'Child of',1,NULL,NULL,NULL),
- (103,52,1,'a_b',199,'Child of',42,'Parent of',1,NULL,NULL,NULL),
- (104,52,1,'b_a',42,'Parent of',199,'Child of',1,NULL,NULL,NULL),
- (105,53,1,'a_b',132,'Child of',143,'Parent of',1,NULL,NULL,NULL),
- (106,53,1,'b_a',143,'Parent of',132,'Child of',1,NULL,NULL,NULL),
- (107,54,1,'a_b',199,'Child of',143,'Parent of',1,NULL,NULL,NULL),
- (108,54,1,'b_a',143,'Parent of',199,'Child of',1,NULL,NULL,NULL),
- (109,55,4,'a_b',199,'Sibling of',132,'Sibling of',1,NULL,NULL,NULL),
- (110,55,4,'b_a',132,'Sibling of',199,'Sibling of',1,NULL,NULL,NULL),
- (111,56,8,'a_b',143,'Household Member of',147,'Household Member is',1,NULL,NULL,NULL),
- (112,56,8,'b_a',147,'Household Member is',143,'Household Member of',1,NULL,NULL,NULL),
- (113,57,8,'a_b',132,'Household Member of',147,'Household Member is',1,NULL,NULL,NULL),
- (114,57,8,'b_a',147,'Household Member is',132,'Household Member of',1,NULL,NULL,NULL),
- (115,58,8,'a_b',199,'Household Member of',147,'Household Member is',1,NULL,NULL,NULL),
- (116,58,8,'b_a',147,'Household Member is',199,'Household Member of',1,NULL,NULL,NULL),
- (117,59,7,'a_b',42,'Head of Household for',147,'Head of Household is',1,NULL,NULL,NULL),
- (118,59,7,'b_a',147,'Head of Household is',42,'Head of Household for',1,NULL,NULL,NULL),
- (119,60,2,'a_b',143,'Spouse of',42,'Spouse of',1,NULL,NULL,NULL),
- (120,60,2,'b_a',42,'Spouse of',143,'Spouse of',1,NULL,NULL,NULL),
- (121,61,1,'a_b',188,'Child of',144,'Parent of',1,NULL,NULL,NULL),
- (122,61,1,'b_a',144,'Parent of',188,'Child of',1,NULL,NULL,NULL),
- (123,62,1,'a_b',8,'Child of',144,'Parent of',1,NULL,NULL,NULL),
- (124,62,1,'b_a',144,'Parent of',8,'Child of',1,NULL,NULL,NULL),
- (125,63,1,'a_b',188,'Child of',160,'Parent of',1,NULL,NULL,NULL),
- (126,63,1,'b_a',160,'Parent of',188,'Child of',1,NULL,NULL,NULL),
- (127,64,1,'a_b',8,'Child of',160,'Parent of',1,NULL,NULL,NULL),
- (128,64,1,'b_a',160,'Parent of',8,'Child of',1,NULL,NULL,NULL),
- (129,65,4,'a_b',8,'Sibling of',188,'Sibling of',1,NULL,NULL,NULL),
- (130,65,4,'b_a',188,'Sibling of',8,'Sibling of',1,NULL,NULL,NULL),
- (131,66,8,'a_b',160,'Household Member of',161,'Household Member is',1,NULL,NULL,NULL),
- (132,66,8,'b_a',161,'Household Member is',160,'Household Member of',1,NULL,NULL,NULL),
- (133,67,8,'a_b',188,'Household Member of',161,'Household Member is',1,NULL,NULL,NULL),
- (134,67,8,'b_a',161,'Household Member is',188,'Household Member of',1,NULL,NULL,NULL),
- (135,68,8,'a_b',8,'Household Member of',161,'Household Member is',1,NULL,NULL,NULL),
- (136,68,8,'b_a',161,'Household Member is',8,'Household Member of',1,NULL,NULL,NULL),
- (137,69,7,'a_b',144,'Head of Household for',161,'Head of Household is',0,NULL,NULL,NULL),
- (138,69,7,'b_a',161,'Head of Household is',144,'Head of Household for',0,NULL,NULL,NULL),
- (139,70,2,'a_b',160,'Spouse of',144,'Spouse of',0,NULL,NULL,NULL),
- (140,70,2,'b_a',144,'Spouse of',160,'Spouse of',0,NULL,NULL,NULL),
- (141,71,1,'a_b',185,'Child of',96,'Parent of',1,NULL,NULL,NULL),
- (142,71,1,'b_a',96,'Parent of',185,'Child of',1,NULL,NULL,NULL),
- (143,72,1,'a_b',158,'Child of',96,'Parent of',1,NULL,NULL,NULL),
- (144,72,1,'b_a',96,'Parent of',158,'Child of',1,NULL,NULL,NULL),
- (145,73,1,'a_b',185,'Child of',11,'Parent of',1,NULL,NULL,NULL),
- (146,73,1,'b_a',11,'Parent of',185,'Child of',1,NULL,NULL,NULL),
- (147,74,1,'a_b',158,'Child of',11,'Parent of',1,NULL,NULL,NULL),
- (148,74,1,'b_a',11,'Parent of',158,'Child of',1,NULL,NULL,NULL),
- (149,75,4,'a_b',158,'Sibling of',185,'Sibling of',1,NULL,NULL,NULL),
- (150,75,4,'b_a',185,'Sibling of',158,'Sibling of',1,NULL,NULL,NULL),
- (151,76,8,'a_b',11,'Household Member of',127,'Household Member is',1,NULL,NULL,NULL),
- (152,76,8,'b_a',127,'Household Member is',11,'Household Member of',1,NULL,NULL,NULL),
- (153,77,8,'a_b',185,'Household Member of',127,'Household Member is',1,NULL,NULL,NULL),
- (154,77,8,'b_a',127,'Household Member is',185,'Household Member of',1,NULL,NULL,NULL),
- (155,78,8,'a_b',158,'Household Member of',127,'Household Member is',1,NULL,NULL,NULL),
- (156,78,8,'b_a',127,'Household Member is',158,'Household Member of',1,NULL,NULL,NULL),
- (157,79,7,'a_b',96,'Head of Household for',127,'Head of Household is',1,NULL,NULL,NULL),
- (158,79,7,'b_a',127,'Head of Household is',96,'Head of Household for',1,NULL,NULL,NULL),
- (159,80,2,'a_b',11,'Spouse of',96,'Spouse of',1,NULL,NULL,NULL),
- (160,80,2,'b_a',96,'Spouse of',11,'Spouse of',1,NULL,NULL,NULL),
- (161,81,1,'a_b',112,'Child of',119,'Parent of',1,NULL,NULL,NULL),
- (162,81,1,'b_a',119,'Parent of',112,'Child of',1,NULL,NULL,NULL),
- (163,82,1,'a_b',150,'Child of',119,'Parent of',1,NULL,NULL,NULL),
- (164,82,1,'b_a',119,'Parent of',150,'Child of',1,NULL,NULL,NULL),
- (165,83,1,'a_b',112,'Child of',103,'Parent of',1,NULL,NULL,NULL),
- (166,83,1,'b_a',103,'Parent of',112,'Child of',1,NULL,NULL,NULL),
- (167,84,1,'a_b',150,'Child of',103,'Parent of',1,NULL,NULL,NULL),
- (168,84,1,'b_a',103,'Parent of',150,'Child of',1,NULL,NULL,NULL),
- (169,85,4,'a_b',150,'Sibling of',112,'Sibling of',1,NULL,NULL,NULL),
- (170,85,4,'b_a',112,'Sibling of',150,'Sibling of',1,NULL,NULL,NULL),
- (171,86,8,'a_b',103,'Household Member of',6,'Household Member is',1,NULL,NULL,NULL),
- (172,86,8,'b_a',6,'Household Member is',103,'Household Member of',1,NULL,NULL,NULL),
- (173,87,8,'a_b',112,'Household Member of',6,'Household Member is',1,NULL,NULL,NULL),
- (174,87,8,'b_a',6,'Household Member is',112,'Household Member of',1,NULL,NULL,NULL),
- (175,88,8,'a_b',150,'Household Member of',6,'Household Member is',1,NULL,NULL,NULL),
- (176,88,8,'b_a',6,'Household Member is',150,'Household Member of',1,NULL,NULL,NULL),
- (177,89,7,'a_b',119,'Head of Household for',6,'Head of Household is',1,NULL,NULL,NULL),
- (178,89,7,'b_a',6,'Head of Household is',119,'Head of Household for',1,NULL,NULL,NULL),
- (179,90,2,'a_b',103,'Spouse of',119,'Spouse of',1,NULL,NULL,NULL),
- (180,90,2,'b_a',119,'Spouse of',103,'Spouse of',1,NULL,NULL,NULL),
- (181,91,1,'a_b',191,'Child of',95,'Parent of',1,NULL,NULL,NULL),
- (182,91,1,'b_a',95,'Parent of',191,'Child of',1,NULL,NULL,NULL),
- (183,92,1,'a_b',105,'Child of',95,'Parent of',1,NULL,NULL,NULL),
- (184,92,1,'b_a',95,'Parent of',105,'Child of',1,NULL,NULL,NULL),
- (185,93,1,'a_b',191,'Child of',108,'Parent of',1,NULL,NULL,NULL),
- (186,93,1,'b_a',108,'Parent of',191,'Child of',1,NULL,NULL,NULL),
- (187,94,1,'a_b',105,'Child of',108,'Parent of',1,NULL,NULL,NULL),
- (188,94,1,'b_a',108,'Parent of',105,'Child of',1,NULL,NULL,NULL),
- (189,95,4,'a_b',105,'Sibling of',191,'Sibling of',1,NULL,NULL,NULL),
- (190,95,4,'b_a',191,'Sibling of',105,'Sibling of',1,NULL,NULL,NULL),
- (191,96,8,'a_b',108,'Household Member of',5,'Household Member is',1,NULL,NULL,NULL),
- (192,96,8,'b_a',5,'Household Member is',108,'Household Member of',1,NULL,NULL,NULL),
- (193,97,8,'a_b',191,'Household Member of',5,'Household Member is',1,NULL,NULL,NULL),
- (194,97,8,'b_a',5,'Household Member is',191,'Household Member of',1,NULL,NULL,NULL),
- (195,98,8,'a_b',105,'Household Member of',5,'Household Member is',1,NULL,NULL,NULL),
- (196,98,8,'b_a',5,'Household Member is',105,'Household Member of',1,NULL,NULL,NULL),
- (197,99,7,'a_b',95,'Head of Household for',5,'Head of Household is',1,NULL,NULL,NULL),
- (198,99,7,'b_a',5,'Head of Household is',95,'Head of Household for',1,NULL,NULL,NULL),
- (199,100,2,'a_b',108,'Spouse of',95,'Spouse of',1,NULL,NULL,NULL),
- (200,100,2,'b_a',95,'Spouse of',108,'Spouse of',1,NULL,NULL,NULL),
- (201,101,1,'a_b',104,'Child of',153,'Parent of',1,NULL,NULL,NULL),
- (202,101,1,'b_a',153,'Parent of',104,'Child of',1,NULL,NULL,NULL),
- (203,102,1,'a_b',151,'Child of',153,'Parent of',1,NULL,NULL,NULL),
- (204,102,1,'b_a',153,'Parent of',151,'Child of',1,NULL,NULL,NULL),
- (205,103,1,'a_b',104,'Child of',33,'Parent of',1,NULL,NULL,NULL),
- (206,103,1,'b_a',33,'Parent of',104,'Child of',1,NULL,NULL,NULL),
- (207,104,1,'a_b',151,'Child of',33,'Parent of',1,NULL,NULL,NULL),
- (208,104,1,'b_a',33,'Parent of',151,'Child of',1,NULL,NULL,NULL),
- (209,105,4,'a_b',151,'Sibling of',104,'Sibling of',1,NULL,NULL,NULL),
- (210,105,4,'b_a',104,'Sibling of',151,'Sibling of',1,NULL,NULL,NULL),
- (211,106,8,'a_b',33,'Household Member of',174,'Household Member is',1,NULL,NULL,NULL),
- (212,106,8,'b_a',174,'Household Member is',33,'Household Member of',1,NULL,NULL,NULL),
- (213,107,8,'a_b',104,'Household Member of',174,'Household Member is',1,NULL,NULL,NULL),
- (214,107,8,'b_a',174,'Household Member is',104,'Household Member of',1,NULL,NULL,NULL),
- (215,108,8,'a_b',151,'Household Member of',174,'Household Member is',1,NULL,NULL,NULL),
- (216,108,8,'b_a',174,'Household Member is',151,'Household Member of',1,NULL,NULL,NULL),
- (217,109,7,'a_b',153,'Head of Household for',174,'Head of Household is',1,NULL,NULL,NULL),
- (218,109,7,'b_a',174,'Head of Household is',153,'Head of Household for',1,NULL,NULL,NULL),
- (219,110,2,'a_b',33,'Spouse of',153,'Spouse of',1,NULL,NULL,NULL),
- (220,110,2,'b_a',153,'Spouse of',33,'Spouse of',1,NULL,NULL,NULL),
- (221,111,1,'a_b',65,'Child of',7,'Parent of',1,NULL,NULL,NULL),
- (222,111,1,'b_a',7,'Parent of',65,'Child of',1,NULL,NULL,NULL),
- (223,112,1,'a_b',43,'Child of',7,'Parent of',1,NULL,NULL,NULL),
- (224,112,1,'b_a',7,'Parent of',43,'Child of',1,NULL,NULL,NULL),
- (225,113,1,'a_b',65,'Child of',29,'Parent of',1,NULL,NULL,NULL),
- (226,113,1,'b_a',29,'Parent of',65,'Child of',1,NULL,NULL,NULL),
- (227,114,1,'a_b',43,'Child of',29,'Parent of',1,NULL,NULL,NULL),
- (228,114,1,'b_a',29,'Parent of',43,'Child of',1,NULL,NULL,NULL),
- (229,115,4,'a_b',43,'Sibling of',65,'Sibling of',1,NULL,NULL,NULL),
- (230,115,4,'b_a',65,'Sibling of',43,'Sibling of',1,NULL,NULL,NULL),
- (231,116,8,'a_b',29,'Household Member of',80,'Household Member is',1,NULL,NULL,NULL),
- (232,116,8,'b_a',80,'Household Member is',29,'Household Member of',1,NULL,NULL,NULL),
- (233,117,8,'a_b',65,'Household Member of',80,'Household Member is',1,NULL,NULL,NULL),
- (234,117,8,'b_a',80,'Household Member is',65,'Household Member of',1,NULL,NULL,NULL),
- (235,118,8,'a_b',43,'Household Member of',80,'Household Member is',1,NULL,NULL,NULL),
- (236,118,8,'b_a',80,'Household Member is',43,'Household Member of',1,NULL,NULL,NULL),
- (237,119,7,'a_b',7,'Head of Household for',80,'Head of Household is',1,NULL,NULL,NULL),
- (238,119,7,'b_a',80,'Head of Household is',7,'Head of Household for',1,NULL,NULL,NULL),
- (239,120,2,'a_b',29,'Spouse of',7,'Spouse of',1,NULL,NULL,NULL),
- (240,120,2,'b_a',7,'Spouse of',29,'Spouse of',1,NULL,NULL,NULL),
- (241,121,1,'a_b',179,'Child of',197,'Parent of',1,NULL,NULL,NULL),
- (242,121,1,'b_a',197,'Parent of',179,'Child of',1,NULL,NULL,NULL),
- (243,122,1,'a_b',39,'Child of',197,'Parent of',1,NULL,NULL,NULL),
- (244,122,1,'b_a',197,'Parent of',39,'Child of',1,NULL,NULL,NULL),
- (245,123,1,'a_b',179,'Child of',9,'Parent of',1,NULL,NULL,NULL),
- (246,123,1,'b_a',9,'Parent of',179,'Child of',1,NULL,NULL,NULL),
- (247,124,1,'a_b',39,'Child of',9,'Parent of',1,NULL,NULL,NULL),
- (248,124,1,'b_a',9,'Parent of',39,'Child of',1,NULL,NULL,NULL),
- (249,125,4,'a_b',39,'Sibling of',179,'Sibling of',1,NULL,NULL,NULL),
- (250,125,4,'b_a',179,'Sibling of',39,'Sibling of',1,NULL,NULL,NULL),
- (251,126,8,'a_b',9,'Household Member of',55,'Household Member is',1,NULL,NULL,NULL),
- (252,126,8,'b_a',55,'Household Member is',9,'Household Member of',1,NULL,NULL,NULL),
- (253,127,8,'a_b',179,'Household Member of',55,'Household Member is',1,NULL,NULL,NULL),
- (254,127,8,'b_a',55,'Household Member is',179,'Household Member of',1,NULL,NULL,NULL),
- (255,128,8,'a_b',39,'Household Member of',55,'Household Member is',1,NULL,NULL,NULL),
- (256,128,8,'b_a',55,'Household Member is',39,'Household Member of',1,NULL,NULL,NULL),
- (257,129,7,'a_b',197,'Head of Household for',55,'Head of Household is',1,NULL,NULL,NULL),
- (258,129,7,'b_a',55,'Head of Household is',197,'Head of Household for',1,NULL,NULL,NULL),
- (259,130,2,'a_b',9,'Spouse of',197,'Spouse of',1,NULL,NULL,NULL),
- (260,130,2,'b_a',197,'Spouse of',9,'Spouse of',1,NULL,NULL,NULL),
- (261,131,1,'a_b',20,'Child of',162,'Parent of',1,NULL,NULL,NULL),
- (262,131,1,'b_a',162,'Parent of',20,'Child of',1,NULL,NULL,NULL),
- (263,132,1,'a_b',25,'Child of',162,'Parent of',1,NULL,NULL,NULL),
- (264,132,1,'b_a',162,'Parent of',25,'Child of',1,NULL,NULL,NULL),
- (265,133,1,'a_b',20,'Child of',169,'Parent of',1,NULL,NULL,NULL),
- (266,133,1,'b_a',169,'Parent of',20,'Child of',1,NULL,NULL,NULL),
- (267,134,1,'a_b',25,'Child of',169,'Parent of',1,NULL,NULL,NULL),
- (268,134,1,'b_a',169,'Parent of',25,'Child of',1,NULL,NULL,NULL),
- (269,135,4,'a_b',25,'Sibling of',20,'Sibling of',1,NULL,NULL,NULL),
- (270,135,4,'b_a',20,'Sibling of',25,'Sibling of',1,NULL,NULL,NULL),
- (271,136,8,'a_b',169,'Household Member of',171,'Household Member is',1,NULL,NULL,NULL),
- (272,136,8,'b_a',171,'Household Member is',169,'Household Member of',1,NULL,NULL,NULL),
- (273,137,8,'a_b',20,'Household Member of',171,'Household Member is',1,NULL,NULL,NULL),
- (274,137,8,'b_a',171,'Household Member is',20,'Household Member of',1,NULL,NULL,NULL),
- (275,138,8,'a_b',25,'Household Member of',171,'Household Member is',1,NULL,NULL,NULL),
- (276,138,8,'b_a',171,'Household Member is',25,'Household Member of',1,NULL,NULL,NULL),
- (277,139,7,'a_b',162,'Head of Household for',171,'Head of Household is',1,NULL,NULL,NULL),
- (278,139,7,'b_a',171,'Head of Household is',162,'Head of Household for',1,NULL,NULL,NULL),
- (279,140,2,'a_b',169,'Spouse of',162,'Spouse of',1,NULL,NULL,NULL),
- (280,140,2,'b_a',162,'Spouse of',169,'Spouse of',1,NULL,NULL,NULL),
- (281,141,1,'a_b',61,'Child of',97,'Parent of',1,NULL,NULL,NULL),
- (282,141,1,'b_a',97,'Parent of',61,'Child of',1,NULL,NULL,NULL),
- (283,142,1,'a_b',35,'Child of',97,'Parent of',1,NULL,NULL,NULL),
- (284,142,1,'b_a',97,'Parent of',35,'Child of',1,NULL,NULL,NULL),
- (285,143,1,'a_b',61,'Child of',18,'Parent of',1,NULL,NULL,NULL),
- (286,143,1,'b_a',18,'Parent of',61,'Child of',1,NULL,NULL,NULL),
- (287,144,1,'a_b',35,'Child of',18,'Parent of',1,NULL,NULL,NULL),
- (288,144,1,'b_a',18,'Parent of',35,'Child of',1,NULL,NULL,NULL),
- (289,145,4,'a_b',35,'Sibling of',61,'Sibling of',1,NULL,NULL,NULL),
- (290,145,4,'b_a',61,'Sibling of',35,'Sibling of',1,NULL,NULL,NULL),
- (291,146,8,'a_b',18,'Household Member of',182,'Household Member is',1,NULL,NULL,NULL),
- (292,146,8,'b_a',182,'Household Member is',18,'Household Member of',1,NULL,NULL,NULL),
- (293,147,8,'a_b',61,'Household Member of',182,'Household Member is',1,NULL,NULL,NULL),
- (294,147,8,'b_a',182,'Household Member is',61,'Household Member of',1,NULL,NULL,NULL),
- (295,148,8,'a_b',35,'Household Member of',182,'Household Member is',1,NULL,NULL,NULL),
- (296,148,8,'b_a',182,'Household Member is',35,'Household Member of',1,NULL,NULL,NULL),
- (297,149,7,'a_b',97,'Head of Household for',182,'Head of Household is',0,NULL,NULL,NULL),
- (298,149,7,'b_a',182,'Head of Household is',97,'Head of Household for',0,NULL,NULL,NULL),
- (299,150,2,'a_b',18,'Spouse of',97,'Spouse of',0,NULL,NULL,NULL),
- (300,150,2,'b_a',97,'Spouse of',18,'Spouse of',0,NULL,NULL,NULL),
- (301,151,1,'a_b',31,'Child of',111,'Parent of',1,NULL,NULL,NULL),
- (302,151,1,'b_a',111,'Parent of',31,'Child of',1,NULL,NULL,NULL),
- (303,152,1,'a_b',74,'Child of',111,'Parent of',1,NULL,NULL,NULL),
- (304,152,1,'b_a',111,'Parent of',74,'Child of',1,NULL,NULL,NULL),
- (305,153,1,'a_b',31,'Child of',178,'Parent of',1,NULL,NULL,NULL),
- (306,153,1,'b_a',178,'Parent of',31,'Child of',1,NULL,NULL,NULL),
- (307,154,1,'a_b',74,'Child of',178,'Parent of',1,NULL,NULL,NULL),
- (308,154,1,'b_a',178,'Parent of',74,'Child of',1,NULL,NULL,NULL),
- (309,155,4,'a_b',74,'Sibling of',31,'Sibling of',1,NULL,NULL,NULL),
- (310,155,4,'b_a',31,'Sibling of',74,'Sibling of',1,NULL,NULL,NULL),
- (311,156,8,'a_b',178,'Household Member of',45,'Household Member is',1,NULL,NULL,NULL),
- (312,156,8,'b_a',45,'Household Member is',178,'Household Member of',1,NULL,NULL,NULL),
- (313,157,8,'a_b',31,'Household Member of',45,'Household Member is',1,NULL,NULL,NULL),
- (314,157,8,'b_a',45,'Household Member is',31,'Household Member of',1,NULL,NULL,NULL),
- (315,158,8,'a_b',74,'Household Member of',45,'Household Member is',1,NULL,NULL,NULL),
- (316,158,8,'b_a',45,'Household Member is',74,'Household Member of',1,NULL,NULL,NULL),
- (317,159,7,'a_b',111,'Head of Household for',45,'Head of Household is',0,NULL,NULL,NULL),
- (318,159,7,'b_a',45,'Head of Household is',111,'Head of Household for',0,NULL,NULL,NULL),
- (319,160,2,'a_b',178,'Spouse of',111,'Spouse of',0,NULL,NULL,NULL),
- (320,160,2,'b_a',111,'Spouse of',178,'Spouse of',0,NULL,NULL,NULL),
- (321,161,1,'a_b',26,'Child of',126,'Parent of',1,NULL,NULL,NULL),
- (322,161,1,'b_a',126,'Parent of',26,'Child of',1,NULL,NULL,NULL),
- (323,162,1,'a_b',139,'Child of',126,'Parent of',1,NULL,NULL,NULL),
- (324,162,1,'b_a',126,'Parent of',139,'Child of',1,NULL,NULL,NULL),
- (325,163,1,'a_b',26,'Child of',186,'Parent of',1,NULL,NULL,NULL),
- (326,163,1,'b_a',186,'Parent of',26,'Child of',1,NULL,NULL,NULL),
- (327,164,1,'a_b',139,'Child of',186,'Parent of',1,NULL,NULL,NULL),
- (328,164,1,'b_a',186,'Parent of',139,'Child of',1,NULL,NULL,NULL),
- (329,165,4,'a_b',139,'Sibling of',26,'Sibling of',1,NULL,NULL,NULL),
- (330,165,4,'b_a',26,'Sibling of',139,'Sibling of',1,NULL,NULL,NULL),
- (331,166,8,'a_b',186,'Household Member of',156,'Household Member is',1,NULL,NULL,NULL),
- (332,166,8,'b_a',156,'Household Member is',186,'Household Member of',1,NULL,NULL,NULL),
- (333,167,8,'a_b',26,'Household Member of',156,'Household Member is',1,NULL,NULL,NULL),
- (334,167,8,'b_a',156,'Household Member is',26,'Household Member of',1,NULL,NULL,NULL),
- (335,168,8,'a_b',139,'Household Member of',156,'Household Member is',1,NULL,NULL,NULL),
- (336,168,8,'b_a',156,'Household Member is',139,'Household Member of',1,NULL,NULL,NULL),
- (337,169,7,'a_b',126,'Head of Household for',156,'Head of Household is',1,NULL,NULL,NULL),
- (338,169,7,'b_a',156,'Head of Household is',126,'Head of Household for',1,NULL,NULL,NULL),
- (339,170,2,'a_b',186,'Spouse of',126,'Spouse of',1,NULL,NULL,NULL),
- (340,170,2,'b_a',126,'Spouse of',186,'Spouse of',1,NULL,NULL,NULL),
- (341,171,1,'a_b',28,'Child of',201,'Parent of',1,NULL,NULL,NULL),
- (342,171,1,'b_a',201,'Parent of',28,'Child of',1,NULL,NULL,NULL),
- (343,172,1,'a_b',72,'Child of',201,'Parent of',1,NULL,NULL,NULL),
- (344,172,1,'b_a',201,'Parent of',72,'Child of',1,NULL,NULL,NULL),
- (345,173,1,'a_b',28,'Child of',194,'Parent of',1,NULL,NULL,NULL),
- (346,173,1,'b_a',194,'Parent of',28,'Child of',1,NULL,NULL,NULL),
- (347,174,1,'a_b',72,'Child of',194,'Parent of',1,NULL,NULL,NULL),
- (348,174,1,'b_a',194,'Parent of',72,'Child of',1,NULL,NULL,NULL),
- (349,175,4,'a_b',72,'Sibling of',28,'Sibling of',1,NULL,NULL,NULL),
- (350,175,4,'b_a',28,'Sibling of',72,'Sibling of',1,NULL,NULL,NULL),
- (351,176,8,'a_b',194,'Household Member of',131,'Household Member is',1,NULL,NULL,NULL),
- (352,176,8,'b_a',131,'Household Member is',194,'Household Member of',1,NULL,NULL,NULL),
- (353,177,8,'a_b',28,'Household Member of',131,'Household Member is',1,NULL,NULL,NULL),
- (354,177,8,'b_a',131,'Household Member is',28,'Household Member of',1,NULL,NULL,NULL),
- (355,178,8,'a_b',72,'Household Member of',131,'Household Member is',1,NULL,NULL,NULL),
- (356,178,8,'b_a',131,'Household Member is',72,'Household Member of',1,NULL,NULL,NULL),
- (357,179,7,'a_b',201,'Head of Household for',131,'Head of Household is',1,NULL,NULL,NULL),
- (358,179,7,'b_a',131,'Head of Household is',201,'Head of Household for',1,NULL,NULL,NULL),
- (359,180,2,'a_b',194,'Spouse of',201,'Spouse of',1,NULL,NULL,NULL),
- (360,180,2,'b_a',201,'Spouse of',194,'Spouse of',1,NULL,NULL,NULL),
- (361,181,1,'a_b',81,'Child of',12,'Parent of',1,NULL,NULL,NULL),
- (362,181,1,'b_a',12,'Parent of',81,'Child of',1,NULL,NULL,NULL),
- (363,182,1,'a_b',78,'Child of',12,'Parent of',1,NULL,NULL,NULL),
- (364,182,1,'b_a',12,'Parent of',78,'Child of',1,NULL,NULL,NULL),
- (365,183,1,'a_b',81,'Child of',136,'Parent of',1,NULL,NULL,NULL),
- (366,183,1,'b_a',136,'Parent of',81,'Child of',1,NULL,NULL,NULL),
- (367,184,1,'a_b',78,'Child of',136,'Parent of',1,NULL,NULL,NULL),
- (368,184,1,'b_a',136,'Parent of',78,'Child of',1,NULL,NULL,NULL),
- (369,185,4,'a_b',78,'Sibling of',81,'Sibling of',1,NULL,NULL,NULL),
- (370,185,4,'b_a',81,'Sibling of',78,'Sibling of',1,NULL,NULL,NULL),
- (371,186,8,'a_b',136,'Household Member of',116,'Household Member is',1,NULL,NULL,NULL),
- (372,186,8,'b_a',116,'Household Member is',136,'Household Member of',1,NULL,NULL,NULL),
- (373,187,8,'a_b',81,'Household Member of',116,'Household Member is',1,NULL,NULL,NULL),
- (374,187,8,'b_a',116,'Household Member is',81,'Household Member of',1,NULL,NULL,NULL),
- (375,188,8,'a_b',78,'Household Member of',116,'Household Member is',1,NULL,NULL,NULL),
- (376,188,8,'b_a',116,'Household Member is',78,'Household Member of',1,NULL,NULL,NULL),
- (377,189,7,'a_b',12,'Head of Household for',116,'Head of Household is',0,NULL,NULL,NULL),
- (378,189,7,'b_a',116,'Head of Household is',12,'Head of Household for',0,NULL,NULL,NULL),
- (379,190,2,'a_b',136,'Spouse of',12,'Spouse of',0,NULL,NULL,NULL),
- (380,190,2,'b_a',12,'Spouse of',136,'Spouse of',0,NULL,NULL,NULL),
- (381,191,1,'a_b',157,'Child of',54,'Parent of',1,NULL,NULL,NULL),
- (382,191,1,'b_a',54,'Parent of',157,'Child of',1,NULL,NULL,NULL),
- (383,192,1,'a_b',82,'Child of',54,'Parent of',1,NULL,NULL,NULL),
- (384,192,1,'b_a',54,'Parent of',82,'Child of',1,NULL,NULL,NULL),
- (385,193,1,'a_b',157,'Child of',94,'Parent of',1,NULL,NULL,NULL),
- (386,193,1,'b_a',94,'Parent of',157,'Child of',1,NULL,NULL,NULL),
- (387,194,1,'a_b',82,'Child of',94,'Parent of',1,NULL,NULL,NULL),
- (388,194,1,'b_a',94,'Parent of',82,'Child of',1,NULL,NULL,NULL),
- (389,195,4,'a_b',82,'Sibling of',157,'Sibling of',1,NULL,NULL,NULL),
- (390,195,4,'b_a',157,'Sibling of',82,'Sibling of',1,NULL,NULL,NULL),
- (391,196,8,'a_b',94,'Household Member of',184,'Household Member is',1,NULL,NULL,NULL),
- (392,196,8,'b_a',184,'Household Member is',94,'Household Member of',1,NULL,NULL,NULL),
- (393,197,8,'a_b',157,'Household Member of',184,'Household Member is',1,NULL,NULL,NULL),
- (394,197,8,'b_a',184,'Household Member is',157,'Household Member of',1,NULL,NULL,NULL),
- (395,198,8,'a_b',82,'Household Member of',184,'Household Member is',1,NULL,NULL,NULL),
- (396,198,8,'b_a',184,'Household Member is',82,'Household Member of',1,NULL,NULL,NULL),
- (397,199,7,'a_b',54,'Head of Household for',184,'Head of Household is',0,NULL,NULL,NULL),
- (398,199,7,'b_a',184,'Head of Household is',54,'Head of Household for',0,NULL,NULL,NULL),
- (399,200,2,'a_b',94,'Spouse of',54,'Spouse of',0,NULL,NULL,NULL),
- (400,200,2,'b_a',54,'Spouse of',94,'Spouse of',0,NULL,NULL,NULL),
- (401,201,5,'a_b',46,'Employee of',21,'Employer of',1,NULL,NULL,NULL),
- (402,201,5,'b_a',21,'Employer of',46,'Employee of',1,NULL,NULL,NULL),
- (403,202,5,'a_b',49,'Employee of',36,'Employer of',1,NULL,NULL,NULL),
- (404,202,5,'b_a',36,'Employer of',49,'Employee of',1,NULL,NULL,NULL),
- (405,203,5,'a_b',3,'Employee of',40,'Employer of',1,NULL,NULL,NULL),
- (406,203,5,'b_a',40,'Employer of',3,'Employee of',1,NULL,NULL,NULL),
- (407,204,5,'a_b',165,'Employee of',48,'Employer of',1,NULL,NULL,NULL),
- (408,204,5,'b_a',48,'Employer of',165,'Employee of',1,NULL,NULL,NULL),
- (409,205,5,'a_b',57,'Employee of',51,'Employer of',1,NULL,NULL,NULL),
- (410,205,5,'b_a',51,'Employer of',57,'Employee of',1,NULL,NULL,NULL),
- (411,206,5,'a_b',139,'Employee of',73,'Employer of',1,NULL,NULL,NULL),
- (412,206,5,'b_a',73,'Employer of',139,'Employee of',1,NULL,NULL,NULL),
- (413,207,5,'a_b',50,'Employee of',87,'Employer of',1,NULL,NULL,NULL),
- (414,207,5,'b_a',87,'Employer of',50,'Employee of',1,NULL,NULL,NULL),
- (415,208,5,'a_b',52,'Employee of',118,'Employer of',1,NULL,NULL,NULL),
- (416,208,5,'b_a',118,'Employer of',52,'Employee of',1,NULL,NULL,NULL),
- (417,209,5,'a_b',110,'Employee of',122,'Employer of',1,NULL,NULL,NULL),
- (418,209,5,'b_a',122,'Employer of',110,'Employee of',1,NULL,NULL,NULL),
- (419,210,5,'a_b',130,'Employee of',135,'Employer of',1,NULL,NULL,NULL),
- (420,210,5,'b_a',135,'Employer of',130,'Employee of',1,NULL,NULL,NULL),
- (421,211,5,'a_b',82,'Employee of',138,'Employer of',1,NULL,NULL,NULL),
- (422,211,5,'b_a',138,'Employer of',82,'Employee of',1,NULL,NULL,NULL),
- (423,212,5,'a_b',103,'Employee of',145,'Employer of',1,NULL,NULL,NULL),
- (424,212,5,'b_a',145,'Employer of',103,'Employee of',1,NULL,NULL,NULL),
- (425,213,5,'a_b',141,'Employee of',154,'Employer of',1,NULL,NULL,NULL),
- (426,213,5,'b_a',154,'Employer of',141,'Employee of',1,NULL,NULL,NULL),
- (427,214,5,'a_b',151,'Employee of',170,'Employer of',1,NULL,NULL,NULL),
- (428,214,5,'b_a',170,'Employer of',151,'Employee of',1,NULL,NULL,NULL),
- (429,215,5,'a_b',160,'Employee of',173,'Employer of',1,NULL,NULL,NULL),
- (430,215,5,'b_a',173,'Employer of',160,'Employee of',1,NULL,NULL,NULL),
- (431,216,5,'a_b',109,'Employee of',180,'Employer of',1,NULL,NULL,NULL),
- (432,216,5,'b_a',180,'Employer of',109,'Employee of',1,NULL,NULL,NULL),
- (433,217,5,'a_b',68,'Employee of',187,'Employer of',1,NULL,NULL,NULL),
- (434,217,5,'b_a',187,'Employer of',68,'Employee of',1,NULL,NULL,NULL);
+ (1,1,1,'a_b',77,'Child of',67,'Parent of',1,NULL,NULL,NULL),
+ (2,1,1,'b_a',67,'Parent of',77,'Child of',1,NULL,NULL,NULL),
+ (3,2,1,'a_b',127,'Child of',67,'Parent of',1,NULL,NULL,NULL),
+ (4,2,1,'b_a',67,'Parent of',127,'Child of',1,NULL,NULL,NULL),
+ (5,3,1,'a_b',77,'Child of',156,'Parent of',1,NULL,NULL,NULL),
+ (6,3,1,'b_a',156,'Parent of',77,'Child of',1,NULL,NULL,NULL),
+ (7,4,1,'a_b',127,'Child of',156,'Parent of',1,NULL,NULL,NULL),
+ (8,4,1,'b_a',156,'Parent of',127,'Child of',1,NULL,NULL,NULL),
+ (9,5,4,'a_b',127,'Sibling of',77,'Sibling of',1,NULL,NULL,NULL),
+ (10,5,4,'b_a',77,'Sibling of',127,'Sibling of',1,NULL,NULL,NULL),
+ (11,6,8,'a_b',156,'Household Member of',162,'Household Member is',1,NULL,NULL,NULL),
+ (12,6,8,'b_a',162,'Household Member is',156,'Household Member of',1,NULL,NULL,NULL),
+ (13,7,8,'a_b',77,'Household Member of',162,'Household Member is',1,NULL,NULL,NULL),
+ (14,7,8,'b_a',162,'Household Member is',77,'Household Member of',1,NULL,NULL,NULL),
+ (15,8,8,'a_b',127,'Household Member of',162,'Household Member is',1,NULL,NULL,NULL),
+ (16,8,8,'b_a',162,'Household Member is',127,'Household Member of',1,NULL,NULL,NULL),
+ (17,9,7,'a_b',67,'Head of Household for',162,'Head of Household is',0,NULL,NULL,NULL),
+ (18,9,7,'b_a',162,'Head of Household is',67,'Head of Household for',0,NULL,NULL,NULL),
+ (19,10,2,'a_b',156,'Spouse of',67,'Spouse of',0,NULL,NULL,NULL),
+ (20,10,2,'b_a',67,'Spouse of',156,'Spouse of',0,NULL,NULL,NULL),
+ (21,11,1,'a_b',176,'Child of',70,'Parent of',1,NULL,NULL,NULL),
+ (22,11,1,'b_a',70,'Parent of',176,'Child of',1,NULL,NULL,NULL),
+ (23,12,1,'a_b',56,'Child of',70,'Parent of',1,NULL,NULL,NULL),
+ (24,12,1,'b_a',70,'Parent of',56,'Child of',1,NULL,NULL,NULL),
+ (25,13,1,'a_b',176,'Child of',182,'Parent of',1,NULL,NULL,NULL),
+ (26,13,1,'b_a',182,'Parent of',176,'Child of',1,NULL,NULL,NULL),
+ (27,14,1,'a_b',56,'Child of',182,'Parent of',1,NULL,NULL,NULL),
+ (28,14,1,'b_a',182,'Parent of',56,'Child of',1,NULL,NULL,NULL),
+ (29,15,4,'a_b',56,'Sibling of',176,'Sibling of',1,NULL,NULL,NULL),
+ (30,15,4,'b_a',176,'Sibling of',56,'Sibling of',1,NULL,NULL,NULL),
+ (31,16,8,'a_b',182,'Household Member of',80,'Household Member is',1,NULL,NULL,NULL),
+ (32,16,8,'b_a',80,'Household Member is',182,'Household Member of',1,NULL,NULL,NULL),
+ (33,17,8,'a_b',176,'Household Member of',80,'Household Member is',1,NULL,NULL,NULL),
+ (34,17,8,'b_a',80,'Household Member is',176,'Household Member of',1,NULL,NULL,NULL),
+ (35,18,8,'a_b',56,'Household Member of',80,'Household Member is',1,NULL,NULL,NULL),
+ (36,18,8,'b_a',80,'Household Member is',56,'Household Member of',1,NULL,NULL,NULL),
+ (37,19,7,'a_b',70,'Head of Household for',80,'Head of Household is',0,NULL,NULL,NULL),
+ (38,19,7,'b_a',80,'Head of Household is',70,'Head of Household for',0,NULL,NULL,NULL),
+ (39,20,2,'a_b',182,'Spouse of',70,'Spouse of',0,NULL,NULL,NULL),
+ (40,20,2,'b_a',70,'Spouse of',182,'Spouse of',0,NULL,NULL,NULL),
+ (41,21,1,'a_b',53,'Child of',153,'Parent of',1,NULL,NULL,NULL),
+ (42,21,1,'b_a',153,'Parent of',53,'Child of',1,NULL,NULL,NULL),
+ (43,22,1,'a_b',151,'Child of',153,'Parent of',1,NULL,NULL,NULL),
+ (44,22,1,'b_a',153,'Parent of',151,'Child of',1,NULL,NULL,NULL),
+ (45,23,1,'a_b',53,'Child of',173,'Parent of',1,NULL,NULL,NULL),
+ (46,23,1,'b_a',173,'Parent of',53,'Child of',1,NULL,NULL,NULL),
+ (47,24,1,'a_b',151,'Child of',173,'Parent of',1,NULL,NULL,NULL),
+ (48,24,1,'b_a',173,'Parent of',151,'Child of',1,NULL,NULL,NULL),
+ (49,25,4,'a_b',151,'Sibling of',53,'Sibling of',1,NULL,NULL,NULL),
+ (50,25,4,'b_a',53,'Sibling of',151,'Sibling of',1,NULL,NULL,NULL),
+ (51,26,8,'a_b',173,'Household Member of',137,'Household Member is',1,NULL,NULL,NULL),
+ (52,26,8,'b_a',137,'Household Member is',173,'Household Member of',1,NULL,NULL,NULL),
+ (53,27,8,'a_b',53,'Household Member of',137,'Household Member is',1,NULL,NULL,NULL),
+ (54,27,8,'b_a',137,'Household Member is',53,'Household Member of',1,NULL,NULL,NULL),
+ (55,28,8,'a_b',151,'Household Member of',137,'Household Member is',1,NULL,NULL,NULL),
+ (56,28,8,'b_a',137,'Household Member is',151,'Household Member of',1,NULL,NULL,NULL),
+ (57,29,7,'a_b',153,'Head of Household for',137,'Head of Household is',1,NULL,NULL,NULL),
+ (58,29,7,'b_a',137,'Head of Household is',153,'Head of Household for',1,NULL,NULL,NULL),
+ (59,30,2,'a_b',173,'Spouse of',153,'Spouse of',1,NULL,NULL,NULL),
+ (60,30,2,'b_a',153,'Spouse of',173,'Spouse of',1,NULL,NULL,NULL),
+ (61,31,1,'a_b',51,'Child of',101,'Parent of',1,NULL,NULL,NULL),
+ (62,31,1,'b_a',101,'Parent of',51,'Child of',1,NULL,NULL,NULL),
+ (63,32,1,'a_b',7,'Child of',101,'Parent of',1,NULL,NULL,NULL),
+ (64,32,1,'b_a',101,'Parent of',7,'Child of',1,NULL,NULL,NULL),
+ (65,33,1,'a_b',51,'Child of',109,'Parent of',1,NULL,NULL,NULL),
+ (66,33,1,'b_a',109,'Parent of',51,'Child of',1,NULL,NULL,NULL),
+ (67,34,1,'a_b',7,'Child of',109,'Parent of',1,NULL,NULL,NULL),
+ (68,34,1,'b_a',109,'Parent of',7,'Child of',1,NULL,NULL,NULL),
+ (69,35,4,'a_b',7,'Sibling of',51,'Sibling of',1,NULL,NULL,NULL),
+ (70,35,4,'b_a',51,'Sibling of',7,'Sibling of',1,NULL,NULL,NULL),
+ (71,36,8,'a_b',109,'Household Member of',141,'Household Member is',1,NULL,NULL,NULL),
+ (72,36,8,'b_a',141,'Household Member is',109,'Household Member of',1,NULL,NULL,NULL),
+ (73,37,8,'a_b',51,'Household Member of',141,'Household Member is',1,NULL,NULL,NULL),
+ (74,37,8,'b_a',141,'Household Member is',51,'Household Member of',1,NULL,NULL,NULL),
+ (75,38,8,'a_b',7,'Household Member of',141,'Household Member is',1,NULL,NULL,NULL),
+ (76,38,8,'b_a',141,'Household Member is',7,'Household Member of',1,NULL,NULL,NULL),
+ (77,39,7,'a_b',101,'Head of Household for',141,'Head of Household is',1,NULL,NULL,NULL),
+ (78,39,7,'b_a',141,'Head of Household is',101,'Head of Household for',1,NULL,NULL,NULL),
+ (79,40,2,'a_b',109,'Spouse of',101,'Spouse of',1,NULL,NULL,NULL),
+ (80,40,2,'b_a',101,'Spouse of',109,'Spouse of',1,NULL,NULL,NULL),
+ (81,41,1,'a_b',62,'Child of',24,'Parent of',1,NULL,NULL,NULL),
+ (82,41,1,'b_a',24,'Parent of',62,'Child of',1,NULL,NULL,NULL),
+ (83,42,1,'a_b',33,'Child of',24,'Parent of',1,NULL,NULL,NULL),
+ (84,42,1,'b_a',24,'Parent of',33,'Child of',1,NULL,NULL,NULL),
+ (85,43,1,'a_b',62,'Child of',57,'Parent of',1,NULL,NULL,NULL),
+ (86,43,1,'b_a',57,'Parent of',62,'Child of',1,NULL,NULL,NULL),
+ (87,44,1,'a_b',33,'Child of',57,'Parent of',1,NULL,NULL,NULL),
+ (88,44,1,'b_a',57,'Parent of',33,'Child of',1,NULL,NULL,NULL),
+ (89,45,4,'a_b',33,'Sibling of',62,'Sibling of',1,NULL,NULL,NULL),
+ (90,45,4,'b_a',62,'Sibling of',33,'Sibling of',1,NULL,NULL,NULL),
+ (91,46,8,'a_b',57,'Household Member of',98,'Household Member is',1,NULL,NULL,NULL),
+ (92,46,8,'b_a',98,'Household Member is',57,'Household Member of',1,NULL,NULL,NULL),
+ (93,47,8,'a_b',62,'Household Member of',98,'Household Member is',1,NULL,NULL,NULL),
+ (94,47,8,'b_a',98,'Household Member is',62,'Household Member of',1,NULL,NULL,NULL),
+ (95,48,8,'a_b',33,'Household Member of',98,'Household Member is',1,NULL,NULL,NULL),
+ (96,48,8,'b_a',98,'Household Member is',33,'Household Member of',1,NULL,NULL,NULL),
+ (97,49,7,'a_b',24,'Head of Household for',98,'Head of Household is',1,NULL,NULL,NULL),
+ (98,49,7,'b_a',98,'Head of Household is',24,'Head of Household for',1,NULL,NULL,NULL),
+ (99,50,2,'a_b',57,'Spouse of',24,'Spouse of',1,NULL,NULL,NULL),
+ (100,50,2,'b_a',24,'Spouse of',57,'Spouse of',1,NULL,NULL,NULL),
+ (101,51,1,'a_b',106,'Child of',191,'Parent of',1,NULL,NULL,NULL),
+ (102,51,1,'b_a',191,'Parent of',106,'Child of',1,NULL,NULL,NULL),
+ (103,52,1,'a_b',91,'Child of',191,'Parent of',1,NULL,NULL,NULL),
+ (104,52,1,'b_a',191,'Parent of',91,'Child of',1,NULL,NULL,NULL),
+ (105,53,1,'a_b',106,'Child of',97,'Parent of',1,NULL,NULL,NULL),
+ (106,53,1,'b_a',97,'Parent of',106,'Child of',1,NULL,NULL,NULL),
+ (107,54,1,'a_b',91,'Child of',97,'Parent of',1,NULL,NULL,NULL),
+ (108,54,1,'b_a',97,'Parent of',91,'Child of',1,NULL,NULL,NULL),
+ (109,55,4,'a_b',91,'Sibling of',106,'Sibling of',1,NULL,NULL,NULL),
+ (110,55,4,'b_a',106,'Sibling of',91,'Sibling of',1,NULL,NULL,NULL),
+ (111,56,8,'a_b',97,'Household Member of',161,'Household Member is',1,NULL,NULL,NULL),
+ (112,56,8,'b_a',161,'Household Member is',97,'Household Member of',1,NULL,NULL,NULL),
+ (113,57,8,'a_b',106,'Household Member of',161,'Household Member is',1,NULL,NULL,NULL),
+ (114,57,8,'b_a',161,'Household Member is',106,'Household Member of',1,NULL,NULL,NULL),
+ (115,58,8,'a_b',91,'Household Member of',161,'Household Member is',1,NULL,NULL,NULL),
+ (116,58,8,'b_a',161,'Household Member is',91,'Household Member of',1,NULL,NULL,NULL),
+ (117,59,7,'a_b',191,'Head of Household for',161,'Head of Household is',0,NULL,NULL,NULL),
+ (118,59,7,'b_a',161,'Head of Household is',191,'Head of Household for',0,NULL,NULL,NULL),
+ (119,60,2,'a_b',97,'Spouse of',191,'Spouse of',0,NULL,NULL,NULL),
+ (120,60,2,'b_a',191,'Spouse of',97,'Spouse of',0,NULL,NULL,NULL),
+ (121,61,1,'a_b',25,'Child of',39,'Parent of',1,NULL,NULL,NULL),
+ (122,61,1,'b_a',39,'Parent of',25,'Child of',1,NULL,NULL,NULL),
+ (123,62,1,'a_b',157,'Child of',39,'Parent of',1,NULL,NULL,NULL),
+ (124,62,1,'b_a',39,'Parent of',157,'Child of',1,NULL,NULL,NULL),
+ (125,63,1,'a_b',25,'Child of',155,'Parent of',1,NULL,NULL,NULL),
+ (126,63,1,'b_a',155,'Parent of',25,'Child of',1,NULL,NULL,NULL),
+ (127,64,1,'a_b',157,'Child of',155,'Parent of',1,NULL,NULL,NULL),
+ (128,64,1,'b_a',155,'Parent of',157,'Child of',1,NULL,NULL,NULL),
+ (129,65,4,'a_b',157,'Sibling of',25,'Sibling of',1,NULL,NULL,NULL),
+ (130,65,4,'b_a',25,'Sibling of',157,'Sibling of',1,NULL,NULL,NULL),
+ (131,66,8,'a_b',155,'Household Member of',10,'Household Member is',1,NULL,NULL,NULL),
+ (132,66,8,'b_a',10,'Household Member is',155,'Household Member of',1,NULL,NULL,NULL),
+ (133,67,8,'a_b',25,'Household Member of',10,'Household Member is',1,NULL,NULL,NULL),
+ (134,67,8,'b_a',10,'Household Member is',25,'Household Member of',1,NULL,NULL,NULL),
+ (135,68,8,'a_b',157,'Household Member of',10,'Household Member is',1,NULL,NULL,NULL),
+ (136,68,8,'b_a',10,'Household Member is',157,'Household Member of',1,NULL,NULL,NULL),
+ (137,69,7,'a_b',39,'Head of Household for',10,'Head of Household is',1,NULL,NULL,NULL),
+ (138,69,7,'b_a',10,'Head of Household is',39,'Head of Household for',1,NULL,NULL,NULL),
+ (139,70,2,'a_b',155,'Spouse of',39,'Spouse of',1,NULL,NULL,NULL),
+ (140,70,2,'b_a',39,'Spouse of',155,'Spouse of',1,NULL,NULL,NULL),
+ (141,71,1,'a_b',50,'Child of',148,'Parent of',1,NULL,NULL,NULL),
+ (142,71,1,'b_a',148,'Parent of',50,'Child of',1,NULL,NULL,NULL),
+ (143,72,1,'a_b',190,'Child of',148,'Parent of',1,NULL,NULL,NULL),
+ (144,72,1,'b_a',148,'Parent of',190,'Child of',1,NULL,NULL,NULL),
+ (145,73,1,'a_b',50,'Child of',133,'Parent of',1,NULL,NULL,NULL),
+ (146,73,1,'b_a',133,'Parent of',50,'Child of',1,NULL,NULL,NULL),
+ (147,74,1,'a_b',190,'Child of',133,'Parent of',1,NULL,NULL,NULL),
+ (148,74,1,'b_a',133,'Parent of',190,'Child of',1,NULL,NULL,NULL),
+ (149,75,4,'a_b',190,'Sibling of',50,'Sibling of',1,NULL,NULL,NULL),
+ (150,75,4,'b_a',50,'Sibling of',190,'Sibling of',1,NULL,NULL,NULL),
+ (151,76,8,'a_b',133,'Household Member of',199,'Household Member is',1,NULL,NULL,NULL),
+ (152,76,8,'b_a',199,'Household Member is',133,'Household Member of',1,NULL,NULL,NULL),
+ (153,77,8,'a_b',50,'Household Member of',199,'Household Member is',1,NULL,NULL,NULL),
+ (154,77,8,'b_a',199,'Household Member is',50,'Household Member of',1,NULL,NULL,NULL),
+ (155,78,8,'a_b',190,'Household Member of',199,'Household Member is',1,NULL,NULL,NULL),
+ (156,78,8,'b_a',199,'Household Member is',190,'Household Member of',1,NULL,NULL,NULL),
+ (157,79,7,'a_b',148,'Head of Household for',199,'Head of Household is',1,NULL,NULL,NULL),
+ (158,79,7,'b_a',199,'Head of Household is',148,'Head of Household for',1,NULL,NULL,NULL),
+ (159,80,2,'a_b',133,'Spouse of',148,'Spouse of',1,NULL,NULL,NULL),
+ (160,80,2,'b_a',148,'Spouse of',133,'Spouse of',1,NULL,NULL,NULL),
+ (161,81,1,'a_b',117,'Child of',16,'Parent of',1,NULL,NULL,NULL),
+ (162,81,1,'b_a',16,'Parent of',117,'Child of',1,NULL,NULL,NULL),
+ (163,82,1,'a_b',188,'Child of',16,'Parent of',1,NULL,NULL,NULL),
+ (164,82,1,'b_a',16,'Parent of',188,'Child of',1,NULL,NULL,NULL),
+ (165,83,1,'a_b',117,'Child of',2,'Parent of',1,NULL,NULL,NULL),
+ (166,83,1,'b_a',2,'Parent of',117,'Child of',1,NULL,NULL,NULL),
+ (167,84,1,'a_b',188,'Child of',2,'Parent of',1,NULL,NULL,NULL),
+ (168,84,1,'b_a',2,'Parent of',188,'Child of',1,NULL,NULL,NULL),
+ (169,85,4,'a_b',188,'Sibling of',117,'Sibling of',1,NULL,NULL,NULL),
+ (170,85,4,'b_a',117,'Sibling of',188,'Sibling of',1,NULL,NULL,NULL),
+ (171,86,8,'a_b',2,'Household Member of',29,'Household Member is',1,NULL,NULL,NULL),
+ (172,86,8,'b_a',29,'Household Member is',2,'Household Member of',1,NULL,NULL,NULL),
+ (173,87,8,'a_b',117,'Household Member of',29,'Household Member is',1,NULL,NULL,NULL),
+ (174,87,8,'b_a',29,'Household Member is',117,'Household Member of',1,NULL,NULL,NULL),
+ (175,88,8,'a_b',188,'Household Member of',29,'Household Member is',1,NULL,NULL,NULL),
+ (176,88,8,'b_a',29,'Household Member is',188,'Household Member of',1,NULL,NULL,NULL),
+ (177,89,7,'a_b',16,'Head of Household for',29,'Head of Household is',1,NULL,NULL,NULL),
+ (178,89,7,'b_a',29,'Head of Household is',16,'Head of Household for',1,NULL,NULL,NULL),
+ (179,90,2,'a_b',2,'Spouse of',16,'Spouse of',1,NULL,NULL,NULL),
+ (180,90,2,'b_a',16,'Spouse of',2,'Spouse of',1,NULL,NULL,NULL),
+ (181,91,1,'a_b',113,'Child of',146,'Parent of',1,NULL,NULL,NULL),
+ (182,91,1,'b_a',146,'Parent of',113,'Child of',1,NULL,NULL,NULL),
+ (183,92,1,'a_b',44,'Child of',146,'Parent of',1,NULL,NULL,NULL),
+ (184,92,1,'b_a',146,'Parent of',44,'Child of',1,NULL,NULL,NULL),
+ (185,93,1,'a_b',113,'Child of',195,'Parent of',1,NULL,NULL,NULL),
+ (186,93,1,'b_a',195,'Parent of',113,'Child of',1,NULL,NULL,NULL),
+ (187,94,1,'a_b',44,'Child of',195,'Parent of',1,NULL,NULL,NULL),
+ (188,94,1,'b_a',195,'Parent of',44,'Child of',1,NULL,NULL,NULL),
+ (189,95,4,'a_b',44,'Sibling of',113,'Sibling of',1,NULL,NULL,NULL),
+ (190,95,4,'b_a',113,'Sibling of',44,'Sibling of',1,NULL,NULL,NULL),
+ (191,96,8,'a_b',195,'Household Member of',59,'Household Member is',1,NULL,NULL,NULL),
+ (192,96,8,'b_a',59,'Household Member is',195,'Household Member of',1,NULL,NULL,NULL),
+ (193,97,8,'a_b',113,'Household Member of',59,'Household Member is',1,NULL,NULL,NULL),
+ (194,97,8,'b_a',59,'Household Member is',113,'Household Member of',1,NULL,NULL,NULL),
+ (195,98,8,'a_b',44,'Household Member of',59,'Household Member is',1,NULL,NULL,NULL),
+ (196,98,8,'b_a',59,'Household Member is',44,'Household Member of',1,NULL,NULL,NULL),
+ (197,99,7,'a_b',146,'Head of Household for',59,'Head of Household is',0,NULL,NULL,NULL),
+ (198,99,7,'b_a',59,'Head of Household is',146,'Head of Household for',0,NULL,NULL,NULL),
+ (199,100,2,'a_b',195,'Spouse of',146,'Spouse of',0,NULL,NULL,NULL),
+ (200,100,2,'b_a',146,'Spouse of',195,'Spouse of',0,NULL,NULL,NULL),
+ (201,101,1,'a_b',82,'Child of',110,'Parent of',1,NULL,NULL,NULL),
+ (202,101,1,'b_a',110,'Parent of',82,'Child of',1,NULL,NULL,NULL),
+ (203,102,1,'a_b',172,'Child of',110,'Parent of',1,NULL,NULL,NULL),
+ (204,102,1,'b_a',110,'Parent of',172,'Child of',1,NULL,NULL,NULL),
+ (205,103,1,'a_b',82,'Child of',163,'Parent of',1,NULL,NULL,NULL),
+ (206,103,1,'b_a',163,'Parent of',82,'Child of',1,NULL,NULL,NULL),
+ (207,104,1,'a_b',172,'Child of',163,'Parent of',1,NULL,NULL,NULL),
+ (208,104,1,'b_a',163,'Parent of',172,'Child of',1,NULL,NULL,NULL),
+ (209,105,4,'a_b',172,'Sibling of',82,'Sibling of',1,NULL,NULL,NULL),
+ (210,105,4,'b_a',82,'Sibling of',172,'Sibling of',1,NULL,NULL,NULL),
+ (211,106,8,'a_b',163,'Household Member of',46,'Household Member is',1,NULL,NULL,NULL),
+ (212,106,8,'b_a',46,'Household Member is',163,'Household Member of',1,NULL,NULL,NULL),
+ (213,107,8,'a_b',82,'Household Member of',46,'Household Member is',1,NULL,NULL,NULL),
+ (214,107,8,'b_a',46,'Household Member is',82,'Household Member of',1,NULL,NULL,NULL),
+ (215,108,8,'a_b',172,'Household Member of',46,'Household Member is',1,NULL,NULL,NULL),
+ (216,108,8,'b_a',46,'Household Member is',172,'Household Member of',1,NULL,NULL,NULL),
+ (217,109,7,'a_b',110,'Head of Household for',46,'Head of Household is',1,NULL,NULL,NULL),
+ (218,109,7,'b_a',46,'Head of Household is',110,'Head of Household for',1,NULL,NULL,NULL),
+ (219,110,2,'a_b',163,'Spouse of',110,'Spouse of',1,NULL,NULL,NULL),
+ (220,110,2,'b_a',110,'Spouse of',163,'Spouse of',1,NULL,NULL,NULL),
+ (221,111,1,'a_b',47,'Child of',12,'Parent of',1,NULL,NULL,NULL),
+ (222,111,1,'b_a',12,'Parent of',47,'Child of',1,NULL,NULL,NULL),
+ (223,112,1,'a_b',140,'Child of',12,'Parent of',1,NULL,NULL,NULL),
+ (224,112,1,'b_a',12,'Parent of',140,'Child of',1,NULL,NULL,NULL),
+ (225,113,1,'a_b',47,'Child of',147,'Parent of',1,NULL,NULL,NULL),
+ (226,113,1,'b_a',147,'Parent of',47,'Child of',1,NULL,NULL,NULL),
+ (227,114,1,'a_b',140,'Child of',147,'Parent of',1,NULL,NULL,NULL),
+ (228,114,1,'b_a',147,'Parent of',140,'Child of',1,NULL,NULL,NULL),
+ (229,115,4,'a_b',140,'Sibling of',47,'Sibling of',1,NULL,NULL,NULL),
+ (230,115,4,'b_a',47,'Sibling of',140,'Sibling of',1,NULL,NULL,NULL),
+ (231,116,8,'a_b',147,'Household Member of',11,'Household Member is',1,NULL,NULL,NULL),
+ (232,116,8,'b_a',11,'Household Member is',147,'Household Member of',1,NULL,NULL,NULL),
+ (233,117,8,'a_b',47,'Household Member of',11,'Household Member is',1,NULL,NULL,NULL),
+ (234,117,8,'b_a',11,'Household Member is',47,'Household Member of',1,NULL,NULL,NULL),
+ (235,118,8,'a_b',140,'Household Member of',11,'Household Member is',1,NULL,NULL,NULL),
+ (236,118,8,'b_a',11,'Household Member is',140,'Household Member of',1,NULL,NULL,NULL),
+ (237,119,7,'a_b',12,'Head of Household for',11,'Head of Household is',1,NULL,NULL,NULL),
+ (238,119,7,'b_a',11,'Head of Household is',12,'Head of Household for',1,NULL,NULL,NULL),
+ (239,120,2,'a_b',147,'Spouse of',12,'Spouse of',1,NULL,NULL,NULL),
+ (240,120,2,'b_a',12,'Spouse of',147,'Spouse of',1,NULL,NULL,NULL),
+ (241,121,1,'a_b',38,'Child of',48,'Parent of',1,NULL,NULL,NULL),
+ (242,121,1,'b_a',48,'Parent of',38,'Child of',1,NULL,NULL,NULL),
+ (243,122,1,'a_b',108,'Child of',48,'Parent of',1,NULL,NULL,NULL),
+ (244,122,1,'b_a',48,'Parent of',108,'Child of',1,NULL,NULL,NULL),
+ (245,123,1,'a_b',38,'Child of',149,'Parent of',1,NULL,NULL,NULL),
+ (246,123,1,'b_a',149,'Parent of',38,'Child of',1,NULL,NULL,NULL),
+ (247,124,1,'a_b',108,'Child of',149,'Parent of',1,NULL,NULL,NULL),
+ (248,124,1,'b_a',149,'Parent of',108,'Child of',1,NULL,NULL,NULL),
+ (249,125,4,'a_b',108,'Sibling of',38,'Sibling of',1,NULL,NULL,NULL),
+ (250,125,4,'b_a',38,'Sibling of',108,'Sibling of',1,NULL,NULL,NULL),
+ (251,126,8,'a_b',149,'Household Member of',170,'Household Member is',1,NULL,NULL,NULL),
+ (252,126,8,'b_a',170,'Household Member is',149,'Household Member of',1,NULL,NULL,NULL),
+ (253,127,8,'a_b',38,'Household Member of',170,'Household Member is',1,NULL,NULL,NULL),
+ (254,127,8,'b_a',170,'Household Member is',38,'Household Member of',1,NULL,NULL,NULL),
+ (255,128,8,'a_b',108,'Household Member of',170,'Household Member is',1,NULL,NULL,NULL),
+ (256,128,8,'b_a',170,'Household Member is',108,'Household Member of',1,NULL,NULL,NULL),
+ (257,129,7,'a_b',48,'Head of Household for',170,'Head of Household is',0,NULL,NULL,NULL),
+ (258,129,7,'b_a',170,'Head of Household is',48,'Head of Household for',0,NULL,NULL,NULL),
+ (259,130,2,'a_b',149,'Spouse of',48,'Spouse of',0,NULL,NULL,NULL),
+ (260,130,2,'b_a',48,'Spouse of',149,'Spouse of',0,NULL,NULL,NULL),
+ (261,131,1,'a_b',75,'Child of',26,'Parent of',1,NULL,NULL,NULL),
+ (262,131,1,'b_a',26,'Parent of',75,'Child of',1,NULL,NULL,NULL),
+ (263,132,1,'a_b',27,'Child of',26,'Parent of',1,NULL,NULL,NULL),
+ (264,132,1,'b_a',26,'Parent of',27,'Child of',1,NULL,NULL,NULL),
+ (265,133,1,'a_b',75,'Child of',34,'Parent of',1,NULL,NULL,NULL),
+ (266,133,1,'b_a',34,'Parent of',75,'Child of',1,NULL,NULL,NULL),
+ (267,134,1,'a_b',27,'Child of',34,'Parent of',1,NULL,NULL,NULL),
+ (268,134,1,'b_a',34,'Parent of',27,'Child of',1,NULL,NULL,NULL),
+ (269,135,4,'a_b',27,'Sibling of',75,'Sibling of',1,NULL,NULL,NULL),
+ (270,135,4,'b_a',75,'Sibling of',27,'Sibling of',1,NULL,NULL,NULL),
+ (271,136,8,'a_b',34,'Household Member of',41,'Household Member is',1,NULL,NULL,NULL),
+ (272,136,8,'b_a',41,'Household Member is',34,'Household Member of',1,NULL,NULL,NULL),
+ (273,137,8,'a_b',75,'Household Member of',41,'Household Member is',1,NULL,NULL,NULL),
+ (274,137,8,'b_a',41,'Household Member is',75,'Household Member of',1,NULL,NULL,NULL),
+ (275,138,8,'a_b',27,'Household Member of',41,'Household Member is',1,NULL,NULL,NULL),
+ (276,138,8,'b_a',41,'Household Member is',27,'Household Member of',1,NULL,NULL,NULL),
+ (277,139,7,'a_b',26,'Head of Household for',41,'Head of Household is',1,NULL,NULL,NULL),
+ (278,139,7,'b_a',41,'Head of Household is',26,'Head of Household for',1,NULL,NULL,NULL),
+ (279,140,2,'a_b',34,'Spouse of',26,'Spouse of',1,NULL,NULL,NULL),
+ (280,140,2,'b_a',26,'Spouse of',34,'Spouse of',1,NULL,NULL,NULL),
+ (281,141,1,'a_b',168,'Child of',83,'Parent of',1,NULL,NULL,NULL),
+ (282,141,1,'b_a',83,'Parent of',168,'Child of',1,NULL,NULL,NULL),
+ (283,142,1,'a_b',31,'Child of',83,'Parent of',1,NULL,NULL,NULL),
+ (284,142,1,'b_a',83,'Parent of',31,'Child of',1,NULL,NULL,NULL),
+ (285,143,1,'a_b',168,'Child of',150,'Parent of',1,NULL,NULL,NULL),
+ (286,143,1,'b_a',150,'Parent of',168,'Child of',1,NULL,NULL,NULL),
+ (287,144,1,'a_b',31,'Child of',150,'Parent of',1,NULL,NULL,NULL),
+ (288,144,1,'b_a',150,'Parent of',31,'Child of',1,NULL,NULL,NULL),
+ (289,145,4,'a_b',31,'Sibling of',168,'Sibling of',1,NULL,NULL,NULL),
+ (290,145,4,'b_a',168,'Sibling of',31,'Sibling of',1,NULL,NULL,NULL),
+ (291,146,8,'a_b',150,'Household Member of',102,'Household Member is',1,NULL,NULL,NULL),
+ (292,146,8,'b_a',102,'Household Member is',150,'Household Member of',1,NULL,NULL,NULL),
+ (293,147,8,'a_b',168,'Household Member of',102,'Household Member is',1,NULL,NULL,NULL),
+ (294,147,8,'b_a',102,'Household Member is',168,'Household Member of',1,NULL,NULL,NULL),
+ (295,148,8,'a_b',31,'Household Member of',102,'Household Member is',1,NULL,NULL,NULL),
+ (296,148,8,'b_a',102,'Household Member is',31,'Household Member of',1,NULL,NULL,NULL),
+ (297,149,7,'a_b',83,'Head of Household for',102,'Head of Household is',0,NULL,NULL,NULL),
+ (298,149,7,'b_a',102,'Head of Household is',83,'Head of Household for',0,NULL,NULL,NULL),
+ (299,150,2,'a_b',150,'Spouse of',83,'Spouse of',0,NULL,NULL,NULL),
+ (300,150,2,'b_a',83,'Spouse of',150,'Spouse of',0,NULL,NULL,NULL),
+ (301,151,1,'a_b',72,'Child of',183,'Parent of',1,NULL,NULL,NULL),
+ (302,151,1,'b_a',183,'Parent of',72,'Child of',1,NULL,NULL,NULL),
+ (303,152,1,'a_b',15,'Child of',183,'Parent of',1,NULL,NULL,NULL),
+ (304,152,1,'b_a',183,'Parent of',15,'Child of',1,NULL,NULL,NULL),
+ (305,153,1,'a_b',72,'Child of',64,'Parent of',1,NULL,NULL,NULL),
+ (306,153,1,'b_a',64,'Parent of',72,'Child of',1,NULL,NULL,NULL),
+ (307,154,1,'a_b',15,'Child of',64,'Parent of',1,NULL,NULL,NULL),
+ (308,154,1,'b_a',64,'Parent of',15,'Child of',1,NULL,NULL,NULL),
+ (309,155,4,'a_b',15,'Sibling of',72,'Sibling of',1,NULL,NULL,NULL),
+ (310,155,4,'b_a',72,'Sibling of',15,'Sibling of',1,NULL,NULL,NULL),
+ (311,156,8,'a_b',64,'Household Member of',86,'Household Member is',1,NULL,NULL,NULL),
+ (312,156,8,'b_a',86,'Household Member is',64,'Household Member of',1,NULL,NULL,NULL),
+ (313,157,8,'a_b',72,'Household Member of',86,'Household Member is',1,NULL,NULL,NULL),
+ (314,157,8,'b_a',86,'Household Member is',72,'Household Member of',1,NULL,NULL,NULL),
+ (315,158,8,'a_b',15,'Household Member of',86,'Household Member is',1,NULL,NULL,NULL),
+ (316,158,8,'b_a',86,'Household Member is',15,'Household Member of',1,NULL,NULL,NULL),
+ (317,159,7,'a_b',183,'Head of Household for',86,'Head of Household is',1,NULL,NULL,NULL),
+ (318,159,7,'b_a',86,'Head of Household is',183,'Head of Household for',1,NULL,NULL,NULL),
+ (319,160,2,'a_b',64,'Spouse of',183,'Spouse of',1,NULL,NULL,NULL),
+ (320,160,2,'b_a',183,'Spouse of',64,'Spouse of',1,NULL,NULL,NULL),
+ (321,161,1,'a_b',181,'Child of',115,'Parent of',1,NULL,NULL,NULL),
+ (322,161,1,'b_a',115,'Parent of',181,'Child of',1,NULL,NULL,NULL),
+ (323,162,1,'a_b',175,'Child of',115,'Parent of',1,NULL,NULL,NULL),
+ (324,162,1,'b_a',115,'Parent of',175,'Child of',1,NULL,NULL,NULL),
+ (325,163,1,'a_b',181,'Child of',71,'Parent of',1,NULL,NULL,NULL),
+ (326,163,1,'b_a',71,'Parent of',181,'Child of',1,NULL,NULL,NULL),
+ (327,164,1,'a_b',175,'Child of',71,'Parent of',1,NULL,NULL,NULL),
+ (328,164,1,'b_a',71,'Parent of',175,'Child of',1,NULL,NULL,NULL),
+ (329,165,4,'a_b',175,'Sibling of',181,'Sibling of',1,NULL,NULL,NULL),
+ (330,165,4,'b_a',181,'Sibling of',175,'Sibling of',1,NULL,NULL,NULL),
+ (331,166,8,'a_b',71,'Household Member of',132,'Household Member is',1,NULL,NULL,NULL),
+ (332,166,8,'b_a',132,'Household Member is',71,'Household Member of',1,NULL,NULL,NULL),
+ (333,167,8,'a_b',181,'Household Member of',132,'Household Member is',1,NULL,NULL,NULL),
+ (334,167,8,'b_a',132,'Household Member is',181,'Household Member of',1,NULL,NULL,NULL),
+ (335,168,8,'a_b',175,'Household Member of',132,'Household Member is',1,NULL,NULL,NULL),
+ (336,168,8,'b_a',132,'Household Member is',175,'Household Member of',1,NULL,NULL,NULL),
+ (337,169,7,'a_b',115,'Head of Household for',132,'Head of Household is',0,NULL,NULL,NULL),
+ (338,169,7,'b_a',132,'Head of Household is',115,'Head of Household for',0,NULL,NULL,NULL),
+ (339,170,2,'a_b',71,'Spouse of',115,'Spouse of',0,NULL,NULL,NULL),
+ (340,170,2,'b_a',115,'Spouse of',71,'Spouse of',0,NULL,NULL,NULL),
+ (341,171,1,'a_b',3,'Child of',180,'Parent of',1,NULL,NULL,NULL),
+ (342,171,1,'b_a',180,'Parent of',3,'Child of',1,NULL,NULL,NULL),
+ (343,172,1,'a_b',103,'Child of',180,'Parent of',1,NULL,NULL,NULL),
+ (344,172,1,'b_a',180,'Parent of',103,'Child of',1,NULL,NULL,NULL),
+ (345,173,1,'a_b',3,'Child of',87,'Parent of',1,NULL,NULL,NULL),
+ (346,173,1,'b_a',87,'Parent of',3,'Child of',1,NULL,NULL,NULL),
+ (347,174,1,'a_b',103,'Child of',87,'Parent of',1,NULL,NULL,NULL),
+ (348,174,1,'b_a',87,'Parent of',103,'Child of',1,NULL,NULL,NULL),
+ (349,175,4,'a_b',103,'Sibling of',3,'Sibling of',1,NULL,NULL,NULL),
+ (350,175,4,'b_a',3,'Sibling of',103,'Sibling of',1,NULL,NULL,NULL),
+ (351,176,8,'a_b',87,'Household Member of',178,'Household Member is',1,NULL,NULL,NULL),
+ (352,176,8,'b_a',178,'Household Member is',87,'Household Member of',1,NULL,NULL,NULL),
+ (353,177,8,'a_b',3,'Household Member of',178,'Household Member is',1,NULL,NULL,NULL),
+ (354,177,8,'b_a',178,'Household Member is',3,'Household Member of',1,NULL,NULL,NULL),
+ (355,178,8,'a_b',103,'Household Member of',178,'Household Member is',1,NULL,NULL,NULL),
+ (356,178,8,'b_a',178,'Household Member is',103,'Household Member of',1,NULL,NULL,NULL),
+ (357,179,7,'a_b',180,'Head of Household for',178,'Head of Household is',1,NULL,NULL,NULL),
+ (358,179,7,'b_a',178,'Head of Household is',180,'Head of Household for',1,NULL,NULL,NULL),
+ (359,180,2,'a_b',87,'Spouse of',180,'Spouse of',1,NULL,NULL,NULL),
+ (360,180,2,'b_a',180,'Spouse of',87,'Spouse of',1,NULL,NULL,NULL),
+ (361,181,1,'a_b',120,'Child of',165,'Parent of',1,NULL,NULL,NULL),
+ (362,181,1,'b_a',165,'Parent of',120,'Child of',1,NULL,NULL,NULL),
+ (363,182,1,'a_b',164,'Child of',165,'Parent of',1,NULL,NULL,NULL),
+ (364,182,1,'b_a',165,'Parent of',164,'Child of',1,NULL,NULL,NULL),
+ (365,183,1,'a_b',120,'Child of',126,'Parent of',1,NULL,NULL,NULL),
+ (366,183,1,'b_a',126,'Parent of',120,'Child of',1,NULL,NULL,NULL),
+ (367,184,1,'a_b',164,'Child of',126,'Parent of',1,NULL,NULL,NULL),
+ (368,184,1,'b_a',126,'Parent of',164,'Child of',1,NULL,NULL,NULL),
+ (369,185,4,'a_b',164,'Sibling of',120,'Sibling of',1,NULL,NULL,NULL),
+ (370,185,4,'b_a',120,'Sibling of',164,'Sibling of',1,NULL,NULL,NULL),
+ (371,186,8,'a_b',126,'Household Member of',152,'Household Member is',1,NULL,NULL,NULL),
+ (372,186,8,'b_a',152,'Household Member is',126,'Household Member of',1,NULL,NULL,NULL),
+ (373,187,8,'a_b',120,'Household Member of',152,'Household Member is',1,NULL,NULL,NULL),
+ (374,187,8,'b_a',152,'Household Member is',120,'Household Member of',1,NULL,NULL,NULL),
+ (375,188,8,'a_b',164,'Household Member of',152,'Household Member is',1,NULL,NULL,NULL),
+ (376,188,8,'b_a',152,'Household Member is',164,'Household Member of',1,NULL,NULL,NULL),
+ (377,189,7,'a_b',165,'Head of Household for',152,'Head of Household is',0,NULL,NULL,NULL),
+ (378,189,7,'b_a',152,'Head of Household is',165,'Head of Household for',0,NULL,NULL,NULL),
+ (379,190,2,'a_b',126,'Spouse of',165,'Spouse of',0,NULL,NULL,NULL),
+ (380,190,2,'b_a',165,'Spouse of',126,'Spouse of',0,NULL,NULL,NULL),
+ (381,191,1,'a_b',119,'Child of',104,'Parent of',1,NULL,NULL,NULL),
+ (382,191,1,'b_a',104,'Parent of',119,'Child of',1,NULL,NULL,NULL),
+ (383,192,1,'a_b',45,'Child of',104,'Parent of',1,NULL,NULL,NULL),
+ (384,192,1,'b_a',104,'Parent of',45,'Child of',1,NULL,NULL,NULL),
+ (385,193,1,'a_b',119,'Child of',139,'Parent of',1,NULL,NULL,NULL),
+ (386,193,1,'b_a',139,'Parent of',119,'Child of',1,NULL,NULL,NULL),
+ (387,194,1,'a_b',45,'Child of',139,'Parent of',1,NULL,NULL,NULL),
+ (388,194,1,'b_a',139,'Parent of',45,'Child of',1,NULL,NULL,NULL),
+ (389,195,4,'a_b',45,'Sibling of',119,'Sibling of',1,NULL,NULL,NULL),
+ (390,195,4,'b_a',119,'Sibling of',45,'Sibling of',1,NULL,NULL,NULL),
+ (391,196,8,'a_b',139,'Household Member of',18,'Household Member is',1,NULL,NULL,NULL),
+ (392,196,8,'b_a',18,'Household Member is',139,'Household Member of',1,NULL,NULL,NULL),
+ (393,197,8,'a_b',119,'Household Member of',18,'Household Member is',1,NULL,NULL,NULL),
+ (394,197,8,'b_a',18,'Household Member is',119,'Household Member of',1,NULL,NULL,NULL),
+ (395,198,8,'a_b',45,'Household Member of',18,'Household Member is',1,NULL,NULL,NULL),
+ (396,198,8,'b_a',18,'Household Member is',45,'Household Member of',1,NULL,NULL,NULL),
+ (397,199,7,'a_b',104,'Head of Household for',18,'Head of Household is',1,NULL,NULL,NULL),
+ (398,199,7,'b_a',18,'Head of Household is',104,'Head of Household for',1,NULL,NULL,NULL),
+ (399,200,2,'a_b',139,'Spouse of',104,'Spouse of',1,NULL,NULL,NULL),
+ (400,200,2,'b_a',104,'Spouse of',139,'Spouse of',1,NULL,NULL,NULL),
+ (401,201,5,'a_b',60,'Employee of',9,'Employer of',1,NULL,NULL,NULL),
+ (402,201,5,'b_a',9,'Employer of',60,'Employee of',1,NULL,NULL,NULL),
+ (403,202,5,'a_b',78,'Employee of',17,'Employer of',1,NULL,NULL,NULL),
+ (404,202,5,'b_a',17,'Employer of',78,'Employee of',1,NULL,NULL,NULL),
+ (405,203,5,'a_b',146,'Employee of',40,'Employer of',1,NULL,NULL,NULL),
+ (406,203,5,'b_a',40,'Employer of',146,'Employee of',1,NULL,NULL,NULL),
+ (407,204,5,'a_b',158,'Employee of',49,'Employer of',1,NULL,NULL,NULL),
+ (408,204,5,'b_a',49,'Employer of',158,'Employee of',1,NULL,NULL,NULL),
+ (409,205,5,'a_b',155,'Employee of',69,'Employer of',1,NULL,NULL,NULL),
+ (410,205,5,'b_a',69,'Employer of',155,'Employee of',1,NULL,NULL,NULL),
+ (411,206,5,'a_b',166,'Employee of',84,'Employer of',1,NULL,NULL,NULL),
+ (412,206,5,'b_a',84,'Employer of',166,'Employee of',1,NULL,NULL,NULL),
+ (413,207,5,'a_b',52,'Employee of',121,'Employer of',1,NULL,NULL,NULL),
+ (414,207,5,'b_a',121,'Employer of',52,'Employee of',1,NULL,NULL,NULL),
+ (415,208,5,'a_b',163,'Employee of',124,'Employer of',1,NULL,NULL,NULL),
+ (416,208,5,'b_a',124,'Employer of',163,'Employee of',1,NULL,NULL,NULL),
+ (417,209,5,'a_b',138,'Employee of',129,'Employer of',1,NULL,NULL,NULL),
+ (418,209,5,'b_a',129,'Employer of',138,'Employee of',1,NULL,NULL,NULL),
+ (419,210,5,'a_b',34,'Employee of',130,'Employer of',1,NULL,NULL,NULL),
+ (420,210,5,'b_a',130,'Employer of',34,'Employee of',1,NULL,NULL,NULL),
+ (421,211,5,'a_b',74,'Employee of',144,'Employer of',1,NULL,NULL,NULL),
+ (422,211,5,'b_a',144,'Employer of',74,'Employee of',1,NULL,NULL,NULL),
+ (423,212,5,'a_b',32,'Employee of',169,'Employer of',1,NULL,NULL,NULL),
+ (424,212,5,'b_a',169,'Employer of',32,'Employee of',1,NULL,NULL,NULL),
+ (425,213,5,'a_b',73,'Employee of',174,'Employer of',1,NULL,NULL,NULL),
+ (426,213,5,'b_a',174,'Employer of',73,'Employee of',1,NULL,NULL,NULL),
+ (427,214,5,'a_b',83,'Employee of',184,'Employer of',1,NULL,NULL,NULL),
+ (428,214,5,'b_a',184,'Employer of',83,'Employee of',1,NULL,NULL,NULL),
+ (429,215,5,'a_b',186,'Employee of',192,'Employer of',1,NULL,NULL,NULL),
+ (430,215,5,'b_a',192,'Employer of',186,'Employee of',1,NULL,NULL,NULL),
+ (431,216,5,'a_b',108,'Employee of',193,'Employer of',1,NULL,NULL,NULL),
+ (432,216,5,'b_a',193,'Employer of',108,'Employee of',1,NULL,NULL,NULL);
/*!40000 ALTER TABLE `civicrm_relationship_cache` ENABLE KEYS */;
UNLOCK TABLES;
@@ -8003,13 +8005,13 @@ UNLOCK TABLES;
LOCK TABLES `civicrm_saved_search` WRITE;
/*!40000 ALTER TABLE `civicrm_saved_search` DISABLE KEYS */;
INSERT INTO `civicrm_saved_search` (`id`, `name`, `label`, `form_values`, `mapping_id`, `search_custom_id`, `api_entity`, `api_params`, `created_id`, `modified_id`, `expires_date`, `created_date`, `modified_date`, `description`) VALUES
- (1,'Administer_Campaigns','Administer Campaigns',NULL,NULL,NULL,'Campaign','{\"version\":4,\"select\":[\"id\",\"title\",\"description\",\"is_active\",\"start_date\",\"end_date\",\"campaign_type_id:label\",\"status_id:label\"],\"orderBy\":[],\"where\":[],\"groupBy\":[],\"join\":[],\"having\":[]}',NULL,NULL,NULL,'2024-01-06 04:30:26','2024-01-06 04:30:26',NULL),
- (2,'Administer_Petitions','Administer Petitions',NULL,NULL,NULL,'Survey','{\"version\":4,\"select\":[\"id\",\"title\",\"campaign_id:label\",\"is_active\",\"is_default\"],\"orderBy\":[],\"where\":[[\"activity_type_id:name\",\"=\",\"Petition\"]],\"groupBy\":[],\"join\":[],\"having\":[]}',NULL,NULL,NULL,'2024-01-06 04:30:26','2024-01-06 04:30:26',NULL),
- (3,'Administer_Survey_Options','Administer Survey Options',NULL,NULL,NULL,'OptionValue','{\"version\":4,\"select\":[\"label\",\"value\",\"filter\"],\"orderBy\":[],\"where\":[],\"groupBy\":[],\"join\":[],\"having\":[]}',NULL,NULL,NULL,'2024-01-06 04:30:26','2024-01-06 04:30:26',NULL),
- (4,'Administer_Surveys','Administer Surveys',NULL,NULL,NULL,'Survey','{\"version\":4,\"select\":[\"id\",\"title\",\"campaign_id:label\",\"activity_type_id:label\",\"release_frequency\",\"default_number_of_contacts\",\"max_number_of_contacts\",\"is_active\",\"is_default\",\"result_id:label\"],\"orderBy\":[],\"where\":[[\"activity_type_id:name\",\"!=\",\"Petition\"]],\"groupBy\":[],\"join\":[],\"having\":[]}',NULL,NULL,NULL,'2024-01-06 04:30:26','2024-01-06 04:30:26',NULL),
- (5,'Email_Bounce_History','Email Bounce History',NULL,NULL,NULL,'MailingEventBounce','{\"version\":4,\"select\":[\"time_stamp\",\"bounce_type_id:label\",\"bounce_reason\",\"MailingEventBounce_MailingEventQueue_event_queue_id_01_MailingEventQueue_MailingJob_job_id_01_MailingJob_Mailing_mailing_id_01.name\"],\"orderBy\":[],\"where\":[],\"groupBy\":[],\"join\":[[\"MailingEventQueue AS MailingEventBounce_MailingEventQueue_event_queue_id_01\",\"INNER\",[\"event_queue_id\",\"=\",\"MailingEventBounce_MailingEventQueue_event_queue_id_01.id\"]],[\"MailingJob AS MailingEventBounce_MailingEventQueue_event_queue_id_01_MailingEventQueue_MailingJob_job_id_01\",\"INNER\",[\"MailingEventBounce_MailingEventQueue_event_queue_id_01.job_id\",\"=\",\"MailingEventBounce_MailingEventQueue_event_queue_id_01_MailingEventQueue_MailingJob_job_id_01.id\"]],[\"Mailing AS MailingEventBounce_MailingEventQueue_event_queue_id_01_MailingEventQueue_MailingJob_job_id_01_MailingJob_Mailing_mailing_id_01\",\"INNER\",[\"MailingEventBounce_MailingEventQueue_event_queue_id_01_MailingEventQueue_MailingJob_job_id_01.mailing_id\",\"=\",\"MailingEventBounce_MailingEventQueue_event_queue_id_01_MailingEventQueue_MailingJob_job_id_01_MailingJob_Mailing_mailing_id_01.id\"]]],\"having\":[]}',NULL,NULL,NULL,'2024-01-06 04:30:26','2024-01-06 04:30:26',NULL),
- (6,'Contact_Summary_Notes','Contact Summary Notes',NULL,NULL,NULL,'Note','{\"version\":4,\"select\":[\"id\",\"subject\",\"note\",\"note_date\",\"modified_date\",\"contact_id.sort_name\",\"GROUP_CONCAT(UNIQUE Note_EntityFile_File_01.file_name) AS GROUP_CONCAT_Note_EntityFile_File_01_file_name\",\"COUNT(Note_Note_entity_id_01.id) AS COUNT_Note_Note_entity_id_01_id\"],\"orderBy\":[],\"where\":[],\"groupBy\":[\"id\"],\"join\":[[\"File AS Note_EntityFile_File_01\",\"LEFT\",\"EntityFile\",[\"id\",\"=\",\"Note_EntityFile_File_01.entity_id\"],[\"Note_EntityFile_File_01.entity_table\",\"=\",\"\'civicrm_note\'\"]],[\"Note AS Note_Note_entity_id_01\",\"LEFT\",[\"id\",\"=\",\"Note_Note_entity_id_01.entity_id\"],[\"Note_Note_entity_id_01.entity_table\",\"=\",\"\'civicrm_note\'\"]]],\"having\":[]}',NULL,NULL,NULL,'2024-01-06 04:30:26','2024-01-06 04:30:26',NULL),
- (7,'Contact_Summary_Relationships','Contact Summary Relationships',NULL,NULL,NULL,'RelationshipCache','{\"version\":4,\"select\":[\"near_relation:label\",\"RelationshipCache_Contact_far_contact_id_01.display_name\",\"start_date\",\"end_date\",\"RelationshipCache_Contact_far_contact_id_01.address_primary.city\",\"RelationshipCache_Contact_far_contact_id_01.address_primary.state_province_id:label\",\"RelationshipCache_Contact_far_contact_id_01.email_primary.email\",\"RelationshipCache_Contact_far_contact_id_01.phone_primary.phone\",\"permission_near_to_far:label\",\"permission_far_to_near:label\",\"is_active\"],\"orderBy\":[],\"where\":[[\"RelationshipCache_Contact_far_contact_id_01.is_deleted\",\"=\",false]],\"groupBy\":[],\"join\":[[\"Contact AS RelationshipCache_Contact_far_contact_id_01\",\"LEFT\",[\"far_contact_id\",\"=\",\"RelationshipCache_Contact_far_contact_id_01.id\"]]],\"having\":[]}',NULL,NULL,NULL,'2024-01-06 04:30:26','2024-01-06 04:30:26',NULL);
+ (1,'Administer_Campaigns','Administer Campaigns',NULL,NULL,NULL,'Campaign','{\"version\":4,\"select\":[\"id\",\"title\",\"description\",\"is_active\",\"start_date\",\"end_date\",\"campaign_type_id:label\",\"status_id:label\"],\"orderBy\":[],\"where\":[],\"groupBy\":[],\"join\":[],\"having\":[]}',NULL,NULL,NULL,'2024-04-26 15:50:08','2024-04-26 15:50:08',NULL),
+ (2,'Administer_Petitions','Administer Petitions',NULL,NULL,NULL,'Survey','{\"version\":4,\"select\":[\"id\",\"title\",\"campaign_id:label\",\"is_active\",\"is_default\"],\"orderBy\":[],\"where\":[[\"activity_type_id:name\",\"=\",\"Petition\"]],\"groupBy\":[],\"join\":[],\"having\":[]}',NULL,NULL,NULL,'2024-04-26 15:50:08','2024-04-26 15:50:08',NULL),
+ (3,'Administer_Survey_Options','Administer Survey Options',NULL,NULL,NULL,'OptionValue','{\"version\":4,\"select\":[\"label\",\"value\",\"filter\"],\"orderBy\":[],\"where\":[],\"groupBy\":[],\"join\":[],\"having\":[]}',NULL,NULL,NULL,'2024-04-26 15:50:08','2024-04-26 15:50:08',NULL),
+ (4,'Administer_Surveys','Administer Surveys',NULL,NULL,NULL,'Survey','{\"version\":4,\"select\":[\"id\",\"title\",\"campaign_id:label\",\"activity_type_id:label\",\"release_frequency\",\"default_number_of_contacts\",\"max_number_of_contacts\",\"is_active\",\"is_default\",\"result_id:label\"],\"orderBy\":[],\"where\":[[\"activity_type_id:name\",\"!=\",\"Petition\"]],\"groupBy\":[],\"join\":[],\"having\":[]}',NULL,NULL,NULL,'2024-04-26 15:50:08','2024-04-26 15:50:08',NULL),
+ (5,'Email_Bounce_History','Email Bounce History',NULL,NULL,NULL,'MailingEventBounce','{\"version\":4,\"select\":[\"time_stamp\",\"bounce_type_id:label\",\"bounce_reason\",\"MailingEventBounce_MailingEventQueue_event_queue_id_01_MailingEventQueue_MailingJob_job_id_01_MailingJob_Mailing_mailing_id_01.name\"],\"orderBy\":[],\"where\":[],\"groupBy\":[],\"join\":[[\"MailingEventQueue AS MailingEventBounce_MailingEventQueue_event_queue_id_01\",\"INNER\",[\"event_queue_id\",\"=\",\"MailingEventBounce_MailingEventQueue_event_queue_id_01.id\"]],[\"MailingJob AS MailingEventBounce_MailingEventQueue_event_queue_id_01_MailingEventQueue_MailingJob_job_id_01\",\"INNER\",[\"MailingEventBounce_MailingEventQueue_event_queue_id_01.job_id\",\"=\",\"MailingEventBounce_MailingEventQueue_event_queue_id_01_MailingEventQueue_MailingJob_job_id_01.id\"]],[\"Mailing AS MailingEventBounce_MailingEventQueue_event_queue_id_01_MailingEventQueue_MailingJob_job_id_01_MailingJob_Mailing_mailing_id_01\",\"INNER\",[\"MailingEventBounce_MailingEventQueue_event_queue_id_01_MailingEventQueue_MailingJob_job_id_01.mailing_id\",\"=\",\"MailingEventBounce_MailingEventQueue_event_queue_id_01_MailingEventQueue_MailingJob_job_id_01_MailingJob_Mailing_mailing_id_01.id\"]]],\"having\":[]}',NULL,NULL,NULL,'2024-04-26 15:50:08','2024-04-26 15:50:08',NULL),
+ (6,'Contact_Summary_Notes','Contact Summary Notes',NULL,NULL,NULL,'Note','{\"version\":4,\"select\":[\"id\",\"subject\",\"note\",\"note_date\",\"modified_date\",\"contact_id.sort_name\",\"GROUP_CONCAT(UNIQUE Note_EntityFile_File_01.file_name) AS GROUP_CONCAT_Note_EntityFile_File_01_file_name\",\"COUNT(Note_Note_entity_id_01.id) AS COUNT_Note_Note_entity_id_01_id\"],\"orderBy\":[],\"where\":[],\"groupBy\":[\"id\"],\"join\":[[\"File AS Note_EntityFile_File_01\",\"LEFT\",\"EntityFile\",[\"id\",\"=\",\"Note_EntityFile_File_01.entity_id\"],[\"Note_EntityFile_File_01.entity_table\",\"=\",\"\'civicrm_note\'\"]],[\"Note AS Note_Note_entity_id_01\",\"LEFT\",[\"id\",\"=\",\"Note_Note_entity_id_01.entity_id\"],[\"Note_Note_entity_id_01.entity_table\",\"=\",\"\'civicrm_note\'\"]]],\"having\":[]}',NULL,NULL,NULL,'2024-04-26 15:50:08','2024-04-26 15:50:08',NULL),
+ (7,'Contact_Summary_Relationships','Contact Summary Relationships',NULL,NULL,NULL,'RelationshipCache','{\"version\":4,\"select\":[\"near_relation:label\",\"RelationshipCache_Contact_far_contact_id_01.display_name\",\"start_date\",\"end_date\",\"RelationshipCache_Contact_far_contact_id_01.address_primary.city\",\"RelationshipCache_Contact_far_contact_id_01.address_primary.state_province_id:label\",\"RelationshipCache_Contact_far_contact_id_01.email_primary.email\",\"RelationshipCache_Contact_far_contact_id_01.phone_primary.phone\",\"permission_near_to_far:label\",\"permission_far_to_near:label\",\"is_active\"],\"orderBy\":[],\"where\":[[\"RelationshipCache_Contact_far_contact_id_01.is_deleted\",\"=\",false]],\"groupBy\":[],\"join\":[[\"Contact AS RelationshipCache_Contact_far_contact_id_01\",\"LEFT\",[\"far_contact_id\",\"=\",\"RelationshipCache_Contact_far_contact_id_01.id\"]]],\"having\":[]}',NULL,NULL,NULL,'2024-04-26 15:50:08','2024-04-26 15:50:08',NULL);
/*!40000 ALTER TABLE `civicrm_saved_search` ENABLE KEYS */;
UNLOCK TABLES;
@@ -12117,90 +12119,90 @@ UNLOCK TABLES;
LOCK TABLES `civicrm_subscription_history` WRITE;
/*!40000 ALTER TABLE `civicrm_subscription_history` DISABLE KEYS */;
INSERT INTO `civicrm_subscription_history` (`id`, `contact_id`, `group_id`, `date`, `method`, `status`, `tracking`) VALUES
- (1,120,2,'2023-07-19 05:22:51','Email','Added',NULL),
- (2,130,2,'2023-09-30 01:56:30','Email','Added',NULL),
- (3,99,2,'2023-11-24 11:00:04','Admin','Added',NULL),
- (4,86,2,'2024-01-04 03:51:34','Admin','Added',NULL),
- (5,37,2,'2023-03-19 17:38:09','Admin','Added',NULL),
- (6,92,2,'2023-05-27 21:34:19','Email','Added',NULL),
- (7,53,2,'2023-11-25 18:51:00','Email','Added',NULL),
- (8,70,2,'2023-04-10 19:56:47','Email','Added',NULL),
- (9,113,2,'2023-03-09 05:34:23','Admin','Added',NULL),
- (10,196,2,'2023-05-07 19:17:12','Email','Added',NULL),
- (11,141,2,'2023-04-07 13:03:46','Admin','Added',NULL),
- (12,165,2,'2023-05-19 13:01:51','Email','Added',NULL),
- (13,181,2,'2023-11-10 04:35:14','Admin','Added',NULL),
- (14,46,2,'2023-01-23 09:15:18','Admin','Added',NULL),
- (15,137,2,'2023-09-09 09:13:37','Admin','Added',NULL),
- (16,66,2,'2023-10-13 07:02:50','Admin','Added',NULL),
- (17,190,2,'2023-01-27 01:18:16','Email','Added',NULL),
- (18,200,2,'2023-07-20 04:39:02','Admin','Added',NULL),
- (19,183,2,'2023-10-30 19:10:43','Admin','Added',NULL),
- (20,176,2,'2023-04-08 21:44:04','Email','Added',NULL),
- (21,22,2,'2023-11-24 08:07:25','Admin','Added',NULL),
- (22,195,2,'2023-09-16 10:35:16','Email','Added',NULL),
- (23,110,2,'2023-07-08 21:47:55','Email','Added',NULL),
- (24,59,2,'2023-02-07 21:45:08','Email','Added',NULL),
- (25,84,2,'2023-05-31 13:53:48','Admin','Added',NULL),
- (26,133,2,'2023-03-09 05:37:04','Email','Added',NULL),
- (27,93,2,'2023-12-06 22:10:28','Admin','Added',NULL),
- (28,47,2,'2023-09-08 00:16:46','Admin','Added',NULL),
- (29,85,2,'2023-12-27 02:06:59','Admin','Added',NULL),
- (30,193,2,'2023-01-18 17:01:45','Admin','Added',NULL),
- (31,101,2,'2023-08-08 07:40:42','Email','Added',NULL),
- (32,15,2,'2023-11-18 05:40:40','Admin','Added',NULL),
- (33,77,2,'2023-03-20 05:14:26','Admin','Added',NULL),
- (34,166,2,'2023-01-31 18:24:17','Admin','Added',NULL),
- (35,50,2,'2023-03-26 13:44:47','Admin','Added',NULL),
- (36,23,2,'2023-07-18 19:32:35','Admin','Added',NULL),
- (37,164,2,'2023-06-14 18:52:57','Admin','Added',NULL),
- (38,67,2,'2023-04-19 12:23:54','Admin','Added',NULL),
- (39,121,2,'2023-09-03 08:57:30','Email','Added',NULL),
- (40,192,2,'2023-01-23 13:56:06','Email','Added',NULL),
- (41,75,2,'2023-07-26 01:58:18','Admin','Added',NULL),
- (42,19,2,'2023-09-22 04:14:43','Email','Added',NULL),
- (43,146,2,'2023-04-27 09:18:27','Admin','Added',NULL),
- (44,106,2,'2023-05-17 20:56:33','Email','Added',NULL),
- (45,71,2,'2023-02-01 07:37:41','Email','Added',NULL),
- (46,13,2,'2023-05-11 03:45:32','Admin','Added',NULL),
- (47,14,2,'2023-12-01 12:35:15','Admin','Added',NULL),
- (48,10,2,'2023-02-07 19:57:24','Admin','Added',NULL),
- (49,34,2,'2023-08-25 16:28:11','Email','Added',NULL),
- (50,88,2,'2023-06-18 10:30:32','Email','Added',NULL),
- (51,163,2,'2023-02-23 07:16:28','Email','Added',NULL),
- (52,129,2,'2023-05-13 14:24:48','Email','Added',NULL),
- (53,27,2,'2023-08-16 23:15:16','Admin','Added',NULL),
- (54,4,2,'2023-09-03 03:29:18','Admin','Added',NULL),
- (55,168,2,'2023-08-30 16:12:07','Email','Added',NULL),
- (56,198,2,'2023-05-10 09:34:35','Email','Added',NULL),
- (57,91,2,'2023-11-30 03:05:09','Email','Added',NULL),
- (58,62,2,'2023-07-29 16:18:46','Email','Added',NULL),
- (59,60,2,'2023-03-18 04:52:25','Email','Added',NULL),
- (60,172,2,'2023-05-12 06:48:01','Admin','Added',NULL),
- (61,63,3,'2023-06-10 01:21:31','Admin','Added',NULL),
- (62,102,3,'2023-01-13 03:18:32','Admin','Added',NULL),
- (63,128,3,'2023-11-02 01:01:37','Email','Added',NULL),
- (64,117,3,'2023-12-09 23:02:00','Email','Added',NULL),
- (65,52,3,'2023-09-27 09:34:20','Email','Added',NULL),
- (66,76,3,'2023-04-04 00:21:10','Email','Added',NULL),
- (67,17,3,'2023-10-19 05:48:00','Admin','Added',NULL),
- (68,16,3,'2024-01-02 09:41:21','Email','Added',NULL),
- (69,159,3,'2023-03-09 08:07:03','Email','Added',NULL),
- (70,41,3,'2023-06-29 12:37:29','Admin','Added',NULL),
- (71,30,3,'2023-04-08 03:16:14','Admin','Added',NULL),
- (72,98,3,'2023-07-09 16:54:15','Email','Added',NULL),
- (73,109,3,'2023-02-16 04:30:15','Admin','Added',NULL),
- (74,90,3,'2023-07-01 21:29:52','Admin','Added',NULL),
- (75,155,3,'2023-03-28 19:01:11','Email','Added',NULL),
- (76,120,4,'2023-02-10 02:51:58','Email','Added',NULL),
- (77,70,4,'2023-02-15 05:54:57','Admin','Added',NULL),
- (78,137,4,'2023-04-10 19:09:24','Email','Added',NULL),
- (79,195,4,'2023-11-30 19:35:40','Admin','Added',NULL),
- (80,85,4,'2023-08-13 19:52:48','Admin','Added',NULL),
- (81,23,4,'2023-03-26 22:51:30','Email','Added',NULL),
- (82,146,4,'2023-02-08 20:28:17','Admin','Added',NULL),
- (83,88,4,'2023-06-07 10:30:04','Admin','Added',NULL),
- (84,202,4,'2023-09-18 06:48:28','Admin','Added',NULL);
+ (1,185,2,'2024-02-01 18:22:17','Admin','Added',NULL),
+ (2,8,2,'2023-05-02 12:41:25','Admin','Added',NULL),
+ (3,95,2,'2023-09-28 21:09:40','Admin','Added',NULL),
+ (4,89,2,'2024-02-03 16:00:39','Admin','Added',NULL),
+ (5,37,2,'2024-04-17 06:55:42','Admin','Added',NULL),
+ (6,107,2,'2023-08-31 05:29:54','Email','Added',NULL),
+ (7,73,2,'2023-09-13 07:28:53','Admin','Added',NULL),
+ (8,85,2,'2023-05-31 10:18:23','Admin','Added',NULL),
+ (9,200,2,'2023-06-26 13:30:36','Email','Added',NULL),
+ (10,20,2,'2024-01-02 23:37:14','Admin','Added',NULL),
+ (11,111,2,'2023-10-20 22:32:53','Email','Added',NULL),
+ (12,63,2,'2024-02-25 14:29:43','Email','Added',NULL),
+ (13,158,2,'2023-11-09 13:38:57','Admin','Added',NULL),
+ (14,42,2,'2024-01-23 15:30:17','Admin','Added',NULL),
+ (15,198,2,'2024-01-08 06:31:57','Admin','Added',NULL),
+ (16,196,2,'2024-04-13 14:22:03','Email','Added',NULL),
+ (17,116,2,'2023-06-12 05:03:12','Admin','Added',NULL),
+ (18,6,2,'2023-12-10 08:02:12','Admin','Added',NULL),
+ (19,36,2,'2024-01-15 03:11:03','Admin','Added',NULL),
+ (20,78,2,'2024-04-15 13:20:20','Email','Added',NULL),
+ (21,13,2,'2023-10-30 06:38:13','Email','Added',NULL),
+ (22,177,2,'2023-05-26 03:26:37','Email','Added',NULL),
+ (23,21,2,'2023-11-09 10:28:35','Admin','Added',NULL),
+ (24,79,2,'2023-05-15 21:02:19','Email','Added',NULL),
+ (25,171,2,'2023-12-10 19:23:19','Email','Added',NULL),
+ (26,58,2,'2024-03-28 00:46:10','Admin','Added',NULL),
+ (27,154,2,'2024-04-01 19:15:51','Email','Added',NULL),
+ (28,160,2,'2023-12-21 09:37:07','Email','Added',NULL),
+ (29,22,2,'2024-04-22 22:17:07','Email','Added',NULL),
+ (30,166,2,'2023-09-05 03:19:54','Admin','Added',NULL),
+ (31,167,2,'2023-09-06 04:22:16','Admin','Added',NULL),
+ (32,4,2,'2023-12-13 09:42:07','Email','Added',NULL),
+ (33,94,2,'2023-06-05 10:29:09','Email','Added',NULL),
+ (34,74,2,'2023-10-06 18:52:09','Admin','Added',NULL),
+ (35,136,2,'2024-01-25 05:54:43','Email','Added',NULL),
+ (36,61,2,'2024-01-11 06:21:45','Admin','Added',NULL),
+ (37,96,2,'2023-09-12 13:16:12','Admin','Added',NULL),
+ (38,35,2,'2024-03-01 03:07:50','Admin','Added',NULL),
+ (39,76,2,'2024-03-28 06:51:35','Admin','Added',NULL),
+ (40,187,2,'2023-06-18 11:16:39','Admin','Added',NULL),
+ (41,122,2,'2024-01-27 21:36:03','Email','Added',NULL),
+ (42,123,2,'2023-05-15 17:34:50','Admin','Added',NULL),
+ (43,159,2,'2023-10-14 01:55:02','Admin','Added',NULL),
+ (44,93,2,'2024-02-05 18:43:38','Admin','Added',NULL),
+ (45,60,2,'2023-08-09 05:02:15','Admin','Added',NULL),
+ (46,134,2,'2024-01-20 17:26:03','Email','Added',NULL),
+ (47,197,2,'2024-04-25 10:44:12','Email','Added',NULL),
+ (48,66,2,'2023-08-26 00:33:26','Admin','Added',NULL),
+ (49,81,2,'2023-06-30 22:50:09','Email','Added',NULL),
+ (50,131,2,'2023-10-29 09:46:24','Email','Added',NULL),
+ (51,128,2,'2023-11-13 18:53:32','Admin','Added',NULL),
+ (52,143,2,'2024-02-29 04:01:42','Admin','Added',NULL),
+ (53,138,2,'2024-03-17 10:19:46','Admin','Added',NULL),
+ (54,201,2,'2023-07-29 00:29:38','Email','Added',NULL),
+ (55,92,2,'2024-01-14 16:12:23','Admin','Added',NULL),
+ (56,5,2,'2023-11-23 20:44:36','Email','Added',NULL),
+ (57,112,2,'2023-09-08 08:26:04','Email','Added',NULL),
+ (58,194,2,'2023-11-20 17:31:53','Email','Added',NULL),
+ (59,145,2,'2024-04-03 00:00:53','Email','Added',NULL),
+ (60,88,2,'2023-06-05 01:59:51','Email','Added',NULL),
+ (61,28,3,'2024-02-01 19:40:21','Email','Added',NULL),
+ (62,99,3,'2024-01-19 06:33:04','Admin','Added',NULL),
+ (63,55,3,'2024-03-11 07:49:51','Admin','Added',NULL),
+ (64,100,3,'2023-06-25 23:17:43','Email','Added',NULL),
+ (65,125,3,'2024-01-16 03:20:27','Email','Added',NULL),
+ (66,142,3,'2024-01-06 03:47:05','Email','Added',NULL),
+ (67,189,3,'2024-02-24 02:19:13','Email','Added',NULL),
+ (68,179,3,'2023-08-20 03:04:52','Admin','Added',NULL),
+ (69,186,3,'2023-07-23 19:27:33','Email','Added',NULL),
+ (70,118,3,'2023-12-03 05:32:52','Email','Added',NULL),
+ (71,65,3,'2024-04-24 21:54:39','Email','Added',NULL),
+ (72,114,3,'2023-06-04 06:34:51','Email','Added',NULL),
+ (73,54,3,'2023-10-16 12:21:31','Email','Added',NULL),
+ (74,68,3,'2023-07-08 06:53:33','Email','Added',NULL),
+ (75,52,3,'2023-10-03 13:48:34','Admin','Added',NULL),
+ (76,185,4,'2023-05-16 08:49:50','Admin','Added',NULL),
+ (77,85,4,'2023-10-22 07:23:06','Email','Added',NULL),
+ (78,198,4,'2023-06-13 17:38:06','Admin','Added',NULL),
+ (79,177,4,'2023-09-06 07:32:12','Email','Added',NULL),
+ (80,22,4,'2023-12-13 12:25:39','Email','Added',NULL),
+ (81,61,4,'2023-08-25 08:35:15','Admin','Added',NULL),
+ (82,159,4,'2023-09-14 12:34:33','Admin','Added',NULL),
+ (83,131,4,'2024-01-17 14:23:02','Admin','Added',NULL),
+ (84,202,4,'2024-02-03 10:05:34','Admin','Added',NULL);
/*!40000 ALTER TABLE `civicrm_subscription_history` ENABLE KEYS */;
UNLOCK TABLES;
@@ -12229,11 +12231,11 @@ UNLOCK TABLES;
LOCK TABLES `civicrm_tag` WRITE;
/*!40000 ALTER TABLE `civicrm_tag` DISABLE KEYS */;
INSERT INTO `civicrm_tag` (`id`, `name`, `label`, `description`, `parent_id`, `is_selectable`, `is_reserved`, `is_tagset`, `used_for`, `created_id`, `color`, `created_date`) VALUES
- (1,'Non_profit','Non-profit','Any not-for-profit organization.',NULL,1,0,0,'civicrm_contact',NULL,'#0bcb21','2024-01-06 04:30:24'),
- (2,'Company','Company','For-profit organization.',NULL,1,0,0,'civicrm_contact',NULL,'#2260c3','2024-01-06 04:30:24'),
- (3,'Government_Entity','Government Entity','Any governmental entity.',NULL,1,0,0,'civicrm_contact',NULL,'#cd4b13','2024-01-06 04:30:24'),
- (4,'Major_Donor','Major Donor','High-value supporter of our organization.',NULL,1,0,0,'civicrm_contact',NULL,'#0cdae9','2024-01-06 04:30:24'),
- (5,'Volunteer','Volunteer','Active volunteers.',NULL,1,0,0,'civicrm_contact',NULL,'#f0dc00','2024-01-06 04:30:24');
+ (1,'Non_profit','Non-profit','Any not-for-profit organization.',NULL,1,0,0,'civicrm_contact',NULL,'#0bcb21','2024-04-26 15:50:04'),
+ (2,'Company','Company','For-profit organization.',NULL,1,0,0,'civicrm_contact',NULL,'#2260c3','2024-04-26 15:50:04'),
+ (3,'Government_Entity','Government Entity','Any governmental entity.',NULL,1,0,0,'civicrm_contact',NULL,'#cd4b13','2024-04-26 15:50:04'),
+ (4,'Major_Donor','Major Donor','High-value supporter of our organization.',NULL,1,0,0,'civicrm_contact',NULL,'#0cdae9','2024-04-26 15:50:04'),
+ (5,'Volunteer','Volunteer','Active volunteers.',NULL,1,0,0,'civicrm_contact',NULL,'#f0dc00','2024-04-26 15:50:04');
/*!40000 ALTER TABLE `civicrm_tag` ENABLE KEYS */;
UNLOCK TABLES;
@@ -12363,20 +12365,20 @@ UNLOCK TABLES;
LOCK TABLES `civicrm_uf_group` WRITE;
/*!40000 ALTER TABLE `civicrm_uf_group` DISABLE KEYS */;
-INSERT INTO `civicrm_uf_group` (`id`, `is_active`, `group_type`, `title`, `frontend_title`, `description`, `help_pre`, `help_post`, `limit_listings_group_id`, `post_url`, `add_to_group_id`, `add_captcha`, `is_map`, `is_edit_link`, `is_uf_link`, `is_update_dupe`, `cancel_url`, `is_cms_user`, `notify`, `is_reserved`, `name`, `created_id`, `created_date`, `is_proximity_search`, `cancel_button_text`, `submit_button_text`, `add_cancel_button`) VALUES
- (1,1,'Individual,Contact','Name and Address','Name and Address',NULL,NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,NULL,0,NULL,0,'name_and_address',NULL,NULL,0,NULL,NULL,1),
- (2,1,'Individual,Contact','Supporter Profile','Supporter Profile',NULL,NULL,'The information you provide will NOT be shared with any third party organisations.
Thank you for getting involved in our campaign!
',NULL,NULL,NULL,0,0,0,0,0,NULL,2,NULL,0,'supporter_profile',NULL,NULL,0,NULL,NULL,1),
- (3,1,'Participant','Participant Status','Participant Status',NULL,NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,NULL,0,NULL,1,'participant_status',NULL,NULL,0,NULL,NULL,1),
- (4,1,'Individual,Contact','New Individual','New Individual',NULL,NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,NULL,0,NULL,1,'new_individual',NULL,NULL,0,NULL,NULL,1),
- (5,1,'Organization,Contact','New Organization','New Organization',NULL,NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,NULL,0,NULL,1,'new_organization',NULL,NULL,0,NULL,NULL,1),
- (6,1,'Household,Contact','New Household','New Household',NULL,NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,NULL,0,NULL,1,'new_household',NULL,NULL,0,NULL,NULL,1),
- (7,1,'Contact','Summary Overlay','Summary Overlay',NULL,NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,NULL,0,NULL,1,'summary_overlay',NULL,NULL,0,NULL,NULL,1),
- (8,1,'Contact','Shared Address','Shared Address',NULL,NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,NULL,0,NULL,1,'shared_address',NULL,NULL,0,NULL,NULL,1),
- (9,1,'Contact,Organization','On Behalf Of Organization','On Behalf Of Organization',NULL,NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,NULL,0,NULL,1,'on_behalf_organization',NULL,NULL,0,NULL,NULL,1),
- (10,1,'Contribution','Contribution Bulk Entry','Contribution Bulk Entry',NULL,NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,NULL,0,NULL,1,'contribution_batch_entry',NULL,NULL,0,NULL,NULL,1),
- (11,1,'Membership','Membership Bulk Entry','Membership Bulk Entry',NULL,NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,NULL,0,NULL,1,'membership_batch_entry',NULL,NULL,0,NULL,NULL,1),
- (12,1,'Individual,Contact','Your Registration Info','Your Registration Info',NULL,NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,NULL,0,NULL,0,'event_registration',NULL,NULL,0,NULL,NULL,1),
- (13,1,'Individual,Contact','Honoree Individual','Honoree Individual',NULL,NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,NULL,0,NULL,1,'honoree_individual',NULL,NULL,0,NULL,NULL,1);
+INSERT INTO `civicrm_uf_group` (`id`, `name`, `is_active`, `group_type`, `title`, `frontend_title`, `description`, `help_pre`, `help_post`, `limit_listings_group_id`, `post_url`, `add_to_group_id`, `add_captcha`, `is_map`, `is_edit_link`, `is_uf_link`, `is_update_dupe`, `cancel_url`, `is_cms_user`, `notify`, `is_reserved`, `created_id`, `created_date`, `is_proximity_search`, `cancel_button_text`, `submit_button_text`, `add_cancel_button`) VALUES
+ (1,'name_and_address',1,'Individual,Contact','Name and Address','Name and Address',NULL,NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,NULL,0,NULL,0,NULL,NULL,0,NULL,NULL,1),
+ (2,'supporter_profile',1,'Individual,Contact','Supporter Profile','Supporter Profile',NULL,NULL,'The information you provide will NOT be shared with any third party organisations.
Thank you for getting involved in our campaign!
',NULL,NULL,NULL,0,0,0,0,0,NULL,2,NULL,0,NULL,NULL,0,NULL,NULL,1),
+ (3,'participant_status',1,'Participant','Participant Status','Participant Status',NULL,NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,1),
+ (4,'new_individual',1,'Individual,Contact','New Individual','New Individual',NULL,NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,1),
+ (5,'new_organization',1,'Organization,Contact','New Organization','New Organization',NULL,NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,1),
+ (6,'new_household',1,'Household,Contact','New Household','New Household',NULL,NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,1),
+ (7,'summary_overlay',1,'Contact','Summary Overlay','Summary Overlay',NULL,NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,1),
+ (8,'shared_address',1,'Contact','Shared Address','Shared Address',NULL,NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,1),
+ (9,'on_behalf_organization',1,'Contact,Organization','On Behalf Of Organization','On Behalf Of Organization',NULL,NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,1),
+ (10,'contribution_batch_entry',1,'Contribution','Contribution Bulk Entry','Contribution Bulk Entry',NULL,NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,1),
+ (11,'membership_batch_entry',1,'Membership','Membership Bulk Entry','Membership Bulk Entry',NULL,NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,1),
+ (12,'event_registration',1,'Individual,Contact','Your Registration Info','Your Registration Info',NULL,NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,NULL,0,NULL,0,NULL,NULL,0,NULL,NULL,1),
+ (13,'honoree_individual',1,'Individual,Contact','Honoree Individual','Honoree Individual',NULL,NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,1);
/*!40000 ALTER TABLE `civicrm_uf_group` ENABLE KEYS */;
UNLOCK TABLES;
@@ -12426,20 +12428,21 @@ UNLOCK TABLES;
LOCK TABLES `civicrm_website` WRITE;
/*!40000 ALTER TABLE `civicrm_website` DISABLE KEYS */;
INSERT INTO `civicrm_website` (`id`, `contact_id`, `url`, `website_type_id`) VALUES
- (1,51,'http://pennsylvaniafund.org',1),
- (2,138,'http://pennsylvaniapartnership.org',1),
- (3,135,'http://mississippialliance.org',1),
- (4,48,'http://urbansoftwareinitiative.org',1),
- (5,122,'http://creativeenvironmental.org',1),
- (6,73,'http://anchoragesports.org',1),
- (7,40,'http://friendslegalalliance.org',1),
- (8,187,'http://ohiohealthinitiative.org',1),
- (9,142,'http://mainfamilypartners.org',1),
- (10,44,'http://ruralwellnessschool.org',1),
- (11,173,'http://alabamaeducationservices.org',1),
- (12,118,'http://tennesseesolutions.org',1),
- (13,36,'http://ohiosoftwarepartnership.org',1),
- (14,170,'http://ncwellnesstrust.org',1);
+ (1,193,'http://texassolutions.org',1),
+ (2,17,'http://communitysolutions.org',1),
+ (3,9,'http://sierralegalsystems.org',1),
+ (4,23,'http://creativeadvocacyalliance.org',1),
+ (5,144,'http://urbanfellowship.org',1),
+ (6,129,'http://globalwellnesspartners.org',1),
+ (7,174,'http://communitydevelopmentservices.org',1),
+ (8,49,'http://toledonetwork.org',1),
+ (9,192,'http://northpointmusicsystems.org',1),
+ (10,121,'http://mississippimusic.org',1),
+ (11,184,'http://spactionfund.org',1),
+ (12,124,'http://spcultureschool.org',1),
+ (13,135,'http://greensborohealthpartnership.org',1),
+ (14,84,'http://ecfamilyschool.org',1),
+ (15,69,'http://dowlenempowermentnetwork.org',1);
/*!40000 ALTER TABLE `civicrm_website` ENABLE KEYS */;
UNLOCK TABLES;
@@ -12471,12 +12474,13 @@ UNLOCK TABLES;
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
+/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
--- Dump completed on 2024-01-06 4:30:31
+-- Dump completed on 2024-04-26 15:50:13
-- +--------------------------------------------------------------------+
-- | Copyright CiviCRM LLC. All rights reserved. |
-- | |
@@ -12563,8 +12567,9 @@ INSERT INTO `civicrm_option_group` (`name`, `title`, `is_reserved`, `is_active`
VALUES ('soup_selection', 'Soup Selection', 0, 1);
SELECT @ogid := MAX(id) FROM civicrm_option_group;
-INSERT INTO civicrm_custom_group ( name, title, extends, extends_entity_column_id, extends_entity_column_value, style, is_active, table_name) VALUES
- ('Food_Preference', 'Food Preference', 'Participant', 2, '1', 'Inline', 1, 'civicrm_value_food_preference_2');
+INSERT INTO `civicrm_custom_group` (`name`, `title`, `extends`, `extends_entity_column_id`, `extends_entity_column_value`, `style`, `is_active`, `table_name`, `weight`)
+ VALUES
+ ('Food_Preference', 'Food Preference', 'Participant', 2, '1', 'Inline', 1, 'civicrm_value_food_preference_2', 2);
SELECT @cgid := MAX(id) FROM civicrm_custom_group;
INSERT INTO civicrm_custom_field ( custom_group_id, label, name, data_type, html_type, is_active, text_length, note_columns, note_rows, column_name, option_group_id, is_searchable ) VALUES ( @cgid, 'Soup Selection', 'Soup_Selection', 'String', 'Radio', 1, 255, 60, 4, 'soup_selection_4', @ogid, 1);
@@ -12580,9 +12585,9 @@ CREATE TABLE civicrm_value_food_preference_2 ( id INT(10) UNSIGNED NOT NULL AUTO
-- Donors’ custom data
-INSERT INTO `civicrm_custom_group` (`name`, `title`, `extends`, `extends_entity_column_id`, `extends_entity_column_value`, `style`, `is_active`, `table_name`)
+INSERT INTO `civicrm_custom_group` (`name`, `title`, `extends`, `extends_entity_column_id`, `extends_entity_column_value`, `style`, `is_active`, `table_name`, `weight`)
VALUES
- ('Donor_Information', 'Donor Information', 'Contribution', NULL, NULL, 'Inline', 1, 'civicrm_value_donor_information_3');
+ ('Donor_Information', 'Donor Information', 'Contribution', NULL, NULL, 'Inline', 1, 'civicrm_value_donor_information_3', 3);
SELECT @cgid_contribution := MAX(id) FROM civicrm_custom_group;
diff --git a/www/modules/civicrm/sql/civicrm_navigation.mysql b/www/modules/civicrm/sql/civicrm_navigation.mysql
index 9970312bf..41be1b36b 100644
--- a/www/modules/civicrm/sql/civicrm_navigation.mysql
+++ b/www/modules/civicrm/sql/civicrm_navigation.mysql
@@ -154,7 +154,7 @@ VALUES
( @domainID, 'civicrm/participant/add?reset=1&action=add&context=standalone', 'Register Event Participant', 'Register Event Participant', 'access CiviEvent,edit event participants', 'AND', @eventlastID, '1', NULL, 2 ),
( @domainID, 'civicrm/event/search?reset=1', 'Find Participants', 'Find Participants', 'access CiviEvent', '', @eventlastID, '1', NULL, 3 ),
( @domainID, 'civicrm/report/list?compid=1&reset=1', 'Event Reports', 'Event Reports', 'access CiviEvent', '', @eventlastID, '1', 1, 4 ),
- ( @domainID, 'civicrm/event/import?reset=1', 'Import Participants','Import Participants', 'access CiviEvent,edit event participants', 'AND', @eventlastID, '1', '1', 5 ),
+ ( @domainID, 'civicrm/import/participant?reset=1', 'Import Participants','Import Participants', 'access CiviEvent,edit event participants', 'AND', @eventlastID, '1', '1', 5 ),
( @domainID, 'civicrm/event/add?reset=1&action=add', 'New Event', 'New Event', 'access CiviEvent,edit all events', 'AND', @eventlastID, '0', NULL, 6 ),
( @domainID, 'civicrm/event/manage?reset=1', 'Manage Events', 'Manage Events', 'access CiviEvent,edit all events', 'AND', @eventlastID, '1', 1, 7 ),
( @domainID, 'civicrm/admin/pcp?reset=1&page_type=event', 'Personal Campaign Pages', 'Personal Campaign Pages', 'access CiviEvent,administer CiviCRM', 'AND', @eventlastID, '1', 1, 8 ),
@@ -198,7 +198,7 @@ VALUES
( @domainID, 'civicrm/member/search?reset=1', 'Find Memberships', 'Find Memberships','access CiviMember', '', @memberlastID, '1', NULL, 3 ),
( @domainID, 'civicrm/report/list?compid=3&reset=1', 'Membership Reports', 'Membership Reports', 'access CiviMember', '', @memberlastID, '1', 1, 4 ),
( @domainID, 'civicrm/batch?reset=1', 'Batch Data Entry', 'Batch Data Entry','access CiviContribute', '', @memberlastID, '1', NULL, 5 ),
- ( @domainID, 'civicrm/member/import?reset=1', 'Import Memberships', 'Import Members', 'access CiviMember,edit memberships', 'AND', @memberlastID, '1', 1, 6 ),
+ ( @domainID, 'civicrm/import/membership?reset=1', 'Import Memberships', 'Import Members', 'access CiviMember,edit memberships', 'AND', @memberlastID, '1', 1, 6 ),
( @domainID, 'civicrm/admin/price/edit?reset=1&action=add', 'New Price Set', 'New Price Set', 'access CiviMember,administer CiviCRM', 'AND', @memberlastID, '0', NULL, 7 ),
( @domainID, 'civicrm/admin/price?reset=1', 'Manage Price Sets', 'Manage Price Sets', 'access CiviMember,administer CiviCRM', 'AND', @memberlastID, '1', NULL, 8 );
@@ -527,7 +527,7 @@ SET @reportlastID:=LAST_INSERT_ID();
INSERT INTO civicrm_navigation
( domain_id, url, label, name, permission, permission_operator, parent_id, is_active, has_separator, weight )
VALUES
- ( @domainID, 'civicrm/report/list?compid=99&reset=1', 'Contact Reports', 'Contact Reports', 'administer CiviCRM', '', @reportlastID, '1', 0, 1 );
+ ( @domainID, 'civicrm/report/list?compid=99&reset=1', 'Contact Reports', 'Contact Reports', 'access CiviReport', '', @reportlastID, '1', 0, 1 );
INSERT INTO civicrm_navigation
( domain_id, url, label, name, permission, permission_operator, parent_id, is_active, has_separator, weight )
VALUES
diff --git a/www/modules/civicrm/sql/civicrm_sample.mysql b/www/modules/civicrm/sql/civicrm_sample.mysql
index 98ed28298..f6cb501c5 100644
--- a/www/modules/civicrm/sql/civicrm_sample.mysql
+++ b/www/modules/civicrm/sql/civicrm_sample.mysql
@@ -234,6 +234,7 @@ VALUES
(@priceFieldID,'bass','Bass','25',1,1,1,2),
(@priceFieldID,'tenor','Tenor','40',2,1,0,2),
(@priceFieldID,'soprano','Soprano','50',3,1,0,2);
+
-- +--------------------------------------------------------------------+
-- | Copyright CiviCRM LLC. All rights reserved. |
-- | |
@@ -261,3 +262,4 @@ INSERT INTO civicrm_acl_entity_role
(`acl_role_id`, `entity_table`, `entity_id`, `is_active`)
VALUES
(1, 'civicrm_group', 1, 1);
+
diff --git a/www/modules/civicrm/sql/civicrm_sample_custom_data.mysql b/www/modules/civicrm/sql/civicrm_sample_custom_data.mysql
index eefd6bd4a..8182a94da 100644
--- a/www/modules/civicrm/sql/civicrm_sample_custom_data.mysql
+++ b/www/modules/civicrm/sql/civicrm_sample_custom_data.mysql
@@ -80,7 +80,8 @@ INSERT INTO `civicrm_option_group` (`name`, `title`, `is_reserved`, `is_active`
VALUES ('soup_selection', 'Soup Selection', 0, 1);
SELECT @ogid := MAX(id) FROM civicrm_option_group;
-INSERT INTO civicrm_custom_group ( name, title, extends, extends_entity_column_id, extends_entity_column_value, style, is_active, table_name) VALUES ('Food_Preference', 'Food Preference', 'Participant', 2, '1', 'Inline', 1, 'civicrm_value_food_preference_2');
+INSERT INTO `civicrm_custom_group` (`name`, `title`, `extends`, `extends_entity_column_id`, `extends_entity_column_value`, `style`, `is_active`, `table_name`, `weight`)
+ VALUES ('Food_Preference', 'Food Preference', 'Participant', 2, '1', 'Inline', 1, 'civicrm_value_food_preference_2', 2);
SELECT @cgid := MAX(id) FROM civicrm_custom_group;
INSERT INTO civicrm_custom_field ( custom_group_id, label, name, data_type, html_type, is_active, text_length, note_columns, note_rows, column_name, option_group_id, is_searchable ) VALUES ( @cgid, 'Soup Selection', 'Soup_Selection', 'String', 'Radio', 1, 255, 60, 4, 'soup_selection_4', @ogid, 1);
@@ -95,8 +96,8 @@ CREATE TABLE civicrm_value_food_preference_2 ( id INT(10) UNSIGNED NOT NULL AUTO
-- Donors’ custom data
-INSERT INTO `civicrm_custom_group` (`name`, `title`, `extends`, `extends_entity_column_id`, `extends_entity_column_value`, `style`, `is_active`, `table_name`)
- VALUES ('Donor_Information', 'Donor Information', 'Contribution', NULL, NULL, 'Inline', 1, 'civicrm_value_donor_information_3');
+INSERT INTO `civicrm_custom_group` (`name`, `title`, `extends`, `extends_entity_column_id`, `extends_entity_column_value`, `style`, `is_active`, `table_name`, `weight`)
+ VALUES ('Donor_Information', 'Donor Information', 'Contribution', NULL, NULL, 'Inline', 1, 'civicrm_value_donor_information_3', 3);
SELECT @cgid_contribution := MAX(id) FROM civicrm_custom_group;
diff --git a/www/modules/civicrm/templates/CRM/Activity/Form/Activity.tpl b/www/modules/civicrm/templates/CRM/Activity/Form/Activity.tpl
index adbc8da90..363a89bfa 100644
--- a/www/modules/civicrm/templates/CRM/Activity/Form/Activity.tpl
+++ b/www/modules/civicrm/templates/CRM/Activity/Form/Activity.tpl
@@ -173,7 +173,7 @@
{if $action eq 4}
{include file="CRM/Custom/Page/CustomDataView.tpl"}
{else}
- {include file="CRM/common/customDataBlock.tpl"}
+ {include file="CRM/common/customDataBlock.tpl" groupID='' customDataType='Activity'}
{/if}
@@ -208,7 +208,7 @@
$('.crm-accordion-body', $form).each( function() {
//open tab if form rule throws error
if ( $(this).children( ).find('span.crm-error').text( ).length > 0 ) {
- $(this).parent('.collapsed').crmAccordionToggle();
+ $(this).parent('details').prop('open', true);
}
});
function toggleMultiActivityCheckbox() {
diff --git a/www/modules/civicrm/templates/CRM/Activity/Form/FollowUp.tpl b/www/modules/civicrm/templates/CRM/Activity/Form/FollowUp.tpl
index 59d7d2c3c..ef4caddcb 100644
--- a/www/modules/civicrm/templates/CRM/Activity/Form/FollowUp.tpl
+++ b/www/modules/civicrm/templates/CRM/Activity/Form/FollowUp.tpl
@@ -1,7 +1,7 @@
-
+
+
diff --git a/www/modules/civicrm/templates/CRM/Activity/Form/Search.tpl b/www/modules/civicrm/templates/CRM/Activity/Form/Search.tpl
index 2918a83a9..625890550 100644
--- a/www/modules/civicrm/templates/CRM/Activity/Form/Search.tpl
+++ b/www/modules/civicrm/templates/CRM/Activity/Form/Search.tpl
@@ -9,11 +9,10 @@
*}
{* Search form and results for Activities *}
-
-
diff --git a/www/modules/civicrm/templates/CRM/Contact/Import/Form/Preview.tpl b/www/modules/civicrm/templates/CRM/Contact/Import/Form/Preview.tpl
index c003443b8..cf7d0efba 100644
--- a/www/modules/civicrm/templates/CRM/Contact/Import/Form/Preview.tpl
+++ b/www/modules/civicrm/templates/CRM/Contact/Import/Form/Preview.tpl
@@ -56,10 +56,10 @@
{* Group options *}
{* New Group *}
-
+
+
{* Existing Group *}
-
+
+
{* Tag options *}
{* New Tag *}
-
-
-
+
+
{* Existing Tag Imported Contact *}
-
+
+
{* End of preview-info div. We hide this on form submit. *}
{include file="CRM/common/formButtons.tpl" location="bottom"}
-
-{literal}
-
-{/literal}
diff --git a/www/modules/civicrm/templates/CRM/Contact/Page/DedupeException.tpl b/www/modules/civicrm/templates/CRM/Contact/Page/DedupeException.tpl
index af8f9f71c..3735ca7c7 100644
--- a/www/modules/civicrm/templates/CRM/Contact/Page/DedupeException.tpl
+++ b/www/modules/civicrm/templates/CRM/Contact/Page/DedupeException.tpl
@@ -8,26 +8,27 @@
+--------------------------------------------------------------------+
*}
{include file="CRM/common/dedupe.tpl"}
-
-
-
+
+
+ {ts}Filter Contacts{/ts}
+
+
+
{include file="CRM/common/pager.tpl" location="top"}
diff --git a/www/modules/civicrm/templates/CRM/Contact/Page/DedupeFind.tpl b/www/modules/civicrm/templates/CRM/Contact/Page/DedupeFind.tpl
index 84e214c1c..5d241ff58 100644
--- a/www/modules/civicrm/templates/CRM/Contact/Page/DedupeFind.tpl
+++ b/www/modules/civicrm/templates/CRM/Contact/Page/DedupeFind.tpl
@@ -9,10 +9,10 @@
*}
{if $action eq 2 || $action eq 16}
+
{ts}Show / Hide columns:{/ts}
diff --git a/www/modules/civicrm/templates/CRM/Contact/Page/Inline/Address.tpl b/www/modules/civicrm/templates/CRM/Contact/Page/Inline/Address.tpl
index 7c18e0201..cacfffcd7 100644
--- a/www/modules/civicrm/templates/CRM/Contact/Page/Inline/Address.tpl
+++ b/www/modules/civicrm/templates/CRM/Contact/Page/Inline/Address.tpl
@@ -47,25 +47,23 @@
{foreach from=$add.custom item=customGroup key=cgId} {* start of outer foreach *}
{assign var="isAddressCustomPresent" value=1}
{foreach from=$customGroup item=customValue key=cvId}
-
-
- {$customValue.title}
-
-
- {foreach from=$customValue.fields item=customField key=cfId}
-
-
- {$customField.field_title}
-
-
- {$customField.field_value}
+
+
+ {$customValue.title}
+
+
+ {foreach from=$customValue.fields item=customField key=cfId}
+
+
+ {$customField.field_title}
+
+
+ {$customField.field_value}
+
+ {/foreach}
- {/foreach}
-
-
+
{/foreach}
{/foreach} {* end of outer custom group foreach *}
diff --git a/www/modules/civicrm/templates/CRM/Contact/Page/Inline/Email.tpl b/www/modules/civicrm/templates/CRM/Contact/Page/Inline/Email.tpl
index bdd8503bd..f7df7a8d3 100644
--- a/www/modules/civicrm/templates/CRM/Contact/Page/Inline/Email.tpl
+++ b/www/modules/civicrm/templates/CRM/Contact/Page/Inline/Email.tpl
@@ -46,7 +46,7 @@
{$item.email}
{/if}
{crmAPI var='civi_mail' entity='Extension' action='get' full_name="civi_mail" is_active=1}
- {if $item.on_hold == 2} ({ts}On Hold - Opt Out{/ts}) {ts}{$item.hold_date|truncate:10:''|crmDate}{/ts}{elseif $item.on_hold} {if $civi_mail.count}{/if}{/if}{if $item.is_bulkmail} ({ts}Bulk{/ts}){/if}
+ {if $item.on_hold == 2} ({ts}On Hold - Opt Out{/ts}) {ts}{$item.hold_date|truncate:10:''|crmDate}{/ts}{elseif $item.on_hold} {if $civi_mail.count}{/if}{/if}{if $item.is_bulkmail} ({ts}Bulk{/ts}){/if}
{if !empty($item.signature_text) OR !empty($item.signature_html)}
{ts}(signature){/ts}
diff --git a/www/modules/civicrm/templates/CRM/Contact/Page/View/CustomDataView.tpl b/www/modules/civicrm/templates/CRM/Contact/Page/View/CustomDataView.tpl
index 48608878c..563c8d5c7 100644
--- a/www/modules/civicrm/templates/CRM/Contact/Page/View/CustomDataView.tpl
+++ b/www/modules/civicrm/templates/CRM/Contact/Page/View/CustomDataView.tpl
@@ -14,8 +14,8 @@
{assign var="count" value=$customGroupCount%2}
{if ($count eq $side) or $skipTitle}
{foreach from=$customValues item=cd_edit key=cvID}
-
-